計算機網路——資料鏈路層七

1。2。3 CSMA/CD協議

CSMA協議工作過程中,當碰撞發生時,資料仍會繼續傳輸,就這導致了網路資源的浪費。為了提高通道利用率,我們可以規定傳送方傳送資料時,

邊傳送邊監聽通道

,一旦監聽到傳送碰撞,就停止傳送,這就是CSMA/CD協議。CD的含義是Collision Detection,碰撞檢測,傳送方透過檢測通道上的訊號電壓大小來檢測碰撞,當訊號電壓擺動值超過一定的門限值時,就認為發生了碰撞,一旦檢測到碰撞,就

立即停止資料傳輸

計算機網路——資料鏈路層七

圖中展示了CSMA/CD的工作過程:傳送方首先監聽通道,如果繁忙,則等待下次監聽;如果通道則傳送資料,同時進行碰撞檢測,如果檢測到碰撞,則立即停止傳送,否則,將資料完整發送出去。

計算機網路——資料鏈路層七

圖中展示了碰撞檢測過程。假設單向傳播時延為τ,試想如果發生碰撞,最多經過多久A能檢測到發生了碰撞呢。答案是2τ,當A傳送的資料

即將到達

B時發生碰撞,此時經過的時間剛好是τ,然後碰撞後的訊號返回至A,所經過的時間同樣是τ,則從開始傳送到檢測到碰撞所經過的

最長時間

就為

。如果在

時間τ內,未發生碰撞

,那麼其他傳送方檢測到的通道狀態必然是繁忙,也就不會再發送資料,碰撞也就不可能再發生,也就是說

在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校驗,如果正確則接收並回傳確認幀,如果錯誤則直接丟棄,傳送方會根據

二進位制指數退避演算法

確定重傳時間。

本文有些內容引用的是《計算機網路計算》謝希仁第七版教材課件。限於個人水平,文中難免有錯誤的地方,歡迎大家批評指正。