鏈路層的功能


鏈路:兩個結點之間的物理通道 ,鏈路的傳輸介質分為有線鏈路和無線鏈路,主要有雙絞線,光纖,微波。

數據鏈路:兩個結點之間的邏輯通路 ,把實現數據數據傳輸協議的硬件和軟件加到鏈路上就構成數據鏈路。

結點:路由器,主機

幀:鏈路層的數據協議單元。封裝網絡層的數據報

數據鏈路層負責從一個結點搬運數據報到另一個結點。

  • 功能一: 為網絡層提供服務。主要作用是加強物理層傳輸原始比特流的功能 ,使得物理層提供的可能出錯的物理連接 在數據鏈路層的加持下,改造成邏輯上無差錯的鏈路。 對物理層的數據負責起來。

可以給網絡層提供的服務有以下三種:

​ ①無確認無連接服務:主要用於實時通信。只是為了快而快。正如字面意思,目的主機收到數據后也不會發送確認信號,源主機也不會專門建立一個鏈路的連接。即使幀丟失,數據鏈路層也不會負責重發。誤碼率比較低

​ ②有確認無連接服務:仍然不會建立一條連接。但是收到數據后會發給發送主機一個確認。發送端要是沒有收到確認信號,就會發送下一個。適合誤碼率比較低的通信信道,比如無線信道。

​ ③有確認面向連接服務:最安全,最可靠。建立連接再發送下一個幀,直到收到確認信號,繼續發送下一個信號。

有連接一定是有確認的,所以不存在 無連接面向連接服務。

  • 功能二:在面向連接時,負責連接的建立、維持、釋放
  • 功能三:組幀

給網絡層傳輸下來的IP數據報前后分別添加幀首部幀尾部 。接收端可以根據幀的首部和尾部的標記,就可以識別出這一段幀的開始和結束

首部和尾部含有非常多重要的信息,差錯控制信息,流量控制信息,物理地址信息,還有就是幀定界信息。

幀同步:接收方能夠從接受的二進制比特流中識別出幀的起始和終止

組幀: 發送方 添加幀首部尾部信息

不同數據鏈路層協議,最大傳輸單元MTU的長度不同。但是發送的時候還是都要遵守幀的數據部分要小於幀的MTU

透明傳輸:不管所傳數據是什么樣子的比特組合,隨便發,都能傳輸。不存在傳不了的。好像看不見傳輸的內容一樣(按道理邏輯講,數據鏈路層是能看到傳輸的比特,畢竟經過數據鏈路層✋,無奈數據鏈路層透明傳輸!!)

發送端組幀過程有四種方法:

①字符(字節)計數法

缺點:要是第一個字符在發送的時候發生錯誤,那么就gg了,會導致后續全部移位,無法識別。比如上圖中,第一個幀的第一個字符"5"變成"4"。這種錯誤發生是災難性的,所有幀都無法幀同步!!不常用。


幀的幀首部的第一個字節SOH(start of head) ,幀的幀尾部的最后一個字節EOH(end of head) ,不同協議的定界符SOH、EOH是不同的。

理想的是上面圖中所示,但是這種常規方法只適合傳輸文本文件,因為傳輸文本文件意味着每一個敲進去的字符對應的ASCII碼都不會和協議中提前設定的定界符產生交集,即 在幀中不會有定界符,可以放心大膽的傳輸。

但是!要是傳輸圖片、程序文件,可就數據部分可就不一定會沒有幀定界符,因此需要采取下面👇的幾種方法,解決數據部分含有幀定界符的方法。

后面幾種都要提前添加定界符,定界符通常由一個字節組成,題目會說明

②(轉義)字符填充法

先給數據前后添加首位定界符:然后對定界符之間的內容,再遇到定界符或者轉移字符就在前面統一添加轉義字符
發送端的時候數據部分遇到幀定界符,就給幀定界符前面添加轉義字符;接收端的時候遇到轉義字符+定界符或者轉義字符+轉義字符 的時候,去掉轉義字符就OK

③零比特填充法

掃描比特流,在發送端,遇到5個1,就無腦后面添加0;

在接收端,遇到5個1,就給后面的0無腦刪除

④違規編碼法

使用高-高,低-低電平做定界符 ,目前的局域網802.1X就是使用的這樣一種組幀方式

  • 功能四:流量控制 限制發送方速度,讓慢點發
  • 功能五:差錯控制(幀錯/位錯)

差錯是由於噪聲的存才才產生的。

噪聲分類:

​ 全局性噪聲:線路本身,信道固有的隨機 (熱)噪聲

​ 解決辦法:提高信噪比 減少噪聲 (信號的強度就相對於噪聲的強度就非常大) 對傳感器下手可以提高信噪比

​ 局部性噪聲:短暫原因造成的沖擊噪聲 ,是產生差錯的主要原因。

​ 解決辦法:利用編碼技術來解決

差錯的分類:

​ 一、位錯 比特位出錯1變0,0變1

​ 二、幀錯 幀錯分為3種:丟失、重復、失序

現代由於通信線路已經比較大的改善,數據鏈路層的重傳、確認機制已經不一定要進行。

無確認無連接服務 適合通信質量好,有線傳輸鏈路。因為這種服務方式下,可以說沒有、減少了差錯檢測,所以如果發生了差錯,差錯控制就交給上一層(傳輸層來進行小規模差錯控制足矣)

有確認無連接

