【发布时间】:2024-01-12 06:53:01
【问题描述】:
我正在从事一个与网络相关的项目,我正在使用 DTLS (TLS/UDP) 来保护通信。
阅读 DTLS 的规范后,我注意到 DTLS 需要设置 DF 标志(不分段)。
在我的本地网络上,如果我尝试发送大于 1500 字节的消息,则不会发送任何内容。这很有意义。在 Windows 上,sendto() 报告成功,但没有发送任何内容。
我显然不能手动取消设置 DF 标志,因为它对于 DTLS 是强制性的,而且我不确定 1500 字节限制(MTU?)在某些情况下是否会改变。我想应该可以。
所以,我的问题是:“有没有办法发现这个限制?”使用 API 吗?
如果不是,那么可能的最低值是多少?
我的软件在 UNIX(Linux/MAC OSX)和 Windows 操作系统下运行,因此欢迎为每个操作系统提供不同的解决方案;)
非常感谢。
【问题讨论】:
-
您是在推出自己的 DTLS 实现还是什么? RFC 建议他们应该检查“需要的碎片和 DF 集”错误并相应地修改估计的 MTU。 rfc-editor.org/rfc/rfc4347.txt
-
不,我没有推出自己的 DTLS 实现。我正在使用 OpenSSL。我需要在发送数据包之前让 MTU 对数据包进行分段。所以,我需要一种方法来确保我的数据包足够小而不会被丢弃。
标签: windows unix networking udp mtu