CSMA/CD
CSMA/CD(Carrier Sense Multiple Access/Collision Detect)
即載波監聽多路訪問/衝突檢測方法
在以太網中,所有的節點共享傳輸介質。如何保證傳輸介質有序、高效地爲許多節點提供傳輸服務,就是以太網的介質訪問控制協議要解決的問題。
一、基礎篇:
是一種爭用型的介質訪問控制協議。它起源於美國夏威夷大學開發的ALOHA網所採用的爭用型協議,並進行了改進,使之具有比ALOHA協議更高的介質利用率。
CSMA/CD控制方式的優點是:
原理比較簡單,技術上易實現,網絡中各工作站處於平等地位,不需集中控制,不提供優先級控制。但在網絡負載增大時,發送時間增長,發送效率急劇下降。
CSMA/CD應用在 OSI 7層裏的數據鏈路層
它的工作原理是: 發送數據前 先監聽信道是否空閒 ,若空閒則立即發送數據.在發送數據時,邊發送邊繼續監聽.若監聽到衝突,則立即停止發送數據.等待一段隨即時間,再重新嘗試.
二、進階篇:
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
④ 絕對平等,無優先級
⑤ 低負荷高效,高負荷低效
⑥ 延時時間不可預測
⑦ 傳輸速率與傳輸距離爲一定值
CSMA/CA
無線局域網標準802.11的MAC和802.3協議的MAC非常相似,都是在一個共享媒體之上支持多個用戶共享資源,由發送者在發送數據前先進行網絡的可用性。在802.3協議中,是由一種稱爲CSMA/CD(Carrier Sense Multiple Access with Collision Detection)的協議來完成調節,這個協議解決了在Ethernet上的各個工作站如何在線纜上進行傳輸的問題,利用它檢測和避免當兩個或兩個以上的網絡設備需要進行數據傳送時網絡上的衝突。在802.11無線局域網協議中,衝突的檢測存在一定的問題,這個問題稱爲"Near/Far"現象,這是由於要檢測衝突,設備必須能夠一邊接受數據信號一邊傳送數據信號,而這在無線系統中是無法辦到的。
鑑於這個差異,在802.11中對CSMA/CD進行了一些調整,採用了新的協議CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)或者DCF(Distributed Coordination Function)。 CSMA/CA利用ACK信號來避免衝突的發生,也就是說,只有當客戶端收到網絡上返回的ACK信號後才確認送出的數據已經正確到達目的。
CSMA/CA協議的工作流程是:一個工作站希望在無線網絡中傳送數據,如果沒有探測到網絡中正在傳送數據,則附加等待一段時間,再隨機選擇一個時間片繼續探測,如果無線網路中仍舊沒有活動的話,就將數據發送出去。接受端的工作站如果受到發送端送出的完整的數據則回發一個ACK數據報,如果這個ACK數據報被接收端收到,則這個數據發送過程完成,如果發送端沒有收到ACK數據報,則或者發送的數據沒有被完整地收到,或者ACK信號的發送失敗,不管是哪種現象發生,數據報都在發送端等待一段時間後被重傳。
CSMA/CA通過這種方式來提供無線的共享訪問,這種顯式的ACK機制在處理無線問題時非常有效。然而不管是對於802.11還是802.3來說,這種方式都增加了額外的負擔,所以802.11網絡和類似的Ethernet網比較總是在性能上稍遜一籌。
CSMA/CD和CSMA/CA的主要差別對比如下:
CSMA/CD:即載波監聽多路訪問/衝突檢測方法
CSMA/CA:帶有衝突避免的載波偵聽多路訪問,發送包的同時不能檢測到信道上有無衝突,只能儘量‘避免’;
1.兩者的傳輸介質不同,CSMA/CD用於總線以太,而CSMA/CA則用於無線局域網802.11b;
2.檢測方式不同,CSMA/CD通過電纜中電壓的變化來檢測,當數據發生碰撞時,電纜中的電壓就會隨着發生變化;而CSMA/CA採用能量檢測(ED)、載波檢測(CS)和能量載波混合檢測三種檢測信道空閒的方式;
3.WLAN中,對某個節點來說,其剛剛發出的信號強度要遠高於來自其他節點的信號強度,也就是說它自己的信號會把其他的信號給覆蓋掉;
4.本節點處有衝突並不意味着在接收節點處就有衝突;
綜上,在WLAN中實現CSMA/CD是比較困難的。