數據鏈路層基本概念
路由器是網絡層設備
數據鏈路層:數據管道,傳輸的是數據包加上發送地址,接收地址,校驗的數據幀
數據鏈路層的信道類型:
- 點到點信道:使用一對一的點到點通信方式(兩個設備之間直接使用網線相連)
- 廣播信道:使用一對多的廣播信道方式,因此過程比較復雜。廣播信道上連接的主機很多,因此必須使用專用的共享信道協議來協調這些主機的數據發送
鏈路:一條點到點的物理線路段,中間沒有其他交換節點。一條鏈路只是一條通路的一個組成部分。
數據鏈路:除了物理線路外,還必須有通信協議來控制這些數據的傳輸。若把實現這些協議的硬件和軟件加到鏈路上,就構成了數據鏈路。
- 現在最常用的方法是使用適配器(網卡)來實現這些協議的硬件和軟件。
- 一般的適配器都包括了數據鏈路層和物理層這兩層的功能。
數據幀
數據幀=數據包+幀頭+幀尾+物理層地址+校驗值
數據鏈路層解決的問題
封裝成幀
透明傳輸
- 字節填充解決透明傳輸
發送端的數據鏈路層在數據中出現控制字符SOH
或EOT
的前面插入一個轉義字符ESC
(0x1B
)
接收端的數據鏈路在將數據發送給上一層的網絡層的時候會刪除前面的轉義字符
如果轉義字符也出現在數據當中,那么應該在轉義字符前插入一個轉義字符。當接收端收到兩個連續的轉義字符的時候就刪除其中前面那個
因此只有如果接收數據中含有一個ESC
那么一定是數據中開始字符或者結束字符。
差錯控制
誤碼率(BER):傳輸錯誤的比特占所傳輸比特總數的比率。誤碼率和信噪比有很大的關系。
如果傳送過程中出現錯誤,路由器發現錯誤后會直接丟掉這個幀。可靠傳輸由傳輸層實現。
- 循環冗余檢驗(CRC)
運算過程為加上x個0以后,用x+1位數作為除數(隨便選一個)。每次進行異或操作。要確保每次會至少減少一位,意思是如果某次的余數的最高位位0,則商為0,如果最高位為1,則商為1.
幀檢驗序列FCS為運算的余數,可以通過多種方法得到,不一定是CRC
最后傳輸的數據是數據加上FCS,如果余數不為0,則丟棄
特點:
- 這種檢測方法不能確定究竟是哪一個或哪幾個比特出現了差錯
- 如果除數選擇的足夠好(位數足夠長),那么檢錯能力就很強
使用循環冗余檢驗(CRC)差錯檢測技術只能做到無差錯接受。
無差錯接收:凡是接收的幀我們幾乎都能認為是沒有差錯的。
要做到可靠傳輸(發送什么接收什么)就必須加上確認和重傳機制
CRC是一種無比特差錯,而不是無傳輸差錯的檢測機制。雖然數據鏈路層要求做成無傳輸差錯的,但是目前沒有做到。
兩種情況下的數據鏈路層
點對點通信
使用PPP協議,用于點到點通信。全世界用的最多的數據鏈路層協議。
PPP協議特點:
- 簡單
- 封裝成幀
- 透明傳輸
- 差錯檢驗
- 多種網絡層協議:可以在PPP協議種封裝TCP/IP協議,可以封裝IPX,SPx協議
- 多種數據鏈路
- 檢測連接狀態
- 最大傳送單元
- 網絡層地址協商
- 數據壓縮協商
缺點: - 不能糾錯
- 不能流量控制
- 不能得到序號
- 不支持多點線路
- 不支持半雙工或單工鏈路
PPP協議的組成
- 數據鏈路層協議可以用于異步串行或者同步串行介質
- 使用LCP(鏈路控制協議)建立并維護數據鏈路連接
ADSL撥號上網賬號密碼正確、有網費數據鏈路層才會通。即LCP有身份驗證和計費功能 - 網絡控制協議(NCP)允許點到點連接上使用多種網絡層協議
PPP協議幀格式
A段是地址,因為是點對點傳輸,所以是固定的FF
,沒有起什么作用
C段是控制字段,但是沒有使用,一般是03
協議中的兩個字節表示數據包中是什么內容
標志字段F=0x7E
PPP是面向字節的,所有PPP幀的長度都是整數字節
-
字節填充實現透明傳輸
將信息字段中出現的每個0x7E(01111111)
字節轉換成0x7D 0x5E(0111111001011111)
如果信息字段中出現0x7D(01111110)
的字節,則將其轉換為2字節序列(0x7D,0x5D(0111111001011110)
)
如果信息字段中出現ASCLL碼的控制字符(數值小于0x20
)則在前面加入一個0x7D
最后接收的時候再轉換為原來的信息 -
零比特填充方法實現透明傳輸
如果信息字段發送的不是字節,而是二進制流,則在發送端,只要發現5個連續的1就在其中填入一個0。在接收的時候每接收5個1就刪除一個0。 -
不使用序號和確認機制
在數據鏈路層出現差錯概率不大時,使用比較簡單的PPP協議比較合理
在因特網環境下,PPP的信息字段放入的數據是IP數據報。數據鏈路層的可靠傳輸并不能夠保證網絡層的傳輸也是可靠的
幀檢驗序列FCS字段可保證無差錯接受
PPP協議的工作狀態(撥號上網的過程):當用戶撥號撥入ISP時,路由器的調制解調器對撥號做出確認,并建立一條物理連接。PC機向路由器發送一系列的LCP分組(封裝成多個PPP幀)。這些分組及其響應選擇一些PPP參數,進行網絡層配置,NCP給新接入的PC機分配一個臨時的IP地址,時PC機成為因特網上的一個主機。
通信完畢時,NCP釋放網絡層鏈接,收回原來分配出去的IP地址。接著,LCP釋放數據鏈路層連接,最后釋放物理層鏈接。