发现最大数据包大小

时间:2010-03-26 10:26:04

标签: windows unix networking udp mtu

我正在开展与网络相关的项目,我正在使用DTLS(TLS / UDP)来保护通信。

阅读DTLS的规范,我注意到DTLS需要设置 DF 标志(Do not Fragment)。

在我的本地网络上,如果我尝试发送大于1500字节的消息,则不会发送任何内容。这很有道理。在Windows上,sendto()报告成功但没有发送任何内容。

我显然无法手动取消设置 DF 标志,因为它对于DTLS是强制性的,我不确定1500字节限制(MTU?)是否可能在某些情况下发生变化。我猜它可以。

所以,我的问题是:“有没有办法发现这个限制?”使用API​​?

如果没有,那么可能的最低值是什么?

我的软件在UNIX(Linux / MAC OSX)和Windows操作系统下运行,因此欢迎每个操作系统使用不同的解决方案;)

非常感谢。

2 个答案:

答案 0 :(得分:3)

必须支持最小MTU - 576字节,包括IP标头。因此,如果您将数据包保持在该数据集之下,则不必担心PMTU-D(这就是DNS的作用)。

答案 1 :(得分:0)

您可能需要通过向目标发送一系列数据包大小来“自动调整”它,并查看哪些到达。想想binary_search ......