鏈路層:CSMA/CD 協議


禁止碼迷,布布扣,豌豆代理,碼農教程,愛碼網等第三方爬蟲網站爬取!

總線實現的廣播通信

總線連接

最初的以太網是將許多計算機都連接到一根總線上,因為總線上沒有有源器件,所以認為這樣的連接方法既簡單又可靠。當一台計算機發送數據時,總線上的所有計算機都能檢測到這個數據。但是並不是在任何時候都需要廣播通信,一對一通信需要用 MAC 地址來確定目的地。例如總線上的每一個工作的計算機都能檢測到 B 發送的數據信號。,由於只有計算機 D 的地址與數據幀首部寫入的地址一致,因此只有 D 才接收這個數據幀。其他所有的計算機(A, C 和 E)都檢測到不是發送給它們的數據幀,因此就丟棄這個數據幀而不能夠收下來。

以太網通信

為了通信的簡便,以太網采取了兩種重要的措施:

  1. 采用較為靈活的無連接的工作方,不必先建立連接就可以直接發送數據。
  2. 對發送的數據幀不進行編號,也不要求對方發回確認。

這樣做的理由是局域網信道的質量很好,因信道質量產生差錯的概率是很小的。由此可見以太網提供的服務是不可靠的交付,即盡最大努力的交付。當目的站收到有差錯的數據幀時就丟棄此幀,其他什么也不做,差錯的糾正由高層來決定。如果高層發現丟失了一些數據而進行重傳,但以太網並不知道這是一個重傳的幀,而是當作一個新的數據幀來發送。
以太網發送的數據都使用曼徹斯特 (Manchester) 編碼,它的缺點是所占的頻帶寬度比原始的基帶信號增加了一倍。

CSMA/CD協議

基於總線的以太網中只要有一台計算機發送數據,總線的傳輸資源就會被占用,因此同一時間只能允許一台計算機發送數據。以太網采用的 CSMA/CD (載波監聽多點接入/碰撞檢測)協議來協調資源,該協議的要點是:

  1. 多點接入:表示許多計算機以多點接入的方式連接在一根總線上。
  2. 載波監聽:用電子技術檢測總線上有沒有其他計算機發送的數據信號。每一個站在發送數據之前先要檢測一下總線上是否有其他計算機在發送數據,如果有則暫時不要發送數據,以免發生碰撞。
  3. 碰撞檢測:計算機邊發送數據邊檢測信道上的信號電壓大小。

使用 CSMA/CD 協議的以太網不能進行全雙工通信,只能進行雙向交替通信(半雙工通信)。這是因為每個站在發送數據之后的一小段時間內,存在着遭遇碰撞的可能性,這種發送的不確定性使整個以太網的平均通信量遠小於以太網的最高數據率。

碰撞檢測

當幾個站同時在總線上發送數據時,總線上的信號電壓擺動值將會增大(互相疊加)。當一個站檢測到的信號電壓擺動值超過一定的門限值時,就認為總線上至少有兩個站同時在發送數據,表明產生了碰撞。所謂“碰撞”就是發生了沖突。因此“碰撞檢測”也稱為“沖突檢測”。在發生碰撞時,總線上傳輸的信號產生了嚴重的失真,無法從中恢復出有用的信息來。每一個正在發送數據的站發現總線上出現了碰撞,就要立即停止發送,免得繼續浪費網絡資源,然后等待一段隨機時間后再次發送。
為什么要進行碰撞檢測?由於電磁波在總線上的傳播速率是有限的,當某個站監聽到總線是空閑時,也可能總線並非真正是空閑的。A 向 B 發出的信息,要經過一定的時間后才能傳送到 B。B 若在 A 發送的信息到達 B 之前發送自己的幀 (因為這時 B 的載波監聽檢測不到 A 所發送的信息),則必然要在某個時間和 A 發送的幀發生碰撞。碰撞的結果是兩個幀都變得無用,所以需要在發送期間進行碰撞檢測以避免沖突。

爭用期

