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