如何包装 UDP 连接以提高抗数据包丢失的能力?

如何包装 UDP 连接以提高抗数据包丢失的能力?

假设存在一个 UDP 连接,预计不会出现太多数据包丢失。

是否已经存在可以包装 UDP 连接以牺牲带宽和开销为代价获得更高可靠性的工具,例如使用 Reed-Solomon 码。

预期用途:

host1$ someprogram --listen-udp 127.0.0.1:1234
host1$ reedsolomon_udp --listen 0.0.0.0:1235 --connect 127.0.0.1:1234

host2$ reedsolomon_udp --connect host1:1235 --listen 127.0.0.1:1234
host2$ someprogram --connect-udp 127.0.0.1:1234

该解决方案并非旨在完全消除损失,而是旨在减少损失,特别是当超过 50% 的数据包丢失时。

答案1

如果程序需要可靠的连接,则需要使用 TCP,而不是 UDP。UDP 在协议级别上不受丢失保护 - 它只是一种尽力而为的交付系统。TCP 是一种保证交付的系统。

答案2

ARQ 是一系列方法的名称,其中一种变体由 TCP 使用。某些变体有时用于“包装”UDP。

例如,在视频流中,可以使用 UDP 来避免 TCP 的开销。在某些情况下,可以使用各种 ARQ 来为通过互联网传输视频的 MPEG 传输流增加一些可靠性。这种 ARQ 旨在产生比 TCP 更低的开销,同时仍允许提高接收视频流的可靠性。

请参阅此维基百科文章以获得更详细的讨论和参考列表: https://en.wikipedia.org/wiki/Automatic_repeat_request

相关内容