ADVERTISEMENT
這次我們走入網路的更底層,TCP/IP網路模型的第一層或是OSI網路模型的第二層,了解訊框實際上在有線和無線網路上傳輸的策略,此部分已相當接近網路傳輸的最底層,再下去就是將訊框轉換為電氣∕光學規格在媒體上傳送。
▲CSMA和同軸電纜在網路分層架構的對應關係
802.3
上次講完IP,此次就是更底層的網路傳輸方式,在OSI網路架構屬於L2資料鏈結層的CSMA(Carrier Sense Multiple Access,載波偵測多重存取)載波偵測多重存取網路通訊協定,定義在IEEE 802.3當中。由於當時主要的實體傳輸媒介為同軸電纜,也就是你家電視接收無線或有線電視訊號的那條電纜,IEEE 802.3也就把同軸電纜一同定義成為OSI架構的L1實體層,CSMA和同軸電纜也就正好對應TCP/IP模型的L1鏈結層。不過因為現今主流傳輸媒介為RJ-45雙絞線,同軸電纜的部分只會跟著CSMA稍微提到一些。
現在的LAN(Local Area Network)大多都脫離不了IEEE 802.3的標準範疇,由於802.3下面還有許多更改版規格,我們先從最基礎的功能開始談起,也就是以同軸電纜作為連結媒介,傳輸速度最大只有10Mbps的原始版本。
CSMA
IEEE 802.3使用了一種稱為CSMA的技術作為核心,因為在較為早期的網路,線材作為匯流排看待,任何連上此網路匯流排的電腦都可以在其上傳輸資料;但就像菜市場攤販叫賣一樣,大家同時說話很容易聽不清楚芹菜1把10元、西瓜買一送一的特價資訊,電腦也需要有一套傳輸規則,避免大家同時傳輸資料造成錯誤,而此規則就是CSMA。
CSMA載波偵測多重存取的規則就像其名稱一樣,為了避免在其它電腦傳輸資料時造成干擾,當某台電腦想要傳輸時,會先監聽傳輸媒介是否正在使用,如果沒有其它電腦正在傳輸,代表線路目前是空閒狀態可立即使用;如果監聽的結果是線路正在使用,則持續保持監聽狀態,直到線路空閒,這就是CS(Carrier Sense)的由來。
另外一方面,由於大家都位在同一匯流排上,當某部電腦正在傳送資料時,則所有位於匯流排上的電腦都會接收到這份資料,電腦處理與否的關鍵在於傳送訊框表頭所包含的MAC(Media Access Control)位址是否跟自己相符,如果兩者一致就接收下來進行後續的處理,不同就表示這份資料不是給我的,不進行處理;這種同一匯流排可供多台電腦存取的特性,就是MA(Multiple Access)的由來。
CSMA/CD
實際上在傳輸訊框時,僅使用CSMA策略會造成傳輸速率下降,因為它沒有辦法確保多台電腦在同一時間,傳輸資料時所造成的訊框碰撞現象。因為在此之前監聽發現沒有電腦使用網路,多台電腦同時以為線路是空閒狀態,進行傳輸時就會造成訊號重疊在一起,接收方無法正確收到訊框。所以實際應用加入了CD(Collision Detection)變成CSMA/CD,對於碰撞的發生進行偵測並處理,提高線路傳輸效率。基本策略與CSMA相同,如果線路目前是空閒狀態,則可以進行傳輸工作,但不同的是傳輸工作進行時,偵測工作也同時進行著,如果傳輸中偵測到了不是自己所送出的訊號,就立刻停止自己的傳輸工作,進入碰撞偵測的後續處理。
偵測到訊框碰撞之後,立即停止原先的傳輸工作,連續發出一串32 bit干擾訊號,用以提醒此網路匯流排其它的裝置發生碰撞。接著等待一段隨機時間,再次嘗試因碰撞而未傳輸完畢的訊框。等待時間不固定,是為了盡量讓裝置們不要再次發生碰撞。
jam signal的發送長度
jam signal是32 bit長的亂數,或者直接發送1也可以,主要是讓發送方了解到發生碰撞,以及讓接收方的訊框CRC結果失敗,丟棄此訊框。
在Ethernet中,最大的架設環境下,距離最遠的兩端點訊號時間差可達232 bit傳輸時間,也就是說,當A電腦發送231bit之後,與A最遠的B電腦若已傳輸1bit,下個傳輸1bit的時間就會偵測到A電腦送來的訊號,才會偵測到碰撞發生,停止傳輸。而傳輸32 bit長度的jam signal是為了讓A電腦更容易辨識,過短的jam signal無法保證A電腦得知碰撞發生。
Ethernet訊框最短長度64 Byte也是因為232 bit的傳輸時間差而設計出來的,因為當A電腦發送之後,最遠的B電腦需要經過232 bit傳輸時間後才可收到訊號;若是碰撞發生,回傳給A電腦的碰撞訊號也要232 bit的傳輸時間,一來一往之下就是464 bit(58 Byte),為了確保A電腦佔據網路夠久的時間偵測B電腦傳來的碰撞訊號,以及電腦單位經常使用2的次方影響,就制訂出了64Byte這個最短訊框長度。
▲CSMA/CD的發送流程
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!