【计算机网络】数据链路层 : 差错控制 ( 检错编码 | 奇偶校验码 | CRC 循环冗余码 )★
文章目錄
- 一、 奇偶校驗碼
- 二、 奇偶校驗碼 特點
- 三、 奇偶校驗碼 示例
- 四、 CRC 循環冗余碼 ( 原理說明 )
- 五、 CRC 循環冗余碼 計算示例
- 六、 CRC 循環冗余碼 生成多項式
一、 奇偶校驗碼
奇偶校驗碼 組成 :
① 信息元 : n?1n-1n?1 位 ; 要發送的有效數據 ;
② 校驗元 : 111 位 ; 冗余碼 ;
③ 奇校驗碼 : 111 的個數為 奇數 ; 冗余位 111 ;
④ 偶校驗碼 : 111 的個數為偶數 ; 冗余位 000 ;
二、 奇偶校驗碼 特點
奇偶校驗碼 特點 : 該編碼方法 , 只能檢查 奇數個 比特錯誤 , 如果有 偶數個比特錯誤 , 無法檢查出來 , 檢錯率是 50%50\%50% ;
三、 奇偶校驗碼 示例
奇偶校驗碼 示例 :
傳輸 字符 ‘S’ 的 ASCII 碼 110010111001011100101 , 使用 奇校驗碼 , 在 數據前 添加 111 位 冗余位 111 , 表明 111 的個數為奇數 , 上述數據的 111 的個數為 555 個 , 是奇數個 ;
奇數個錯誤 : 如果接受到的數據中 111 的個數是 偶數個 , 此時就能檢測出數據錯誤 ;
偶數個錯誤 : 如果接收到的數據中 111 的個數為 奇數個 , 那么就會判斷接收的數據是正確的 ; 無法檢查出 偶數個錯誤 ;
四、 CRC 循環冗余碼 ( 原理說明 )
發送端 :
① 要傳輸的數據 : 555 ;
② 生成多項式 : 222 ;
③ 計算冗余碼 : 使用 要傳輸的數據生成多項式=52\cfrac{要傳輸的數據}{生成多項式} = \cfrac{5}{2}生成多項式要傳輸的數據?=25? , 商是 222 , 余數是 111 ;
④ 冗余碼 : 余數 111 就是 FCS 幀檢驗序列 , 也就是 冗余碼 ;
⑤ 最終發送的數據 : 5+1=65 + 1 = 65+1=6
接收端 :
① 接收到的數據 : 666 ;
② 生成多項式 : 222 ;
③ 判定差錯 : 計算 接收到的數據生成多項式\cfrac{接收到的數據}{生成多項式}生成多項式接收到的數據? 余數是否為 000 , 如果余數為 000 , 說明傳輸過程中沒有錯誤 ;
數據鏈路層 使用 CRC 循環冗余校驗編碼 , 進行差錯控制 , 只能做到無差錯接收 , 凡是接收到的數據幀 , 都是正確的 ;
五、 CRC 循環冗余碼 計算示例
發送數據 11010110111101 0110 111101011011 , 使用 CRC 循環冗余碼 , 生成多項式是 100111001110011 , 求最終的發送數據 ???
最終發送的數據組成 : 原始數據 11010110111101 0110 111101011011 + 幀檢驗序列 FCS ;
計算 幀檢驗序列 FCS :
① 數據加 冗余碼 位數個 000 : 首先確定 冗余碼 位數 , 冗余碼的位數是 生成多項式的 階 , 即 生成多項式 100111001110011 的 總位數 減去 111 , 相當于 離散數學 中的生成函數的 最高位次冪 ; FCS 的位數是 444 位 ;
生成多項式 是 NNN 位 , 那么階 就是 N?1N-1N?1 位 , FCS 幀檢驗序列就是 N?1N-1N?1 位 ;
數據加 444 個 000 后為 110101101100001101 0110 11 000011010110110000
② 模 222 除法 : 數據 加上 000 后 , 除以 生成多項式 , 余數就是 FCS 幀檢驗序列 ;
二進制除法 , 與十進制除法不同的是 , 每個除法相除的計算是 異或操作 ;
異或運算 : 同 000 , 異 111 ;
模 222 除法計算過程分析 :
- 110101101011010 異或 100111001110011 計算得到 100110011001 , 然后下一位 111 落下來 , 得到 100111001110011 ;
- 100111001110011 異或 100111001110011 計算得到 000000000000000 , 然后下面 555 位 落下來 , 得到 101101011010110 ;
- 101101011010110 異或 100111001110011 計算得到 101101101 , 然后下 222 位落下來 , 得到 101001010010100 ;
- 101001010010100 異或 100111001110011 計算得到 111011101110
最終計算出來的 幀檢驗序列 是 111011101110 ;
最終發送的數據是 : 11010110111101 0110 111101011011 111011101110
接收端接收數據并校驗 :
① 檢驗過程 : 接收端接收 上述 11010110111101 0110 111101011011 111011101110 數據 , 將上述數據 與 生成多項式 100111001110011 相除 , 如果余數為 000 說明該數據幀沒有差錯 ;
② 結果判定 : 如果余數不為 000 , 說明數據幀錯誤 , 而且不知道哪里出現錯誤 , 丟棄該數據幀 , 重新發送 ;
六、 CRC 循環冗余碼 生成多項式
生成多項式 : G(x)=x3+x2+1G(x) = x^3 + x^2 + 1G(x)=x3+x2+1
相當于 : G(x)=x3+x2+0x1+x0G(x) = x^3 + x^2 + 0x^1 + x^0G(x)=x3+x2+0x1+x0
對應的模二運算的除數 : 110111011101 ;
- xxx 的 000 次冪系數為 111 , 對應第 000 位 為 111 ;
- xxx 的 111 次冪系數為 000 , 對應第 111 位 為 000 ;
- xxx 的 222 次冪系數為 111 , 對應第 222 位 為 111 ;
- xxx 的 333 次冪系數為 111 , 對應第 333 位 為 111 ;
生成多項式對應的 二進制數 , 總位數是最高次冪加一 , 每一位是對應位前的系數 000 或 111 ;
總結
以上是生活随笔為你收集整理的【计算机网络】数据链路层 : 差错控制 ( 检错编码 | 奇偶校验码 | CRC 循环冗余码 )★的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算机网络】数据链路层 : 差错控制
- 下一篇: 【计算机网络】数据链路层 : 差错控制