如何進行CRC校驗

2021-07-31 22:40:39 字數 1533 閱讀 2736

為了保證資料傳輸的可靠性,計算機網路傳輸資料時,必須採用差錯檢驗措施,資料鏈路層廣泛應用了迴圈冗餘檢驗crc(cyclic redundancy check)的檢錯技術。

基本原理:

crc檢驗原理實際上就是在乙個p位二進位制資料序列之後附加乙個r位二進位制檢驗碼(序列),從而構成乙個總長為n=p+r位的二進位制序列;附加在資料序列之後的這個檢驗碼與資料序列的內容之間存在著某種特定的關係。如果因干擾等原因使資料序列中的某一位或某些位發生錯誤,這種特定關係就會被破壞。因此,通過檢查這一關係,就可以實現對資料正確性的檢驗。

冗餘碼:傳送端,先把資料劃分為組,假設每組k個位元。假定待傳送的資料m=101001,crc運算就是在資料m後面新增供差錯檢驗用的n位冗餘碼。用二進位制的模2運算進行2^n乘m的運算,這相當於在m後面新增n個0。得到k+n位的數除以收發雙方事先商定的長度為(n+1)位的除數p,得出商是q餘數是r(n位,比p少一位)。

在接收端把接收到的資料以幀為單位進行crc檢驗:把收到的每一幀都除以同樣的除數p(模2運算),然後檢查得到的餘數r:

如果在傳輸過程中無差錯,那麼經過crc檢驗後得出的餘數r肯定是0。

總之在接收端對收到的每一幀資料進行檢測後,有以下兩種情況:

1、若餘數r=0,則判定這個幀沒有錯,就接受;

2、若餘數r≠0,則判定這個幀有錯,就丟棄。

一種簡便的方法是使用多項式來表示迴圈冗餘檢驗過程,在上邊的例子中,用多項式p(x) = x^3 +x^2+1表示p = 1001(最高位對應x^3,最低位對應x^0)。

例題:要傳送的資料為1101011011,採用crc的生成多項式是p(x)=x^4+x+1,試求應新增在資料後面的餘數。

資料在傳輸過程中最後乙個1變成了0,問接收端能否發現?

資料在傳輸過程中最後兩個1變成了0,問接收端能否發現?

解答如下:

要傳送的資料為1101011011,採用crc的生成多項式是p(x)=x^4+x+1,,則可用11010110110000除以10011獲得資料後面的餘數,其餘數為1110,計算過程如下圖:

資料傳輸過程中最後乙個1變成0,則接收端用11010110101110(資料最後乙個1變成0即:1101011010,餘數為1110)除以10011,獲得餘數為1101,不是0000,故接收端判定該資料幀有錯。

資料傳輸過程中最後兩個1變成0,則接收端用11010110001110(資料最後乙個1變成0即:1101011000,餘數為1110)除以10011,獲得餘數為1011,不是0000,故接收端判定該資料幀有錯。

在資料鏈路層若僅僅使用迴圈冗餘檢驗crc差錯檢測技術提供可靠傳輸服務,只能做到對幀的無差錯接收。注意:我們現在並沒有要求資料鏈路層向網路層提供可靠傳輸服務,可靠傳輸服務指:資料鏈路層的傳送端發什麼,在接收端就收到什麼。傳輸差錯分為兩種:1、位元差錯(1可能變成0,0可能變成1);2、收到的幀沒有出現差錯,但出現了幀丟失、幀重複等。故在資料鏈路層使用crc校驗,能夠實現無比特差錯的傳輸,但這還不是可靠傳輸。

如何進行CRC校驗

crc即迴圈冗餘校驗碼 cyclic redundancy check 1 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸...

資料校驗 CRC校驗

工作原理 crc即迴圈冗餘校驗碼 cyclic redundancy check 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資...

如何進行Monkey Test

一 簡介 monkey是android中的乙個命令列工具,可以執行在模擬器裡或實際裝置中。它向系統傳送偽隨機的使用者事件流 如按鍵輸入 觸控螢幕輸入 手勢輸入等 實現對正在開發的應用程式進行壓力測試。monkey包括許多選項,它們大致分為四大類 基本配置選項,如設定嘗試的事件數量 執行約束選項,如設...