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