CSMACD
CSMACD
CSMACD是(Carrier Sense Multiple Access/Collision Detect)的簡稱,即載波監聽多路訪問、衝突檢測方法。
(Carrier Sense Multiple Access/Collision Detect)
即載波監聽多路訪問/衝突檢測方法
在乙太網中,所有的節點共享傳輸介質。如何保證傳輸介質有序、高效地為許多節點提供傳輸服務,就是乙太網的介質訪問控制協議要解決的問題。
一、基礎篇:
是一種爭用型的介質訪問控制協議。它起源於美國夏威夷大學開發的ALOHA網所採用的爭用型協議,並進行了改進,使之具有比ALOHA協議更高的介質利用率。
CSMA/CD控制方式的優點是:
原理比較簡單,技術上易實現,網路中各工作站處於平等地位,不需集中控制,不提供優先順序控制。但在網路負載增大時,發送時間增長,發送效率急劇下降。
CSMA/CD應用在 ISO7層里的數據鏈路層
它的工作原理是: 發送數據前 先監聽通道是否空閑 ,若空閑 則立即發送數據。在發送數據時,邊發送邊繼續監聽。若監聽到衝突,則立即停止發送數據。等待一段隨即時間,再重新嘗試.
二、進階篇:
CSMA/CD控制規程:
控制規程的核心問題:解決在公共通道上以廣播方式傳送數據中可能出現的問題(主要是數據碰撞問題)
控制過程包含四個處理內容:偵聽、發送、檢測、衝突處理
(1)偵聽:
通過專門的檢測機構,在站點準備發送前先偵聽一下匯流排上是否有數據正在傳送(線路是否忙)?
若“忙”則進入後述的“退避”處理程序,進而進一步反覆進行偵聽工作。
若“閑”,則一定演演算法原則(“X堅持”演演算法)決定如何發送。
(2)發送:
當確定要發送后,通過發送機構,向匯流排發送數據。
(3)檢測:
數據發送后,也可能發生數據碰撞。因此,要對數據邊發送,邊接收,以判斷是否衝突了。(參5P127圖)
(4)衝突處理:
當確認發生衝突后,進入衝突處理程序。有兩種衝突情況:
① 偵聽中發現線路忙
② 發送過程中發現數據碰撞
① 若在偵聽中發現線路忙,則等待一個延時后再次偵聽,若仍然忙,則繼續延遲等待,一直到可以發送為止。每次延時的時間不一致,由退避演演算法確定延時值。
② 若發送過程中發現數據碰撞,先發送阻塞信息,強化衝突,再進行偵聽工作,以待下次重新發送(方法同①)
上述兩種衝突情況都會涉及一個共同演演算法——退避演演算法。
① 退避演演算法:當出現線路衝突時,如果衝突的各站點都採用同樣的退避間隔時間,則很容易產生二次、三次的碰撞。因此,要求各個站點的退避間隔時間具有差異性。這要求通過退避演演算法來實現。
截斷的二進位指數退避演演算法(退避演演算法之一):
當一個站點發現線路忙時,要等待一個延時時間M,然後再進行偵聽工作。延時時間M以以下演演算法決定:
M = 2 min{n,16} ms
其中,n表示連續偵聽的次數(記數值)。該表達式的含義是:第一次延遲2ms,再衝突則延遲22ms,以後每次連續的衝突次數記數都比前一次增加一倍的延遲時間,但最長的延遲時間不超過216ms。(即:超過16次做特殊處理)
② 特殊阻塞信息:是一組特殊數據信息。在發送數據后發現衝突時,立即發送特殊阻塞信息(連續幾個位元組的全1),以強化衝突信號,使線路上站點可以儘早探測得到衝突的信號,從而減少造成新衝突的可能性。
③ 衝突檢測時間>=2α: α表示網路中最遠兩個站點的傳輸線路延遲時間。該式表示檢測時間必須保證最遠站點發出數據產生衝突后被對方感知的最短時間。在2α時間裡沒有感知衝突,則保證發出的數據沒有產生衝突。(只要保證檢測2α時間,沒有必要整個發送過程都進行檢測)
④ X-堅持的CSMA演演算法:當在偵聽中發現線路空閑時,不一定馬上發送數據,而採用X-堅持的CSMA演演算法決定如何進行數據發送:
三種演演算法及特點:
- 非堅持的CSMA:線路忙,等待一段時間,再偵聽;不忙時,立即發送;減少衝突,通道利用率降低:
- 1堅持的CSMA:線路忙,繼續偵聽;不忙時,立即發送;提高通道利用率,增大衝突:
- p堅持的CSMA:線路忙,繼續偵聽;不忙時,根據p概率進行發送,另外的1-p概率為繼續偵聽(p是一個指定概率值);有效平衡,但複雜:
(5)控制流程圖(右上角圖):
(6)CSMA控制規程的特徵
① 簡單
② 具有廣播功能
③ 平均帶寬: f = F / n
④ 絕對平等,無優先順序
⑤ 低負荷高效,高負荷低效
⑥ 延時時間不可預測
⑦ 傳輸速率與傳輸距離為一定值