三、數(shù)據(jù)鏈路層
3.1 基本概念及基本問題
3.1.1基本概念
數(shù)據(jù)鏈路層的簡單模型

說明:本章我們只是關(guān)注數(shù)據(jù)鏈路層的傳輸,即僅從數(shù)據(jù)鏈路層觀察幀的流動。
數(shù)據(jù)鏈路層的信道類型
數(shù)據(jù)鏈路層使用的信道主要有以下兩種類型:
1、點(diǎn)對點(diǎn)信道:這種信道使用一對一的點(diǎn)對點(diǎn)通信方式
2、廣播信道:這種信道使用一對多的廣播通信方式,因此過程比較復(fù)雜。廣播信道上連接的主機(jī)很多,因此必須使用抓用的共享信道協(xié)議來協(xié)調(diào)這些主機(jī)的數(shù)據(jù)發(fā)送。鏈路與數(shù)據(jù)鏈路
1、鏈路是一條點(diǎn)到點(diǎn)的物理線路段,中間沒有任何其他的交換結(jié)點(diǎn)。一條鏈路只是一條通路的一個組成部分。
2、數(shù)據(jù)鏈路除了物理線路外,還必須有通信協(xié)議來控制這些數(shù)據(jù)的傳輸。若把實(shí)現(xiàn)這些協(xié)議的硬件和軟件加到鏈路上,就構(gòu)成了數(shù)據(jù)鏈路?,F(xiàn)今最常用的方法是使用適配器(即網(wǎng)卡)來實(shí)現(xiàn)這些協(xié)議的硬件和軟件。一般的適配器都包括了數(shù)據(jù)鏈路層和物理層這兩層的功能。-
幀
2
說明:網(wǎng)絡(luò)層中傳遞過來的數(shù)據(jù)報加上幀頭和幀尾以及校驗(yàn)之后就變?yōu)閿?shù)據(jù)幀了。數(shù)據(jù)鏈路層就像一個數(shù)字管道,所以常常在兩個對等的數(shù)據(jù)鏈路層之間畫出一個數(shù)字管道,而在這條數(shù)字管道上傳輸?shù)臄?shù)據(jù)單位就是幀。
3.1.2 三個基本問題
-
封裝成幀
1、封裝成幀就是在一段數(shù)據(jù)的前后分別添加首部和尾部,然后就構(gòu)成了一個幀。確定幀的界限。
2、首部和尾部的一個重要作用就是進(jìn)行幀定界。
3
下面看一個例子,用控制字符進(jìn)行幀定界的方法
4
說明:試想,幀還未發(fā)送完,發(fā)送端出了問題,只能重發(fā)該幀。接收端卻收到了前面“半截子幀”,它會拋棄嗎?為什么?當(dāng)然這里的開始和結(jié)束字符也可以是別的。
-
透明傳輸
5
說明:若傳輸?shù)臄?shù)據(jù)是ASCII碼中“可打印字符(供95個)”集時,一切正常。若傳輸?shù)臄?shù)據(jù)不是僅由“可打印字符”組成時,就會出現(xiàn)問題,如圖所示。如果數(shù)據(jù)部分恰好包含了開始標(biāo)記或者結(jié)束標(biāo)記,如何告訴計算機(jī)?
6
說明:發(fā)送端的數(shù)據(jù)鏈路層在數(shù)據(jù)中出現(xiàn)控制字符“SOH”或“EOT”的前面插入一個轉(zhuǎn)義字符“ESC”(其十六進(jìn)制編碼是1B)。字節(jié)填充或字符填充:接收端的數(shù)據(jù)鏈路層在將數(shù)據(jù)送往網(wǎng)絡(luò)層之前刪除插入的轉(zhuǎn)義字符。如果轉(zhuǎn)義字符也出現(xiàn)在數(shù)據(jù)當(dāng)中,那么應(yīng)在轉(zhuǎn)義字符前插入一個轉(zhuǎn)義字符。當(dāng)接收端收到連續(xù)的兩個轉(zhuǎn)義字符時,就刪除其中前面的一個。 差錯控制
傳輸過程中可能會產(chǎn)生比特差錯:1可能會變成0,而0也可能變成1。在一段時間內(nèi),傳輸錯誤的比特占所傳輸比特總數(shù)的比率稱為誤碼率BER(Bit Error Rate)。誤碼率與信噪比有很大關(guān)系。為了保證數(shù)據(jù)傳輸?shù)目煽啃裕谟嬎銠C(jī)網(wǎng)絡(luò)傳輸數(shù)據(jù)時,必須采用各種差錯檢測措施。數(shù)據(jù)鏈路層中如果發(fā)現(xiàn)數(shù)據(jù)有誤會直接將其扔掉,而是否需要重發(fā)是由傳輸層來決定。
3.2 兩種情況下的數(shù)據(jù)鏈路層
3.2.1 使用點(diǎn)對點(diǎn)信道的數(shù)據(jù)鏈路層
-
PPP協(xié)議使用場合
7
說明:我們家用的電腦到路由器的那根線就是點(diǎn)對點(diǎn),使用的是PPP協(xié)議。這是一個數(shù)據(jù)鏈路層的協(xié)議。現(xiàn)在全世界是有那個的最多的數(shù)據(jù)鏈路層協(xié)議是點(diǎn)對點(diǎn)協(xié)議PPP(Point-toPoint Protocol)。用戶使用撥號電話線接入Internet時,一般都是使用此協(xié)議。 -
PPP協(xié)議滿足的要求- 簡單:這是首要的要求
- 封裝成幀
- 透明性
- 多種網(wǎng)絡(luò)協(xié)議:如
TCP - 多種類型鏈路
- 差錯檢測
- 檢測連接狀態(tài)
- 最大傳送單元
- 網(wǎng)絡(luò)層地址協(xié)商
- 數(shù)據(jù)壓縮協(xié)商
-
PPP協(xié)議不需要滿足的要求- 糾錯
- 流量控制
- 序號
- 多點(diǎn)線路
- 半雙工或單工鏈路
-
PPP協(xié)議的組成- 數(shù)據(jù)鏈路層協(xié)議可以用于異步串行或同步串行介質(zhì)
- 它使用
LCP(鏈路控制協(xié)議)建立并維護(hù)數(shù)據(jù)鏈路連接,如身份驗(yàn)證,計費(fèi) - 網(wǎng)絡(luò)控制協(xié)議(
NCP)允許在點(diǎn)到點(diǎn)連接上使用多種網(wǎng)絡(luò)協(xié)議,如圖所示
8
-
PPP協(xié)議的幀格式
9
說明:其中A、C段是固定的,因?yàn)檫@是點(diǎn)對點(diǎn),所以不需要地址。而FCS是幀檢驗(yàn)序列。PPP是面向字節(jié)的,所有的PPP幀的長度都是整數(shù)字節(jié)。
這里也會出現(xiàn)字節(jié)填充的問題:信息字段中出現(xiàn)了標(biāo)志字段的值,可能會被誤認(rèn)為是“標(biāo)志”,怎么辦?- 將信息字段中出現(xiàn)的每個
0x7E字節(jié)轉(zhuǎn)變成兩個字節(jié)序列(0x7D,0x5E) - 若信息字段中出現(xiàn)一個
0x7D的字節(jié),則將其轉(zhuǎn)變成兩個字節(jié)序列(0x7D,0x5D) - 若信息字段中出現(xiàn)
ASCII碼的控制字符(即數(shù)值小于0x20的字符),則在該字符前面要加上一個0x7D字節(jié),同時將該字符的編碼加以改變。
- 將信息字段中出現(xiàn)的每個
如果信息部分傳遞的不是上面所說的字節(jié)流,而是二進(jìn)制流,則透明傳輸?shù)膯栴}需要使用零比特填充方法:PPP協(xié)議用在SONET/SDH鏈路時,是使用同步傳輸(一連串的比特連續(xù)傳送)。這時PPP協(xié)議采用零比特填充方法來實(shí)現(xiàn)透明傳輸。在發(fā)送端,只要發(fā)現(xiàn)有五個連續(xù)的1,則立即填入一個0。接收端對幀中的比特流進(jìn)行掃描。每當(dāng)發(fā)現(xiàn)五個連續(xù)1,就把這五個連續(xù)1后的一個0刪除。

