免责声明:这不是一个“如何”的问题。作为背景信息,我更想知道实际使用的不同实际做法是什么。
我们知道 UDP 没有像 TCP 那样的 PMTU 发现。因此,我看到了几种避免使用 UDP 产生 IP 碎片的方法:
所以我想要了解当前 UDP 程序/协议(protocol)正在使用哪些方法的“背景”概念,尤其是关于流/VoIP 常见应用程序?
预先感谢,
乔斯林
最佳答案
限制为 576 字节是很常见的。大多数 Internet 协议(protocol)(例如 DNS)都是这样做的。大多数实时流协议(protocol)也使用较小的数据包,因为它具有提供较低序列化延迟和单个数据包丢失时影响较小的额外好处。
一些协议(protocol)具有协商更大数据包大小的方法,但通常不像 PMTU 发现那样健壮(例如,DHCP 允许最大消息大小协商)。
还有一些默认为 1500 左右的东西,并让用户在必要时降低它。 SNMP 的大多数实现似乎都在做这样的事情。
无论如何,通常不会设置 DF 位,因此过于乐观的后果是碎片,而不是损坏。
关于network-programming - 编程实践 : how to choose a packet size for UDP datagrams?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346021/