計算機網路——資料鏈路層

動物園裡的一隻程式猿發表於2015-11-24

  資料鏈路層屬於計算機網路的低層。資料鏈路層使用的通道主要有以下兩種型別:

  (1)點對點通道:這種通道使用一對一的點對點通訊方式

  (2)廣播通道:這種通道使用一對多的廣播通訊方式,因此過程比較負責。廣播通道通道上連線的主機很多,因此必須使用專用的共享通道協議來協調這些主機的資料傳送

     下圖是主機H1向H2傳送資料

 3.1 資料鏈路和幀

   鏈路和資料鏈路並不是一回事

   所謂鏈路就是從一個借點到相鄰結點的一段物理線路,而中間沒有任何其他的交換結點

   資料鏈路則是一個概念。這是因為當需要在一條線路上傳送資料時,除了必須有一條物理線路外,還必須有一些必要的通訊協議來控制這些資料的傳輸,還必須有一些必要的通訊協議來控制這些資料的傳輸,若把實現這些協議的硬體和軟體加到鏈路上,就構成了資料的鏈路。現在最常用的方法是使用網路配適器來實現這些協議的硬體和軟體,一般的配適器都包括了資料鏈路層和物理層這兩層的功能

  

       幀——點對點通道的資料鏈路層的協議資料單元

  資料鏈路層把網路層交下來的資料構成幀傳送到鏈路上,以及把接受到的幀中的資料取出並上交給網路層,在因特網中網路層協議資料單元就是IP資料包(或簡稱為資料包,分組或包)

 

    點對點通道的資料鏈路層在進行通訊時的主要步驟如下:

    (1)結點A的資料鏈路層把網路層交下來的IP資料包新增首部和尾部封裝成幀

    (2)結點A把封裝好的幀傳送給結點B的資料鏈路層

    (3)若結點B的資料鏈路層收到的幀無差錯,則從收到的幀中提取出IP資料包上交給上面的網路層;否則丟棄這個幀

    資料鏈路層不必考慮物理層如何實現位元傳輸的細節。我們甚至還可以更簡單的設想好像是沿著兩個資料鏈路層之間的水平方向吧幀直接傳送到對方

    3.1.2 三個基本問題

     資料鏈路層協議有很多種,但是三個基本問題是共同的,這三個問題使:封裝成幀,透明傳輸和差錯檢測

     1. 封裝成幀

     封裝成幀就是在一段資料的前後分別新增首部和尾部,這樣就構成了一個幀

     分組交換的一個重要概念就是:所有在因特網上傳送到資料都是以分組(即IP資料包)為傳送單位。網路層的IP資料傳送到資料鏈路層就成為幀的資料部分,在幀的資料部分的前面和後端分別新增上首部和尾部,構成了一個完整的幀。因此,幀長等於資料部分的長度加上幀首部和幀尾部的長度,而首部和尾部的一個重要作用就是進行幀定界(即確定幀的界限)。此外,首部和尾部還包括許多必要的控制資訊。

    2.透明傳輸

    由於幀的開始和結束的標記是使用專門指明的控制字元,因此,所傳輸的資料中的8位元的組合一定不允許和作用幀定界的控制字元的位元編碼一樣,否則就會出現幀定界的錯誤

    當傳送的幀是用文字檔案組成的幀時(文字檔案中的字元都是從鍵盤上輸入的),其資料部分顯然不會出現像SOH或EOT這樣的幀定界控制字元。可見不管從鍵盤上輸入什麼字元都可以放在這樣的幀中傳輸過去,因此這樣的傳輸就是透明傳輸。

    

 

    3.錯檢測

    現實的通訊鏈路都不會是理想的。這就是說,位元在傳輸過程中可能會產生差錯:1可能會變成0,而0也可能變成1.這就叫做位元差錯,位元差錯是傳輸差錯中的一種。在一段時間內,傳輸錯誤的位元佔所傳輸位元總數的比率稱為誤位元速率。誤位元速率與訊雜比有很大的關係,如果設法提高訊雜比,就可以使誤位元速率減小。實際的通訊鏈路並非理想的,他不可能使誤位元速率下降到零。因此,為了保證資料傳輸的可靠性,在計算機網路傳輸資料時,必須採用各種差錯的檢測措施,目前在資料鏈路層廣泛使用了迴圈冗餘檢驗CRC的檢錯技術

   在資料鏈路層若僅僅使用迴圈冗餘檢驗CRC差錯檢測技術,則只能做到對幀的無差錯接受,即:凡是接收端資料鏈路層接受的幀,我們都能以非常接近於1 的概率認為這些幀在傳輸過程中沒有產生差錯。接收端丟地的幀雖然曾收到了,但最終還是因為有差錯被丟棄,即沒有被接受,以上所述可以近似地表述為:凡是接收資料鏈路層接受的幀均無差錯

  可靠傳輸:資料鏈路層傳送端傳送什麼,在接收端就受到什麼

  傳輸差錯可分為:基本位元差錯;收到的幀並沒有出現位元差錯,但卻出現了幀丟失,幀重複或幀失序

  為把資料鏈路層做成是可靠傳輸的,我們在CRC檢錯的基礎上增加了,幀編號。確認和重傳機制

 

  3.2 點對點協議PPP

    1.ppp協議應滿足的需求

      (1)簡單:接收方每收到一個幀,就進行CRC檢驗。如CRC檢驗正確,就收下這個幀;反之,就丟棄這個幀,其他什麼都不做

      (2)封裝成幀:PPP協議必須規定特殊的字元作為幀定界符(即標誌一個幀的開始和結束的字元),以便使接收端從接收到的位元流中能準確找出幀的開始和結束位置

      (3)透明性:PPP協議必須保證資料傳輸的透明性,這就是說如果資料中碰巧出現了和幀定界符一樣的位元組合時,就要採取有效的措施來解決這個問題

      (4)多種網路層協議:PPP協議必須能夠在同一條物理鏈路上同時支援多種網路層協議(如:IP和IPX)的執行,當點對點鏈路所連線的是區域網或路由器時,PPP協議必須同時支援在鏈路所連線的區域網或路由器上執行的各種網路層協議

      (5)多種型別鏈路: 除了要支援多種網路層的協議外,PPP還必須能夠在多種型別的鏈路上執行。例如,序列(一次只傳送一個位元)或並行的(一次並行地傳送多個位元),同步的或非同步的,低俗的或告訴的,電的或光的,交換的(動態的)或非交換的(靜態的)點對點鏈路

      (6)差錯檢測 :PPP協議必須能夠對接收端收到的幀進行檢測,並立即丟棄有差錯的幀。若在資料鏈路層不進行差錯檢測,那麼已出現差錯的無用幀就還要在網路中繼續向前轉發,因而會白白浪費許多的網路資源

      (7)檢測連線狀態:PPP協議必須具有一種機制能夠及時(不超過幾分鐘)自動檢測出鏈路是否處於正常工作狀態。當出現故障的鏈路隔了一段時間後又重新恢復正常工作時,就特別需要這種及時檢測功能

      (8)最大傳送單元  PPP協議必須對每一種型別的點對點鏈路設定最大傳送單元MTU標準預設值,這樣做事為了促進各種實現之間的互操作性。如果高層協議傳送的分組過長並操作MTU的數值,PPP就要丟地這樣的幀,並返回差錯,需強調的是,MTU是資料鏈路層的幀可以載荷的資料部分的最大長度,而不是幀的總長度

      (9)網路層的地址協商 PPP協議必須提供一種機制使通訊的兩個網路層(例如,兩個IP層)的實體能夠通過協商知道或能夠配置彼此的網路層地址。協商的演算法應儘可能簡單,並且能夠在所有的情況下得出協商結果。這對撥號連線的鏈路特別重要,因為僅僅在鏈路層建立了連線而不知道對方網路層地址時,則還不能夠保證網路層能夠傳送分組。

      (10)資料壓縮協商  PPP協議必須提供一種方法來協商使用資料壓縮演算法,但PPP協議並不要求將資料壓縮演算法進行標準化

      ppp協議不需要的功能

      (1)糾錯:在TCP/IP協議族中,可靠傳輸由運輸層TCP協議負責,而資料鏈路層的PPP協議只進行檢錯。這就是說,PPP協議是不可靠傳輸協議。

      (2)流量控制  在TCP/IP協議族中,端到端的流量控制由TCP負責,因而鏈路級的PPP協議就不需要再重複進行流量控制

      (3)序號: PPP不是可靠傳輸協議,因此不需要使用幀的序號(許多過去曾經很流行的停止等待協議或連續ARQ協議都是用序號),端到端的流量控制由TCP負責,因而鏈路級的PPP協議就不需要在重複進行流量控制

      (4)多點線路:PPP協議不支援多線線路(即一個主站輪流和鏈路上的多個站進行通訊),而只支援點對點的鏈路通訊

      (5)半雙工或單工鏈路 :PPP協議只支援全雙工鏈路

 

       3. PPP協議的組成

    PPP協議有三個組成部分:

      (1)一個將IP資料包封裝到序列鏈路的方法。PPP既支援非同步鏈路(無奇偶檢驗的8位元資料),也支援面向位元的同步鏈路。IP資料包在PPP幀中就是其資訊部分。這個資訊部分的長度受最大傳送單元MTU的限制

      (2)一個用來建立、配置和測試資料鏈路連線的鏈路控制協議LCP。通訊的雙方可協商一些選項。在RFC1661中定義了11種型別的LCP分組。

      (3)一套網路控制協議NCP,其中的每一個協議支援不同的網路協議層,如IP。OSI的網路層。DECnet,以及AppleTalk等

 

