1. 程式人生 > >網路通訊基礎之檢錯與糾錯

網路通訊基礎之檢錯與糾錯

二維奇偶校驗

迴圈冗餘校驗(CRC)

是一種通過多項式除法檢測錯誤的方法,將每個位元串看作一個多項式,採用模2運算。通常它將位元串:bn-1bn-2bn-3 … b2b1b0解釋成多項式:bn-1xn-1 + bn-2xn-2 + bn-3xn-3 + … + b2x2 + b1x1 + b0x0

如果採用多項式編碼的方式,傳送方和接收方必須事先商定一個生成多項式G(x),生成多項式的高位和低位必須為1。以下4個生成多項式已經成為國際標準。

CRC-12:x12 + x11 + x3 + x2 +x +1

CRC-16:x16 + x15 + x2 +1

CRC-CCITT:x16 + x12 +x5 +1

CRC-32:x32 + x26 + x23 + x22 + x16 +x12 + x11 +x10 +x8 + x7 +x5 + x4 +x2 +x +1

對m位的資料M(x),要進行迴圈冗餘校驗,傳送方的處理過程如下:

(1) 設G(x)為r階,在資料的末尾附加r個0,使資料為m+r位,則相應的多項式B(x) = xr M(x)。

(2) 按模2除法用對應於G(x)的位串去除對應於B(x)的位串,求出餘數R(x)。

(3) 按模2減法從對應於B(x)的位串中減去餘數,結果就是要傳送帶迴圈冗餘校驗的幀T(x)=B(x)-R(x)。

很顯然,T(x)能被G(x)除盡。因此當接收方收到的位元流相應的多項式為T(x)時,接收方將T(x)除以G(x),若餘數為0,則接收方認為T(x)=T(x),否則發生錯誤。

檢錯重發(ARQ)

(1)停發等候重發

(2)返回重發

(3)選擇重發