用到多項式和二進位制數之間的轉換
然後用到的主要運算是模2除法
1、迴圈校驗碼(crc碼):是資料通訊領域中最常用的一種差錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。
2、生成crc碼的基本原理:任意乙個由二進位制位串組成的**都可以和乙個係數僅為『0』和『1』取值的多項式一一對應。例如:**1010111對應的多項式為x6+x4+x2+x+1,而多項式為x5+x3+x2+x+1對應的**101111。
3、crc碼集選擇的原則:若設碼字長度為n,資訊欄位為k位,校驗欄位為r位(n=k+r),則對於crc碼集中的任一碼字,存在且僅存在乙個r次多項式g(x),使得
v(x)=a(x)g(x)=xrm(x)+r(x);
其中: m(x)為k次資訊多項式, r(x)為r-1次校驗多項式,
g(x)稱為生成多項式:
g(x)=g0+g1x+ g2x2+...+g(r-1)x(r-1)+grxr
傳送方通過指定的g(x)產生crc碼字,接收方則通過該g(x)來驗證收到的crc碼字。
4、crc校驗碼軟體生成方法:
借助於多項式除法,其餘數為校驗字段。
例如:資訊字段**為: 1011001;對應m(x)=x6+x4+x3+1
假設生成多項式為:g(x)=x4+x3+1;則對應g(x)的**為: 11001
x4m(x)=x10+x8+x7+x4 對應的**記為:10110010000;
採用多項式除法: 得餘數為: 1010 (即校驗欄位為:1010)
傳送方:發出的傳輸欄位為: 1 0 1 1 0 0 1 1 0 10
資訊字段 校驗字段
接收方:使用相同的生成碼進行校驗:接收到的字段/生成碼(二進位制除法)如果能夠除盡,則正確,
crc(cyclic redundancy check)迴圈冗餘校驗碼
是常用的校驗碼,在早期的通訊中運用廣泛,因為早期的通訊技術不夠可靠(不可靠性的**是通訊技術決定的,比如電磁波通訊時受雷電等因素的影響),不可靠的通訊就會帶來『確認資訊』的困惑,書上提到紅軍和藍軍通訊聯合進攻山下的敵軍的例子,第一天紅軍發了條資訊要藍軍第二天一起進攻,藍軍收到之後,發一條確認資訊,但是藍軍擔心的是『確認資訊』如果也不可靠而沒有成功到達紅軍那裡,那自己不是很危險?於是紅軍再發一條『對確認的確認資訊』,但同樣的問題還是不能解決,紅軍仍然不敢貿然行動。
對通訊的可靠性檢查就需要『校驗』,校驗是從資料本身進行檢查,它依靠某種數學上約定的形式進行檢查,校驗的結果是可靠或不可靠,如果可靠就對資料進行處理,如果不可靠,就丟棄重發或者進行修復。
crc碼是由兩部分組成,前部分是資訊碼,就是需要校驗的資訊,後部分是校驗碼,如果crc碼共長n個bit,資訊碼長k個bit,就稱為(n,k)碼。它的編碼規則是:
1、首先將原資訊碼(kbit)左移r位(k+r=n)
2、運用乙個生成多項式g(x)(也可看成二進位制數)用模2除上面的式子,得到的餘數就是校驗碼。
非常簡單,要說明的:模2除就是在除的過程中用模2加,模2加實際上就是我們熟悉的異或運算,就是加法不考慮進製,公式是:
0+0=1+1=0,1+0=0+1=1
即『異』則真,『非異』則假。
由此得到定理:a+b+b=a 也就是『模2減』和『模2加』真值表完全相同。
有了加減法就可以用來定義模2除法,於是就可以用生成多項式g(x)生成crc校驗碼。
例如: g(x)=x4+x3+x2+1,(7,3)碼,資訊碼110產生的crc碼就是:
對於g(x)=x4+x3+x2+1的解釋:(都是從右往左數)x4就是第五位是1,因為沒有x1所以第2位就是0。
11101 | 110,0000(設a=11101 ,b=1100000)
取b的前5位11000跟a異或得到101
101加上b沒有取到的00得到10100
然後跟a異或得到01001
也就是餘數1001
10111101 | 110,0000
111 01
1 0100
1 1101
1001
餘數是1001,所以crc碼是110,1001
標準的crc碼是,crc-ccitt和crc-16,它們的生成多項式是:
crc-ccitt=x^16+x^12+x^5+1
crc-16=x^16+x^15+x^2+1
先舉個例子:
已知資訊位為1100,生成多項式g(x) = x3+x+1,求crc碼。
m(x) = 1100 m(x)*x3 = 1100000 g(x) = 1011
m(x)*x3 / g(x) = 1110 + 010 /1011 r(x) = 010
crc碼為: m(x)*x 3+r(x)=1100000+010 =1100010
其原理是:crc碼一般在k位資訊位之後拼接r位校驗位生成。編碼步驟如下:
(1)將待編碼的k位資訊表示成多項式 m(x)。
(2)將 m(x)左移 r 位,得到 m(x)*xr 。
(3)用r+1位的生成多項式g(x)去除m(x)*xr 得到餘數r(x)。
(4)將m(x)*xr 與r(x)作模2加,得到crc碼。
「模2除」中間過程的減法為「模2減」,即異或運算。
CRC校驗原理
crc校驗原理 1 迴圈校驗碼 crc碼 是資料通訊領域中最常用的一種差錯校驗碼,其特 徵是資訊字段和校驗欄位的長度可以任意選定。2 生成crc碼的基本原理 任意乙個由二進位制位串組成的 都可以和乙個系 數僅為 0 和 1 取值的多項式一一對應。例如 1010111對應的多項 式為x6 x4 x2 ...
CRC校驗原理
以下內容摘自筆者即將出版的最新著作 深入理解計算機網路 一書。本書將於12月底出版上市,敬請留意!本書原始目錄參見此文 5.3.2 迴圈冗餘校驗檢錯方案 上節介紹的奇偶校驗碼 pcc 只能校驗一位錯誤,本節所要介紹的迴圈冗餘校驗碼 crc 的檢錯能力更強,可以檢出多位錯誤。1.crc校驗原理 crc...
CRC校驗原理
基本概念 crc即迴圈校驗碼是資料通訊中最常用的一種差錯校驗碼。資訊欄位的長度和校驗碼的長度是任意的。基本原理 在k位資訊碼的後面加上r位校驗碼,整個長度是n位,n k r。給定乙個 n,r 碼,可以證明存在乙個最高次冪為r的多項式g x 根據g x 可以生成k位資訊的校驗碼,而g x 叫做這個cr...