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

时间:2010-12-03 13:33:43

标签: network-programming udp network-protocols

免责声明:这不是“如何”问题。我想知道,作为背景信息,实际使用的实际做法有何不同。

我们知道UDP没有像TCP这样的PMTU发现。所以我看到了几种避免使用UDP进行IP分片的方法:

  • 最多发送512字节数据包(UDP方法)
  • 重新实施某些PMTU(使用ICMP“需要碎片化”消息)。
  • 依赖本地MTU(但是它有多远可靠,因为UDP不是连接协议,它如何知道其数据包将通过哪个接口?)
  • 其他......?

那么我想要的是对当前UDP程序/协议正在使用哪些方法的“背景”概念,特别是关于流/ VoIP常见应用程序?

先谢谢,

乔斯林

1 个答案:

答案 0 :(得分:3)

限制为576个字节非常常见。大多数Internet协议(如DNS)都是这样做的。大多数实时流媒体协议也使用较小的数据包,因为它具有提供较低的序列化延迟和减少单个数据包丢失影响的附加好处。

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

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

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