Network programming 编程实践:如何为UDP数据报选择数据包大小?

Network programming 编程实践:如何为UDP数据报选择数据包大小?,network-programming,udp,network-protocols,Network Programming,Udp,Network Protocols,免责声明:这不是一个“如何”的问题。我更想知道,作为背景资料,实际使用的不同做法是什么 我们知道UDP没有像TCP那样的PMTU发现。因此,我看到了几种使用UDP避免IP碎片的方法: 最多发送512字节数据包(UDP方法) 重新实现一些PMTU(使用ICMP“需要分段”消息) 依赖本地MTU(但它的可靠性有多高,因为UDP不是连接的协议,它怎么知道数据包将通过哪个接口?) 其他的 因此,我想了解一下当前UDP程序/协议正在使用哪些方法,特别是关于流媒体/VoIP通用应用程序的方法 提前谢谢你

免责声明:这不是一个“如何”的问题。我更想知道,作为背景资料,实际使用的不同做法是什么

我们知道UDP没有像TCP那样的PMTU发现。因此,我看到了几种使用UDP避免IP碎片的方法:

  • 最多发送512字节数据包(UDP方法)
  • 重新实现一些PMTU(使用ICMP“需要分段”消息)
  • 依赖本地MTU(但它的可靠性有多高,因为UDP不是连接的协议,它怎么知道数据包将通过哪个接口?)
  • 其他的
因此,我想了解一下当前UDP程序/协议正在使用哪些方法,特别是关于流媒体/VoIP通用应用程序的方法

提前谢谢你


Jocelyn

限制为576字节是非常常见的。大多数互联网协议(如DNS)都是这样做的。大多数实时流协议也使用较小的数据包,因为它具有提供较低序列化延迟的额外好处,并且在单个数据包丢失时影响较小

一些协议有协商更大数据包大小的方法,但通常不像PMTU发现那样健壮(例如,DHCP允许最大消息大小协商)

还有一些东西默认值为1500左右,用户可以在必要时降低它。大多数SNMP实现似乎都是这样做的


无论如何,DF位通常不会设置,因此过于乐观的结果是碎片,而不是破碎。

有趣的答案,谢谢!如果有人有关于SIP和skype的具体信息,我也很感兴趣。