檢測原理
差錯檢測是通過檢錯碼來實現的,檢錯碼C只是所有可能出現的序列集合X的一部分,在傳送端只把數據編碼成C中的碼字來傳輸,當接收端收到不屬於集合C的序列時,則認為發生了傳輸誤碼。檢錯碼的好壞主要是由傳輸效率和漏檢機率來度量的,傳輸效率是指每傳輸1比特實際載有的信息量,可表示為。若傳輸中的差錯使一個碼字錯成另一個碼字,檢測系統則無法發現產生了誤碼,這稱為漏檢,相應的機率稱為漏檢機率。用於差錯檢測的碼字應使漏檢機率儘可能小而傳輸效率儘可能高,此外還必須考慮應具有有效地進行編碼以及判定差錯的方法。差錯檢測是自動請求重發技術的基礎,同時也是現代電信網維護管理方面的一個重要組成部分。
電信網早期的差錯檢測僅簡單地對線路碼實施,如利用HDB3碼或CMI碼(見傳輸碼型)的編碼規則,檢測出極性破壞的個數來對傳輸質量進行評估。當估計的誤碼率大到一定程度則發出相應的即時維護告警信號。這種檢測方法的漏檢機率很大,但適應早期的技術條件。
檢測方法
在計算機通信中常用的差錯檢測技術有奇偶校驗和分組校驗兩大類方法。
2.1 奇偶校驗
這是一種基於字元的差錯檢測方法,適合於異步通訊。傳送端,待傳送的數據劃分為字元的集合,在每一個要傳輸的字元(信息碼)的後面附加一個比特的校驗信息(稱為監督碼),使得信息碼連同監督碼在一起的1個數為奇數(奇校驗)或偶數(偶校驗)。接收端根據這一規則檢測傳輸過程中足否有錯。奇偶校驗的監督碼只有1位,並且只能檢測出奇數個錯誤,但在數據通信過程中出現奇數個錯誤的機率遠大於偶數個錯誤。它的最大缺點就是沒有辦法檢測出偶數個錯誤,為避免這一缺點,引入方陣(兩維)奇偶校驗方法。總之奇偶校驗,主要用於計算機內部的數據傳送和I/O設備中。
2.2 分組校驗
這是一種基於數據塊的差錯檢測方法,適合於同步通訊。傳送端,待傳送的數據劃分為數據塊的集合,對當前每一個要傳輸的數據塊(信息碼),根據一定的計算規則,計算出一個附加的校驗數據塊,緊跟於信息碼傳送出去。接收端,使用同樣的規則進行校驗以確定傳輸是否有錯。在計算機通信中,典型的分組校驗方法有校驗和法與循環冗餘校驗法兩種。
(1)校驗和法:這是一種簡單而快速的分組校驗方法。一種簡單的校驗和方法就是按一定的位數求數據塊的和,然後將該結果值作為校驗碼。在TCP/IP協定中IP數據報就使用這種簡單的方法對數據報的首部進行檢驗.傳送端,將數據劃分為16位碼字(數據組)的集合,然後求它們的和,將和的反碼作為所謂的網際網路校驗和。接收端,對收到的數據計算校驗和,檢查是否匹配收到的分組中所攜帶的校驗和欄位。顯然,很容易找到不同的分組數據塊具有相同的校驗和,從而使得這種校驗方法不足以保證可靠的數據通信,但是計算校驗和簡單、快速,以致在一些要求用軟體方法進行校驗的應用程式如網際網路協定中有一定的套用價值。
(2)循環冗餘校驗(CRC)是利用分組循環碼進行差錯檢測的。一個分組循環碼由其生成多項式g(x)來描述的次數r等於校驗位的個數。對於長為k的信息分組,a,a,...,a,可表示為多項式,此時r個校驗位恰好等於,除以g(x)所得的餘式,記作。同樣算法用於接收端對差錯的判定,對接收到的k+r長的分組b(x),若g(x)不能整除b(x),則判定傳輸中有差錯發生。由於使用簡單的移位反饋暫存器電路可實現多項式除法,所以CRC技術在通信和信息存儲中得到了非常廣泛的套用。
為了保證通信設備間的互通和互換,對CRC校驗技術進行了廣泛的國際標準化工作。如CCITT為電信網數字通路的性能監測規定了一系列標準的循環冗餘校驗,如CRC4,CRC8,CRC10,CRC16等。每一個循環冗餘校驗對應於一個特定的生成多項式,字母后面的數字代表校驗位的個數,如CRC16有16個校驗位,生成多項式為。