
- DCN 有用資源
- DCN - 快速指南
- DCN - 有用資源
計算機網路 - 差錯檢測與糾正
在資料傳輸過程中,噪聲、串擾等多種原因都可能導致資料損壞。上層協議基於網路架構的某種通用檢視工作,並不瞭解實際的硬體資料處理過程。因此,上層協議期望系統之間的資料傳輸無誤。如果接收到的資料有誤,大多數應用程式將無法按預期工作。語音和影片等應用程式可能不會受到太大影響,即使存在一些錯誤,它們仍然可以正常執行。
資料鏈路層使用一些差錯控制機制來確保幀(資料位元流)以一定的精度傳輸。但是,要了解如何控制錯誤,必須瞭解可能發生哪些型別的錯誤。
錯誤型別
可能有三種類型的錯誤
單位元錯誤
在一個幀中,只有一個位元(無論在何處)被損壞。
多位元錯誤
接收到的幀中有多個位元處於損壞狀態。
突發錯誤
幀包含多個連續損壞的位元。
錯誤控制機制可能涉及兩種方法
錯誤檢測
錯誤糾正
錯誤檢測
接收到的幀中的錯誤透過奇偶校驗和迴圈冗餘校驗 (CRC) 來檢測。在這兩種情況下,都會與實際資料一起傳送一些額外的位元,以確認接收端接收到的位元與傳送時相同。如果接收端的反向檢查失敗,則認為位元已損壞。
奇偶校驗
傳送一個額外的位元與原始位元一起傳送,使1的個數在偶校驗的情況下為偶數,在奇校驗的情況下為奇數。
傳送方在建立幀時會計算其中1的個數。例如,如果使用偶校驗並且1的個數為偶數,則新增值為0的一個位元。這樣,1的個數保持為偶數。如果1的個數為奇數,則新增值為1的一個位元以使其為偶數。

接收方只需計算幀中1的個數。如果1的個數為偶數且使用偶校驗,則認為幀未損壞並被接受。如果1的個數為奇數且使用奇校驗,則幀仍未損壞。
如果傳輸過程中單個位元翻轉,接收方可以透過計算1的個數來檢測它。但是,當多個比特出錯時,接收方很難檢測到錯誤。
迴圈冗餘校驗 (CRC)
CRC 是一種不同的方法來檢測接收到的幀是否包含有效資料。此技術涉及對要傳送的資料位元進行二進位制除法。除數使用多項式生成。傳送方對要傳送的位元進行除法運算並計算餘數。在傳送實際位元之前,傳送方會在實際位元的末尾新增餘數。實際資料位元加上餘數稱為碼字。傳送方將資料位元作為碼字傳輸。

在另一端,接收方使用相同的 CRC 除數對碼字執行除法運算。如果餘數包含全零,則接受資料位元;否則,則認為傳輸過程中發生了一些資料損壞。
錯誤糾正
在數字世界中,錯誤糾正可以透過兩種方式完成
後向糾錯 接收方檢測到接收到的資料中存在錯誤時,它會請求傳送方重新傳輸資料單元。
前向糾錯 接收方檢測到接收到的資料中存在一些錯誤時,它會執行糾錯碼,這有助於它自動恢復並糾正某些型別的錯誤。
第一種,後向糾錯,很簡單,只有在重新傳輸成本不高的情況下才能有效使用。例如,光纖。但在無線傳輸的情況下,重新傳輸的成本可能過高。在這種情況下,使用前向糾錯。
為了糾正資料幀中的錯誤,接收方必須準確知道幀中哪個位元已損壞。為了定位錯誤的位元,冗餘位元用作奇偶校驗位元進行錯誤檢測。例如,我們採用 ASCII 字(7 位資料),那麼我們需要 8 種資訊:前七位告訴我們哪個比特出錯,還有一位告訴我們沒有錯誤。
對於 m 個數據位元,使用 r 個冗餘位元。r 個位元可以提供 2r 種資訊組合。在 m+r 位元碼字中,r 個位元本身也可能被損壞。因此,使用的 r 位元數必須告知 m+r 位元位置以及無錯誤資訊,即 m+r+1。
