ADVERTISEMENT
隨機時間的計算
設計協定一定要考慮最好和最差的狀況,如果發生碰撞後嘗試傳輸時再次發生碰撞,那麼等待時間將不再是隨機亂數,等待時間改採「二元指數後退演算法」(binary exponential backoff algorithm)。
我們假設第幾次發生碰撞為n(n≦16,如果n>16,會放棄傳送訊框,並向網路架構的上一層報錯),t為n和10取最小值,r為一個倍數,r的值在0≦r<2t(n、t、r皆為包含0的正整數)。
如果今天發生第一次碰撞,n為1,1和10的最小值為1,推導出0≦r<21,所以r的值有可能為0或1,再乘上一個時槽的時間(10Mbps的時槽為51.2μs),因此是0μs或是51.2μs。所以當第一次碰撞之後,將以隨機的方式再從0μs或是51.2μs當中選一個;因此有可能碰撞發送jam signal之後立刻補送訊框出去,或是等51.2μs之後再傳送。第二次碰撞以此類推,將在0μs、51.2μs、102.4μs中隨機選擇1種作為等待時間。
如果今天發生第十一次碰撞,11和10的最小值為10,所以r最多就是1023,等待時間最多為52377.6μs(約52ms),從第十一次碰撞到第十五次碰撞都是如此。
由於網路速度的不同,時槽的秒數也不同,10Mbps的訊框最短為64 Byte,1個時槽為51.2μs;100Mbps網路的訊框最短為64 Byte,1個時槽為5.12μs;1Gbps網路的訊框最短為512 Byte,1個時槽為4.096μs。10Gbps以上的網路已不使用CSMA/CD,所以根本不會發生碰撞(詳情後述)。
CSMA監聽/發送策略
在監聽線路是否忙碌的方法上,也分成許多不同的作法,Ethernet採用1-persistent(1-堅持法),相對的還有O-persistent(O-堅持法),在這兩者中間尚有P- persistent(P-堅持法)和non-persistent(非持續法)。
1-persistent
持續監聽傳輸媒體上是否正處於忙碌狀態(資訊傳送中或發生碰撞),當傳輸媒體一有空閒,就立刻傳送資料。
P-persistent
持續監聽傳輸媒體上是否處於忙碌狀態,如果傳輸媒體空閒,則根據事先定義的p機率值決定下一步要繼續監聽或是立即傳輸資料。P是直接傳輸的機率,1-P(此為1減P)是持續監聽的機率,P-堅持法所所設定的參數通常需要斟酌其它因素考量(網路上的電腦數量、資訊傳輸密度、各台裝置間收發的比例等),較為複雜。
non-persistent
如果偵測到傳輸媒體是空閒狀態,則立刻傳輸資料。如果偵測到傳輸媒體目前是忙碌狀態,則會隨機等待一段時間後再監聽。此策略與P-peristent相比,比較不容易發生碰撞,媒體利用率會比較好,但相對來說傳輸延遲就會增加。
O-persistent
是英文,不是數字,這個策略以完全公平為導向,在此策略中,每個裝置都會有個傳輸順序(通常網路中會有個裝置負責管理),第一台裝置傳輸完1個時槽後,就輪到第二台裝置傳輸1個時槽,第二台傳輸完後接著第三台,以此類推。每台裝置都會持續的監聽傳輸媒體上的資料,以便確定自己該在什麼時候傳輸。
當Ethernet採用CSMA/CD時,採用1-persistent策略,P-persistent策略則是使用在Wi-Fi的CSMA/CA上。O-persistent比較常用在控制環境下,因為傳輸資料量不大,各裝置間都可以在一定的時間內搶到線路所有權。
時槽(time slot)
時槽定義為在最大網路佈建的情況下,最短的訊框從網路中最遠的2點來回1次所需要的時間,會受到網路速度(傳輸頻率)和最短訊框的大小所影響。網路速度越快、時槽越短;訊框越小、時槽越短。
單工、半雙工、全雙工
假設現在有A、B點,如果資訊只能從A點傳至B點,或是B點傳至A點,則這種傳輸方式稱為單工,常見的例子有廣播式協定等。
雙工指的是A、B兩點的資訊均能夠相互傳輸,而雙工又可再細分為半雙工和全雙工。半雙工的A、B兩點雖然能夠相互傳輸資訊,但在同一時間內只能從A點向B點傳輸,或是由B點向A點傳輸,無法同時進行,像是無線電;而全雙工能夠在同一時間內讓A、B兩點相互傳送資訊。
CDMA的缺點
雖然說Ethernet採用的CDMA/CD有針對碰撞發生進行偵測,確保發送和接收到的訊框是完整的,但是卻無法保證碰撞不會發生,特別是當線路上的裝置越來越多時,碰撞的發生次數將成指數級成長,加上所採用的1-persistent策略在高傳輸量時的效率不佳,珍貴的傳輸時間和資源都會被浪費在處理碰撞和等待時間上。
幸好後來的802.3x制定出full-duplex(全雙工)傳輸方式,將原始的half-duplex(半雙工)模式加以改良。switch(交換器)的發明直接讓網路傳輸脫離訊框碰撞的苦海,就算是較多裝置的網路也不會讓傳輸效率下降。
媒體讓全雙工成為可能
最初的網路是採用類似現今傳輸電視訊號的同軸電纜,規格標準為10BASE5或10BASE2,內部結構是單芯銅線,外層使用編織金屬網包覆,達到阻隔雜訊和接地功能。同一時間內只能有1台裝置傳輸,運作在半雙工的狀態。
後來傳輸媒體漸漸的從同軸電纜移到雙絞線(顧名思義,內部線路兩兩成對,相互扭轉在一起),原先使用雙絞線傳輸只是為了佈建方便,讓同一條線材可以同時傳輸電話和網路訊號。
採用雙絞線的佈線方式不但方便,更重要的是一開始所定義的接頭規格就有8個觸點,保留4個觸點只取用4個觸點,2個做為發送,2個作為接收,相當於直接佈建2條同軸電纜,1條用於發送,1條用於接收,這個改變使得網路從半雙工變為全雙工。此外同軸電纜需要的收發器、終端電阻也在使用雙絞線後消失,佈建成本更低,因此相當快速的取代同軸電纜成為Ethernet主流的傳輸媒介。
switch讓CSMA/CD殞落
導線線材數增多,實現全雙工傳輸,但最容易降低網路傳輸速度的碰撞問題依然沒有解決。switch交換器的出現,正好解決這個問題,透過1個小小的技巧解決掉多裝置網路容易發生訊框碰撞的情況。
較早出現的hub網路裝置,僅負責將許多訊號線聚合在一起,或是作為長距離網路的電子訊號放大之用,hub只負責把某條線路傳來的訊號,加以放大並從其它的線路傳遞出去。switch做的事情更為聰明一些,它能夠自動學習哪台電腦在哪條網路線上,傳給A裝置的訊框就會從A裝置和switch連接的網路線傳輸,不會跑到別的地方去。由於A裝置和switch之間的這條線路將相當於獨立佔有,不會有其它裝置的訊框跑過來,也就不會發生碰撞。
switch辨識訊框的MAC位址,和其傳來的網路介面(網路線插孔)進行綁定的動作,即可依據訊框MAC位置決定要從哪個網路介面傳輸。
由於線路獨佔的特性,網路拓樸形態也從過去的bus匯流排,變更為由switch為中心的star星狀拓墣。switch也允許網路上的裝置線路速度不一致,10/100/1000Mbps皆可裝設在同一網路中。
全雙工新版流量控制
在採用CSMA/CD的半雙工傳輸模式下,如果接收端裝置效能不足,無法快速處理傳送端送來的訊框,想要請傳送端降低傳送速率,但半雙工模式無法同時進行雙向傳輸,沒有辦法告知對方我快吐了。此時有2種作法,第一種就是直接在網路上造成訊框碰撞,對方偵測到之後就會進入碰撞之後的處理演算法,而這演算法本身就有降低傳輸速率的功效。第二種就是由接收端直接發出傳輸訊框,另一端就會以為線路上有其它電腦要傳輸,自己就會停下來,以上2種針對半雙工傳輸模式的流量控制方法統稱為back pressure。
使用流量控制可減少緩衝區溢位,訊框資料遺失,導致資料必須重新傳遞的現象,讓線路使用率提升。
進步到全雙工傳輸之後,由於傳送和接收分別在獨立的線組上執行,CSMA/CD被拋棄,根本就不會產生碰撞;於是可以直接告訴對方我快滿了,請降低傳輸速度避免訊框遺失。支援全雙工傳輸模式的裝置都會持續監控自身的緩衝區,當緩衝區內部的資料快要到達緩衝區的頂點,便會發出pause訊框,發送的裝置收到後便會降低傳輸速率。
▲大家共用1條線的bus匯流排網路拓墣
▲各台裝置分別占有獨立線路的star星狀拓墣
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!