发现最大数据包大小
问题描述:
我正在处理与网络相关的项目,并使用DTLS(TLS/UDP)来保护通信。发现最大数据包大小
阅读DTLS的规范,我注意到DTLS要求设置DF标志(不要碎片)。
在本地网络上,如果我尝试发送大于1500字节的消息,则不会发送任何消息。这很有道理。在Windows上,sendto()报告成功,但没有发送。
我明明不能手动取消设置DF标志,因为它对于DTLS是强制性的,我不确定1500字节限制(MTU?)是否可以在某些情况下更改。我想可以。
所以,我的问题是:“有没有办法发现这个限制?”使用API?
如果不是,那么可能的最低值是多少?
我的软件UNIX(Linux的/ MAC OSX)和Windows操作系统为每个操作系统,所以不同的解决方案,欢迎下运行;)
非常感谢。
答
您可能需要通过向目标发送一系列数据包大小来“自动调整”它,然后查看到达的目标。认为binary_search ...
+0
谢谢,但我希望有一些“标准”的方式来做到这一点。我真的不想重新发明MTU路径发现。 – ereOn 2010-03-26 10:44:21
你是否正在推出自己的DTLS实施或其他? RFC建议他们检查“需要的碎片和DF设置”错误并相应地修改估计的MTU。 http://www.rfc-editor.org/rfc/rfc4347.txt – 2010-03-26 10:51:07
不,我不是在滚动我自己的DTLS实现。我正在使用OpenSSL。我需要让MTU在发送数据包之前对数据包进行分片。 所以,我需要一种方法来确保我的数据包足够小,不会被丢弃。 – ereOn 2010-03-26 11:03:33