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

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

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








