湯小斌
?
CRC算法在計算機(jī)網(wǎng)絡(luò)通信中的應(yīng)用
湯小斌
重慶三峽學(xué)院,重慶 404000
CRC,即循環(huán)冗余校驗碼,是計算機(jī)網(wǎng)絡(luò)通信領(lǐng)域常用的校驗碼。循環(huán)冗余校驗碼包括一系列移位、相除等數(shù)據(jù)編碼規(guī)則,其算法原理、算法程序的設(shè)計與分析,都可以通過相應(yīng)的軟件編碼進(jìn)行解決。循環(huán)冗余校驗碼是利用軟件進(jìn)行校驗的算法,因此其檢驗速度很快,校驗的誤碼率也較低。整個計算機(jī)網(wǎng)絡(luò)通信的信息傳輸速度很高?;诖?,主要對CRC算法在計算機(jī)網(wǎng)絡(luò)中的應(yīng)用進(jìn)行了詳細(xì)的分析與探討。
CRC算法;計算機(jī)網(wǎng)絡(luò)通信;應(yīng)用
目前,隨著網(wǎng)絡(luò)數(shù)據(jù)傳輸速度的不斷加快,數(shù)據(jù)傳輸過程中的錯誤代碼越來越多,出現(xiàn)誤碼現(xiàn)象的概率也大幅提高,使計算機(jī)網(wǎng)絡(luò)通信在運(yùn)行的時候具有很大的不確定性。運(yùn)用CRC算法則能夠降低出現(xiàn)誤碼情況的概率,使數(shù)據(jù)和信息的傳輸更加精準(zhǔn)、迅速。
CRC算法也可以稱為循環(huán)冗余校驗算法。詳細(xì)來講,這種算法是一種檢測錯誤的編碼?,F(xiàn)如今,隨著計算機(jī)網(wǎng)絡(luò)通信行業(yè)的快速發(fā)展,這項算法得到了非常廣泛的應(yīng)用。相較于那些較為傳統(tǒng)的錯誤檢測編碼形式,CRC算法在防止錯誤漏檢率以及誤碼率等方面具有非常大的優(yōu)勢。它還具有較為簡單的二元碼組,很大程度上降低了這項算法的誤判率,使計算機(jī)網(wǎng)絡(luò)通信的數(shù)據(jù)傳輸更加穩(wěn)定。CRC算法中最重要的是參數(shù)表,包含了256個字節(jié)。算法的正常運(yùn)行需要靠這些字節(jié)來維持[1]。因此,在運(yùn)行算法之前,需要確保參數(shù)表能夠容納512個字節(jié),避免算法在運(yùn)行過程中出現(xiàn)問題。
循環(huán)冗余校驗算法能否除盡,是數(shù)據(jù)信息的評判標(biāo)準(zhǔn)。如果數(shù)據(jù)信息能夠被多項式除盡,就代表此數(shù)據(jù)代碼出現(xiàn)誤碼的概率低;如果數(shù)據(jù)信息不能被多項式除盡,就代表其出現(xiàn)誤碼的概率較高。這個時候就需要對數(shù)據(jù)進(jìn)行詳細(xì)的分解,找出出現(xiàn)問題的地方,對出現(xiàn)問題的原因進(jìn)行分析與判斷,并減除掉產(chǎn)生的余數(shù)部分,使多項式能夠除盡此數(shù)據(jù)信息。不過在減除的過程中需要進(jìn)行非常復(fù)雜的數(shù)學(xué)計算,不能采用拼裝的方法來編碼數(shù)據(jù)。針對這一問題,網(wǎng)絡(luò)通信可以適當(dāng)運(yùn)用模2運(yùn)算的計算方式。通信網(wǎng)絡(luò)運(yùn)行中對數(shù)據(jù)的校驗一般都是通過代碼的方式呈現(xiàn)出來的。最常見的代碼形式有兩種:一種是字符代碼,一種是數(shù)字代碼。模2運(yùn)算算法運(yùn)用的是數(shù)字代碼形式。一般情況下,對數(shù)據(jù)的描述都采用多項式來進(jìn)行。計算機(jī)接收端在接收到校驗碼后,會采用多項式除盡數(shù)據(jù)的代碼。如果最后得出的余數(shù)是零,那么數(shù)據(jù)信息出現(xiàn)誤碼情況的概率也為零;如果得到的結(jié)果不是零,那么數(shù)據(jù)信息可能會出現(xiàn)誤碼的情況。
CRC算法通過相關(guān)的數(shù)據(jù)信息傳輸通道,實現(xiàn)兩個或多個計算機(jī)之間的信息互通。校驗后得出的校驗代碼,通常情況下都會展示在被校驗數(shù)據(jù)文件名稱的末尾。計算機(jī)在傳輸數(shù)據(jù)的時候,首先需要通過循環(huán)冗余校驗算法的校驗,確保數(shù)據(jù)信息在傳輸?shù)倪^程中不會出現(xiàn)差錯,使數(shù)據(jù)信息能夠快速、完整地從發(fā)送地傳輸?shù)浇邮盏?。接收?shù)據(jù)的計算機(jī)在接收到數(shù)據(jù)代碼后,會把數(shù)據(jù)信息的文本內(nèi)容譯為多組數(shù)據(jù)代碼,或是將一些信號譯為文字。這種“譯碼”是校驗數(shù)據(jù)解碼之前必須經(jīng)過的過程。如果接收到的數(shù)據(jù)在解碼后得出的結(jié)果與傳送之前的結(jié)果相同,那么就代表數(shù)據(jù)在傳輸?shù)倪^程中沒有出現(xiàn)誤碼的現(xiàn)象;如果接收到的數(shù)據(jù)在解碼后得到的結(jié)果與傳送之前的結(jié)果不同,那么就說明數(shù)據(jù)在傳輸?shù)倪^程中出現(xiàn)了誤碼現(xiàn)象;如果數(shù)據(jù)在傳輸?shù)倪^程中出現(xiàn)差錯,那么接收數(shù)據(jù)的計算機(jī)終端就會反復(fù)解碼問題數(shù)據(jù),直到解讀出的代碼與之前的結(jié)果一致。
在運(yùn)用循環(huán)冗余校驗算法校驗數(shù)據(jù)計算的時候,需要劃分為多組數(shù)據(jù)編碼,且需要以二進(jìn)制字符模式來傳輸這些數(shù)據(jù)。在檢測計算機(jī)網(wǎng)絡(luò)通信的校驗碼時,也需要運(yùn)用二進(jìn)制字符模式對數(shù)據(jù)進(jìn)行表述[2]。在運(yùn)用多項式除以校驗的數(shù)據(jù)后,如果結(jié)果為零,那么代表計算機(jī)通信網(wǎng)絡(luò)不會出現(xiàn)錯誤代碼;如果沒有除盡,那么說明數(shù)據(jù)在傳輸時出現(xiàn)問題。這時候就需要分析與判斷出現(xiàn)問題的原因,確保數(shù)據(jù)信息在傳輸過程中不受影響。
數(shù)據(jù)校驗碼的生成是CRC算法在計算機(jī)網(wǎng)絡(luò)通信應(yīng)用中最重要的一步。需要做好以下三個階段的工作才能夠生成精準(zhǔn)的校驗碼。
(1)需要將全部的數(shù)據(jù)編碼初始化,并根據(jù)數(shù)據(jù)的實際情況設(shè)置循環(huán)檢測的速度和次數(shù)。
(2)把數(shù)據(jù)信息轉(zhuǎn)入具有余數(shù)的數(shù)據(jù)空間內(nèi),數(shù)據(jù)信息介入后會使原來的余數(shù)發(fā)生變化。然后將改變后的余數(shù)單位與1進(jìn)行比對,使其數(shù)據(jù)形式只能是1或者0。如果余數(shù)單元中最高的數(shù)據(jù)是1,那么就需要查看多項式的數(shù)據(jù)代碼以及校驗碼的結(jié)果是不是0。此外,還需要確定校驗碼數(shù)據(jù)循環(huán)達(dá)到8次。
(3)編碼進(jìn)行256次校驗,將校驗得出的余數(shù)結(jié)果備份在計算機(jī)設(shè)備中。如果校驗碼數(shù)據(jù)的循環(huán)沒有達(dá)到8次,那么相關(guān)人員就要重新找出需要傳輸?shù)臄?shù)據(jù)信息,將它再次轉(zhuǎn)入具有余數(shù)的數(shù)據(jù)空間里,重新進(jìn)行校驗碼數(shù)據(jù)的檢測,直到數(shù)據(jù)得到有效的整改。校驗碼的生成能夠大幅降低計算機(jī)網(wǎng)絡(luò)通信在實際運(yùn)行時出現(xiàn)錯誤信息以及錯誤代碼的概率,使網(wǎng)絡(luò)通信中的數(shù)據(jù)傳輸更加快速有效。
在循環(huán)冗余校驗算法的數(shù)據(jù)參數(shù)表中,包含著一條定義的數(shù)據(jù)信息以及一個變量標(biāo)識,所有參數(shù)值都能夠從這512個字節(jié)中找出。在設(shè)計循環(huán)冗余校驗算法時,需要將512個字節(jié)變量分別存放校驗碼,與計算得出的中間結(jié)果。然后再對數(shù)據(jù)包內(nèi)的字節(jié)按照0或1的方式進(jìn)行分類。如果本字節(jié)與上一字節(jié)的異或數(shù)值不同,那么異或結(jié)果為1,反之則為0。根據(jù)這一定律來詳細(xì)計算分析全部字節(jié),分析得出的結(jié)果就是這一組數(shù)據(jù)信息的校驗碼。
計算機(jī)網(wǎng)絡(luò)通信的循環(huán)冗余校驗算法,是多種糾錯算法的其中一種。與其他傳統(tǒng)的糾錯算法相比,它具有找錯速度快、數(shù)據(jù)傳輸安全性高以及糾正錯誤效率快的優(yōu)勢。在運(yùn)用這一算法的過程中,需要特別注意多項式選擇以及通信數(shù)據(jù)的編碼問題,使其發(fā)揮出最大的作用,降低計算機(jī)網(wǎng)絡(luò)通信在傳輸數(shù)據(jù)時的誤碼率。
[1]許偉,王曉燕.CRC算法在計算機(jī)網(wǎng)絡(luò)通信中的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2014(2):119,121.
[2]瞿中,袁威,徐問之.CRC算法在計算機(jī)網(wǎng)絡(luò)通信中的應(yīng)用[J].微機(jī)發(fā)展,2002(2):12-14.
Application of CRC Algorithm in Computer Network ommunication
Tang Xiaobin
Chongqing Three Gorges University, Chongqing 404000
CRC, the cyclic redundancy check code, is a common check code in the field of computer network communication. Cyclic redundancy check code encoding rules including a series of shift, phase data, the algorithm principle, algorithm design and analysis, can be solved by encoding the corresponding software. Cyclic redundancy check code is an algorithm that uses software to check it, so its test speed is very fast and the error rate of the check is also low. The information transmission of the whole computer network communication is very high. Based on this, the application of CRC algorithm in the computer network is analyzed and discussed in detail.
CRC algorithm; computer network communication; application
TN915.1
A