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