檢錯編碼

  • 導讀
  • 一、定義
  • 二、奇偶檢驗碼
  • 2.1 定義
  • 2.2 基本原理
  • 2.3 侷限性
  • 結語


  • 字符計數法
  • 字節填充法
  • 零比特填充法
  • 違規編碼法

因為字符計數法中的計數字段的脆弱性和字節填充法達成上的複雜性與不兼容性,所以目前較常用的就是但組幀 方法是 零比特填充法違規編碼法

在今天的內容中,我們將會介紹數據鏈路層的第二個功能——差錯控制

實際通信鏈路都不是理想的,比特在傳輸過程中可能產生差錯,如:

  • 1 變成 0
  • 0 變成 1

這種就是 比特差錯比特差錯是傳輸差錯中的一種,在本小節中大家僅討論比特差錯。

數據鏈路層通常利用編碼技術進行比特差錯控制,核心有兩類:

  • 自動重傳請求Automatic Repeat re Quest, ARQ):當接收方檢測到差錯時,就設法通知發送方重發,直到收到正確的數據為止
  • 前向糾錯Forward Error Correction, FEC):接收方不但能發現差錯,而且能確定錯誤的位置並加以糾正

因此差錯控制又可分為檢錯編碼糾錯編碼

從本篇內容開始,我們將會依次介紹這兩種編碼,下面就讓我們直接進入今天的內容;

一、定義

檢錯編碼 都採用 冗餘編碼技術,其核心思想是在有效數據(信息位)被髮送前,按某種關係附加一定的冗餘位(檢驗位),構成一個符合某一規則的碼字後發送。

當要發送的實用材料變化時,相應的冗餘位也隨之變化,使得碼字遵從不變的規則。接收方根據收到的碼字是否符合原規則來判斷是否出錯。常見的檢錯編碼有奇偶校驗碼循環冗餘碼

下面我們就來了解一下奇偶校驗碼

二、奇偶檢驗碼

2.1 定義

奇偶校驗碼奇校驗碼偶校驗碼一種最主要的檢錯碼。它由就是的統稱,【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_檢錯 位數據和 【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_檢驗位_02 位檢驗位組成,檢驗位的取值(01)將使整個檢驗碼中 1 的個數為奇數或偶數:

  • 奇檢驗碼:附加一個檢驗位後,【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_檢驗位_03 位的碼字中 1 的個數為奇數;
  • 偶檢驗碼:附加一個檢驗位後,【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_檢驗位_03 位的碼字中 1 的個數位偶數;

2.2 基本原理

對於 奇偶校驗碼,在硬件層面,能夠通過簡單的異或門實現。所謂的異或門是指:數字邏輯電路中的一種基本邏輯門,它的獨特之處在於能夠檢測兩個輸入信號是否不同。其運算規則為:相同為0,相異為1

那麼對於 奇校驗碼偶校驗碼其最終的異或值為:

  • 奇校驗碼信息位 + 檢驗位 總共有 奇數個 1 ,其最終的 異或值【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_檢驗位_05
  • 偶校驗碼信息位 + 檢驗位 總共有 偶數個 1 ,其最終的 異或值【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_檢錯_06

這裏我們以一個簡單的例子進行説明;

對於一個 7 位數據 1001 101 ,通過 異或門,大家許可得出該內容異或值:

【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_校驗碼_07

從上面的運算過程我們可以看到 1001 101 這個數據的異或值為 【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_檢錯_08,這表明數據中含有偶數1 ,那麼其對應的 奇偶校驗碼 中的 檢驗位 分別為:

  • 奇校驗碼【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_校驗碼_09
  • 偶校驗碼【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_檢錯_08

將該檢驗位加入到材料中後,我們就得到了最終的奇偶檢驗碼

  • 奇檢驗碼【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_校驗碼_11
  • 偶檢驗碼【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_檢錯_12

PS: 在 奇偶校驗碼 中,檢驗位可以放在不同的位置,構成不同的校驗碼

  • 檢驗位 放在 信息位的前面,那麼構成的奇偶校驗碼 為:檢驗位 + 信息位
  • 檢驗位 放在 信息位的後面,那麼構成的奇偶校驗碼 為:信息位 + 檢驗位

上面所展示的是信息位 + 檢驗位

通信雙方行根據具體啓用的校驗碼 所得到的 異或值否存在錯誤:就是來判斷數據

  • 當通信雙方規定均啓用奇校驗碼時,那麼通過異或 運算獲取的 信息位 + 檢驗位的異或值為:【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_檢驗位_05
  • 當通信雙方規定均使用偶校驗碼時,那麼通過異或 運算獲取的 信息位 + 檢驗位的異或值為:【計算機網絡】數據鏈路層 : 差錯控制 ( 檢錯編碼 | 奇偶校驗碼 | CRC 循環冗餘碼 )★_檢錯_06

因此,不管是奇校驗碼 還是 偶校驗碼,當接收方將接收到的校驗碼 通過 異或 運算獲取的 異或值 與規定的 校驗碼 所得到的 異或值不相等時,則表示該數據中發生了比特差錯

2.3 侷限性

奇偶校驗碼儘管能夠檢測比特在傳輸的過程中是否存在問題,但是也僅限於該功能,因此奇偶校驗碼在具體的使用過程中會存在以下問題:

  • 無法確定比特在傳輸的過程中,具體是哪一位發生了差錯
  • 當有 偶數個比特發生差錯時,通過奇偶校驗碼 無法檢測出 比特差錯

這兩個問題也很好理解:

奇偶校驗碼判斷是否發生比特差錯的原理是利用比較校驗碼 最終的 異或值 ,而對於 校驗碼中間的比特值並不關心,因此該檢錯編碼無法確定具體發生差錯的比特位;

對於 異或值的獲取,當發生比特差錯 的比特位為 奇數位時,才會改變整個校驗碼 最終的 異或值,因此該 檢錯編碼也無法檢錯出偶數位比特發生差錯的情況;

結語

至此,我們對數據鏈路層差錯控制中的檢錯編碼進行了一次深入的探索。今天旅程的核心,在於掌握了其“防患於未然”的智慧:

  • 依據為數據附加冗餘的檢驗位,構建一道基礎的“安檢門”,從而為其在不可靠信道上的傳輸保駕護航。

我們聚焦於奇偶校驗碼,揭示了其如何藉助精巧的設計,將複雜的檢錯任務簡化為對數據中“1”的個數的奇偶性判斷。這種利用簡便硬件(如異或門)即可建立高效檢錯的思路,體現了工程學的優雅。

然而,任何技術都有其邊界。這道“安檢門”的能力是有限的:

  • 無法定位錯誤:它只能報警“有入侵”,卻無法指出“入侵者”的具體位置。
  • 偶發錯誤盲區:當遇到偶數個比特同時出錯的情況時,它會不幸地失效。