CRC檢驗解析

2021-08-03 14:35:00 字數 1640 閱讀 1179

一  基本概念

crc即迴圈冗餘校驗碼(cyclic redundancy check):是資料通訊領域中最常用的一種差錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。其根本思想就是先在要傳送的幀後面附加乙個數(這個就是用來校驗的校驗碼,但要注意,這裡的數也是二進位制序列的,下同),生成乙個新幀傳送給接收端。當然,這個附加的數不是隨意的,它要使所生成的新幀能與傳送端和接收端共同選定的某個特定數整除(注意,這裡不是直接採用二進位制除法,而是採用一種稱之為「模2除法」)。到達接收端後,再把接收到的新幀除以(同樣採用「模2除法」)這個選定的除數。因為在傳送端傳送資料幀之前就已通過附加乙個數,做了「去餘」處理(也就已經能整除了),所以結果應該是沒有餘數。如果有餘數,則表明該幀在傳輸過程中出現了差錯。

在crc中我們需要關注的是 生成多項式,原始資訊,校驗碼。

二  校驗步驟

1求出校驗碼,得到完整的crc碼。傳送端傳送crc碼

(1)將生成多項式(它的x的最高次冪是r)轉換為r+1位的二進位制數

(2)將資訊碼左移r位

(3)用生成多項式(二進位制數)對資訊碼做除,得到r位的餘數(注意:這裡的二進位製做除法得到的餘數其實是模2除法得到的餘數,並不等於其對應十進位制數做除法得到的餘數。)

(4)將得到的餘數拼接到資訊碼左移r位後補0的位置。得到完整的crc碼。

2 接收端接收crc碼,之後對生成多項式做除,若得到為整數(即沒有餘數),此數為原始資訊碼。校驗傳輸過程正確。

補充:模2除法

三 crc檢驗例項

現假設選擇的crc生成多項式為g(x) = x4 + x3 + 1,要求出二進位制序列10110011的crc校驗碼。下面是具體的計算過程:

(1)首先把生成多項式轉換成二進位制數,由g(x) = x4 + x3 + 1可以知道(,它一共是5位(總位數等於最高位的冪次加1,即4+1=5),然後根據多項式各項的含(多項式只列出二進位制值為1的位,也就是這個二進位制的第4位、第3位、第0位的二進位制均為1,其它位均為0)很快就可得到它的二進位制位元串為11001。

(2)因為生成多項式的位數為5,根據前面的介紹,得知crc校驗碼的位數為4(校驗碼的位數比生成多項式的位數少1)。因為原資料幀10110011,在它後面再加4個0,得到101100110000,然後把這個數以「模2除法」方式除以生成多項式,得到的餘數(即crc碼)為0100,如圖所示。注意參考前面介紹的「模2除法」運算法則。

(3)把上步計算得到的crc校驗0100替換原始幀101100110000後面的四個「0」,得到新幀101100110100。再把這個新幀傳送到接收端。

(4)當以上新幀到達接收端後,接收端會把這個新幀再用上面選定的除數

11001

以「模2除法」方式去除,驗證餘數是否為0,如果為0,則證明該幀資料在傳輸過程中沒有出現差錯,否則出現了差錯。

CRC檢驗 迴圈冗餘檢驗

一 什麼是crc迴圈冗餘校驗?位元差錯 現實中的 通訊鏈路是不理想的,這也就是說在傳輸過程中可能會產生差錯,1也許會變成0,0或許也會變成1。這就是位元差錯。crc迴圈冗餘校驗則是為了解決資料鏈路層中存在的位元差錯問題。crc迴圈冗餘校驗原理 大多數書上基本上是以二進位制的多項式形式來說明的。其實它...

CRC迴圈冗餘檢驗

現實的通訊鏈路都不會是理想的。位元在傳輸過程中可能會產生差錯 1可能變成0,而0也可能變成1,這叫做位元差錯。crc迴圈冗餘檢驗 是一種根據網路資料報或電腦檔案等資料產生簡短固定位數校驗碼的一種雜湊函式,主要用來檢測或校驗資料傳輸或者儲存後可能出現的錯誤。它是利用除法及餘數的原理來作錯誤偵測的。cr...

迴圈冗餘檢驗CRC

1.在傳送端把資料劃分為組,假定每組k個位元,現假定待傳輸資料m 101001,則k 6。2.crc運算就是在資料m後面新增供差錯檢測用的n位冗餘碼,然後構成資料幀傳送過去,一共傳送 k n 位。3.n位冗餘碼可以用二進位制的模2運算得出,這就相當於在m後面新增n個0。4.用上述得到的 k n 位數...