2012-03-27 147 views
0

我在Live555邮件列表上收到了这个回复: “UDP不需要FEC,UDP服务传递一个数据包,或者不传输数据包 UDP不会随机地在数据包内部翻转某些位 要容忍数据包丢失,只需要冗余。“UDP是否需要FEC代码?

我想知道这个说法是否正确;并请提供您答案的依据。

说明:我指的是正向擦除校正。也许在Live555列表中回答的人是指前向错误代码。

+2

这是很真实的UDP不随意翻动包中位,但它很可能对位随机翻转为数据包穿过网络。请注意,UDP校验和(如果启用的话)是16位补码(对于某些类型的数据调整不如CRC好,并且有1比2 ** 16的机会,随机调整不会被校验和)。 – 2012-03-27 16:30:38

回答

0

UDP本身不会导致或防止位被翻转。根据数据的传输方式,翻转的位当然是可能的。

与此同时,大多数网络已经发展到堆栈中较低层次的错误纠正,因此在很多情况下,您可能无需在UDP之上添加任何层。然而,这是远远不能保证的 - 根据传输它的物理层,UDP数据包中的位错误当然是可能的,所以如果你确实需要确保这一点,独立于使用的较低层,那么FEC可以提供真正的效用。

编辑:是的,我想如果没有一些上下文来指出,大多数使用“FEC”的人是指“前向纠错”(这当然是我在撰写答复时所指的那种)。

0

IP数据包在头文件中有校验和。请参阅Wikipedia,RFC791等。

这对于您的应用程序来说是否足够让您决定。

0

在UDP堆栈里面没有FEC校正,只是一个校验和计算,看看接收到的数据报里面是否有错误的位,如果是的话,那个数据包会被丢弃。使用UDP将FEC应用于传输信道通常使用reed-solomon代码。在有线网络中包内错误比特的可能性很低,但在无线网络中相当高,因此,无线链路提供了所有诸如turbo码的FEC来纠正数据链路包内的数据符号(比特数)。

史蒂芬