详解CSMA/CD
? 學網絡的人,恐怕都得知道在總線網絡中必須要用到CSMA/CD來傳輸數據。?
? ? CSMA/CD——帶沖突檢測的載波偵聽多路訪問機制,用來決定某一時刻介質訪問權限問題,原理如下:所有站點共享一條傳輸線路(總線),每個站點在傳輸 數據之前都要偵聽線路上是否空閑。如果空閑,則立刻發送數據;若不空閑,則等待一定時間之后再傳,其間,仍舊監視線路空閑狀況。如果在傳輸的時候和其他站 點產生了沖突,則使用退避算法后退一個隨機時間,再重傳數據。共享方式的以太網就是利用此機制進行數據傳輸的。
在很多的網絡技術原理書籍上僅僅就是這些內容,再多一點就不過多舉幾個例子而已。那么我這里也舉例說明一下,會更加明白一些的。
?
? 如上圖所示,就是一個典型的總線型網絡拓撲,現在我們看這樣一個過程:
? ???站點A準備給站點B傳輸數據,應用CSMA/CD 機制,在傳輸之前站點A不斷偵聽線路上是否空閑,當線路上空閑之時,A給B發出frame,在此同時,其他站點也在不斷偵聽線路空閑狀態,恰好此時站點B 也認為線路正好空閑,于是B向C發出frame。frame B和frame C在線路上不期而遇,產生了沖突,沖突給A和B分別一個提示,提示線路上有沖突,這個時候,A和B都會采取一個強化碰撞的措施,向線路發送干擾信號,這個 信號會讓所有的站點都接收到,認為線路上產生了碰撞。緊接著,A與B都使用退避算法,延遲一個隨機時間接著重傳數據,也就是說,雙方獲得重傳的機會是平等 的,沒有規定水先誰后,但是具體到先后則是有這個退避算法決定的,那么退避算法到底是怎么進行的呢?為什么不是有的人所認為的先沖突先發送的機制而是平等 的機制呢?下面我就給大家講講這個退避算法的原理。
? ???早期以太網使用的退避算法稱為二進制指數類型退避算法,具體進行如下:
? ???1)確定基本退避時間(基數),一般定為2τ,也就是一個爭用期時間(爭用期在后面給出定義),對于以太網就是51.2μs。
? ???2)定義一個參數K,為重傳次數,K=min[重傳次數,10],可見K≤10。
? ???3)從離散型整數集合[0,1,2,……,(2^k-1)]中,隨機取出一個數記做R。
? ?? ?(備注:2^k是2的k次方冪,這里上標表示不出來,敬請原諒)
? ???那么重傳所需要的退避時間為R倍的基本退避時間:即:T=R×2τ。
? ???4)同時,重傳也不是無休止的進行,當重傳16次不成功,就丟棄該幀,傳輸失敗,報告給高層協議。
? ???如:第一次重傳K=1,R=0,1;T=0,2t。T在二者中隨機選擇。
? ???那么第二次重傳呢?K=2,R=0,1,2,3;T=0,2t,4t,6t。
? ???如此可見,重傳數次越多,則退避的時間就越長,稱為動態退避。
? ???說到這里大家應該所有明白了吧,還有什么問題可以接著跟貼提出!
?
轉載于:https://blog.51cto.com/chinagg/863270
總結
- 上一篇: JDBC 获取被插入数据的主键ID值
- 下一篇: as和强制类型转换的区别