粗論CSMA/CD

從大學時期,就不斷接觸的名詞,教材上有著很多學術上的解釋,常會弄得一知半解,因為太學術了,而前陣子在香港的論壇中,偶然發現篇文章,詮釋的相當棒,把它PO上來以備不時之需~

1) CS (Carrier Sense)傳送設備要將信號送至傳輸媒體之前﹐首先要探測媒體是否已經存在 carrier﹐如果有﹐則表示有其它設備在使用這個媒體進行其它的傳送。然則﹐傳送設備就不能向這個媒體送出信號﹐而必須等到下次探測沒有 carrier 的時候才能傳送。這比較好理解﹐也就是先搶先贏嘛﹐好比在課堂上發言﹐誰先舉手說誰先說﹐如果已經有人在說了﹐那就等。

2) MA (Mutiple Access) 在同一時間內﹐允許多個設備使用共享媒體(當然不能離開 CS 和 CD 的制約)。在CSMA/CD 技術中當發送設備順利通過 CS 檢測之後向媒體送出信號而沒有發生Collision 的話﹐所有分享著同一媒體的設備﹐都能收到這個信號。

每一個設備都有一個唯一的位址標識﹐我們通常稱之為 MAC 位址﹔而信號在傳送媒體中則是以 frame的形式傳送﹐每個 frame 都有一個 source 和一個 destination 位址欄。傳送設備將 frame 送至媒體上之後﹐只有被標識為 destination 的的設備﹐才會將信號 copy下來﹐再往上層程式遞送 (decapsulate)﹐而那些設備發現 destination 不是自己的話﹐就單純的不處理這個 frame (除非在 promiscuous 模式之下)。

3) CD (Collision Detection)前面的 CS 過程中﹐在理想的情況之下﹐所有分享著共同媒體的設備﹐都應該有機會取得傳送的機會。只是﹐電子設備的運作速度﹐遠非我們人類所能感應的﹐這些運作﹐每一 秒鐘可能有上萬甚至百萬次之多﹐例如 CAT 5 種類的網線﹐就能處理350Mhz 或更高的傳送頻率。

假如﹐當兩個設備剛好在這百萬分之一秒之內﹐同時做CS 的動作﹐而又同時探測到媒體上沒有 carrier﹐那這種情形之下﹐這兩個設備可能會同時對這媒體傳送信號﹐這就是我們常說的 Collision (碰撞)了。

如果當一個碰撞發生了﹐就會在媒體上產生frequecy ripple現象。當一個在線的設備偵測到ripple﹐它就會發出一個高頻信號去清除所有其它信號。換句話說﹐這個信號同時告訴所有設備﹐碰撞已經發生。這時候﹐每一個設備都會隨機的等待一段時間再重新進行 CS﹐如果連續的(非間斷的)還是遇到 collision﹐那就按一定比例延遲隨機等待時候﹐總共可以進行16次嘗試大家才會最終放棄。所以不難看出﹐如果在同一個segment 上面﹐在線的設備越多﹐其發生 collision 的機會也越大。

0 回應: