2010-12-03 29 views
3

免責聲明:這不是一個「如何」的問題。作爲背景資料,我更想知道實際使用的不同實際做法。編程實踐:如何爲UDP數據報選擇一個數據包大小?

我們知道UDP沒有像TCP那樣的PMTU發現。所以,我看到幾個方法來避免與UDP IP碎片:

  • 發送512字節的數據包最大(UDP的做法)
  • 重新實施一些PMTU(使用ICMP「需要碎片化」的消息)。
  • 依賴於本地MTU(但它有多遠可靠,因爲UDP不是連接的協議,它怎麼知道它的數據包將通過哪個接口?)
  • 其他...?

所以我想要有一個「背景」的想法,目前的UDP程序/協議正在使用哪些方法,特別是關於流/ VoIP常見應用程序?

由於通過提前

喬斯林

回答

3

限制爲576個字節是很常見的。大多數Internet協議(如DNS)都這樣做。大多數實時流協議也使用較小的數據包,因爲它具有提供較低串行延遲以及在單個數據包丟失時影響較小的額外好處。

某些協議可以協商較大的數據包大小,但通常不會像PMTU發現那樣健壯(例如DHCP允許最大消息大小協商)。

還有一些默認爲1500左右的東西,並讓用戶在必要時降低它。 SNMP的大多數實現似乎都是這樣做的。

無論如何,DF位通常不會被設置,所以過度樂觀的結果是碎裂,而不是破碎。

+0

有趣的答案,謝謝!如果有人有關於SIP和Skype的具體信息,我也感興趣。 – 2010-12-14 17:14:57