我已经阅读了许多有关UDP数据包大小的文章,但无法就正确的内容得出结论。
许多服务将最大UDP数据包限制为512字节(例如dns)
给定互联网上的最小MTU为576,IPv4 header 的大小为20个字节,而UDP header 的大小为8个字节。剩下548个字节可用于用户数据
我能使用不超过548个大小的数据包而不会造成数据包碎片吗?还是DNS的创建者知道一些东西,以及为什么他们将它限制为512字节。
我可以安全地超过548个字节吗?
最佳答案
的确,典型的IPv4 header 为20个字节,而UDP header 为8个字节。但是,可以包含IP选项,这些选项可以将IP header 的大小增加到60个字节。另外,有时中间节点有必要将数据报封装在另一个协议(protocol)(例如IPsec(用于VPN等)中)内,以便将数据包路由到其目的地。因此,如果您不知道特定网络路径上的MTU,则最好为可能未预料到的其他 header 信息留出合理的余量。通常认为可以使用512字节的UDP有效负载来做到这一点,尽管即使这样也不能为最大大小的IP header 留下足够的空间。