0

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

阅读 DTLS 的规范,我注意到 DTLS 需要设置DF标志(不要分段)。

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

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

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

如果不是,那么可能的最低值是多少?

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

非常感谢。

4

2 回答 2

3

有一个必须支持的最小 MTU - 576 字节,包括 IP 标头。因此,如果您将数据包保持在该值以下,则不必担心 PMTU-D(这就是 DNS 所做的)。

于 2010-03-26T11:31:03.750 回答
0

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

于 2010-03-26T10:30:20.287 回答