安全有效,德力西新國標八孔五位 3m 總控插座 27.7 元
什麼是CRC校驗?
CRC即迴圈冗餘校驗碼:是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊欄位和校驗欄位的長度可以任意選定。迴圈冗餘檢查(CRC)是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。
CRC校驗原理:
其根本思想就是先在要傳送的幀後面附加一個數(這個就是用來校驗的校驗碼,但要注意,這裡的數也是二進位制序列的,下同),生成一個新幀傳送給接收端。當然,這個附加的數不是隨意的,它要使所生成的新幀能與傳送端和接收端共同選定的某個特定數整除(注意,這裡不是直接採用二進位制除法,而是採用一種稱之為“ 模2除法
模2除法:
模2除法與算術除法類似,但每一位除的結果不影響其它位,即不向上一位借位,所以實際上就是異或。在迴圈冗餘校驗碼(CRC)的計算中有應用到模2除法。
例:
CRC校驗步驟:
CRC校驗中有兩個關鍵點,一是預先確定一個傳送送端和接收端都用來作為除數的二進位制位元串(或多項式),可以隨機選擇,也可以使用國際標準,但是最高位和最低位必須為1;二是把原始幀與上面計算出的除數進行模2除法運算,計算出CRC碼。
具體步驟:
1. 選擇合適的除數
2. 看選定除數的二進位制位數,然後再要傳送的資料幀上面加上這個位數-1位的0,然後用新生成的幀以模2除法的方式除上面的除數,得到的餘數就是該幀的CRC校驗碼。注意,餘數的位數一定只比除數位數少一位,也就是CRC校驗碼位數比除數位數少一位,如果前面位是0也不能省略。
3. 將計算出來的CRC校驗碼附加在原資料幀後面,構建成一個新的資料幀進行傳送;最後接收端在以模2除法方式除以前面選擇的除數,如果沒有餘數,則說明資料幀在傳輸的過程中沒有出錯。
CRC校驗碼計算示例:
現假設選擇的 CRC生成多項式為 G( X) = X4 + X3 + 1,要求出二進位制序列 10110011的 CRC校驗碼。下面是具體的計算過程 :
①將多項式轉化為二進位制序列,由 G( X) = X4 + X3 + 1可知二進位制一種有五位,第4位、第三位和第零位分別為1,則序列為11001
②多項式的位數位5,則在資料幀的後面加上5-1位0,資料幀變為 101100110000,然後使用模2除法除以除數 11001,得到餘數。
③將計算出來的CRC校驗碼新增在原始幀的後面,真正的資料幀為101100110100,再把這個資料幀傳送到接收端。
④接收端收到資料幀後,用上面選定的除數,用模2除法除去,驗證餘數是否為0,如果為0,則說明資料幀沒有出錯。