天天看點

計算機網絡-3-3-使用廣播信道的資料鍊路層

使用廣播信道的資料鍊路層

廣播信道可以進行一對多通信。

區域網路技術在計算機網絡中占有非常重要的地位。

區域網路的資料鍊路層

區域網路最主要的特點是:網絡為一個機關所擁有,且地理範圍和站點數目有限。區域網路主要有如下一些主要優點:

  1. 具有廣博功能,從一個站點可以很友善的通路全網。區域網路上的主機可共享連接配接在區域網路上的各種硬體資源和軟體資源。
  2. 便于系統的擴充和逐漸演變,各裝置的位置可以靈活調整和改變。
  3. 提高了系統的可靠性,可用性和生存性。

區域網路可以按照網絡拓撲進行分類,

計算機網絡-3-3-使用廣播信道的資料鍊路層

擴充卡的作用

計算機與外界區域網路的連接配接是通過通信擴充卡進行的,網絡接口卡又稱網卡。擴充卡與區域網路之間的通信是通過電纜或者雙絞線以串行傳輸方式進行,擴充卡與計算機之間的通信是以并行方式進行通信,是以,擴充卡的一個重要功能就是進行資料串行傳輸和并行傳輸之間的轉換,除此之外,擴充卡還要實作以太網的協定

擴充卡在接受和發送各種資料幀的時候,不使用計算機的CPU,這時計算機中的CPU可以處理其他任務。當擴充卡收到有差錯的資料幀時,就把這個幀直接丢棄掉而并不通知計算機。當擴充卡收到正确的幀的時候,它會使用中斷來通知計算機,并傳遞協定棧中的網絡層,當計算機要發送IP資料報的時候,就由協定棧把IP資料包向下交給擴充卡(資料鍊路層),組裝成幀後發送到區域網路。如圖3-15表示的是擴充卡的作用。我們需要特别注意的是,計算機的硬體位址就在擴充卡中的ROM中,而計算機的軟體位址IP位址則在計算機的存儲器中。

CSMA/CD協定

最早的以太網是許多計算機是連接配接在一根總線上,總線的特點是:當一個計算機發送資料時,總線上的計算機都能檢測到這個資料。這種就是廣播通信方式。但我們并不總是要在區域網路中進行一對多的廣播通信。為了在總線上實作一對一的通信,可以使每一台計算機的擴充卡擁有與其他計算機都不同的位址。在發送資料幀時,在幀的首部寫明接收站的位址:當資料幀中的目的位址與擴充卡的ROM中存放的位址一緻的時候,該擴充卡才能接收這個資料幀。擴充卡對不是發送給自己的資料幀就丢棄掉。這樣,具有廣播特性的總線上就實作了一對一的通信方式。

為了通信友善,以太網采取了一下兩種措施:

  1. 采用較為靈活的無連接配接的工作方式,即不避先建立連接配接就可以直接發送資料,擴充卡對發送的資料幀不進行編号,也不要求對方發回确認,這樣做可以使的以太網工作非常的簡單。而區域網路的通信品質會非常的好。因通信品質而産生差錯的機率是非常低的。是以,以太網提供的服務是盡最大努力的傳遞,即不可靠傳遞。當目的站收到有差錯的幀的時候(例如使用CRC循環校驗查出有錯),就把該幀丢棄掉。其他什麼也不做。對有差錯的幀是否重傳交給上層處理。

    我們知道,總線上隻要有一台計算機發送資料,總線的傳輸資源就會被占用。是以,在同一時間内隻允許一台計算機發送資料,否則各個計算機之間就會互相幹擾。使得所發送的資料會被破壞。是以,如何協調總線上各計算機的工作就是以太網要解決的一個重大問題。以太網采用的是CSMA/CD(載波監聽多點接入/碰撞檢測)

  2. 第二,以太網發送的資料都是曼徹斯特編碼的信号(下降沿為1(前高後低),上升沿為0(前低後高)),缺點就是它所占用的頻帶寬度是基帶寬度的兩倍。
