📜  计算机网络中的前向纠错

📅  最后修改于: 2021-08-27 06:55:49             🧑  作者: Mango

前向纠错(FEC)是一种用于使通过通信信道进行的数据传输中的错误最小化的技术。在实时多媒体传输中,重新传输已损坏和丢失的数据包是没有用的,因为它会在复制过程中造成不可接受的延迟:您需要等待,直到重新发送丢失或损坏的数据包。因此,必须有某种技术可以纠正错误或立即重现数据包,并使接收机具有纠正错误的能力,而无需反向信道来请求重发数据。为此目的设计了各种FEC技术。

这些如下:

1.使用汉明距离:
对于纠错,纠正t个错误所需的最小汉明距离为:
 d_m_i_n = 2t + 1

例如,如果要纠正20个错误,则最小汉明距离必须为2 * 20 + 1 = 41位。这意味着,许多冗余位需要与数据一起发送。由于我们有大量数据要通过网络发送,因此这种技术很少使用,并且在大多数情况下无法提供如此高的冗余度。

2.使用XOR:
异或技术非常有用,因为可以使用此技术重新创建数据项。 XOR属性的用法如下:

 R= P_1\oplus P_2 \oplus .... \oplus P_i \oplus .... P_N   \rightarrow P_i = P_1 \oplus P_2 \oplus .... \oplus ...R \oplus .... P_N
如果将XOR属性应用于N个数据项,我们可以通过对所有数据项进行异或运算来重新创建任何数据项P 1至P N ,用上一个操作的结果替换要创建的数据项。在该技术中,将数据包划分为N个块,然后创建所有块的异或,然后发送N + 1个块。如果有任何块丢失或损坏,则可以在接收方重新创建它。

实际上,如果N = 4,则意味着必须发送25%的额外数据,并且如果四个块中只有一个丢失,则可以纠正该数据。

3.块交错:
在该技术中,每个数据分组被划分为块。然后,逐个块(水平)创建数据,但将这些块垂直组合为数据包。这样做是因为这样做,每个发送的数据包都携带着几个原始数据包中的一个数据块。如果数据包丢失,我们将仅丢失每个数据包中的一个块,这在多媒体通信中通常是可以接受的。一些小块被允许在接收器处丢失。每个分组中都可以缺少一个大块,因为同一分组中的所有大块都不能丢失。