发送UDP数据报而不分段

时间:2010-06-19 08:15:02

标签: network-programming udp

我想向本地网络中的所有对等方发送广播消息。消息是32位整数。我可以肯定,这个消息不会让我支离破碎,对吧?有两种选择: - peer将立即收到整个消息 - peer根本不会收到消息

更进一步,4个字节是最大数据大小,可以在一个UDP数据报中发送?我使用基于以太网的网络占99%。

2 个答案:

答案 0 :(得分:10)

IPv4指定支持的最小MTU为576字节,包括IP标头。您的4字节UDP有效负载将导致的IP数据包小于此值,因此您无需担心碎片。

此外,您期望的结果 - “对等体将立即接收整个消息或对等体将根本不接收消息”总是 UDP如何工作,即使存在碎片。如果片段没有到达,您的应用程序根本不会收到数据包。

UDP的规则是“数据包可能无序到达,重复,或者根本没有。如果数据包 到达,它将是整个数据包并且没有错误。 ”。 (“无错误”显然仅在IP校验和的适度限制内正确。)

答案 1 :(得分:3)

以太网数据包最多可达1500字节(并且不计算巨型帧)。如果您发送的有效负载仅为4个字节的广播消息,则它们根本不会被分段。只有当数据包大于最大传输单元(因此通过以太网大约1500字节)时才会发生碎片。

相关问题