系统可以使用UDP并使用前向纠错来传输整个消息,而无需重传,即使丢失了一些数据包.这在实践中是否有效?或者额外的开销是否太浪费?
我认为它对某些应用程序很有用,比如语音(VoIP),你想要避免错误,你永远不想停止(重新传输NAKed数据包)和等待(直到它被重新传输).
因此它可以在UDP 的实时传输协议风格之上实现.
延迟不是很糟糕吗?
您是否询问前向纠错是否会增加端到端延迟?如果是这样,我认为答案是"不",但它确实增加了所需的带宽.
我相信你总是需要一些延迟,以避免抖动; 例如,您可能会说"让整个语音通道延迟200毫秒,因此任何/每个数据包都需要0到200毫秒才能通过互联网,然后重新组装并通过D-to-A转换器发送到另一端."
给定这些数字,然后没有前向纠错可能意味着,在每200毫秒的时间段内,您发送10个数据包,每个数据包包含20毫秒的数据......如果丢失了一个,那么这是另一个的间隙(故障)结束.
然而,进行一些前向纠错可能意味着,在每200毫秒的时间内,您仍然发送10个数据包......每个数据包包含20毫秒的数据,加上已经在另一个数据包中传输的10毫秒数据(或者,也许您发送30个数据包而不是20个数据包.然后,如果任何单个数据包丢失,它携带的数据将被重新传送(其他两个数据包中的每一个数据包的一半),这可以避免解码输出中的任何故障.