1。2。3 CSMA/CD協議
CSMA協議工作過程中,當碰撞發生時,資料仍會繼續傳輸,就這導致了網路資源的浪費。為了提高通道利用率,我們可以規定傳送方傳送資料時,
邊傳送邊監聽通道
,一旦監聽到傳送碰撞,就停止傳送,這就是CSMA/CD協議。CD的含義是Collision Detection,碰撞檢測,傳送方透過檢測通道上的訊號電壓大小來檢測碰撞,當訊號電壓擺動值超過一定的門限值時,就認為發生了碰撞,一旦檢測到碰撞,就
立即停止資料傳輸
。
圖中展示了CSMA/CD的工作過程:傳送方首先監聽通道,如果繁忙,則等待下次監聽;如果通道則傳送資料,同時進行碰撞檢測,如果檢測到碰撞,則立即停止傳送,否則,將資料完整發送出去。
圖中展示了碰撞檢測過程。假設單向傳播時延為τ,試想如果發生碰撞,最多經過多久A能檢測到發生了碰撞呢。答案是2τ,當A傳送的資料
即將到達
B時發生碰撞,此時經過的時間剛好是τ,然後碰撞後的訊號返回至A,所經過的時間同樣是τ,則從開始傳送到檢測到碰撞所經過的
最長時間
就為
2τ
。如果在
時間τ內,未發生碰撞
,那麼其他傳送方檢測到的通道狀態必然是繁忙,也就不會再發送資料,碰撞也就不可能再發生,也就是說
在2τ內未檢測到碰撞
,那麼認為此次資料傳輸不再會發生碰撞了,這裡的2τ就叫
爭議期
(爭用期)。因此,要想使用CSMA/CD協議,資料幀必須
足夠長
,否則爭議期的時間還沒有到,資料就傳輸完畢了,失去了CSMA/CD協議的意義。假設資料傳輸速率為c bit/s,則最小幀長L=2cτ (bit)。
檢測到碰撞發生後,傳送方停止傳送資料,會等待一個
隨機時長
重新監聽通道,那麼隨機時長如何確定呢?這裡採用的是
二進位制指數型別退避演算法
:
①基本退避時間設為爭用期 2τ
②從整數集合 [0, 1, … , (2k - 1)] 中隨機地取出一個數,記為 r。重傳所需的時延就是 r 倍的基本退避時間,即2rτ。
③引數 k 按下面的公式計算:
k = Min[重傳次數, 10]
即當 k ≤10 時,引數 k 等於重傳次數。
當重傳達 16 次仍不能成功時,認為該幀無法傳送,丟棄該幀,並向高層報告。
比如第一次重傳k=1,2k-1=1,則在0、1中選一個數,假如選到1,則經過2τ後重新檢測通道。第11次重傳時,取k=
10
,2k-1=1023,則在0、1、2……1023中隨機取一個數,假如選到666,則經過666*2=1332τ後重新監聽通道。
在全雙工通訊中,由於傳送通道與接收通道不通用,所以不會發生碰撞,因此不需要CSMA/CD協議,所以CSMA/CD協議
只應用於半雙工通訊
。
1。2。4 CSMA/CA協議
CSMA/CA協議中的CA意思是Collision Avoidance,碰撞避免。
無線區域網
中,不能使用CSMA/CD,原因有二:①訊號在無線介質中傳播時,衰減很快,檢測通道的
成本高
②存在“
隱蔽站
”的問題。
如圖,此時A正在向B傳送資料,C也想向B傳送資料,但是C
檢測不到
A傳送的訊號,就認為通道空閒,於是開始傳送資料,最終發生碰撞。這裡的A就是C的
隱蔽站
。
CSMA/CA協議工作時,傳送方先監聽通道,當通道
空閒
時,傳送方發出
RTS
(request to send),相當於告訴接收方我想要傳送資料;接收方收到RTS後,將會返回一個
CTS
(clear to send),相當於告訴接收方可以開始發生資料了;傳送方收到CTS後,就會開始傳送資料,同時,還會
預約通道
(告知其他站點自己需要的傳輸時間)。接收方收到資料後採用CRC校驗,如果正確則接收並回傳確認幀,如果錯誤則直接丟棄,傳送方會根據
二進位制指數退避演算法
確定重傳時間。
本文有些內容引用的是《計算機網路計算》謝希仁第七版教材課件。限於個人水平,文中難免有錯誤的地方,歡迎大家批評指正。