筆記 計算機網絡之數據鏈路層(上)


1、數據鏈路層功能概述

數據鏈路層基本概念

結點:主機、路由器
鏈路:網絡中兩個結點之間的物理通道,鏈路的傳輸介質主要有雙絞線、光纖和微波。分爲有線鏈路、無線鏈路。
數據鏈路:網絡中兩個結點之間的邏輯通道,把實現控制傳輸協議的硬件和軟件加到鏈路上就構成數據鏈路。
:鏈路層的協議數據單元,封裝網絡層數據報。
注:數據鏈路層負責經過一條鏈路從一個結點向另外一個物理鏈路直接相連的相鄰結點傳送數據報web

數據鏈路層功能概述

數據鏈路層在物理層提供服務的基礎上向網絡層提供服務,其最基本的服務是將源自網絡層來的數據可靠的傳輸到相鄰節點的目標機網絡層。其主要做用是增強物理層傳輸原始比特流的功能,將物理層提供的可能出錯的物理鏈接改形成邏輯上無差錯的數據鏈路,使之對網絡層表現爲一條無差錯的鏈路。
功能(1)爲網絡層提供服務:無確認無鏈接服務(一般用於實時通訊,或者誤碼率比較低的信道,源主機不用事先創建鏈接,目的主機收到後也不用返回確認,幀丟失數據鏈路層也不負責重發,而交給上一層來處理)、有確認無鏈接服務(目的主機收到後必須發回確認,若規定時間沒收到就重發,提升了可靠性。適合誤碼率較高的通訊,好比無線通訊)、有確認面向鏈接服務。
(2)鏈路管理,即鏈接的創建、維持釋放(用於面向鏈接的服務)
(3)組幀
(4)流量控制。(限制發送方)
(5)差錯控制(幀錯/位錯)網絡


2、組裝成幀和透明傳輸

在這裏插入圖片描述
在這裏插入圖片描述
注:透明傳輸:是指無論所傳數據是什麼樣的比特組合,都應當可以在鏈路上傳送。所以,鏈路層就看不見有什麼妨礙數據傳輸的東西。
當所傳數據中的比特組合恰巧於某一個控制信息徹底同樣時,就必須採起適當的措施,使收方不會講這樣的數據認爲是某種控制信息。這樣才能保證數據鏈路層的傳輸是透明的。
組幀方法:svg

(1)字符計數法

幀首部使用一個計數字段(第一個字節,八位)來代表幀內字符數
在這裏插入圖片描述痛點:若是一個發生錯誤,下面的都發生錯誤。編碼

(2)字符填充法

首先,咱們想經過開始字節和結束字節來標明一個幀在這裏插入圖片描述
當傳送的幀是由文本文件組成時(文本文件的字符都是從鍵盤上輸入的,都是ASCII碼)無論從鍵盤上輸入什麼字符均可以放在幀裏傳過去,即透明傳輸
當傳送的幀是由非ASCII碼的文本文件組成時(二進制代碼的程序或圖像等)會出現一種錯誤找到幀的邊界的狀況,就要採用字符填充方法實現透明傳輸。在這裏插入圖片描述
字符填充過程:
在這裏插入圖片描述
實際上就是在控制信息字符前面加上一個轉義字符(一個字節的比特組合)xml

(3)零比特填充法

在這裏插入圖片描述由首部標識符、尾部標識符和裝在幀中的數據部分組成。和字節填充法的區別是,他首部和尾部的標識符是同樣的都是011111110.
1.在發送端只要碰見連續的5個1就在後面添0
2.在接收端收到一個幀時,先找到標誌字段都額定邊界,再用硬件對比特流進行掃描,發現連續5個1時,九八後面的0刪除
注:零比特填充法保證了透明傳輸:在傳送的比特流中能夠傳送任意比特組合,而不會引發對幀邊界的判斷錯誤。blog

(4)違規編碼法

舉曼徹斯特編碼的例子,曼徹斯特編碼分別用高低和低高表明0和1.那麼咱們就能夠用高高和低低這兩個「違規」的編碼來界定幀的起始和終止。
注:因爲字節計數法中count字段的脆弱性(其值如有差錯將致使災難性的後果)及字符填充是線上的複雜性和不兼容性,目前較廣泛使用的幀同步法是比特填充和違規編碼法。圖片


3、差錯控制(檢錯編碼)

差錯從何而來

