计算机网络中的前向纠错
什么是前向纠错?
前向纠错 (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”来进一步增加冗余度。