計算機網絡-3-3-使用廣播信道的資料鍊路層

下面介紹CSMA/CD協定的要點

多點接入就是說明這是總線型網絡,許多計算機以多點接入的方式連接配接在一根總線上。

載波監聽就是用電子技術檢測總線上有沒有其他計算機在發送資料。其實就是檢測信道。不管在發送前,還是發送中,每個站點都必須不停的檢測信道。在發送前檢測信道是為了獲得發送權,如果檢測出已經有計算機發送資料了,則自己就暫時不能發送資料。必須要等待信道空閑後才能發送資料,如果在發送資料過程中檢測到信道發生了碰撞,則需要執行一系列的算法來處理。

碰撞檢測也就是邊發送邊監聽,即擴充卡邊發送資料邊檢測信道的信号電壓變化情況。一邊判斷自己在發送資料的時候其他站是否也在發送資料,當總線上幾個站在同時發送資料的時候,總線上的信号電壓變化幅度将會增大(互相疊加)。當擴充卡檢測到信号電壓超過一定的門限值時,就認為總線上至少有兩個站點在同時發送資料,表明産生了碰撞(沖突)。這時,總線上傳輸的信号産生了嚴重的失真,無法從中恢複出有利的資訊來。是以,任何一個正在發送資料的站,一旦發現總線上出現了碰撞,其擴充卡就立即停止發送,免得繼續無效的發送。白白的浪費網絡資源。然後等待一段随機時間再次發送。

既然每一個站在發送資料之前已經檢測到信道為空閑,那麼為什麼還會出現資料在總線上的碰撞呢?這是因為電磁波在總線上傳輸資料總是以有限的速率發送,電磁波在1KM的電纜上傳播時延為5微妙,設一端到另一端的時間為\(\tau\),發送資料的站希望盡早知道是否發生了碰撞。那麼,A發送資料後,最持久要經過2\(\tau\)的時間(一個來回),由于網際網路上的任意兩個站點之間的而傳播時延是不一樣的,是以區域網路就必須按照最壞的情況設計,假設目前兩個站點之間的距離最大,則取該兩端的傳播時延為所有端到端的傳播時延。

計算機網絡-3-3-使用廣播信道的資料鍊路層

顯然,使用CSMA/CD協定的時候,一個站點不可能同時進行發送和接收資料(但必須邊發送邊監聽)是以使用CSMA/CD協定的以太網不可能進行全雙工通信而隻能進行半雙工通信。下面是圖3-7中一些重要時刻:

在t=0時候,A發送資料,B檢測到信道空閑。

在t=\(\tau\)-\(\delta\)時,這裡(\(\tau\)>\(\delta\)>0),A發送的資料還沒有到達B,由于B檢測到信道是空閑的,是以B發送資料。

在經過時間\(\delta\)/2的時候,即在t=\(\tau\)-\(\delta\)/2時候,A發送的資料和B發送的資料發生了碰撞。,但是A和B都不知道發生了碰撞。

在t=\(\tau\)時,B檢測到發生了碰撞,于是就停止發送資料。

在t=2\(\tau\)-\(\delta\)時,A也檢測到了發生了碰撞。是以也停止繼續發送資料。

A和B發送資料均失敗,它們都要推遲一段時間再重新發送。由此可見,每一個站在自己發送資料之後的一小段内,存在着遭遇碰撞的可能性,這一小段時間是不确定的。

在圖3-17中可以看出,最先發送資料幀的A站,在發送資料幀後至多經過時間2\(\tau\)就可以知道所發送的資料幀是否遭受到了碰撞,這就是\(\delta\)=0的情況下。是以以太網的端到端往返時間2\(\tau\)稱之為争用期,它是一個很重要的參數。争用期又稱之碰撞視窗,這是因為一個站在發送完資料後,隻有通過争用期的考驗,即經過争用期這段時間還沒檢測到碰撞,才能肯定這次發送不會發生碰撞。

