【計算機網絡】數據鏈路層-差錯控制


差錯控制

差錯的產生

  • 信道所固有的、持續存在的隨機熱噪聲
  • 外界特定短暫原因產生的沖擊噪聲(主要)

編碼技術實現差錯控制主要分成兩類

  • 自動重傳請求ARQ:接收端檢測出差錯的時候就設法通知發送端重發,直到接受到正確的碼字為止
  • 前項糾錯FEC:接收端不僅僅可以發現錯誤,還可以知道哪里錯了,進而進行糾錯

檢錯編碼

循環校驗碼CRC

循環校驗碼根本思想就是先在要發送的幀后面附加一個數(這個就是用來校驗的校驗碼,但要注意,這里的數也是二進制序列的,下同),生成一個新幀發送給接收端。當然,這個附加的數不是隨意的,它要使所生成的新幀能與發送端和接收端共同選定的某個特定數整除(注意,這里不是直接采用二進制除法,而是采用一種稱之為“模2除法”)。到達接收端后,再把接收到的新幀除以(同樣采用“模2除法”)這個選定的除數。因為在發送端發送數據幀之前就已通過附加一個數,做了“去余”處理(也就已經能整除了),所以結果應該是沒有余數。如果有余數,則表明該幀在傳輸過程中出現了差錯。

生成多項式:G(X)=X4+X3+1,要求出二進制序列10110011的CRC校驗碼。

1.G(X)=X4+X3+1,二進制比特串為11001;(有X的幾次方,對應的2的幾次方的位就是1)
2.因為校驗碼4位,所以10110011后面再加4個0,得到101100110000,用“模2除法”(其實就是亦或^)即可得出結果
3.CRC^101100110000得到101100110100。發送到接收端;
4.接收端收到101100110100后除以11001(以“模2除法”方式去除),余數為0則無差錯

奇偶校驗碼

奇偶校驗碼最簡單,但只能檢測出奇數位出錯. 如果發生偶數位錯誤就無法檢測. 但經研究是奇數位發生錯誤的概率大很多. 而且奇偶校驗碼無法檢測出哪位出錯.所以屬於無法矯正錯誤的校驗碼。奇偶校驗碼是奇校驗碼和偶校驗碼的統稱. 它們都是通過在要校驗的編碼上加一位校驗位組成. 如果是奇校驗加上校驗位后,編碼中1的個數為奇數個。如果是偶校驗加上校驗位后,編碼中1的個數為偶數個。

例:

原編碼 奇校驗 偶校驗
0000 0000 1 0000 0
0010 0010 0 0010 1
1100 1100 1 1100 0
1010 1010 1 1010 0

如果發生奇數個位傳輸出錯,那么編碼中1的個數就會發生變化. 從而校驗出錯誤,要求從新傳輸數據

糾錯編碼

海明碼

漢明碼是一種具有糾錯功能的校驗碼.本文簡單地介紹漢明碼的計算方法.
漢明碼的目的是能夠糾正一位誤碼.假設信息碼共有 n 位,漢明碼共有 r 位,那么總共的碼長為 n + r 位.為能檢測出 n + r 位編碼中其中一位的錯誤,漢明碼必須能夠表示至少 n + r + 1 種狀態,其中 n + r 種表示 n + r 位編碼中有一位錯誤,另外還需要一種來表示整個編碼正確無誤.則漢明碼的長度需要滿足下列關系:

2 r >= n + r + 1

校驗位的確定
k個校驗位是通過對m+k位復合碼字進行奇偶校驗而確定的。
其中:P1位負責校驗海明碼的第1、3、5、7、…(P1、D1、D2、D4、…)位,(包括P1自己)
P2負責校驗海明碼的第2、3、6、7、…(P2、D1、D3、D4、…)位,(包括P2自己)
P3負責校驗海明碼的第4、5、6、7、…(P3、D2、D3、D4、…)位,(包括P3自己)

3、5、7、9、11的二進制編碼的第一位為1,所以3、5、7、9、11號位參加第一位校驗位,
類似:3、6、7、10、11號位參加2號位校驗,5、6、7號位參加4號位校驗,9、10、11號位參加8號位校驗

漢明碼的糾錯方式實際上是對傳送后的漢明碼形成新的檢測位P 根據P的狀態 直接找出錯誤
因此可得到三個校驗方程及確定校驗位的三個公式:(根據規則進行校驗 如果是配偶原則P=0 配奇原則P=1)
P1=B1⊕B3⊕B5⊕B7
P2=B2⊕B3⊕B6⊕B7
P3=B4⊕B5⊕B6⊕B7
例 唐 計原的一道例題

參考博客
1.https://www.cnblogs.com/attitudeY/p/6868899.html
2.https://www.cnblogs.com/bugutian/p/6221783.html
3.https://blog.csdn.net/u012532559/article/details/45307329


免責聲明!

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



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