1. 程式人生 > >CSMA/CD 及其二進位制指數退避演算法

CSMA/CD 及其二進位制指數退避演算法

一、CSMA/CD過程

       CSMA/CD就像在沒有主持人的座談會中,所有的參加者都通過一個共同的媒介(空氣)來相互
交談。每個參加者在講話前,都禮貌地等待別人把話講完。如果兩個客人同時開始講話,那麼他們都
停下來,分別隨機等待一段時間再開始講話。這時,如果兩個參加者等待的時間不同,衝突就不會出
現。如果傳輸失敗超過一次,將採用退避指數增長時間的方法(退避的時間通過截斷二進位制指數退避
演算法(truncated binary exponential backoff)來實現)。(摘自維基百科)


二、二進位制指數退避演算法

1)確定基本退避時間(基數),一般定為2τ,也就是一個爭用期時間,對於乙太網就是51.2μs
2)定義一個引數K,為重傳次數,K=min[重傳次數,10],可見K≤10
3)從離散型整數集合[0,1,2,……,(2^k-1)]中,隨機取出一個數記做R
    那麼重傳所需要的退避時間為R倍的基本退避時間:即:T=R×2τ。
4)同時,重傳也不是無休止的進行,當重傳16次不成功,就丟棄該幀,傳輸失敗,報告給高層協議

三、舉例

如果第二次發生碰撞: 
n = 2 
k = MIN(2,10) = 2 
R = {0, 1, 2, 3) 
延遲時間 = {0, 51.2 us, 102.4 us, 153.6 us} 其中任取一值