基本概念
- 節(jié)點:主機规求、路由
- 鏈路:物理通道
- 數(shù)據(jù)鏈路:邏輯通道(控制協(xié)議的硬件+軟件)
- 幀:協(xié)議數(shù)據(jù)單元,封裝數(shù)據(jù)報
數(shù)據(jù)鏈路層任務(wù):向相鄰節(jié)點傳輸數(shù)據(jù)報
功能
- 功能二:為網(wǎng)絡(luò)層提供服務(wù):
無確認(rèn)無連接服務(wù)
卵惦,有確認(rèn)無連接服務(wù)
阻肿,有確認(rèn)面向連接服務(wù)
。 - 功能二:鏈路管理沮尿,即連接的建立丛塌、維持较解、釋放(用于面向連接的服務(wù))。
- 功能三:組幀赴邻。
- 功能四:流量控制印衔。
- 功能五:差錯控制(幀錯/位錯)。
組幀
封裝成幀:在一段數(shù)據(jù)的前后部分添加 首部
和 尾部
姥敛,這樣就構(gòu)成了一個幀奸焙。
接收端在收到物理層上交的比特流后,就能根據(jù)首部和尾部的標(biāo)記彤敛,從收到的比特流中識別幀的開始和結(jié)束.
首部和尾部包含許多的控制信息与帆,他們的一個重要作用:幀定界(確定幀的界限)。
幀同步:接收方應(yīng)當(dāng)能從接收到的二進(jìn)制比特流中區(qū)分出幀的起始和終止墨榄。
組幀的四種方法
1. 字符計數(shù)法
做法:幀首部使用一個計數(shù)字段(第一個字節(jié)玄糟,八位)來標(biāo)明幀內(nèi)字符數(shù)(包括他自己)。
缺點:若幀的第一個字節(jié)丟失就全體GG(一般不采用)
2. 字符(節(jié))填充法
做法:在首部和尾部分別添加特殊的控制信息袄秩,若數(shù)據(jù)中有相同比特流則在前面填充特殊的轉(zhuǎn)義字符讓接收方忽略它
缺點:so復(fù)雜了點
3. 零比特填充法
做法:類似字符填充法阵翎,填充的字符不同(`01111110`),并且遵循`5110`
`5110`:掃描整個數(shù)據(jù)段播揪。若有連續(xù)5個1出現(xiàn)就在后面無腦加0贮喧,防止和首尾數(shù)據(jù)重復(fù)
4. 違規(guī)編碼法。
做法:比如我們使用曼徹斯特編碼編碼數(shù)據(jù)
數(shù)據(jù)的定義是靠電平上升沿(低-高)和下降沿(高-低)表示猪狈。
那我們產(chǎn)生一個(高-高)/(低-低)這樣不符合編碼規(guī)則的電平就可以和數(shù)據(jù)區(qū)分
字節(jié)計數(shù)法
: Count字段的脆弱性(其值若有差錯將導(dǎo)致災(zāi)難性后果)
字符填充法
: 實現(xiàn)上的復(fù)雜性和不兼容性
目前較普遍使用的幀同步法是 比特填充
和 違規(guī)編碼法
箱沦。
差錯控制
差錯源于噪聲:
- 全局噪聲(鏈路電氣隨機干擾):提高信噪比解決
- 局部噪聲(外界噪聲干擾):編碼技術(shù)解決
差錯
- 位錯:(比特位出錯,1變成0雇庙,0變成1)
- 幀錯:丟失谓形、重復(fù)、失序
位錯解決
冗余編碼: 在數(shù)據(jù)前面添加校驗數(shù)據(jù)疆前,和最終收到的數(shù)據(jù)比對是否有誤寒跳,有誤證明傳輸出錯
檢錯編碼(只能檢測出錯)
- 奇偶檢驗碼(檢錯能力50%)
構(gòu)成:1位檢驗元 + n-1位數(shù)據(jù)元
奇校驗碼:加上校驗元后使得數(shù)據(jù)中的 1 個數(shù)位奇數(shù)
偶校驗碼:加上校驗元后使得數(shù)據(jù)中的 1 個數(shù)位偶數(shù)
eg:如果一個字符S的ASCll編碼從低到高依次為1100101,采用奇校驗竹椒,在下述收到的傳輸后字符中童太,哪種錯誤不能檢測?
A. 11000011
B. 11001010
C. 11001100
D. 11010011
Ans:D胸完。因為前采用奇校驗书释,ABC三項中1都為偶數(shù)傳輸均錯誤,D有可能是正確的(萬一是偶數(shù)位錯呢)
- 循環(huán)冗余碼CRC
1.發(fā)送端編碼
要傳送的數(shù)據(jù) / 生成多項式赊窥。取其余數(shù)作為冗余碼
2.發(fā)送數(shù)據(jù)
要傳送的數(shù)據(jù) + 冗余碼
3.接收端校驗
接收到數(shù)據(jù) / 生成多項式爆惧。龐貝余數(shù)是否為0,否則傳輸出錯
板栗??
課件中商漏了一個1锨能,但是過程是對的余數(shù)正確扯再,故不影響結(jié)果
這個模2除法(異或)適應(yīng)一下和以前數(shù)學(xué)不太一樣
一段晦澀的話
在數(shù)據(jù)鏈路層僅僅使用循環(huán)冗余檢驗CRC差錯檢測技術(shù)芍耘,只能做到對幀的無差錯接收,即“凡是接收端數(shù)據(jù)鏈路層接受的幀
我們都能以非常接近于1的概率認(rèn)為這些幀在傳輸過程中沒有產(chǎn)生差錯”熄阻。接收端丟棄的幀雖然曾收到了斋竞,但是最終還是因為有差錯被丟棄。
“凡是接收端數(shù)據(jù)鏈路層接收的幀均無差錯”饺律。
“可靠傳輸”:數(shù)據(jù)鏈路層發(fā)送端發(fā)送什么窃页,接收端就收到什么。
鏈路層使用CRC檢驗复濒,能夠?qū)崿F(xiàn)無比特差錯的傳輸脖卖,但這還不是可靠傳輸。
糾錯編碼(發(fā)現(xiàn)錯誤巧颈,還能找出出錯位置)
海明碼(發(fā)現(xiàn)雙比特錯畦木,糾正單比特錯)
原理: 多個校驗位同時檢驗一個數(shù)據(jù)
構(gòu)成: 檢驗位和數(shù)據(jù)位
檢驗位個數(shù):海明不等式 2^r >= k + r + 1
計算得出(r為檢驗位個數(shù),k為數(shù)據(jù)位位數(shù))
檢驗位位置:2的(1-r次方)
編碼: (以數(shù)據(jù)D = 101101為例)
- 計算檢驗位
1.1 第一個檢驗位砸泛,使得校驗位和所有位數(shù)末尾第一位為1(二進(jìn)制)的所有數(shù)據(jù)異或值為0
eg:P1 ⊕ D1 ⊕ D2 ⊕ D4 ⊕ D5 = 0 ==> P1 = 0
1.2 第二個檢驗位十籍,使得校驗位和所有位數(shù)末尾第二位為1(二進(jìn)制)的所有數(shù)據(jù)異或值為0
eg:P2 ⊕ D1 ⊕ D3 ⊕ D4 ⊕ D6 = 0 ==> P2 = 0
……
以此類推,最終
P1 = 0
P2 = 0
P3 = 0
P4 = 1
最終傳輸數(shù)據(jù)(海明碼): 0010011101
海明不等式和它的位置巧妙的使校驗位 校驗的位置都是數(shù)據(jù)位
校驗:
- 校驗異或值(假設(shè)傳輸中第五位傳輸錯誤變?yōu)?010111101)
1.1 第一個檢驗位
eg:P1 ⊕ D1 ⊕ D2 ⊕ D4 ⊕ D5 = 1
1.2 第二個檢驗位
eg:P2 ⊕ D1 ⊕ D3 ⊕ D4 ⊕ D6 = 0
1.3 第二個檢驗位
eg:P3 ⊕ D2 ⊕ D3 ⊕ D4 = 1
1.4 第二個檢驗位
eg:P4 ⊕ D5 ⊕ D6 = 0
2. 校驗結(jié)果 "出棧" : `0101` 轉(zhuǎn)換位十進(jìn)制 `5`
3. 確認(rèn)海明碼第五位出錯唇礁,將1改為0
校驗結(jié)果出棧后
0000
第0
位出錯就不用解釋了它壓根就沒錯
????板栗+1