0

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

我怎样才能增加这个限制,以便我可以发送大数据包?

4

3 回答 3

5

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

于 2010-12-28T19:54:51.200 回答
4

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

在本地 LAN 上,流量较低时您可能不会注意到差异,但在任何不太理想的情况下,这可能会对性能造成巨大影响。

我认为这会更好:

  • 将 TCP 用于大于几 KB 的任何内容
  • 拆分你的消息(你很快就会发现你正在重新发明 TCP)
  • 在 UDP 之上使用其他一些经过充分测试的协议。一个例子是UDT
于 2010-12-28T20:11:32.717 回答
2

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

于 2010-12-28T20:25:18.413 回答