計算機網絡-CSMA/CD協議
目錄
1 前言
最初的以太網是將許多計算機都連接到一根總線上。易于實現廣播通信。當初認為這樣的連接方法既簡單又可靠,因為總線上沒有有源器件,總線上每一個計算機都能檢測到其他計算機發出的信號,這就是廣播通信方式
但有時我們想一對一的通信,這種情況下就要在發送數據幀的首部中寫明接收主機的地址,如圖,若B向D發送數據時,可以指明接收主機D的地址,由于只有D的地址和數據中的接收地址相同,所以只有D接收到數據,其他主機檢測到不是發給自己的數據則會丟棄數據,這樣就在廣播通信中實現了一對一的通信
2 以太網采取了兩種重要的措施
為了通信的簡便,以太網采取了兩種重要的措施:
采用較為靈活的無連接的工作方式以太網發送的數據都使用曼徹斯特 () 編碼 2.1 無連接的工作方式 2.2 使用曼徹斯特 () 編碼
關于曼徹斯特 () 編碼,可參考我的這篇文章 計算機網絡-關于信號的調制
2.3 存在的問題
總線型以太網在同一時間內只允許一臺計算機發送數據,那么該如何協調各個計算機之間的工作?下面介紹的 CSMA/CD協議 就是解決方案
3 CSMA/CD協議
CSMA/CD的工作流程圖:
3.1 存在的問題
既然每一個發送站在發送之前都已經檢測到信道當前為“空閑”那為何還會出現“碰撞”呢?
這是因為數據電磁波在總線上傳輸時是以有限的速度傳播的,如某個發送站監聽到總線是空閑時,總線并非真的是空閑的,如下圖中A,B兩個站點距離為1km,之間用同軸電纜相連,電磁波在1km電纜上的傳播時延大約為5ms,因此從A發向B的信息,大約要經過5ms才能到達B,若B在A發送給自己的消息之前也發送了一個數據出去,則必然在某個時間,B發出的數據會和A發出的數據在總線上發生碰撞
我們把總線上端到端的一趟時間記為 τ,圖中當τ為0時A發送數據,B檢測到總線為空閑,在時間 τ-δ 時,A發送的數據還沒有到達B,B因為檢測到總線空閑,就開始發送數據,設在τ-δ/2 時,發生了碰撞,這時由于數據還在總線上傳輸,A和B都不知道數據發生了碰撞,但當 t=τ 時,A的數據發送到B了,B就檢測到碰撞了于是停止發送數據,在時間 t=2τ-δ 時,B發送給A的數據到達了A,A檢測到了碰撞,也停止發送了數據
3.2 重要特性 3.3 爭用期
爭用期的長度:
最短有效幀長:
3.4 二進制指數類型退避算法 ( type)
發生碰撞的站在停止發送數據后,要推遲(退避)一個隨機時間才能再發送數據,這個隨機時間就要用到二進制指數類型退避算法:
確定基本退避時間,一般是取為爭用期 2τ定義重傳次數 k ,k ≤ 10,即 k = Min[重傳次數, 10]從整數集合[0,1,…, (2k2^k2k -1)]中隨機地取出一個數,記為 r。重傳所需的時延就是 r 倍的基本退避時間當重傳達 16 次仍不能成功時即丟棄該幀,并向高層報告 3.5 強化碰撞
當發送數據的站一旦發現發生了碰撞時: