有点背景。
我正在编写一个使用UDP的应用程序。该应用程序将在LAN(而不是互联网)上运行。 我一直在假设如果我的MTU是1500,那么UDP有效载荷有多大,但我是 不确定UDP标头是否也适合它。
我怀疑如果我发送一个带有1500字节有效载荷的UDP数据包,并且机器MTU是1500字节,它最终会发送两个数据包吗?
在网上搜索一个明确的答案似乎比应该更难,我看到了相互矛盾的信息。
答案 0 :(得分:9)
------------------------------------------------------------------------------
|Ethernet | IPv4 |UDP | Data |Ethernet checksum|
------------------------------------------------------------------------------
14 bytes 20 bytes 8 bytes x bytes 4 bytes
\ (w/o options) /
\___________________________________________/
|
MTU
如果你的MTU是1500,你的数据有1500-20-8 = 1472字节。
答案 1 :(得分:3)
是的,你的例子不适合一帧。
以太网数据有效负载为1500字节。 IPv4要求其标头至少包含20个字节。或者,IPv6至少需要40个字节。 UDP标头需要8个字节。这为您的数据留下了1472字节(ipv4)或1452(ipv6)。
更多信息:
答案 2 :(得分:2)
也许这篇文章有帮助:Article
答案 3 :(得分:-1)
所以,这是它的工作原理。即使您有100兆的胖管道,以太网也会将您的数据流限制为每帧1500字节。要真正使用线路速率,通过UDP应用程序,您将需要使用/移动到以太网巨型帧,每帧可支持多达9000字节。此外,如果您查看netflix / youtube和其他流媒体协议,他们会在开始流式传输之前测试您的链接。他们基本上做的是,他们向您发送一些数据,并在转储流之前计算/平均链接速度。它们基本上也使用UDP,但包的大小非常大。我猜大于1500字节。