CSMA/CD
CSMA/CD(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 ④ 絕對平等,無優先級 ⑤ 低負荷高效,高負荷低效 ⑥ 延時時間不可預測 ⑦ 傳輸速率與傳輸距離為一定值
CSMA/CA
(2)CSMA/CA技術
這種協議實際上就是在發送數據幀之前先對信道進行預約。下面為了方便解釋這種技術的主要原理請大家先看圖5-36。
圖5-35 CSMA/CA協議中的RTS和CTS幀
① 在圖5-35中,
● 站B、站C、站E在站A 的無線信號覆蓋的範圍內。而站D不在其內。
● 站A、站E、站D在站B 的無線信號覆蓋的範圍內,但站C不在其內。
② 如果站A要向站B發送數據,那麼,站A在發送數據幀之前,要先向站B發送一個請求發送幀RTS(Request To Send)。在RTS幀中已説明將要發送的數據幀的長度。站B收到RTS幀後就向站A迴應一個允許發送幀CTS(Clear To Send)。在CTS幀中也附上A欲發送的數據幀的長度(從RTS幀中將此數據複製到CTS幀中)。站A收到CTS幀後就可發送其數據幀了。現在討論在A和B兩個站附近的一些站將做出什麼反應。
● 對於站C,站C處於站A的無線傳輸範圍內,但不在站B的無線傳輸範圍內。因此站C能夠收聽到站A發送的RTS幀,但經過一小段時間後,站C收聽不到站B發送的CTS幀。這樣,在站A向站B發送數據的同時,站C也可以發送自己的數據而不會干擾站B接收數據(注意:站C收聽不到站B的信號表明,站B也收不聽到站C的信號)。
● 對於站D,站D收聽不到站A發送的RTS幀,但能收聽到站B發送的CTS幀。因此,站D在收到站B發送的CTS幀後,應在站B隨後接收數據幀的時間內關閉數據發送操作,以避免干擾站B接收自A站發來的數據。
● 對於站E,它能收到RTS幀和CTS幀,因此,站E在站A發送數據幀的整個過程中不能發送數據。
③ 雖然使用RTS和CTS幀會使整個網絡的效率有所下降。但這兩種控制幀都很短,它們的長度分別為20和14字節。而數據幀則最長可達2346字節,相比之下的開銷並不算大。相反,若不使用這種控制幀,則一旦發生衝突而導致數據幀重發,則浪費的時間就更大。雖然如此,但協議還是設有三種情況供用户選擇:
● 使用RTS和CTS幀;
● 當數據幀的長度超過某一數值時才使用RTS和CTS幀;
● 不使用RTS和CTS幀。
④ 儘管協議經過了精心設計,但衝突仍然會發生。
例如:站B和站C同時向站A發送BTS幀。這兩個RTS幀發生衝突後,使得站A收不到正確的RTS幀因而站A就不會發送後續的CTS幀。這時,站B和站C像以太網發生衝突那樣,各自隨機地推遲一段時間後重新發送其RTS幀。推遲時間的算法也是使用二進制指數退避。
⑤ 為了儘量減少衝突,802.11標準設計了獨特的MAC子層,這裏不具體説明。