(三)數據鏈路層--廣播信道

廣播信道

上一篇文章介紹了點對點協議PPP,本文介紹使用廣播信道的數據鏈路層。廣播信道可以進行一對多的通信。

局域網的數據鏈路層

局域網最主要的特點是:網絡爲一個單位所擁有,且地理位置和站點數目均有限。在局域網剛出現時,相較廣域網,有較高的數據率,較低的時延,較小的誤碼率。局域網具有如下主要優點:

  • 具有廣播功能,從一個站點可很方便的訪問全網。局域網上的主機可共享連接在局域網上的各種硬件和軟件資源
  • 便於系統的擴展和逐漸演變,各設備的位置可靈活調整和改變
  • 提高了系統的可靠性(reliability)、可用性(availability)、生存性(survivability)

局域網可按網絡拓撲進行分類,如下圖所示:

  • 星形網
  • 環形網
  • 總線網

    各站直接連在總線上。總線兩端的匹配電阻吸收在總線上傳播的電磁波信號的能量,避免在總線上產生有害的電磁波反射。

共享信道要着重考慮的一個問題就是如何使衆多用戶能夠合理而方便的共享通信媒體資源,這在技術上有兩種辦法:

  • 靜態劃分信道,如頻分複用、時分複用、波分複用、碼分複用。用戶只要分配到了信道就不會和其他用戶發生衝突,但這種劃分信道的方法代價較高,不適合局域網使用
  • 動態媒體接入控制,又稱爲多點接入(multiple access),其特點是信道並非在用戶通信時固定分配給用戶,它又分爲以下2類:
    • 隨機接入,特點是所有的用戶可隨機的發送信息,但如果恰巧有兩個或更多的用戶在同一時刻發送消息,那麼在共享媒體上就會產生碰撞,使得這些用戶的發送都失敗。因此,必須有解決碰撞的網絡協議
    • 受控接入,特點是用戶不能隨機的發送信息,而要服從一定的控制。典型代表有:分散控制的令牌環局域網和集中控制的多點線路探尋(polling),或成爲輪詢。

處於有關廠商在商業上的激烈競爭,IEEE802委員會未能形成一個統一的、最佳的局域網標準,而是被迫制定了幾個不同的局域網標準,如:802.4令牌總線網、802.5令牌環網等。爲了使數據鏈路層能更好的適應多種局域網標準,IEEE802委員會就把局域網的數據鏈路層拆成兩個子層,即邏輯鏈路控制LLC子層(Logical Link Control)和媒體接入控制MAC子層(Mmedium Access Control)。LLC子層與傳輸媒體無關,採用何種傳輸媒體和MAC子層的局域網對LLC子層來說都是透明的。

適配器的作用

計算機與外界局域網的連接是通過通信適配器(Adapter)進行的。適配器本來是在主機箱內插入的一塊網絡接口板,它又被稱爲網卡。這種通信適配器上面裝有處理器和存儲器(RAM和ROM)。適配器和局域網之間的通信是通過電纜或雙絞線以串行傳輸方式進行的,而適配器和計算機之間的通信則是通過計算機主板上的I/O總線以並行傳輸方式進行的。因此,適配器的一個重要功能就是要進行數據串行傳輸和並行傳輸的轉換。由於網絡上的數據率和計算機總線上的數據率並不相同,因此在適配器中必須裝有對數據進行緩存的存儲芯片。在主板上插入適配器時,還必須把管理該適配器的設備驅動程序安裝在計算機的操作系統中。這個驅動程序以後就會告訴適配器,應當從存儲器的什麼位置上把多長的數據塊發送到局域網,或者應當在存儲器的什麼位置上把局域網傳送過來的數據塊存儲下來。適配器還要能夠實現以太網協議。
適配器在接收和發送各種幀時,不使用計算機的CPU,此時CPU可以處理其它任務。當適配器收到有差錯的幀時,就把這個幀直接丟棄而不必通知計算機;當適配器收到正確的幀時,它就使用中斷來通知計算機,並交付協議棧中的網絡層。當計算機要發送IP數據報時,就由協議棧把IP數據報向下交給適配器,組裝成幀後發送到局域網。計算機的硬件地址就在適配器的ROM中,而計算機的軟件地址(IP地址),在計算機的存儲器中。

CSMA/CD協議