設單程端到端時延為 t,最先發送數據幀的站,在發送數據幀后至多經過時間 2t(兩倍的端到端往返時延)就可知道發送的數據幀是否遭受了碰撞。以太網的端到端往返時延 2t 稱為爭用期或碰撞窗口。經過爭用期這段時間還沒有檢測到碰撞,才能肯定這次發送不會發生碰撞。
發送碰撞后,應該什么時候重傳呢?以太網使用二進制指數類型退避算法來確定。發生碰撞的站在停止發送數據后,要推遲一個隨機時間才能再發送數據。設基本退避時間取為爭用期 2t,從整數集合 [0, 1, … , (2^k-1)] 中隨機地取出一個數記為 r,重傳所需的時延就是 r 倍的基本退避時間。參數 k 按公式“k = Min[重傳次數, 10]”計算,當 k < 10 時,參數 k 等於重傳次數。當重傳達 16 次仍不能成功時即丟棄該幀,並向高層報告。

最短有效幀長

10 Mbit/s 以太網取 51.2 us 為爭用期的長度,對於 10 Mbit/s 以太網,在爭用期內可發送 512 bit,即 64 字節。如果發生沖突,就一定是在發送的前 64 字節之內。由於一檢測到沖突就立即中止發送,這時已經發送出去的數據一定小於 64 字節。以太網規定了最短有效幀長為 64 字節,凡長度小於 64 字節的幀都是由於沖突而異常中止的無效幀。

強化碰撞

當發送數據的站一旦發現發生了碰撞時,需要完成以下 2 步:

  1. 立即停止發送數據;
  2. 再繼續發送若干比特的人為干擾信號(jamming signal),以便讓所有用戶都知道現在已經發生了碰撞。

CSMA/CD 工作流程

  1. 准備發送:發送之前必須先檢測信道。
  2. 檢測信道:若檢測到信道忙,則應不停地檢測,一直等待信道轉為空閑。若檢測到信道空閑,並在 96 比特時間內信道保持空閑(保證了幀間最小間隔),就發送這個幀。
  3. 檢查碰撞:在發送過程中仍不停地檢測信道,即網絡適配器要邊發送邊監聽。這里只有兩種可能性:發送成功時,在爭用期內一直未檢測到碰撞,這個幀肯定能夠發送成功。發送完畢后,其他什么也不做。然后回到 (1)。發送失敗時,在爭用期內檢測到碰撞,這時立即停止發送數據,並按規定發送人為干擾信號。適配器接着就執行指數退避算法,等待 r 倍 512 比特時間后,返回到步驟 (2),繼續檢測信道。但若重傳達 16 次仍不能成功,則停止重傳而向上報錯。

信道利用率

信道被占用的情況

多個站在以太網上同時工作就可能會發生碰撞。當發生碰撞時,信道資源實際上是被浪費了。因此,當扣除碰撞所造成的信道損失后,以太網總的信道利用率並不能達到 100%。
假設 t 是以太網單程端到端傳播時延。則爭用期長度為 2t,即端到端傳播時延的兩倍,檢測到碰撞后不發送干擾信號。設幀長為 L (bit),數據發送速率為 C (bit/s),則幀的發送時間為 T0 = L/C (s)。一個站在發送幀時出現了碰撞。經過一個爭用期 2t 后,可能又出現了碰撞,這樣經過若干個爭用期后,一個站發送成功了。注意到,成功發送一個幀需要占用信道的時間是 T0 + t,比這個幀的發送時間要多一個單程端到端時延 t。這是因為當一個站發送完最后一個比特時,這個比特還要在以太網上傳播。在最極端的情況下,發送站在傳輸媒體的一端,而比特在媒體上傳輸到另一端所需的時間是 t。

參數 α 與利用率

要提高以太網的信道利用率,就必須減小 t 與 T0 之比,在以太網中用參數 α 定義:

α →0,表示一發生碰撞就立即可以檢測出來,並立即停止發送,因而信道利用率很高。α 越大,表明爭用期所占的比例增大,每發生一次碰撞就浪費許多信道資源,使得信道利用率明顯降低。為提高利用率,以太網的參數a的值應當盡可能小些。對以太網參數 α 的要求是:當數據率一定時,以太網的連線的長度受到限制,否則 t 的數值會太大。以太網的幀長不能太短,否則 T0 的值會太小,使 α 值太大。

最大值的信道利用率

在理想化的情況下,以太網上的各站發送數據都不會產生碰撞,即總線一旦空閑就有某一個站立即發送數據。發送一幀占用線路的時間是 T0 + t,而幀本身的發送時間是 T0。於是我們可計算出理想情況下的極限信道利用率 Smax 為:

參考資料

《計算機網絡(第七版)》 謝希仁 著,電子工業出版社


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM