三、數據鏈路層
3.1 基本概念及基本問題
3.1.1基本概念
數據鏈路層的簡單模型
說明:本章我們只是關注數據鏈路層的傳輸,即僅從數據鏈路層觀察幀的流動。
數據鏈路層的信道類型
數據鏈路層使用的信道主要有以下兩種類型:
1、點對點信道:這種信道使用一對一的點對點通信方式
2、廣播信道:這種信道使用一對多的廣播通信方式,因此過程比較復雜。廣播信道上連接的主機很多,因此必須使用抓用的共享信道協議來協調這些主機的數據發送。鏈路與數據鏈路
1、鏈路是一條點到點的物理線路段,中間沒有任何其他的交換結點。一條鏈路只是一條通路的一個組成部分。
2、數據鏈路除了物理線路外,還必須有通信協議來控制這些數據的傳輸。若把實現這些協議的硬件和軟件加到鏈路上,就構成了數據鏈路。現今最常用的方法是使用適配器(即網卡)來實現這些協議的硬件和軟件。一般的適配器都包括了數據鏈路層和物理層這兩層的功能。-
幀
2
說明:網絡層中傳遞過來的數據報加上幀頭和幀尾以及校驗之后就變為數據幀了。數據鏈路層就像一個數字管道,所以常常在兩個對等的數據鏈路層之間畫出一個數字管道,而在這條數字管道上傳輸的數據單位就是幀。
3.1.2 三個基本問題
-
封裝成幀
1、封裝成幀就是在一段數據的前后分別添加首部和尾部,然后就構成了一個幀。確定幀的界限。
2、首部和尾部的一個重要作用就是進行幀定界。
3
下面看一個例子,用控制字符進行幀定界的方法
4
說明:試想,幀還未發送完,發送端出了問題,只能重發該幀。接收端卻收到了前面“半截子幀”,它會拋棄嗎?為什么?當然這里的開始和結束字符也可以是別的。
-
透明傳輸
5
說明:若傳輸的數據是ASCII
碼中“可打印字符(供95
個)”集時,一切正常。若傳輸的數據不是僅由“可打印字符”組成時,就會出現問題,如圖所示。如果數據部分恰好包含了開始標記或者結束標記,如何告訴計算機?
6
說明:發送端的數據鏈路層在數據中出現控制字符“SOH
”或“EOT
”的前面插入一個轉義字符“ESC
”(其十六進制編碼是1B
)。字節填充或字符填充:接收端的數據鏈路層在將數據送往網絡層之前刪除插入的轉義字符。如果轉義字符也出現在數據當中,那么應在轉義字符前插入一個轉義字符。當接收端收到連續的兩個轉義字符時,就刪除其中前面的一個。 差錯控制
傳輸過程中可能會產生比特差錯:1
可能會變成0
,而0
也可能變成1
。在一段時間內,傳輸錯誤的比特占所傳輸比特總數的比率稱為誤碼率BER(Bit Error Rate)
。誤碼率與信噪比有很大關系。為了保證數據傳輸的可靠性,在計算機網絡傳輸數據時,必須采用各種差錯檢測措施。數據鏈路層中如果發現數據有誤會直接將其扔掉,而是否需要重發是由傳輸層來決定。
3.2 兩種情況下的數據鏈路層
3.2.1 使用點對點信道的數據鏈路層
-
PPP
協議使用場合
7
說明:我們家用的電腦到路由器的那根線就是點對點,使用的是PPP
協議。這是一個數據鏈路層的協議。現在全世界是有那個的最多的數據鏈路層協議是點對點協議PPP(Point-toPoint Protocol)
。用戶使用撥號電話線接入Internet
時,一般都是使用此協議。 -
PPP
協議滿足的要求- 簡單:這是首要的要求
- 封裝成幀
- 透明性
- 多種網絡協議:如
TCP
- 多種類型鏈路
- 差錯檢測
- 檢測連接狀態
- 最大傳送單元
- 網絡層地址協商
- 數據壓縮協商
-
PPP
協議不需要滿足的要求- 糾錯
- 流量控制
- 序號
- 多點線路
- 半雙工或單工鏈路
-
PPP
協議的組成- 數據鏈路層協議可以用于異步串行或同步串行介質
- 它使用
LCP
(鏈路控制協議)建立并維護數據鏈路連接,如身份驗證,計費 - 網絡控制協議(
NCP
)允許在點到點連接上使用多種網絡協議,如圖所示
8
-
PPP
協議的幀格式
9
說明:其中A、C
段是固定的,因為這是點對點,所以不需要地址。而FCS
是幀檢驗序列。PPP
是面向字節的,所有的PPP
幀的長度都是整數字節。
這里也會出現字節填充的問題:信息字段中出現了標志字段的值,可能會被誤認為是“標志”,怎么辦?- 將信息字段中出現的每個
0x7E
字節轉變成兩個字節序列(0x7D,0x5E
) - 若信息字段中出現一個
0x7D
的字節,則將其轉變成兩個字節序列(0x7D,0x5D
) - 若信息字段中出現
ASCII
碼的控制字符(即數值小于0x20
的字符),則在該字符前面要加上一個0x7D
字節,同時將該字符的編碼加以改變。
- 將信息字段中出現的每個
如果信息部分傳遞的不是上面所說的字節流,而是二進制流,則透明傳輸的問題需要使用零比特填充方法:PPP
協議用在SONET/SDH
鏈路時,是使用同步傳輸(一連串的比特連續傳送)。這時PPP
協議采用零比特填充方法來實現透明傳輸。在發送端,只要發現有五個連續的1
,則立即填入一個0
。接收端對幀中的比特流進行掃描。每當發現五個連續1
,就把這五個連續1
后的一個0
刪除。
-
PPP
協議不使用序號和確認機制
此協議之所以不適用序號和確認機制是出于一下考慮:- 在數據鏈路層出現差錯的概率不大時,使用比較簡單的
PPP
協議較為合理 - 在
Internet
環境下,PPP
的信息字段放入的數據是IP數據報。數據鏈路層的可靠傳輸并不能夠保證網絡層的傳輸頁式可靠的。比如在傳輸的過程中數據丟失了、有錯,這里是不會讓發送端重發的,如果有錯就扔掉。 - 幀檢驗序列
FCS
字段可保證無差錯接受。
- 在數據鏈路層出現差錯的概率不大時,使用比較簡單的
PPP
協議的工作狀態
當用戶撥號接入ISP
時,路由器的調制解調器對撥號做出確認,并建立一條物理連接。PC
機向路由器發送一系列的LCP
分組(封裝成多個PPP
幀)。這些分組及其響應的選擇一些PPP
參數,和進行網絡層配置,NCP
(網絡控制協議)給新接入的PC
機分配一個臨時的IP
地址,使PC
機稱為Internet
上的一個主機。通信完畢時,NCP
釋放網絡層連接,收回原來分配出去的IP
地址。接著,LCP
釋放數據鏈路層連接。最后釋放的是物理層的連接。
3.2.2 使用廣播信道的數據鏈路層
局域網中使用廣播信道進行數據傳輸。
共享通信媒體
1、靜態劃分信道(太麻煩,一般不使用)
頻分復用
時分復用
波分復用
馬分復用
2、動態媒體接入控制(多點接入)
隨機接入(主要被以太網采用)
受控接入,如多點線路探尋或輪詢(目前已不被采用)-
認識以太網
最初的以太網是將許多計算機都連接到一根總線上。當初人為這樣的連接方法既簡單又可靠,因為總線上沒有源器件。
11
說明:這是正常情況下的情況,但是如果A
計算機想要獲得相關數據,就可以使用一些抓包工具實現,這樣信息就不安全了。 以太網使用
CSMA/CD
協議
CSMA/CD
表示載波監聽多點接入/碰撞檢測Carrier Sense Multiple Access with Collision Detection
。“多點接入”表示許多計算機以多點接入的方式連接在一根總線上行。“載波監聽”是指每一個站在發送數據之前先要檢測一下總線上是否有其他計算機在發送數據,如果有,則暫時不要發送數據,以免發生碰撞,就是用電子技術檢測總線上有沒有其他計算機發送的數據信號。-
碰撞檢測
- 碰撞檢測就是計算機邊發送數據邊檢測信道上的信號電壓大小。
1、當幾個站同時在總線上發送數據時,總線上的信號電壓擺動值將會增大(互相疊加)
2、當一個站檢測到信號電壓擺動值超過一定的門限值時,就人為總線上至少有兩個站同時在發送數據,標明產生了碰撞。
3、所謂“碰撞”就是發生了沖突。因此“碰撞檢測”也稱“沖突檢測”。 - 檢測到碰撞后
1、在發生碰撞時,總線上傳輸的信號產生了嚴重的失真,無法從中恢復出有用的信息來。
2、每一個正在發送數據的站,一旦發現總線上出現了碰撞,就要立即停止發送,免得繼續浪費網絡資源,然后等待一段隨機時間后再次發送。
- 碰撞檢測就是計算機邊發送數據邊檢測信道上的信號電壓大小。
CSMA/CD
協議的重要特性
使用此協議的以太網不能進行全雙工通信而只能進行雙向交替通信(半雙工通信)。每個站在發送數據之后一小段時間內,存在著遭遇碰撞的可能性。這種發送的不確定性使整個以太網的平均通信量遠小于以太網的最高數據率。爭用期
最先發送數據幀的站,在發送數據幀后至多經過時間2τ(兩倍的端到端時延)就可知道發送的數據幀是否遭到了碰撞。經過爭用期這段時間還沒有檢測到碰撞,才能肯定這次發送不會發生碰撞。
爭用期
1、以太網的端到端時延2τ
稱為爭用期或碰撞窗口。通常,取51.2μs
為爭用期的長度。
2、對于10Mb/s
以太網,在爭用期內可發送512bit
,即64
字節
3、以太網在發送數據時,若前64
字節未發生沖突,則后續的數據就不會發生沖突
最短有效幀長
1、如果發生沖突,就一定是在發送的前64
字節之內
2、由于一檢測到沖突就立即中止發送,這時已經發送出去的數據一定小于64
字節
3、以太網規定了最短有效幀長為64
字節,凡長度小于64
字節的幀都是由于沖突而異常中止的無效幀。-
二進制指數類型退避算法
發生碰撞的站在停止發送數據后,要推遲(退避)一個隨機時間才能再發送數據- 確定基本退避時間,一般是取為爭用期
2τ
- 確定參數
k,k = Min[重傳次數, 10]
- 從整數集合
[0, 1, ......, (2^k-1)]
中隨機地取出一個數,記為r
。重傳所需的時延就是r
倍的基本退避時間2τ
。 - 當重傳達
16
次仍不能成功時即丟棄該幀,并向高層報告。
- 確定基本退避時間,一般是取為爭用期