是否可以通过设置IP头来发送大型UDP数据包以启用IP分段?

时间:2013-05-20 14:55:59

标签: network-programming udp ip

我正在使用UDP客户端和UDP服务器。

我有一些大的UDP有效载荷,介于2000-3000之间。我尝试了一些简单的测试。我让UDP客户端在数据报中发送2000个字节,并使用tcpdump来捕获数据包。我注意到只有1个传出数据包,它没有解析为UDP数据包,而是一个1514字节的IP数据包,这意味着丢失了大约500个字节。

是否可以将所有有效负载放在同一个UDP数据包中(需要花费一些精力将有效负载分成两部分,然后将它们组装在接收应用层上),并让IP将每个UDP数据包的片段堆叠成几个IP片段。在服务器端,IP堆栈汇集IP分段并将它们处理到UDP服务器。

如果可能,如何启用IP分片?

1 个答案:

答案 0 :(得分:0)

这是默认应该发生的事情。问题在于,如果片段永远不会到达,则IP级别上没有任何内容会导致重新传输,因此整个数据报都会丢失。通常使用UDP时,最好使用小于路径MTU的数据报,如果可以发现它,否则为534字节,因为所有主机都不需要在此级别之下进行分段。