前言
我們知道,一台主機向另外一台主機傳送報文的時候,需要一層層經過自己的協議棧進行資料封裝,到達最後一層(四層協議的網路介面層)時需要在幀尾部新增fcs校驗碼(通過crc演算法得出)。當對端主機收到時,在接收端同樣通過crc演算法進行驗證,確認傳輸過程中是否出現錯誤。它只能確認乙個幀是否存在位元差錯,但沒有提供解決措施。
迴圈冗餘校驗的原理
在傳送端,先把資料劃分為組(即:一幀)。假定每組 k 個位元。
在每組後面,新增供差錯檢測用的 n 位冗餘碼一起傳送。即:實際傳送長度為:k+n 位元。
傳送前雙方協商n+1位的除數p,方便接收方收到後校驗。
給k位元的資料新增除數減乙個0(p-1)作為被除數,與第三步確定的除數做「模2除法」。得出的餘數即fcs校驗序列,它的位數也必須是(p-1)。
將fcs校驗序列新增至k個位元位的後面傳送出去。
接收方對接收到的每一幀進行校驗,若得出的餘數 r = 0,則判定這個幀沒有差錯,就接受(accept)。若餘數 r ≠ 0,則判定這個幀有差錯,就丟棄。
對「模2除法」進行說明:
「模2除法」與「算術除法」類似,但它既不向上位借位,也不比較除數和被除數的相同位數值的大小,只要以相同位數進行相除即可。模2加法運算為:1+1=0,0+1=1,0+0=0,無進製,也無借位;模2減法運算為:1-1=0,0-1=1,1-0=1,0-0=0,也無進製,無借位。相當於二進位制中的邏輯異或運算。
計算示例
那麼接收方拿到的就是:101001001。再以它為被除數,1101為除數進行「模2除法」。
計算機網路 迴圈冗餘碼CRC
文章首發於我的個人部落格 在資料傳輸過程中可能出現位元差錯 1可能變為0,0也可能變為1 為了保證資料傳輸的可靠性,在計算機網路傳輸資料時,必須採用各種差錯檢測措施。一般來說,糾錯碼的編碼效率不如檢錯碼的編碼效率,因而在通訊中用得較多的還是檢錯碼。在資料鏈路層中,最廣泛應用的檢錯碼是一種漏檢率很低也...
計算機網路 CRC校驗
crc即迴圈冗餘校驗碼 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。方法 迴圈冗餘檢驗的原理 在資料鏈...
計算機網路 CRC校驗
crc即迴圈冗餘校驗碼 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。方法 迴圈冗餘檢驗的原理 在資料鏈...