計算機網路中的前向糾錯
什麼是前向糾錯?
前向糾錯 (FEC) 是一種在資料傳輸中實現錯誤控制的方法,其中源(傳送方)提供冗餘資料,而目標(接收方)僅識別無錯誤的資料部分。FEC 可以從單個源同時向多個目標廣播資料,因為它不需要源和目標之間的 **握手**。
在最簡單的 FEC 形式中,每個字元都會傳輸兩次。
接收方驗證每個字元的兩個例項是否都遵循正在使用的協議。
如果兩種符合情況都發生,則接受該字元。
如果發生一種符合情況但另一種不發生,則接受遵循協議的字元。
如果在任何一種情況下都沒有符合情況,則拒絕該字元,並用空格或下劃線替換。
簡單 FEC 是無線電愛好者使用的兩種自糾正數字模式之一,稱為 **AMTOR**(業餘無線電電傳打字的縮寫)。它也被稱為 **模式 B**。另一種結合握手的 AMTOR 模式是 **自動重發請求** (ARQ),用於全球移動通訊系統 (GSM) 等通訊系統。
FEC 的優點和缺點
FEC 可以從單個源同時向多個目標廣播資料,因為它不需要源和目標之間的握手。
另一個好處是 FEC 減少了重傳所需的頻寬。因此,它被用於即時系統。
其主要缺點是,如果錯誤過多,則必須重新發送幀。
FEC 的型別
塊碼和卷積碼是如今常用的兩種結構不同的程式碼型別。
塊碼
塊碼編碼器將資訊序列“u”劃分為“k”個資訊位的(符號)訊息塊,並將每個訊息“u”轉換為一個 n 位的程式碼(符號)。編位元速率定義為“R = k/n”。冗餘位(符號),n-k,使程式碼能夠處理通道噪聲。
兩個最接近的碼字之間的最小距離 **dmin** 是塊碼的一個重要引數,它指定將一個有效碼字轉換為另一個有效碼字所需的最小資料更改量。此引數決定了程式碼檢測和糾正錯誤的能力。
通常,FEC 程式碼可以檢測和糾正每個碼字最多 **(dmin - 1)/2** 個錯誤。
卷積碼
卷積碼編碼器接收資訊序列“u”的 k 位塊,並生成 n 符號塊的編碼序列“v”。但是,每個編碼塊同時依賴於“m”個先前訊息塊和相同時間單元處的匹配 k 位訊息塊。
為了透過噪聲通道提供可靠的傳輸和冗餘位,n-k,透過提高程式碼的儲存器階數“m”來進一步增加冗餘度。