總線的特點是:當一臺計算機發送數據時,總線上的所有計算機都能檢測到這個數據,這種就是廣播通信方式。但我們並不總是要在局域網上進行一對多的廣播通信。爲了在總線上實現一對一的通信,可以使每一臺計算機的適配器擁有一個與其它適配器都不同的地址,在發送數據幀時,在幀首部寫明接收站的地址,僅當數據幀中的目的地址與適配器ROM中存放的硬件地址一致時,才接收這個幀,這樣便在總線上實現了一對一的通信。
爲了通信的簡便,以太網採取了以下兩種措施:

  • 採用較爲靈活的無連接的工作方式,即不必先建立連接就可以直接發送數據。適配器對發送的數據幀不進行編號,也不要求對方發回確認。以太網提供的服務是盡最大努力的交付,即不可靠的交付。有差錯的幀是否需要重傳由高層決定。例如,如果高層使用TCP協議,那麼TCP就會發現丟失了一些數據。於是,TCP就會把這些數據重新傳遞給以太網進行重傳。但以太網並不知道這是重傳幀,而是當作新的數據幀來發送。
    我們知道,總線上只要有一臺計算機在發送數據,總線的傳輸資源就被佔用。因此,在同一時間只能允許一臺計算機發送數據,否則各計算機之間就會互相干擾,使得所發送數據被破壞。這就好比有一屋子的人在開會,沒有主持人控制發言,想發言的人隨時可發言。但我們必須有個協議來協調大家的發言,即:如果你聽見有人在發言,那麼就必須等待別人講完了才能發言(否則就干擾了別人的發言),但有時碰巧兩個或更多的人同時發言了,那麼一旦發現衝突,大家都必須立即停止發言,等聽到沒有人發言了你再發言。以太網採用的協調方法和上面的方法非常像,它使用的協議是CSMA/CD,意思是載波監聽多點接入/碰撞檢測。
  • 以太網發送的數據都使用曼徹斯特編碼的信號。

CSMA/CD協議的要點:

  • 多點接入,說明這是總線型網絡,許多計算機以多點接入的方式連接在一根總線上。
  • 載波監聽,即使用電子技術檢測總線上有沒有其它計算機也在發送,這裏只是借用一下“載波”這個名詞,載波監聽其實就是檢測信道,這是一個很重要的措施,不管在發送前,還是在發送中,每個站都必須不停地檢測信道。在發送前檢測信道,是爲了獲得發送權,如果檢測出已經有其它站在發送,則自己就暫時不發送數據。在發送中檢測信道,是爲了及時發現有沒有其它站的發送和本站發送的碰撞。
  • 碰撞檢測,即邊發送邊監聽,適配器邊發送數據邊檢測信道上的信號電壓的變化情況,以便判斷自己在發送數據時,其它站是否也在發送數據。當幾個站同時在總線上發送數據時,總線上的信號電壓變化幅度將會增大(互相疊加),適配器檢測到的信號電壓變化幅度超過一定的門限值時,就認爲總線上至少有兩個站同時在發送數據,表明產生了碰撞。一旦發現總線上出現了碰撞,適配器就要立即停止發送,免得繼續進行無效的發送,白白浪費網絡資源。

既然每一個站在發送數據之前已經監聽到信道爲空閒,那麼爲什麼還會出現數據在總線上的碰撞呢?因爲電磁波在總線上總是以有限的速率傳播的,參考下圖所示:

設圖中局域網兩端的A和B相距1km,用同軸電纜相連。電磁波在1km電纜的傳播時延約爲5μs。當A向B發出數據,在約5μs後,才能傳送到B,那麼在B收到數據之前,如果B發送了自己的幀,則必然要在某個時間和A發送的幀發生碰撞,碰撞的結果是兩個幀都變的無用。在局域網的分析中,常把總線上的單程端到端傳播時延記爲τ,那麼A發送數據後,最遲要經過多長時間才能知道自己發送的數據和其它站發送的數據有沒有發生碰撞呢?從圖中可以看出,這是時間最多是2倍的總線端到端的傳播時延(2τ),或總線的端到端往返傳播時延。
顯然,在使用CSMA/CD協議時,一個站不可能同時進行發送和接收,即無法進行全雙工通信,只能進行半雙工通信。下面總結一下上圖中的一些重要時刻:

  • t = 0時,A發送數據,B檢測到信道爲空閒
  • 在 t = τ - δ時,B發送數據(因爲A發出的數據還沒有到達B,B檢測到信道是空閒的)
  • 在 t = τ - δ / 2時,A發送的數據和B發送的數據發生了碰撞,但此時A和B都不知道發生了碰撞
  • 在 t = τ時,B檢測到發生了碰撞,於是停止發送數據
  • 在 t = 2τ - δ時,A也檢測到發生了碰撞,因而停止發送數據。A和B發送數據均失敗,它們都要推遲一段時間後再重新發送。
    由此可見,每一個站在自己發送數據之後的一小段時間之內,存在着遭遇碰撞的可能性,這一小段時間是不確定的,它取決於另一個發送數據的站到本站的距離。因此,以太網不能保證某一時間之內一定能夠把自己的數據幀成功的發送出去(因爲存在產生碰撞的可能)。以太網的這一特點稱爲發送的不確定性。
    從上圖可以看出,最先發送數據幀的A站,在發送數據幀後至多經過時間2τ就可知道所發送的數據幀是否遭受了碰撞,即δ -> 0 的情況,因此以太網的端到端往返時間2τ稱爲爭用期,又叫做碰撞窗口。這是因爲一個站在發送完數據後,只有通過爭用期的“考驗”,或者說在爭用期這段時間還沒有檢測到碰撞,才能肯定這次發送不會發生碰撞。這時,就可以放心把這一幀數據順利發送完畢。

