包头的IP包帧有多大?

时间:2010-10-13 23:03:28

标签: udp

有点背景。

我正在编写一个使用UDP的应用程序。该应用程序将在LAN(而不是互联网)上运行。 我一直在假设如果我的MTU是1500,那么UDP有效载荷有多大,但我是 不确定UDP标头是否也适合它。

我怀疑如果我发送一个带有1500字节有效载荷的UDP数据包,并且机器MTU是1500字节,它最终会发送两个数据包吗?

在网上搜索一个明确的答案似乎比应该更难,我看到了相互矛盾的信息。

4 个答案:

答案 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字节。

  • 如果超过该数据包,数据包将被分段,即。分成更多的数据包。
  • 可能涉及更多层,例如如果你位于vlan以太网的顶部,则为4字节的vlan标头。
  • 您和目的地之间的某些路由器可能会添加更多层。

答案 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字节。