3.2.2 PPP協議的幀格式

    1.欄位的意義

       

 2.位元組填充

    當資訊欄位中出現和標誌欄位一樣的位元組合時,就必須採取一些措施使這種形式上和標誌欄位一樣的位元組合不出現在資訊欄位中

    當PPP使用一部傳輸時,它把轉義符定義為0x7D,並使用位元組填充,RFC1662規定如下填充方法

    (1)把資訊欄位中出現的每一個0x7E位元組轉變為2位元組序列(0x7D,0x5E)

    (2)若資訊資源中出現一個0x7D的位元組(即出現了和轉義字元一樣的位元組合),則把0x7D轉變成為2位元組序列(0x7D,0x5D)

    (3)若資訊欄位中出現ASCLL碼的控制儀字元(即數值小於0x20的字元),則在該字元前面要加入一個0x7D位元組,同時將該字元的編碼加以改變。例如,出現0x03(在控制字元是傳輸結束ETX)就要把它轉變為2位元組序列(0x07D,0x31)

  3.零位元填充

    PPP協議用在SONET/SDH鏈路時,是時候同步傳輸(一連串的位元連續傳送)而不是非同步傳輸(逐個字元的傳送)。在這種情況下,PPP協議採用零位元填充方法來實現透明傳輸

 

