陳歡歡
摘 要:在計(jì)算機(jī)網(wǎng)絡(luò)通信中,通常會(huì)出現(xiàn)誤碼率問(wèn)題,對(duì)其通信安全造成一定的影響。其中,基于環(huán)冗余碼校驗(yàn)(Cyclic Redundancy Check,CRC)算法是針對(duì)計(jì)算機(jī)網(wǎng)絡(luò)通信差錯(cuò)檢測(cè)控制的有效方式。對(duì)CRC算法在計(jì)算機(jī)網(wǎng)絡(luò)通信差錯(cuò)檢測(cè)控制中的應(yīng)用策略進(jìn)行了分析。
關(guān)鍵詞:計(jì)算機(jī);網(wǎng)絡(luò)通信;差錯(cuò)檢測(cè);CRC算法
中圖分類(lèi)號(hào):TP393.06 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.15913/j.cnki.kjycx.2015.20.093
在網(wǎng)絡(luò)中傳輸信息必須依靠計(jì)算機(jī)實(shí)體之間的通信線路,從而提高信息傳輸?shù)乃俣群蜏?zhǔn)確性。在實(shí)際的計(jì)算機(jī)通信過(guò)程中,信息的傳輸過(guò)程難免會(huì)受到一定的干擾,使得接收端接收到的信息出現(xiàn)偏差,即接收端的信息發(fā)生了誤碼的現(xiàn)象,從而影響了計(jì)算機(jī)通信的準(zhǔn)確性。
1 降低通信信號(hào)傳輸誤碼率的策略
如果我們用Pc表示信號(hào)傳輸過(guò)程中的誤碼率,那么衡量信息傳輸過(guò)程的準(zhǔn)確度就可以表示為Pc=錯(cuò)誤接受碼元素/接收碼元素。降低誤碼率的方法主要有兩種:①改善數(shù)據(jù)通信線路的傳輸質(zhì)量;②差錯(cuò)控制。第一種方法主要是從硬件的角度出發(fā),改善現(xiàn)有的硬件設(shè)備,引入新的通信線路和信號(hào)交換設(shè)備等。這種方法一方面受到硬件技術(shù)的限制,另一方面由于新設(shè)備和新技術(shù)的成本較高,因此通過(guò)硬件改善信號(hào)傳輸質(zhì)量的效果一般。而第二種方法是通過(guò)軟件來(lái)解決的。實(shí)際上,每一種計(jì)算機(jī)通信系統(tǒng)中都有差錯(cuò)檢測(cè)系統(tǒng)控制,通過(guò)檢測(cè)通信信號(hào)的質(zhì)量,然后校驗(yàn)和修正信號(hào),進(jìn)而優(yōu)化計(jì)算機(jī)通信的傳輸過(guò)程。計(jì)算機(jī)通信過(guò)程中的差錯(cuò)檢測(cè)控制方法非常多,這里只介紹CRC算法。
2 CRC算法的校驗(yàn)規(guī)則
通過(guò)以上的敘述,我們知道了CRC算法的差錯(cuò)檢測(cè)的主要思想和原理,那么CRC算法是怎樣對(duì)一個(gè)數(shù)據(jù)進(jìn)行編碼和譯碼的呢?具體的校驗(yàn)規(guī)則是使接收端接收到的校驗(yàn)數(shù)據(jù)能夠被一個(gè)多項(xiàng)式所除,如果能夠被除盡,那么表示代碼正確;如果除不盡,那么余數(shù)的值能夠?qū)?yīng)出錯(cuò)位的具體位數(shù)。當(dāng)這種現(xiàn)象發(fā)生的時(shí)候,我們可以讓被校驗(yàn)的數(shù)據(jù)減去余數(shù)。由于簡(jiǎn)單的拼裝方法已經(jīng)無(wú)法滿足這個(gè)過(guò)程,所以要用到錯(cuò)位運(yùn)算的方法,從而得到一個(gè)能夠被除盡的校驗(yàn)數(shù)據(jù)。同時(shí),由于被校驗(yàn)的數(shù)據(jù)是一組攜帶信息的代碼,有可能表示數(shù)值大小的數(shù)字和其他類(lèi)型的代碼,但是任何信息的傳遞過(guò)程都是用二進(jìn)制的形式來(lái)表示的,因此模2運(yùn)算中,所有的被校驗(yàn)數(shù)據(jù)是被當(dāng)作數(shù)字來(lái)運(yùn)算的,并且使用多項(xiàng)式掃描。設(shè)M(x)為被校驗(yàn)的數(shù)據(jù),G(x)為除數(shù),也就是約定的生成多項(xiàng)式,R(x)運(yùn)算過(guò)程的余數(shù)。
2.1 生成多項(xiàng)式的選取
這個(gè)多項(xiàng)式是由一定的規(guī)則生成的,主要規(guī)則是要根據(jù)差錯(cuò)檢測(cè)的特點(diǎn),本著糾錯(cuò)和檢錯(cuò)的目的生成滿足這種需求的特殊多項(xiàng)式。具體的要求是:所有的位數(shù)一旦發(fā)生錯(cuò)誤,應(yīng)該保證余數(shù)不為0;不同位的錯(cuò)誤對(duì)應(yīng)不同的余數(shù);符合余數(shù)循環(huán)的規(guī)則。這里采用的是CCITT(即Consultative Committee of International Telephone and Telegraph)國(guó)際電報(bào)電話咨詢(xún)委員會(huì)推薦的生成多項(xiàng)式:
G(x)=X16+X12+X5+1. (1)
其中,X=2.CRC算法能夠發(fā)現(xiàn)所有被檢測(cè)數(shù)據(jù)的一位或二位錯(cuò)誤、奇數(shù)位的所有錯(cuò)誤、全部的不超過(guò)16位的突發(fā)錯(cuò)誤,且檢測(cè)出超過(guò)16位數(shù)據(jù)差錯(cuò)的概率高達(dá)99.9%.CRC算法對(duì)數(shù)據(jù)的差錯(cuò)檢測(cè)能力是計(jì)算機(jī)網(wǎng)絡(luò)通信所必須的。
2.2 編碼的方法
CRC算法對(duì)這個(gè)數(shù)據(jù)包進(jìn)行編碼的主要過(guò)程是讓被檢驗(yàn)數(shù)據(jù)的第K位有效信息左移r個(gè)單位,得到M(x)·xr,主要的目的是拼裝所求出的余數(shù)。選取數(shù)據(jù)包全部字節(jié)中的第r+1個(gè)生成一個(gè)多項(xiàng)式G(x),然后對(duì)這個(gè)多項(xiàng)式進(jìn)行模2運(yùn)算,得出將要產(chǎn)生的r位余數(shù),因此生成多項(xiàng)式G(x)實(shí)際上應(yīng)該是r+1位。模2運(yùn)算為:
. (2)
將需要編碼的有效信息看作一個(gè)數(shù)值,然后對(duì)余數(shù)的多項(xiàng)式進(jìn)行模2加減運(yùn)算,即可得到循環(huán)校驗(yàn)碼的值:
M(x)·xy+R(x)=Q(x)·G(x). (3)
經(jīng)過(guò)按位運(yùn)算,得出模2加法和減法的值是一樣的,所以經(jīng)過(guò)編碼過(guò)程得出的多項(xiàng)式的值實(shí)際上是把余數(shù)R(x)進(jìn)行了拼接,因此經(jīng)過(guò)拼接的校驗(yàn)碼也一定能夠被G(x)除盡。
2.3 譯碼和糾錯(cuò)
實(shí)際上,譯碼的過(guò)程就是對(duì)接收端接收到的數(shù)據(jù)進(jìn)行還原的過(guò)程,主要是用G(x)除以收到的循環(huán)校驗(yàn)碼,如果余數(shù)為0,那么可以確定碼字無(wú)誤;如果余數(shù)不為0,則說(shuō)明校驗(yàn)碼中某一位出現(xiàn)了差錯(cuò),或者不同位出現(xiàn)了錯(cuò)誤,但是可以根據(jù)余數(shù)的值查找出出錯(cuò)的類(lèi)型。
2.4 CRC算法分析
由于CRC算法本身有一個(gè)512字節(jié)的參數(shù)表,這個(gè)表可用來(lái)查找不同的對(duì)應(yīng)參數(shù)值,因此在設(shè)計(jì)CRC算法的過(guò)程中,應(yīng)該主動(dòng)避開(kāi)這些字節(jié),保證不同的變量能夠匹配不同的參數(shù)值。在利用CRC算法檢測(cè)數(shù)據(jù)包的時(shí)候,使用的是for循環(huán)語(yǔ)句,對(duì)每一個(gè)字節(jié)進(jìn)行計(jì)算,因此相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,大大加快了校驗(yàn)的速度。相比其他算法來(lái)說(shuō),CRC算法所占的儲(chǔ)存空間雖然會(huì)有所增加,但是隨著信息產(chǎn)業(yè)的不斷發(fā)展,硬件儲(chǔ)存容量的不斷增加,這種犧牲空間換取計(jì)算速度的方式是非常值得的。
3 結(jié)束語(yǔ)
通過(guò)理解CRC算法的原校驗(yàn)規(guī)則和算法程序設(shè)計(jì)思想,探索CRC算法在計(jì)算機(jī)網(wǎng)絡(luò)通信差錯(cuò)檢測(cè)控制中的應(yīng)用。由于CRC算法使用軟件校驗(yàn),因此省去了在外部加設(shè)硬件電路這一步驟,而且校驗(yàn)速度非常快,顯著提高了計(jì)算機(jī)網(wǎng)絡(luò)通信的速度和報(bào)文傳輸?shù)臏?zhǔn)確性。
參考文獻(xiàn)
[1]許偉,王曉燕.CRC算法在計(jì)算機(jī)網(wǎng)絡(luò)通信中的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2014(02):119,121.
[2]吳志毅.有關(guān)計(jì)算機(jī)網(wǎng)絡(luò)通信中實(shí)時(shí)差錯(cuò)控制技術(shù)分析[J].科技傳播,2012(22):221-222.
[3]陶傳會(huì).淺議CRC算法在計(jì)算機(jī)網(wǎng)絡(luò)通信中應(yīng)用[J].信息與電腦(理論版),2011(05):136,138.
〔編輯:王霞〕