複製鏈接
請複製以下鏈接發送給好友

CSMA/CA

鎖定
CSMA/CA(Carrier Sense Multiple Access with Collision Avoid,即帶有衝突避免的載波偵聽多路訪問)是一種數據傳輸時避免各站點之間數據傳輸衝突的算法,其特點是發送包的同時不能檢測到信道上有無衝突,只能儘量“避免”。例如,如果計算機A和計算機C同時給計算機B發送一個控制消息,它們將同時到達計算機B,導致衝突的發生。當這種衝突發生時,發送者可以隨機等待一段時間,然後重發控制消息。因為控制消息比數據包要短得多,所以發生第二次衝突的可能性也要比傳統以太網要小很多。最終將有一個控制消息正確到達,然後計算機B發送一個響應消息。通常CSMA/CA利用ACK信號來避免衝突的發生,也就是説,只有當客户端收到網絡上返回的ACK信號後才確認送出的數據已經正確到達目的地 [1] 
中文名
載波偵聽多路訪問/衝突避免
外文名
Carrier Sense Multiple Access with Collision Avoid
簡    稱
CSMA/CA
特    點
能量檢測、載波檢測和能量載波混合檢測
應用場景
無線局域網
所屬領域
計算機科學

CSMA/CA產生背景

雖然CSMA/CD協議已成功地應用於有線連接的局域網,但無線局域網不能簡單地搬用CSMA/CD協議。其主要原因是:
第一,CSMA/CD協議要求一個站點在發送本站數據的同時還必須不間斷地檢測信道,以便發現是否有其他的站也在發送數據,這樣才能實現“衝突檢測”的功能。但在無線局域網的設備中要實現這種功能花費過大。
第二,更重要的是,即使能夠實現衝突檢測的功能,且在發送數據報時檢測到信道是空閒的,但是,由於無線電波能夠向所有的方向傳播,且其傳播距離受限,在接收端仍然有可能發生衝突,從而產生隱藏站問題和暴露站問題
此外,無線信道還由於傳輸條件特殊,造成信號強度的動態範圍非常大。這就使發送站無法使用衝突檢測的方法來確定是否發生了碰撞。
因此,無線局域網不能使用CSMA/CD協議,而是以此為基礎,制定出更適合無線網絡共享信道的載波監聽多路訪問/衝突避免CSMA/CA協議。CSMA/CA協議利用ACK信號來避免衝突的發生,也就是説,只有當客户端收到網絡上返回的ACK信號後,才確認送出的數據已經正確到達目的 [2] 

CSMA/CA工作流程

802.11標準為數據幀定義了不同的信道使用優先級,使用三種不同的時間參數:短幀間隔SIFS、長幀間隔DIFS和點協同間隔PIFS。SIFS最短,使用它作為等待時延的結點將用最高的信道使用優先級來發送數據幀。網絡中的控制幀以及對所接收數據的確認幀都採用SIFS作為發送之前的等待時延。DIFS最長,所有的數據幀都採用DIFS作為等待時延。PIFS具有中等級別的優先級,主要作為AP定期向服務區內發送管理幀或探測幀所用的等待時延。
圖一 圖一
CSMA/CA協議的工作原理如圖一所示,主要工作流程是:
(1)當主機需要發送一個數據幀時,首先檢測信道,在持續檢測到信道空閒達一個DIFS之後,主機發送數據幀。接收主機正確接收到該數據幀,等待一個SIFS後馬上發出對該數據幀的確認。若源站在規定時間內沒有收到確認幀ACK,就必須重傳此幀,直到收到確認為止,或者經過若干次重傳失敗後放棄發送。
(2)當一個站檢測到正在信道中傳送的MAC幀首部的“持續時間”字段時,就調整自己的網絡分配向量NAV。NAV指出了必須經過多少時間才能完成這次傳輸,才能使信道轉入空閒狀態。因此,信道處於忙態,或者是由於物理層的載波監聽檢測到信道忙,或者是由於MAC層的虛擬載波監聽機制指出了信道忙 [2] 