如何確定碰撞重傳的時機

以太網使用截斷二進制指數退避算法來確定碰撞後重傳的時機,這種算法讓發生碰撞的站在停止發送數據後,不是等待信道變爲空閒就立即再發送數據,而是推遲(退避)一個隨機的時間。因爲如果幾個發生碰撞的站都在監聽信道,那麼會同時發現信道變成了空閒,如果大家都同時重新發送,那麼肯定又會發生碰撞。具體的退避算法如下:

  • 協議規定了基本退避時間爲爭用期2τ(2倍的端到端時延),具體的爭用期是51.2μs。對於10Mbit/s的以太網,在爭用期內可發送512bit,即64字節,也可以說爭用期是512比特時間,1比特時間就是發送1比特所需的時間
  • 從離散的整數集合中隨機取出一個數,即爲r,集合的範圍是[0, 1, 2, ... (2ⁿ - 1)],重傳推後的時間就是r倍的爭用期。集合範圍中的n使用此公式計算:n = Min(重傳次數,10)
    可見當重傳次數不超過10時,參數n等於重傳次數,當重傳次數超過10時,n就一直等於10
  • 當重傳達16次仍不能成功時,則丟棄該幀,並向高層報告(表明同時發送數據的站太多,以致連續發生碰撞)。例如,在第一次重傳時,n = 1,隨機數r在[0, 1]中選一個,那麼可選的重傳推遲時間是 0 或 2τ。若再發生碰撞,則在第二次重傳時,n = 2,隨機數r在[0, 1, 2, 3]中選一個,那麼可選的重傳推遲時間是 0 或 2τ 或 4τ 或 6τ。依次類推。

若連續多次發生衝突,就表明可能有較多的站參與爭用信道,使用上述退避算法可使重傳需要推遲的平均時間隨重傳次數而增大,因而可以減小發生碰撞的概率,有利於整個系統的穩定。
現在考慮一種情況,某個站發送了一個很短的幀,但在發送完畢之前並沒有檢測出碰撞。假定這個幀在繼續向前傳播到目的站之前和別的站發送的幀發生了碰撞,因而目的站將收到碰撞信息,並丟棄這個幀,可是發送站卻不知道這個幀發生了碰撞,因而不會重傳這個幀。爲了避免出現這種情況,以太網規定了一個最短幀長64字節,如果要發送的數據非常少,那麼必須加入一些填充字節,使幀長不小於64字節。由此可見,以太網在發送數據時,如果在爭用期沒有發生碰撞,那麼後續發送的數據就一定不會發生衝突,如果發生碰撞,一定是在發送之前的64字節之內。由於一檢測到衝突就立即中止發送,這時已經發送出去的數據一定小於64字節,因此凡長度小於64字節的幀都是由於碰撞而中止的無效幀,只要收到了這種無效的幀,就應當立即將其丟棄。

強化碰撞

以太網的爭用期確定爲51.2μs,不僅考慮到以太網的端到端時延,還包括其它的因素,比如轉發器所增加的時延,以及強化碰撞的干擾信號的持續時間。當發送數據的站一旦檢測到了碰撞,除了立即停止發送數據外,還要再繼續發送32比特或48比特的人爲干擾信號,以便讓所有用戶都知道現在已經發生了碰撞,目的站在得知發生碰撞後,也要發送人爲干擾信號。對於10Mbit/s以太網,發送32比特只需要3.2μs。以太網還規定了幀間最小間隔爲9.6μs,相當於96比特時間,這樣做是爲了使剛剛收到數據幀的站來得及清理其接收緩存,做好接收下一幀的準備。

接下來對CSMA/CD協議進行一個總結:

  • 準備發送:適配器從網絡層獲得一個分組,加上以太網的首部和尾部,組成以太網幀,放入適配器的緩存中。
  • 檢測信道:在發送前,若檢測到信道忙,則應不停地檢測,直到信道空閒。檢測到信道空閒後,若在96比特時間內信道保持空閒(保證幀間最小間隔),就發送這個幀。
  • 發送過程中仍然要不停地檢測信道:
    • 發送成功:在爭用期內未檢測到碰撞,這個幀肯定能發送成功
    • 發送失敗:在爭用期內檢測到碰撞,此時立即停止發送,並按規定發送人爲干擾信號,適配器接着就執行退避算法,等待某個時間後,繼續檢測信道。若重傳16次仍不能成功,則停止重傳,向上報錯。以太網每發送完一幀,一定要把已發送的幀暫時保留一下,如果在爭用期內檢測到了碰撞,那麼還要推遲一段時間後,再把這個幀重傳一次。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章