數據鏈路層使用的信道主要有兩種類型:點對點信道和廣播信道。
點對點
路由器在轉發分組時只使用了下面的三層。
鏈路是從一個結點到相鄰結點的一段物理線路,中間沒有其他交換結點。
必須有一些必要的通信協議來控制這些數據在鏈路上的傳輸。把實現這些協議的硬件和軟件加到鏈路上,就構成了數據鏈路。現在使用網絡適配器來實現這些協議。
點對點信道的數據鏈路層的協議數據單元--幀。
數據鏈路層把網絡層交下來的數據構成幀發到鏈路上,以及把接收到的幀中的數據取出並上交給網絡層。網絡層協議的數據單元是IP數據報。
點對點信道的數據鏈路層在進行通信時的主要步驟如下:
(1)結點A的數據鏈路層把網絡層交下來的IP數據報添加首部和尾部封裝成幀。
(2)結點A把封裝好的幀發送給結點B的數據鏈路層。
(3)若結點B的數據鏈路層收到的幀無差錯,則從收到的幀中提取出IP數據報上交給上面的網絡層;否則丟棄這個幀。
數據鏈路層有很多種,但有三個基本問題是共同的。分別是:封裝成幀、透明傳輸和差錯檢測。
封裝成幀
封裝成幀就是在一段數據的前后分別添加首部和尾部,這樣就構成了一個幀。
網絡層的IP數據報傳送到數據鏈路層就稱為幀的數據部分。每一種鏈路層協議都規定了所能傳送的幀的數據部分長度上限--最大傳送單元MTU。
控制字符名稱SOH表示幀的首部,EOT表示幀的結束。
透明傳輸
當數據中碰巧有控制字符EOT時,后面的數據部分會被丟棄。
這時需要時數據中的控制字符不被當做幀結束的標志。要使其透明。
具體的方法是:發送端的數據鏈路層在數據中出現控制字符“SOH”或“EOT”的前面插入一個轉義字符“ESC”。在接收端的數據鏈路層在把數據送往網絡層之前刪除插入的轉義字符。
這種方法稱為字節填充或字符填充。
差錯檢測
數據鏈路層廣泛使用了循環冗余檢驗CRC。
用二進制的模2運算進行2n乘M的運算,這相當於在M后面添加n個0。得到的(k+n)位的數除以收發雙方事先商定德 長度為(n+1)位的除數P,得出商Q(不重要)而余數是R(n位,比p少一位)。這個余數R就作為冗余碼拼接在數據M的后面發送出去。這種為了進行檢錯而添加的冗余碼常稱為幀檢驗序列FCS。
在接收端把接收到的數據以幀位單位進行CRC檢驗:把收到的每一個幀都除以同樣的除數p,然后檢查得到的余數R。
(1)若得出的余數R=0,則判定這個幀沒有出錯。
(2)若得出的R!=0,則幀出錯。
在數據鏈路層僅僅使用循環冗余檢驗CRC差錯檢測技術,則只能對幀的無差錯接受。即:“凡是接收端數據鏈路層接收的幀,我們都以非常接近1的概率認為這些幀在傳輸過程總沒有產生錯誤”。
這樣認為:凡是接收端數據鏈路層接受的幀均無差錯。
數據鏈路層不是可靠傳輸。可靠傳輸是:數據鏈路層的發送端發送什么,接收端就收到什么。除了比特出錯,還有可能出現幀丟失、幀重復和幀失序。
在數據鏈路層使用CRC檢驗,能夠實現無比特差錯的傳輸,但這不是可靠傳輸。過去觀點:必須讓數據鏈路層向上提供可靠傳輸,增加了幀編號、確認和重傳機制。
點對點協議PPP
是目前使用最廣泛的數據鏈路層協議。
PPP(點到點協議)是為在同等單元之間傳輸數據包這樣的簡單鏈路設計的鏈路層協議。
PPP協議是用戶計算機和ISP進行通信時所使用的數據鏈路層協議。
PPP協議應該滿足的要求:
(1)簡單;(2)封裝成幀;(3)透明性;(4)多種網絡層協議;(5)多種類型鏈路;(6)差錯檢測;(7)檢測連接狀態;(8)最大傳輸單元;(9)網絡層地址協商;(10)數據壓縮協商。
最大傳輸單元是數據鏈路層可以載荷的數據部分的最大長度,不是幀的總長度。IP數據報的長度是可變的,但是不超過1500字節。
PPP協議有三個部分組成:
(1)一個將IP數據報封裝到串行鏈路的方法。
(2)一個用來建立、配置和測試數據鏈路連接的鏈路控制協議LCP。
(3)一套網絡控制協議NCP,其中的每一個協議支持不同的網絡層協議。
PPP幀的格式
PPP幀的首部和尾部分別為四個字段和兩個字段。
首部的第一個字段和尾部的第二個字段都是標志字段F,規定為0x7E.標志字段表示一個幀的開始或結束。因此標志字段是PPP幀的定界符。
字段意義
首部中的地址字段A規定為0xFF,控制字段C規定為0x03。PPP首部的第四個字段是2字節的協議字段。當協議字段為0x0021時,PPP幀的字段就是IP數據報。若為0xC021,則信息字段是PPP鏈路控制協議LCP的數據,而0x8021表示這是網絡層的控制數據。
字節填充
當信息字段中出現和標志字段一樣的比特組合時,就采取措施使這種形式上和標志字段一樣的比特組合不出現在信息字段中。
當PPP使用異步傳輸時,它把轉義符定義為0x7D,並使用字節填充。
(1)把信息字段中出現的每一個0x7E字節轉變成為2字節序列。
(2)若信息字段中出現一個0x7D的字節,則把0x7D轉變成為2字節序列(0x7D,0x5D)。
零比特填充
使用零比特填充來實現透明傳輸。做法:掃描整個信息字段,只要發現有5個連續的1,則立即填入0。接收端在收到一個幀時,先找到標志字段F以確定一個幀的邊界,掃描比特流,當發現5個連續的1時,就把這5個1后的一個0刪除。
PPP協議的功能
PPP協議的工作狀態
當用戶撥號接入ISP后,就建立了一條從用戶PC到ISP的物理連接。這時,用戶PC向ISP發送一系列的鏈路控制協議LCP分組,以便建立LCP連接。接着還要進行網絡層配置,網絡控制協議NCP給新接入的用戶PC分配一個臨時的IP地址。這樣PC用戶就稱為因特網上的一個有IP地址的主機了。
當用戶通信完畢時,NCP釋放網絡層連接,收回原來分配出去的IP地址。接着,LCP釋放數據鏈路層連接。最后釋放的是物理層的連接。
當用戶PC通過調制解調器呼叫路由器時,路由器就能檢測到調制解調器發出的載波信號。在雙方建立了物理層連接后,PPP就進入“鏈路建立”狀態,其目的是建立鏈路層的LCP連接。
這時LCP開始協商一些配置選項,即發送LCP的配置請求幀。這是個PPP幀,其協議字段置為LCP對應的代碼,而信息字段包含特定的配置請求。鏈路的另一端可以faso9ng以下幾種響應中的一種:
(1)配置確認幀;(2)配置否認幀;(3)配置拒絕幀。
在“網絡層協議”狀態,PPP鏈路的兩端的網絡協議NCP根據網絡的不同協議互相交換網絡層特定的網絡控制分組。這個步驟非常重要,因為現在的路由器都能夠同時支持多種的網絡層協議。
數據傳輸結束后,可以由鏈路的一端發出終止請求LCP分組請求終止鏈路連接,在收到對方發來的終止確認LCP分組后,轉到“鏈路終止”狀態。如果鏈路出現故障,也會從“鏈路打開”狀態轉到“鏈路終止”狀態。