CSMA/CA分類

CSMA/CA分為兩類,第一類是時分多路複用技術與CSMA/CD相結合的方式;第二類是二次檢測避免衝突方式。下面分別介紹這兩種方式。
第一類避免衝突的工作方式要點如下:每次傳遞結束後,立即把時間劃分成時間片,這些時間片分屬網絡中各結點。結點根據時間片的先後發送信息,具有第一個時間片的結點首先發送,發送結束後,按優先權順序把發送權交給具有第二個時間片的結點。輪到某個結點而該結點又無報文可發時,它的時間片就空閒不用。如果在時間片輪迴一週後,所有結點都無報文可發,那麼網絡就返回到CSMA/CD方式,這時又按競爭方式獲取信道。信道在CSMA/CD方式下使用一次後,系統又回到時間片方式。在這種可避免衝突的系統中,通常給某些結點以特殊的優先權,使它們總是能在第一個時間片發送信息。如果給它們的時間片沒有使用,則重新在其他結點輪流分配時間片。在這種系統中,結點必須有能力完成時間片的同步,執行分配時間片的算法以及CSMA/CD方式的算法,因此,實現起來較複雜,價格也較貴。這種方法的優點是效率高。
第二類避免衝突的CSMA/CA技術,稱為二次檢測信道訪問技術。這是一種與第一種方式完全不同的CSMA/CA技術。它由結點在發送信息前對介質進行兩次檢測來避免衝突的發生,其工作方式如下:準備發送信息的結點在發送前偵聽介質一段時間(大約為介質最長傳播延遲時間的2倍),如果在這一段時間內介質為“閒”,則開始準備發送,發送準備的時間較長,約為前一段偵聽時間的2~3倍。準備結束後,真正要將信息發送前,再由結點對介質進行一次迅速短暫的偵聽,若仍為空閒,則可正式發送。如果這時偵聽到介質上有信息傳輸,則馬上停止自己即將開始的發送。按某種算法延遲一段隨機時間,然後再重複以上的二次檢測過程,所以這種方式又稱為“二次檢測”法。由於第二次偵聽的時間短,在這麼短暫的時間內有兩個點同時發送信息的可能性很小,因此基本上可以避免衝突。同時,這種方式沒有“邊發邊聽”,而僅僅是“先聽後發”,這樣,用不着“邊聽邊發”的複雜的衝突檢測裝置,降低了成本。這種方法的缺點是,發送後一旦發生衝突,也不中止自己的發送,直到發送完畢才知道錯誤,再重新偵聽、重發 [3] 

CSMA/CA與CSMA/CD 的差別

CSMA/CD可以檢測衝突,但無法避免衝突;對於CSMA/CA,在發送包的同時不能檢測到信道上有無衝突,只能儘量避免。CSMA/CD和CSMA/CA的主要差別表現在:
(1)兩者的傳輸介質不同:CSMA/CD用於總線式以太網,而CSMA/CA用於無線局域網802.11a/b/g/n等。
(2)檢測方式不同:CSMA/CD通過電纜中電壓的變化來檢測,當數據發生碰撞時,電纜中的電壓就會隨着發生變化;CSMA/CA採用能量檢測(ED)、載波檢測(CS)和能量載波混合檢測三種檢測信道空閒的方式。
(3)對於WLAN中的某個結點,其剛剛發出的信號強度要遠高於來自其他結點的信號強度,也就是説它自己的信號會把其他的信號覆蓋掉。
(4)在WLAN中,本結點處有衝突並不意味着在接收結點處就有衝突 [2] 
參考資料
  • 1.    周鳴爭主編.計算機網絡[M].合肥:安徽大學出版社,2014.05
  • 2.    張曉明主編.計算機網絡課程設計[M].北京:北京理工大學出版社,2016.08
  • 3.    伍小明,彭自成編著.計算機網絡基礎[M].北京:清華大學出版社,1998.12