CSMA/CD解釋與理解


1. CSMA/CD含義

CSMA/CD即載波監聽多點接入/碰撞檢測,此協議是使用在總線型網絡中的,不同計算機是通過多點接入的方式連接在一起。協議的重點在於監聽和碰撞檢測。

2. 為什么要監聽和碰撞檢測

當初學習的時候,對於為什么要監聽空閑和檢測碰撞一直很疑惑,其實原因很簡單,對於總線型網絡來說,如果有多個主機同時發送信號,那么是很難從中分辨出信息的。舉個栗子就是一堆不同頻率相位的正弦混合在一起,讓你從波形圖中畫出某條正弦曲線,是不是感覺非常的困難?為了避免在網絡中遇到這個問題,所以采用載波監聽和碰撞檢測的方法。

3.載波監聽用處

載波監聽其實就是檢測信道是不是為空,如果是,那么就可以發送自己的信息了。如果信道正忙,那么只能等到信道空閑,才能發送自己的信息。那么,是不是只要空閑發送自己的信息就永遠不會出錯呢?當然不是,我們聯系生活中的一個栗子就能知道,當開會討論的時候,如果一片安靜,那么之后就可能會有兩個或者多個人同時開始說話發言。信道上也是如此,甚至更加明顯。因為載波監聽只能是在自己的位置監聽,而從別的主機發送過來的信號需要時間。這就不可避免的會出現主機B明明發送了信息,但是主機A沒有發現,也發送一個信息出來,這樣便會發生碰撞,導致數據信號失真。

4.碰撞檢測用處

碰撞檢測就是為了解決上面說的同時發送,或者說在很短時間(B發送信號尚未到達A)內同時發送引發的碰撞問題。碰撞檢測即適配器在發送數據的過程中也要檢測信道信號,若發現信號電壓變化幅度增大超過某個閾值,則認為發生碰撞。

5.截斷二進制指數退避

發送了碰撞怎么辦?當然是停止發送,找個合適的時間再發送。那么怎么尋找一個合適的時間呢?那就要用到截斷二進制指數退避,這個名字聽起來很高端大氣,其實很簡單。首先我們明確一個概念,叫做爭用期。什么叫爭用期,就是在這個發送信息后的這段時間內可能發生碰撞,但是過了這個爭用期,那么就一定不會發生碰撞。我們把爭用期定義為兩倍的端到端傳播時延,如下圖,δ足夠小的時候,A要經過2τ的時間才能發現碰撞。

退避算法:
1.從[0,1,2, ...,(2^k-1)]中隨機選一個數,記為r。重傳應在r倍爭用期之后進行。k的取值為Min[重傳次數,10],即k小於10時為重傳次數,最大不超過10 。
2.若重傳超過16次還是不成功,則說明信道中數據過多,放棄重傳,向高層報告。

6.最短幀長

那么,經歷了上面的一系列操作,我們是不是可以保證信道中不會存在沖突了呢?答案是,不能。我們要注意到我們的碰撞檢測和監聽都是在本機的位置上進行的,不能夠跑到別的信道位置上進行。那么這樣就存在了一個問題,那就是要發送的信息過短,導致碰撞檢測在發送該信息的時候沒有檢測到碰撞,但是在發送出去之后,這個信息與其他的信息碰撞。就好像你寄東西,寄出去的時候還是好好的,等送到別人手里變得一塌糊塗,這就是在寄的過程中發生了沖突。解決辦法很簡單,就是增加信息長度。以太網規定最短幀長為64字節,對於10Mbit/s以太網,發送64字節(512bit)數據需要51.2us,也就是上面的爭用期。這樣如果發生碰撞,那么一定能在自己這邊檢測出來,因為自己的信號和別人發送的信號混在一起,導致信號電壓變化超過閾值。如果發送完了,那么自己是不知道自己發送的東西在路上有沒有出現意外,這個就只有接收方才能知道,會把這個丟棄,但是自己不會再次發送,這就導致數據的丟失。並且由於發現沖突就會停止發送,所以可以認為,凡是長度小於64字節的幀都是由於沖突而停止發送無效幀。

7.強化碰撞

在發送數據的時候發生沖突,除了停止發送用戶數據,還要繼續發送32bit或者48bit的干擾信號,目的就是為了讓所有用戶都知道現在發生了沖突。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM