三斧账、數(shù)據(jù)鏈路層
3.1 基本概念及基本問題
3.1.1基本概念
數(shù)據(jù)鏈路層的簡單模型
說明:本章我們只是關(guān)注數(shù)據(jù)鏈路層的傳輸玻靡,即僅從數(shù)據(jù)鏈路層觀察幀的流動。
數(shù)據(jù)鏈路層的信道類型
數(shù)據(jù)鏈路層使用的信道主要有以下兩種類型:
1墩蔓、點對點信道:這種信道使用一對一的點對點通信方式
2梢莽、廣播信道:這種信道使用一對多的廣播通信方式,因此過程比較復(fù)雜奸披。廣播信道上連接的主機很多昏名,因此必須使用抓用的共享信道協(xié)議來協(xié)調(diào)這些主機的數(shù)據(jù)發(fā)送。鏈路與數(shù)據(jù)鏈路
1阵面、鏈路是一條點到點的物理線路段轻局,中間沒有任何其他的交換結(jié)點。一條鏈路只是一條通路的一個組成部分样刷。
2仑扑、數(shù)據(jù)鏈路除了物理線路外,還必須有通信協(xié)議來控制這些數(shù)據(jù)的傳輸置鼻。若把實現(xiàn)這些協(xié)議的硬件和軟件加到鏈路上镇饮,就構(gòu)成了數(shù)據(jù)鏈路。現(xiàn)今最常用的方法是使用適配器(即網(wǎng)卡)來實現(xiàn)這些協(xié)議的硬件和軟件箕母。一般的適配器都包括了數(shù)據(jù)鏈路層和物理層這兩層的功能储藐。-
幀
2
說明:網(wǎng)絡(luò)層中傳遞過來的數(shù)據(jù)報加上幀頭和幀尾以及校驗之后就變?yōu)閿?shù)據(jù)幀了。數(shù)據(jù)鏈路層就像一個數(shù)字管道嘶是,所以常常在兩個對等的數(shù)據(jù)鏈路層之間畫出一個數(shù)字管道邑茄,而在這條數(shù)字管道上傳輸?shù)臄?shù)據(jù)單位就是幀。
3.1.2 三個基本問題
-
封裝成幀
1俊啼、封裝成幀就是在一段數(shù)據(jù)的前后分別添加首部和尾部,然后就構(gòu)成了一個幀左医。確定幀的界限授帕。
2同木、首部和尾部的一個重要作用就是進行幀定界。
3
下面看一個例子跛十,用控制字符進行幀定界的方法
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)記,如何告訴計算機枉证?
6
說明:發(fā)送端的數(shù)據(jù)鏈路層在數(shù)據(jù)中出現(xiàn)控制字符“SOH
”或“EOT
”的前面插入一個轉(zhuǎn)義字符“ESC
”(其十六進制編碼是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網(wǎng)絡(luò)傳輸數(shù)據(jù)時甘晤,必須采用各種差錯檢測措施。數(shù)據(jù)鏈路層中如果發(fā)現(xiàn)數(shù)據(jù)有誤會直接將其扔掉饲做,而是否需要重發(fā)是由傳輸層來決定线婚。
3.2 兩種情況下的數(shù)據(jù)鏈路層
3.2.1 使用點對點信道的數(shù)據(jù)鏈路層
-
PPP
協(xié)議使用場合
7
說明:我們家用的電腦到路由器的那根線就是點對點,使用的是PPP
協(xié)議盆均。這是一個數(shù)據(jù)鏈路層的協(xié)議∪祝現(xiàn)在全世界是有那個的最多的數(shù)據(jù)鏈路層協(xié)議是點對點協(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é)議不需要滿足的要求- 糾錯
- 流量控制
- 序號
- 多點線路
- 半雙工或單工鏈路
-
PPP
協(xié)議的組成- 數(shù)據(jù)鏈路層協(xié)議可以用于異步串行或同步串行介質(zhì)
- 它使用
LCP
(鏈路控制協(xié)議)建立并維護數(shù)據(jù)鏈路連接饰抒,如身份驗證,計費 - 網(wǎng)絡(luò)控制協(xié)議(
NCP
)允許在點到點連接上使用多種網(wǎng)絡(luò)協(xié)議诀黍,如圖所示
8
-
PPP
協(xié)議的幀格式
9
說明:其中A袋坑、C
段是固定的,因為這是點對點眯勾,所以不需要地址枣宫。而FCS
是幀檢驗序列。PPP
是面向字節(jié)的吃环,所有的PPP
幀的長度都是整數(shù)字節(jié)也颤。
這里也會出現(xiàn)字節(jié)填充的問題:信息字段中出現(xiàn)了標(biāo)志字段的值,可能會被誤認為是“標(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é)流,而是二進制流替蛉,則透明傳輸?shù)膯栴}需要使用零比特填充方法:PPP
協(xié)議用在SONET/SDH
鏈路時贯溅,是使用同步傳輸(一連串的比特連續(xù)傳送)。這時PPP
協(xié)議采用零比特填充方法來實現(xiàn)透明傳輸躲查。在發(fā)送端它浅,只要發(fā)現(xiàn)有五個連續(xù)的1
,則立即填入一個0
镣煮。接收端對幀中的比特流進行掃描姐霍。每當(dāng)發(fā)現(xiàn)五個連續(xù)1
,就把這五個連續(xù)1
后的一個0
刪除典唇。
-
PPP
協(xié)議不使用序號和確認機制
此協(xié)議之所以不適用序號和確認機制是出于一下考慮:- 在數(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ā)的赃泡,如果有錯就扔掉寒波。 - 幀檢驗序列
FCS
字段可保證無差錯接受。
- 在數(shù)據(jù)鏈路層出現(xiàn)差錯的概率不大時镊折,使用比較簡單的
PPP
協(xié)議的工作狀態(tài)
當(dāng)用戶撥號接入ISP
時升熊,路由器的調(diào)制解調(diào)器對撥號做出確認影所,并建立一條物理連接。PC
機向路由器發(fā)送一系列的LCP
分組(封裝成多個PPP
幀)僚碎。這些分組及其響應(yīng)的選擇一些PPP
參數(shù),和進行網(wǎng)絡(luò)層配置阴幌,NCP
(網(wǎng)絡(luò)控制協(xié)議)給新接入的PC
機分配一個臨時的IP
地址勺阐,使PC
機稱為Internet
上的一個主機。通信完畢時矛双,NCP
釋放網(wǎng)絡(luò)層連接渊抽,收回原來分配出去的IP
地址。接著议忽,LCP
釋放數(shù)據(jù)鏈路層連接懒闷。最后釋放的是物理層的連接。
3.2.2 使用廣播信道的數(shù)據(jù)鏈路層
局域網(wǎng)中使用廣播信道進行數(shù)據(jù)傳輸栈幸。
共享通信媒體
1愤估、靜態(tài)劃分信道(太麻煩,一般不使用)
頻分復(fù)用
時分復(fù)用
波分復(fù)用
馬分復(fù)用
2速址、動態(tài)媒體接入控制(多點接入)
隨機接入(主要被以太網(wǎng)采用)
受控接入玩焰,如多點線路探尋或輪詢(目前已不被采用)-
認識以太網(wǎng)
最初的以太網(wǎng)是將許多計算機都連接到一根總線上。當(dāng)初人為這樣的連接方法既簡單又可靠芍锚,因為總線上沒有源器件昔园。
11
說明:這是正常情況下的情況,但是如果A
計算機想要獲得相關(guān)數(shù)據(jù)并炮,就可以使用一些抓包工具實現(xiàn)默刚,這樣信息就不安全了。 以太網(wǎng)使用
CSMA/CD
協(xié)議
CSMA/CD
表示載波監(jiān)聽多點接入/碰撞檢測Carrier Sense Multiple Access with Collision Detection
逃魄』缥鳎“多點接入”表示許多計算機以多點接入的方式連接在一根總線上行⌒嶙辏“載波監(jiān)聽”是指每一個站在發(fā)送數(shù)據(jù)之前先要檢測一下總線上是否有其他計算機在發(fā)送數(shù)據(jù)皂冰,如果有,則暫時不要發(fā)送數(shù)據(jù)养篓,以免發(fā)生碰撞秃流,就是用電子技術(shù)檢測總線上有沒有其他計算機發(fā)送的數(shù)據(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)生了嚴重的失真,無法從中恢復(fù)出有用的信息來拱层。
2弥臼、每一個正在發(fā)送數(shù)據(jù)的站,一旦發(fā)現(xiàn)總線上出現(xiàn)了碰撞根灯,就要立即停止發(fā)送径缅,免得繼續(xù)浪費網(wǎng)絡(luò)資源,然后等待一段隨機時間后再次發(fā)送烙肺。
- 碰撞檢測就是計算機邊發(fā)送數(shù)據(jù)邊檢測信道上的信號電壓大小柳弄。
CSMA/CD
協(xié)議的重要特性
使用此協(xié)議的以太網(wǎng)不能進行全雙工通信而只能進行雙向交替通信(半雙工通信)纳猪。每個站在發(fā)送數(shù)據(jù)之后一小段時間內(nèi),存在著遭遇碰撞的可能性茬高。這種發(fā)送的不確定性使整個以太網(wǎng)的平均通信量遠小于以太網(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é)的幀都是由于沖突而異常中止的無效幀捞蚂。-
二進制指數(shù)類型退避算法
發(fā)生碰撞的站在停止發(fā)送數(shù)據(jù)后妇押,要推遲(退避)一個隨機時間才能再發(fā)送數(shù)據(jù)- 確定基本退避時間,一般是取為爭用期
2τ
- 確定參數(shù)
k姓迅,k = Min[重傳次數(shù), 10]
- 從整數(shù)集合
[0, 1, ......, (2^k-1)]
中隨機地取出一個數(shù)敲霍,記為r
。重傳所需的時延就是r
倍的基本退避時間2τ
丁存。 - 當(dāng)重傳達
16
次仍不能成功時即丟棄該幀色冀,并向高層報告。
- 確定基本退避時間,一般是取為爭用期