3.2.3 PPP協議的工作狀態

  下圖是PPP協議的狀態圖

  

PPP鏈路的初始和終止狀態永遠是圖中的鏈路靜止狀態,這時在使用者PC機和ISP的路由器之間並不存在物理層的連線。

當使用者PC機通過調變解調器呼叫路由器時,路由器就能夠檢測到調製解掉器發出的載波型號。在雙方建立了物理層連線後,PPP就進入鏈路建立狀態,其目的是建立鏈路層的LCP連線。

這時LCP開始協商一些配置選項,即傳送LCP的配置請求幀。這是個PPP幀,其協議欄位置為LCP對應的程式碼,而資訊欄位包含特定的配置請求。鏈路的另一端可以傳送以下幾種相應的一種:

  (1)配置確認幀:所有選項都接受

  (2)配置否認幀:所有選項都理解但不能接受

  (3)配置拒絕幀:選項有的無法識別或不能接受,需要協商

  LCP配置選項包括鏈路上的最大幀長,所使用的鑑別系i惡意的規約(如果有的話),以及不使用PPP幀中的地址和控制欄位(因為這兩個欄位的值是固定的,沒有任何資訊量,可以在PPP幀的首部中省略這兩個位元組)

  協商結束後雙方就建立了LCP鏈路,接著就進入鑑別狀態,在這以狀態,只允許傳送LCP協議的分組、鑑別協議的分組以及檢測鏈路質量的分組。若使用口令鑑別協議PAP,則需要發起通訊的一方傳送身份識別符號和口林。系統可允許使用者重試若干次。如果需要有更好的安全性,則可使用更加複雜的口令握手鑑別協議。若鑑別身份失敗,則轉到鏈路終止狀態。若鑑別成功,則進入網路成協議狀態

  在網路層協議狀態,ppp鏈路的兩端的網路控制協議NCP根據萬絡層的不同協議互相交換網路層特定的網路控制分組。這個步驟很重要的,因為喜愛你在的路由器都能夠同時支援多種的網路層協議。總之,PPP協議連奪冠的網路層可以執行不同的網路層協議,但仍然可使用同一個PPP協議進行通訊

  如果在PPP鏈路上執行的是IP協議,則對PPP鏈路的每一端配置IP協議模組(如分配IP地址)時就要使用NCP中支援IP的協議——IP控制協議IPCP。IPCP分組也封裝成PPP幀(其中的協議欄位為0x8201)在PPP鏈路上傳送。在低速鏈路上執行時,雙方還可以協商使用壓縮的TCP和IP首部,以減少在鏈路上傳送的位元數

  當網路層配置完畢後,鏈路就進入可進行資料通訊的鏈路開啟狀態。鏈路的兩個PPP端點可以彼此向對法國傳送分組。兩個PPP端點還可以傳送回送請求LCP分組和回送回答LCP分組,以檢查鏈路的狀態。  

  資料傳輸結束後,可以由鏈路的一端發出終止請求LCP分組請求終止鏈路連線,在收到對方發來的終止確認LCP分組後,轉到鏈路終止狀態。如果鏈路出現故障,會從鏈路開啟狀態轉到鏈路終止狀態。當調變解調器的載波停止後,則回到鏈路靜止狀態

   圖的右邊方框給出了PPP協議的幾個狀態的說明,從裝置之間的無鏈路開始,到先接力物理鏈路,在建立LCP鏈路。經過鑑別後在建立NCP鏈路,然後才能交換資料。由此可見,PPP協議已不是純粹的資料鏈路層的協議,它還包含了物理層和網路層的內容

 

3.3  使用廣播通道的資料鏈路層

  3.3.1  區域網的資料鏈路層

     共享通道要著重考慮的一個問題就是如何使眾多使用者能夠合理而方便地共享通訊媒體資源。這在技術上有兩種方法:

    (1)靜態劃分通道:  分頻多工、分時多工。波長分波多工和碼分複用等。使用者只要分配到了通道就不會和其他使用者發生衝突。但是這種劃分通道的方法代價較高,不適合於區域網使用

    (2)動態媒體接入控制,它又稱為多點接入,其特點是通道並非在使用者通訊時固定分配給使用者。這裡有分為以下兩類:

      隨機接入 :  特點是所有的使用者可隨機地傳送資訊。但如果恰巧有兩個或更多的使用者在同一時刻傳送資訊,那麼在共享媒體上就要產生碰撞(即發生了衝突),是的這些使用者的傳送都失敗。因此必須有解決碰撞的網路協議

      受控接入  : 特點是使用者不能隨機地傳送資訊而必須服從一定 的控制。這類的典型代表有分散控制的令牌環區域網和集中控制的多點線路探詢,或稱為輪詢

 

 

 

 

 

 

  

 

相關文章