資料連結層

載波偵測多重存取/碰撞偵測(CSMA/CD)

/ see-ess-em-AY-see-DEE /

純 CSMA 要節點先聽再說,但一旦它決定送出一個訊框,即使碰撞早已毀了那個訊框,它仍繼續猛轟——白白浪費整段傳送。CSMA/CD 加上一個巧妙的改良:在你說話的「同時」持續聽。如果傳送中的節點偵測到線路上的訊號已經和它正在送的不符,它就知道碰撞正在發生,於是立刻停止,而不是把一個早已成廢物的訊框送完。經典的有線乙太網路就是這樣共用一條纜線的。

完整的舞步是:感測通道並等到空閒;一邊傳送一邊監看線路;若偵測到碰撞,立即中止並送出一段短促的干擾訊號(jam signal),讓每個站台都清楚地登記到這次碰撞;接著等一段隨機退避時間再重試。退避採用二進位指數退避——每連續碰撞一次,節點就把它挑選隨機等待時間的範圍加倍,於是反覆碰撞會讓競爭者彼此拉得更開、通道因而平靜下來。提早中止意味著一次碰撞只浪費極小一段空中時間,而非整個訊框,這正是 CSMA/CD 在有線上有效率的原因。

兩個誠實的提醒。第一,碰撞偵測需要一個最小訊框大小:一個訊框的傳送時間,至少要和訊號傳到最遠端再回來的時間一樣久,否則發送方可能在遠處碰撞的證據傳回之前就送完、而完全沒察覺——這正是乙太網路有最小訊框長度的原因。第二,也很重要,CSMA/CD 是個「有線」的點子。在無線上,一個站台通常無法在傳送的同時聽見碰撞(它自己的訊號蓋過一切),所以 Wi-Fi 改用碰撞「避免」(CSMA/CA)。現代交換式、全雙工的乙太網路根本沒有共享媒介、也完全沒有碰撞,所以 CSMA/CD 在那裡實際上也已退役——它主要作為「定義了乙太網路如何長大」的協定而存留下來。

老式共享纜線乙太網路上的兩個站台,都感測到空閒,幾乎同時開始。各自很快偵測到纜線上的訊號和自己的不符,認出碰撞,中止,送出干擾訊號,並用二進位指數退避等一段隨機時間——只浪費一小片空中時間,而非兩個完整的訊框。

說話時持續聽:一偵測到碰撞就立刻中止,省下其餘的空中時間。

CSMA/CD 是給有線連結用的。Wi-Fi 無法在傳送時可靠地偵測碰撞,所以它用碰撞「避免」(CSMA/CA),而非 /CD。而在今日交換式全雙工的乙太網路上根本沒有共享媒介,所以 CSMA/CD 已完全不再運作。

又稱
carrier-sense multiple access with collision detection載波偵測多重存取附碰撞偵測