1 CRC校驗的目的
在信息的傳輸過程中,有時會發生誤碼。
例如,傳送1001,接收到1000,這就產生了誤碼,但接收方並不知道產生了誤碼。
而當發送方與接收方使用同一標准的CRC校驗,就能夠判斷在信息傳輸的過程中是否發生了誤碼。
2 CRC基礎知識
2.1 除數與被除數
除號前面的數為被除數;
除號后面的數為除數。
10 ÷ 2 = 5 10為被除數;2為除數。
2 ÷ 10 = 0.2 2為被除數;10為除數。
2.2 除與除以
10 ÷ 2 = 5 10除以2
2 ÷ 10 = 0.2 10除2
2.3 異或
異或主要用於二進制計算,相同為0,相異為1。
0異或0 -> 0
0異或1 -> 1
1異或0 -> 1
1異或1 -> 0
3 CRC校驗的三要素
3.1 要傳輸的數據
例如要傳輸的數據為:10101101(二進制)
3.2 多項式
各種標准下的多項式如下圖所示。
根據多項式可以得到除數,除數為完整多項式的系數,如下列出了兩個例子:
多項式 | 完整多項式 | 除數 |
X^4 + X +1 | 1*X^4 + 0*X^3 + 0*X^2 + 1*X + 1*X^0 | 10011 |
X^5 + X^3 + 1 | 1*X^5 + 0*X^4 + 1*X^3 + 0*X^2 + 0*X^1 + 1*X^0 | 101001 |
3.3 校驗和
根據要傳輸的數據和除數,可以得到校驗和。
首先要在傳輸數據后補N個0(N = 多項式最高次次數);
最后除數的位數 = N,除數位數小於N,要在前面補0。
例1:
傳輸的數據:10101101(二進制)
除數:10011
校驗和的計算如下圖所示:
例2:
傳輸的數據:11010010(二進制)
除數:10011
校驗和的計算如下圖所示
接收方對接收數據使用相同CRC多項式進行異或運算,若余數為0,則表明傳輸沒有出現錯誤。
如下圖所示,傳輸的數據為11010010,CRC校驗和為1010,除數為10011,最終余數為0,表明傳輸正確。
4 在線CRC計算器要注意的一些問題
要注意的問題有如下三點:
5 參考
CRC(循環冗余校驗)在線計算
[CRC校驗]手算與直觀演示
https://www.bilibili.com/video/BV1V4411Z7VA?from=search&seid=6029216890881933361
【計算機網絡期末復習】5分鍾左右讓你明白CRC循環冗余校驗
https://www.bilibili.com/video/BV1rJ411V7L5?from=search&seid=6029216890881933361
循環冗余校驗(CRC)算法入門
https://blog.nanpuyue.com/2019/050.html