以太網使用的是截斷二進制指數退避算法來确定碰撞後重傳時間。這種算法讓發生碰撞的站在停止發生資料後确定重傳的時間。不是等待信道空空閑就立即發送資料。而是推遲/退避一個随機時間,具體的退避算法如下:

  1. 協定規定了退避時間為争用期2\(\tau\),具體的争用期時間為512微秒,為了友善,也可以直接使用比特作為争用期機關,争用期為512bit,即争用期為發送512比特所需的時間。
  2. 從離散的整數集合[0,1,...,(2k-1)]中随機取出一個數,記為r。重傳應退後的時間為r倍的争用期。,上面的參數k可以按照下面的公式進行計算:
    k=Min(重傳次數,10)
               

可見,當重傳次數不超過10時,參數k等于重傳次數;但當重傳次數超過10時,K就不會增大而一直等于10。

  1. 當重傳達16次仍然不能成功,則丢棄該幀,并向上層報告。

例如,在第一次重傳時,k=1,随機數r就從{0,1}中選一個數,是以重傳的站可選擇的重傳推遲時間是0或者2\(\tau\),在這兩個時間中随機選擇一個。

同樣,若再次發生碰撞,則在第2次重傳時,則重傳為時k=2,随機數就從正數{0,1,2,3}中随機選一個數。是以重傳推遲的時間是在0,2\(\tau\),4\(\tau\),6\(\tau\)這幾個時間中随即選一個。依次類推。

擴充卡每次發送一個新的幀,就要執行一次CSMA/CD算法。擴充卡對過去發生過的碰撞記憶并無記憶功能。是以,當好幾個擴充卡正在執行指數退避算時候,很可能有某一個擴充卡發送的新幀能夠恰好的插入到信道中,得到了發送全,而已經推遲好幾次發送的站,有可能很不巧,還要繼續執行退避算法,繼續等待。

現在考慮另一種情況。某個站點發送了一個很短的幀,但在發送完畢之前并沒有檢測出碰撞。假定這個幀在繼續向前傳播到達目的站和别的站發送的幀發送了碰撞,因為目的站将會收到有差錯的幀,可是發送站并不知道這個幀發生了碰撞,因為不會重傳這個幀,這種情況是我們不希望的。為了避免發生這種情況,以太網規定了一個最短幀長64位元組,即512bit,如果要發送的資料非常的少,,那麼必須加入一些填充位元組,使得幀長度不小于64位元組。

強化碰撞的概念:當發送資料的站點一旦發現發生了碰撞時,除了立即停止發送資料外,還要繼續發送發送32bit或者48bit的人為幹擾信号,以便讓所有使用者都知道現在已經發生了碰撞。

計算機網絡-3-3-使用廣播信道的資料鍊路層

根據以上讨論,總結一下CSMA/CD協定的要點:

  1. 轉杯發送:擴充卡從網絡層獲得一個分組,加上以太網的首部和尾部組成以太網幀,放入到擴充卡的緩存中。但在發送前,必須先檢測信道。
  2. 檢測信道:若檢測到信道忙,則應不停的檢測,一直等待信道轉為空閑。若檢測到空閑信道,并在96bit時間内信道保持空閑(保證了幀間最小間隔),就發送該幀。

3.在發送過程中仍不停的檢測信道,即網絡擴充卡要邊發送邊監聽,這裡隻有2種可能性:

  • 發送成功,在争用期内一直未檢測到碰撞。這個幀肯定能夠發送成功,發送完畢後,什麼也不做,然後回到(1)。
  • 發送失敗:在争用期内檢測到碰撞。這時立即停止發送資料,并按照規定發送人為幹擾信号,等待r倍512比特時間後,傳回步驟(2),繼續檢測信道。但若重傳16次仍未成功,則停止重傳而向上級報錯。

以太網每發送完一個幀,一定要把已發送的資料幀在暫時儲存下來,如果在争用期内檢測出發生了碰撞,那麼還要再推遲一段時間把這個暫時保留的幀重傳一次。