歸納的來講,傳輸的差錯都是因爲噪聲引發的
噪聲分爲:
(1)全局性噪聲:因爲線路自己電氣特性所產生的隨機噪聲(熱噪聲),是信道固有的,隨即存在的。解決辦法:提升信噪比來減小或避免干擾。(對傳感器下手)
(2)局部性噪聲:外界特定的短暫緣由所形成的衝擊噪聲,是產生差錯的主要緣由。解決辦法:一般利用編碼技術來解決。
差錯又分爲:
(1)位錯:比特位出錯
(2)幀錯:1.幀丟失2.幀重複3.幀失序
在這裏插入圖片描述路由

數據鏈路層的差錯控制

主要針對的是比特錯:
(1)檢錯編碼1.奇偶校驗碼2.循環冗餘碼CRC
(2)糾錯編碼 海明碼
注:數據鏈路層碼編碼和物理層的數據編碼與調製不一樣。物理層編碼針對的是單個比特。解決傳輸過程當中比特的同步等問題,如曼徹斯特編碼。而數據鏈路層的編碼針對的是一組比特,它經過冗餘碼的技術實現一組二進制比特串在傳輸過程當中是否出現了差錯
注:冗餘編碼:在數據發生以前,先按某種關係附加上必定的冗餘位,構成一個符合某一規則的碼字後再發送。當要發送的有效數據發生變化的時候,相應的冗餘位也隨之發生變化,使碼字聽從不變的原則。接收端根據收到碼字是否仍符合原規則,從而判斷書否出錯。同步

檢錯編碼——奇偶校驗碼

奇偶校驗碼(n-1位信息元,1位校驗元)(1)奇校驗碼 「1」的個數爲奇數
(2)偶校驗碼 1的個數爲偶數
注:說白了,就是檢驗收到的1的個數,若是採用奇校驗,在加上校驗元后,發送前1的個數應該是奇數個,那麼收到的時候1也應該是奇數個,不是奇數個就檢出錯了。
注:奇偶校驗只能檢查出奇數個比特錯誤,檢錯能力爲50%工作流

檢錯編碼——CRC循環冗餘碼

(1)發送端計算應當發送數據
先算FCS幀檢驗序列/冗餘碼
1.先判斷生成多項式的階數,階數爲r,則在發送數據的後面加r個0
2.而後將加過0的數據除以生成多項式(模2除法,也就是異或,相同是0,不一樣是1),得出餘數.所得的餘數就是FCS幀檢驗序列,也就是冗餘碼
3.最終應當發送的數據就是要發送的數據+FCS幀檢驗序列,也就是冗餘碼
(2)接收端檢錯過程
把收到的每個幀都除以相同的除數(及生成多項式),而後檢查獲得的餘數R
1.餘數爲0,斷定這個幀沒有差錯,接受
2.餘數不爲0,則斷定這個幀有差錯(可是沒法肯定到位)丟棄
FCS的生成以及接收端CRC檢驗都是由硬件實現,處理很迅速,所以不會延誤數據的傳輸。
注:在數據鏈路層僅僅使用循環冗餘檢驗CRC差錯檢測奇數,只能作到對幀的無差錯接收,即「凡是接收端數據鏈路層接受的幀」,咱們都能以很是接近於1的機率認爲這些幀在傳輸過程當中沒有產生差錯。接收端丟棄的幀雖然曾收到了,可是最終仍是由於有差錯被丟棄。凡是接收端數據鏈路層接受的幀均無差錯。
因此鏈路層使用CRC檢驗,可以實現無比特差錯的傳輸,但還不是可靠傳輸。

4、差錯控制——海明碼

能夠發現雙比特錯,糾正單比特錯。
工做原理:牽一髮而動全身
工做流程:肯定校驗碼位數r->肯定校驗碼和數據的位置->求出校驗碼的值->檢錯並糾錯

(1)肯定校驗碼位數r

海明不等式:2^r≥k+r+1(r爲冗餘信息位,k爲信息位)
例:要發送的數據:D=101101
數據的位數k=6,那麼知足不等式的最小r爲4,也就是D=101101的海明碼應該有6+4=10位,其中原數據6位,校驗碼4位

(2)肯定校驗碼和數據的位置

若D=101101,校驗碼P1,P2,P3,P4放在2的幾回方的位置,數據則從左到右爲D1,D2,D3……D按序把空填,將數據實際值按順序填上在這裏插入圖片描述

(3)求校驗碼的值

在這裏插入圖片描述

(4)檢錯並糾錯

令全部要校驗的位異或運算
在這裏插入圖片描述