-
PPP協(xié)議不使用序號和確認(rèn)機(jī)制
此協(xié)議之所以不適用序號和確認(rèn)機(jī)制是出于一下考慮:- 在數(shù)據(jù)鏈路層出現(xiàn)差錯的概率不大時,使用比較簡單的
PPP協(xié)議較為合理 - 在
Internet環(huán)境下,PPP的信息字段放入的數(shù)據(jù)是IP數(shù)據(jù)報。數(shù)據(jù)鏈路層的可靠傳輸并不能夠保證網(wǎng)絡(luò)層的傳輸頁式可靠的。比如在傳輸?shù)倪^程中數(shù)據(jù)丟失了、有錯,這里是不會讓發(fā)送端重發(fā)的,如果有錯就扔掉。 - 幀檢驗(yàn)序列
FCS字段可保證無差錯接受。
- 在數(shù)據(jù)鏈路層出現(xiàn)差錯的概率不大時,使用比較簡單的
PPP協(xié)議的工作狀態(tài)
當(dāng)用戶撥號接入ISP時,路由器的調(diào)制解調(diào)器對撥號做出確認(rèn),并建立一條物理連接。PC機(jī)向路由器發(fā)送一系列的LCP分組(封裝成多個PPP幀)。這些分組及其響應(yīng)的選擇一些PPP參數(shù),和進(jìn)行網(wǎng)絡(luò)層配置,NCP(網(wǎng)絡(luò)控制協(xié)議)給新接入的PC機(jī)分配一個臨時的IP地址,使PC機(jī)稱為Internet上的一個主機(jī)。通信完畢時,NCP釋放網(wǎng)絡(luò)層連接,收回原來分配出去的IP地址。接著,LCP釋放數(shù)據(jù)鏈路層連接。最后釋放的是物理層的連接。
3.2.2 使用廣播信道的數(shù)據(jù)鏈路層
局域網(wǎng)中使用廣播信道進(jìn)行數(shù)據(jù)傳輸。
共享通信媒體
1、靜態(tài)劃分信道(太麻煩,一般不使用)
頻分復(fù)用
時分復(fù)用
波分復(fù)用
馬分復(fù)用
2、動態(tài)媒體接入控制(多點(diǎn)接入)
隨機(jī)接入(主要被以太網(wǎng)采用)
受控接入,如多點(diǎn)線路探尋或輪詢(目前已不被采用)-
認(rèn)識以太網(wǎng)
最初的以太網(wǎng)是將許多計算機(jī)都連接到一根總線上。當(dāng)初人為這樣的連接方法既簡單又可靠,因?yàn)榭偩€上沒有源器件。
11
說明:這是正常情況下的情況,但是如果A計算機(jī)想要獲得相關(guān)數(shù)據(jù),就可以使用一些抓包工具實(shí)現(xiàn),這樣信息就不安全了。 以太網(wǎng)使用
CSMA/CD協(xié)議
CSMA/CD表示載波監(jiān)聽多點(diǎn)接入/碰撞檢測Carrier Sense Multiple Access with Collision Detection。“多點(diǎn)接入”表示許多計算機(jī)以多點(diǎn)接入的方式連接在一根總線上行?!拜d波監(jiān)聽”是指每一個站在發(fā)送數(shù)據(jù)之前先要檢測一下總線上是否有其他計算機(jī)在發(fā)送數(shù)據(jù),如果有,則暫時不要發(fā)送數(shù)據(jù),以免發(fā)生碰撞,就是用電子技術(shù)檢測總線上有沒有其他計算機(jī)發(fā)送的數(shù)據(jù)信號。-
碰撞檢測
- 碰撞檢測就是計算機(jī)邊發(fā)送數(shù)據(jù)邊檢測信道上的信號電壓大小。
1、當(dāng)幾個站同時在總線上發(fā)送數(shù)據(jù)時,總線上的信號電壓擺動值將會增大(互相疊加)
2、當(dāng)一個站檢測到信號電壓擺動值超過一定的門限值時,就人為總線上至少有兩個站同時在發(fā)送數(shù)據(jù),標(biāo)明產(chǎn)生了碰撞。
3、所謂“碰撞”就是發(fā)生了沖突。因此“碰撞檢測”也稱“沖突檢測”。 - 檢測到碰撞后
1、在發(fā)生碰撞時,總線上傳輸?shù)男盘柈a(chǎn)生了嚴(yán)重的失真,無法從中恢復(fù)出有用的信息來。
2、每一個正在發(fā)送數(shù)據(jù)的站,一旦發(fā)現(xiàn)總線上出現(xiàn)了碰撞,就要立即停止發(fā)送,免得繼續(xù)浪費(fèi)網(wǎng)絡(luò)資源,然后等待一段隨機(jī)時間后再次發(fā)送。
- 碰撞檢測就是計算機(jī)邊發(fā)送數(shù)據(jù)邊檢測信道上的信號電壓大小。
CSMA/CD協(xié)議的重要特性
使用此協(xié)議的以太網(wǎng)不能進(jìn)行全雙工通信而只能進(jìn)行雙向交替通信(半雙工通信)。每個站在發(fā)送數(shù)據(jù)之后一小段時間內(nèi),存在著遭遇碰撞的可能性。這種發(fā)送的不確定性使整個以太網(wǎng)的平均通信量遠(yuǎn)小于以太網(wǎng)的最高數(shù)據(jù)率。爭用期
最先發(fā)送數(shù)據(jù)幀的站,在發(fā)送數(shù)據(jù)幀后至多經(jīng)過時間2τ(兩倍的端到端時延)就可知道發(fā)送的數(shù)據(jù)幀是否遭到了碰撞。經(jīng)過爭用期這段時間還沒有檢測到碰撞,才能肯定這次發(fā)送不會發(fā)生碰撞。
爭用期
1、以太網(wǎng)的端到端時延2τ稱為爭用期或碰撞窗口。通常,取51.2μs為爭用期的長度。
2、對于10Mb/s以太網(wǎng),在爭用期內(nèi)可發(fā)送512bit,即64字節(jié)
3、以太網(wǎng)在發(fā)送數(shù)據(jù)時,若前64字節(jié)未發(fā)生沖突,則后續(xù)的數(shù)據(jù)就不會發(fā)生沖突
最短有效幀長
1、如果發(fā)生沖突,就一定是在發(fā)送的前64字節(jié)之內(nèi)
2、由于一檢測到?jīng)_突就立即中止發(fā)送,這時已經(jīng)發(fā)送出去的數(shù)據(jù)一定小于64字節(jié)
3、以太網(wǎng)規(guī)定了最短有效幀長為64字節(jié),凡長度小于64字節(jié)的幀都是由于沖突而異常中止的無效幀。-
二進(jìn)制指數(shù)類型退避算法
發(fā)生碰撞的站在停止發(fā)送數(shù)據(jù)后,要推遲(退避)一個隨機(jī)時間才能再發(fā)送數(shù)據(jù)- 確定基本退避時間,一般是取為爭用期
2τ - 確定參數(shù)
k,k = Min[重傳次數(shù), 10] - 從整數(shù)集合
[0, 1, ......, (2^k-1)]中隨機(jī)地取出一個數(shù),記為r。重傳所需的時延就是r倍的基本退避時間2τ。 - 當(dāng)重傳達(dá)
16次仍不能成功時即丟棄該幀,并向高層報告。
- 確定基本退避時間,一般是取為爭用期