有確認面向連接 后面這兩種 適合進行通信線路比較差的無線傳輸鏈路 。所以屬於比較可靠的數據鏈路層服務,對網絡層來說提供的數據信息比較可靠。


數據鏈路層的差錯控制

給數據鏈路層的安排差錯控制功能可以比較早的發現錯誤,這樣可以避免后面發送錯誤數據,從而節省資源。

數據鏈路層更多的是發生差錯里面的比特錯;

所以數據鏈路層的差錯控制(比特錯控制更多的是)分為:

  • 檢錯編碼 只知道發生錯誤

    • 奇偶校驗碼

      添加一位校驗位以后,數據加校驗碼所有位數中,奇校驗碼有奇數個1,偶校驗碼有偶數個1. 當使用奇校驗碼時,接收端接收的數據如果是偶數個1,那么一定可以判定數據發生了錯誤;要是接收的數據是奇數個1,就不能判定發送過來的數據是一定發生了錯誤,因為可能沒錯,也可能錯了2位。

    特點:

    只能檢查奇數個比特的錯誤 ,檢錯能力為50%

    ​ 原數據1100101 奇校驗碼11100101 ,要是發生一位錯11100100可以檢測出錯或者11100111也可以檢測出錯;三位錯,五位錯也一樣可以檢查出來;

    ​ 但是要是偶數個比特發生錯誤,奇校驗碼11100101,要是發生2位錯11100110發現此時1的個數還是奇數,這就不能檢查出錯誤了

    • 循環冗余碼

    幀檢驗序列(冗余碼)的位數就是二進制下的生成多項式的位數-1

    生成冗余碼之后,把冗余碼添加到原始數據之后再發送到信宿,信宿拿着收到的序列除以生成多項式,如果沒有余數(沒有冗余碼),證明發送過程非常OK,沒有發生比特差錯,就接收; 要是余數不為0,那么就判斷發送過程中幀出了問題,但是還是無法糾錯。只能丟棄幀,讓信源重發

    值得注意的是:FCS的生成以及接收端CRC檢驗都是由硬件實現,處理很迅速,沒有傳輸數據的額外延遲

​ "可靠傳輸":數據鏈路層發送方發送什么,接收方就接收什么

​ 所以CRC檢驗和奇偶校驗碼是無比特差錯的傳輸,但這還不是可靠傳輸,因為有一些幀丟棄了,沒有被接受方接收,達不到可靠傳輸

  • 糾錯編碼 還知道具體哪一位發生錯誤

    • 海明碼

    發現雙比特錯,糾正單比特錯

    海明碼的冗余碼(校驗碼)是內嵌在原始數據中,這個就和前面的檢錯碼不一樣了。海明校驗碼會間隔一些位數內嵌在原始比特流中。每一個檢錯碼都會作用於這個校驗碼之后的原始數據位數,因此靠后的比特位數大概率是被前面的所有校驗碼作用影響的,也正因如此,后面的數據如果發生錯誤,就會牽一發而動全身影響前面好幾位海明校驗碼。

    ①確定校驗碼的位數

    ​ 使用一個海明不等式就行了

    \(2^r-1\ge k+r\) \(r\)是冗余碼的信息,\(k\)是傳送數據位數

    ②確定校驗碼和數據的位置

    海明碼放在\(2^n\)的位置上;

    數據位從左到右依次插空;

    計算海明碼位置對應的海明碼值

    ​ 1#校驗碼對應的二進制第一位(從右往左)是1,所以1#海明碼校驗的數據對應的二進制數的第一位也是1,圖中可以看得出是\(D_1,D_2,D_4,D_5\) ;海明碼的值應該滿足的是 \(P_1\oplus D_1\oplus D_2\oplus D_4\oplus D_5=0\) ,可以計算出 \(P_1=0\)

    ​ 2#校驗碼對應的二進制第二位是1,所以2#海明碼校驗的是二進制位數第二位是1的數據位,有\(D_1,D_3,D_4,D_6\) ;海明碼的值是\(P_2\oplus D_1\oplus D_3 \oplus D_4\oplus D_6=0\) 可以計算出\(P_2=0\)

    ​ 3#校驗碼也是同理……

​ 檢錯並糾錯:已經接收到了的數據進行糾錯

​ 異或每一個校驗碼以及校驗碼影響的數據位得到結果。

​ 比如:由已知校驗碼以及數據位,計算\(P_1\oplus D_1\oplus D_2\oplus D_4\oplus D_5\) =1; 再計算 \(P_2\oplus D_1\oplus D_3 \oplus D_4\oplus D_6\)=0; 再計算 \(P_3 \oplus D_2\oplus D_3 \oplus D_4\) =1; 再計算 \(P_4 \oplus D_5\oplus D_6\) =0

出錯位置是 0101(按照倒序排列,可以這樣理解倒序排列的原因:最后一位是對應第一個海明碼控制的范圍,而且第一個海明碼控制的影響范圍比較大,可以對最后全局作出深遠影響,對應到序列,就是最后一位對全局的影響比較大)

糾錯:取反碼即可

物理層編碼:針對單個比特的對應的電平形式

數據鏈路層編碼:針對一組比特進行差錯檢測(使用的是冗余碼技術)

​ 冗余碼技術:發送數據之前,給原數據添加一定的冗余位 ,到達信宿后檢查接收到的數據和冗余位之間的關系是否仍然滿足之前的關系。

傳輸層發生幀錯比較多,幀錯留到傳輸層


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM