如何增加UDP的最大包大小?

时间:2010-12-28 19:53:19

标签: c++ udp

我经常发送3到15 KB的数据包,但有时我需要发送一个大约0.8-0.9 MB的大数据包。在这种情况下,UDP套接字将停止,因为单个数据包大小可能存在一些限制。

如何增加此限制以便发送大数据包?

3 个答案:

答案 0 :(得分:5)

UDP包头中的length字段宽度仅为16位;你不能有一个大于65,535字节的UDP数据包(包括标题,所以实际上限制是65,527字节;由于IP有其他限制,它可能甚至更低)。

答案 1 :(得分:4)

请注意,大于MTU的UDP数据包(主机之间的每个希望)将被IP拆分。如果这些部分中的一个丢失,则将丢弃整个UDP分组。没有重传。

在本地局域网上,流量较低时,您可能没有注意到差异,但在任何不太理想的情况下,它可能会造成巨大的性能损失。

我认为要好得多:

  • 将TCP用于大于几KB的
  • 拆分你的消息(你很快就会发现你正在重新发明TCP)
  • 在UDP之上使用其他一些经过良好测试的协议。一个例子是UDT

答案 2 :(得分:2)

尽管第4层标题中字段的大小限制, 仍然可以使用> 64K的数据包。请参阅 IPv6 Jumbograms