資料鏈路層中的差錯檢測與糾正
資料鏈路層 使用差錯控制技術來確保幀(即資料位流)從源到目的地以一定的精度傳輸。
錯誤
當位元在計算機網路上傳輸時,由於干擾和網路問題,它們可能會發生損壞。損壞的位元會導致目的地接收到的資料出現錯誤,這些錯誤被稱為差錯。
錯誤型別
錯誤可以分為三種類型:單位元錯誤、多位元錯誤和突發錯誤。
單位元錯誤 - 在接收到的幀中,只有一個位元被損壞,即從 0 變為 1 或從 1 變為 0。
多位元錯誤 - 在接收到的幀中,有多個位元被損壞。
突發錯誤 - 在接收到的幀中,有多個連續的位元被損壞。
差錯控制
差錯控制可以透過兩種方式完成
差錯檢測 - 差錯檢測涉及檢查是否發生了任何錯誤。錯誤位元的數量和錯誤型別無關緊要。
差錯糾正 - 差錯糾正涉及確定被損壞的位元的確切數量以及損壞位元的位置。
對於差錯檢測和差錯糾正,傳送方都需要與資料位元一起傳送一些額外的位元。接收方根據額外的冗餘位元進行必要的檢查。如果發現數據沒有錯誤,則在將訊息傳遞到上層之前刪除冗餘位元。
差錯檢測技術
有三種主要的幀差錯檢測技術:奇偶校驗、校驗和和迴圈冗餘校驗 (CRC)。
奇偶校驗
奇偶校驗是透過向資料新增一個額外的位元(稱為奇偶校驗位元)來完成的,以使 1 的數量在偶校驗的情況下為偶數,在奇校驗的情況下為奇數。
在建立幀時,傳送方會計算其中 1 的數量,並以以下方式新增奇偶校驗位元
在偶校驗的情況下:如果 1 的數量為偶數,則奇偶校驗位元值為 0。如果 1 的數量為奇數,則奇偶校驗位元值為 1。
在奇校驗的情況下:如果 1 的數量為奇數,則奇偶校驗位元值為 0。如果 1 的數量為偶數,則奇偶校驗位元值為 1。
接收幀時,接收方會計算其中 1 的數量。在偶校驗檢查的情況下,如果 1 的數量為偶數,則接受該幀,否則拒絕。奇校驗檢查也採用類似的規則。
奇偶校驗僅適用於單位元錯誤檢測。
校驗和
在這種差錯檢測方案中,應用以下過程
資料被分成固定大小的幀或段。
傳送方使用 1 的補碼算術對段進行加法運算以獲得總和。然後對總和進行求補以獲得校驗和,並將其與資料幀一起傳送。
接收方使用 1 的補碼算術對傳入的段和校驗和進行加法運算以獲得總和,然後對總和進行求補。
如果結果為零,則接受接收到的幀;否則,將丟棄它們。
迴圈冗餘校驗 (CRC)
迴圈冗餘校驗 (CRC) 涉及將要傳送的資料位元透過通訊系統商定的預定除數進行二進位制除法。除數是使用多項式生成的。
在這裡,傳送方執行資料段與除數的二進位制除法。然後將餘數(稱為 CRC 位元)附加到資料段的末尾。這使得生成的資料單元完全可以被除數整除。
接收方將傳入的資料單元除以除數。如果沒有餘數,則假定資料單元正確並被接受。否則,則表示資料已損壞,因此被拒絕。
差錯糾正技術
差錯糾正技術找出被損壞的位元的確切數量及其位置。主要有兩種方法
後向差錯糾正(重傳) - 如果接收方檢測到傳入幀中的錯誤,它會請求傳送方重新傳輸該幀。這是一種相對簡單的技術。但是,它只能有效地用於重傳成本不高的場合,例如光纖,並且重傳時間相對於應用程式的要求較低。
前向差錯糾正 - 如果接收方檢測到傳入幀中的一些錯誤,它會執行錯誤糾正程式碼,該程式碼生成實際的幀。這節省了重傳所需的頻寬。在即時系統中是不可避免的。但是,如果錯誤過多,則需要重新傳輸幀。
四種主要的差錯糾正碼是
- 漢明碼
- 二進位制卷積碼
- 裡德-所羅門碼
- 低密度奇偶校驗碼