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