CRC是什么--CRC是神馬東東??
導(dǎo)讀:本文主要介紹CRC是什么東東,不知道的童鞋們快來看看吧,很漲姿勢的哦~~~
本文引用地址:http://cafeforensic.com/article/272912.htm1.CRC是什么--簡介
CRC全稱Cyclic Redundancy Check,即循環(huán)冗余校驗(yàn)碼,是數(shù)據(jù)通信領(lǐng)域中最常用的一種差錯校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長度可以任意選定。CRC是一種數(shù)據(jù)傳輸檢錯功能,對數(shù)據(jù)進(jìn)行多項(xiàng)式計(jì)算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。
2.CRC是什么--基本知識
下面我們介紹幾個CRC的基礎(chǔ)知識:
1、幀檢驗(yàn)序列FCS(Frame Check Sequence):為了進(jìn)行差錯檢驗(yàn)而添加的冗余碼。
2、多項(xiàng)式模2運(yùn)行:實(shí)際上是按位異或(Exclusive OR)運(yùn)算,即相同為0,相異為1,也就是不考慮進(jìn)位、借位的二進(jìn)制加減運(yùn)算。如:10011011 + 11001010 = 01010001。
3、生成多項(xiàng)式(generator polynomial):當(dāng)進(jìn)行CRC檢驗(yàn)時,發(fā)送方與接收方需要事先約定一個除數(shù),即生成多項(xiàng)式,一般記作G(x)。生成多項(xiàng)式的最高位與最低位必須是1。
3.CRC是什么--原理
CRC檢驗(yàn)原理實(shí)際上就是在一個p位二進(jìn)制數(shù)據(jù)序列之后附加一個r位二進(jìn)制檢驗(yàn)碼(序列),從而構(gòu)成一個總長為n=p+r位的二進(jìn)制序列;附加在數(shù)據(jù)序列之后的這個檢驗(yàn)碼與數(shù)據(jù)序列的內(nèi)容之間存在著某種特定的關(guān)系。如果因干擾等原因使數(shù)據(jù)序列中的某一位或某些位發(fā)生錯誤,這種特定關(guān)系就會被破壞。因此,通過檢查這一關(guān)系,就可以實(shí)現(xiàn)對數(shù)據(jù)正確性的檢驗(yàn)。
4.CRC是什么--計(jì)算
設(shè)信息字段為K位,校驗(yàn)字段為R位,則碼字長度為N(N=K+R)。設(shè)雙方事先約定了一個R次多項(xiàng)式g(x),則CRC碼:
V(x)=A(x)g(x)=xRm(x)+r(x)
其中: m(x)為K次信息多項(xiàng)式, r(x)為R-1次校驗(yàn)多項(xiàng)式。
這里r(x)對應(yīng)的代碼即為冗余碼,加在原信息字段后即形成CRC碼。r(x)的計(jì)算方法為:在K位信息字段的后面添加R個0,再除以g(x)對應(yīng)的代碼序列,得到的余數(shù)即為r(x)對應(yīng)的代碼(應(yīng)為R-1位;若不足,而在高位補(bǔ)0)。
計(jì)算示例
設(shè)需要發(fā)送的信息為M = 1010001101,產(chǎn)生多項(xiàng)式對應(yīng)的代碼為P = 110101,R=5。在M后加5個0,然后對P做模2除法運(yùn)算,得余數(shù)r(x)對應(yīng)的代碼:01110。故實(shí)際需要發(fā)送的數(shù)據(jù)是101000110101110。
5.CRC是什么--注意
有時候有些人會差生一些錯誤的觀點(diǎn),下面小編為大家糾正幾處常犯的錯誤觀點(diǎn):
1、CRC是一種常用的檢錯碼,并不能用于自動糾錯。
2、只要經(jīng)過嚴(yán)格的挑選,并使用位數(shù)足夠多的除數(shù) P,那么出現(xiàn)檢測不到的差錯的概率就很小很小。
3、僅用循環(huán)冗余檢驗(yàn) CRC 差錯檢測技術(shù)只能做到無差錯接受(只是非常近似的認(rèn)為是無差錯的),并不能保證可靠傳輸。
拓展閱讀:
評論