【问题标题】:How big is an IP packet frame including headers?包含标头的 IP 数据包帧有多大?
【发布时间】:2011-04-25 03:11:54
【问题描述】:

一点背景。

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

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

在这里搜索互联网以获得明确的答案似乎比应该的更难,我看到了相互矛盾的信息。

【问题讨论】:

  • 很确定这会给你带来碎片化。不过,您可以使用 Wireshark 来确定这一点。
  • 谢谢,是的,wireshark 没有显示太多,因为我是在孤立地开发的。环回 MTU 为 16436!
  • 感谢大家,感谢您的链接。它们比我在谷歌上找到的要好。

标签: udp


【解决方案1】:
------------------------------------------------------------------------------
|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 标头。
  • 您和目的地之间的某些路由器可能会添加更多层。

【讨论】:

  • AFAIK MTU 不包括以太网标头和尾随 CRC32(您省略了),但它是有效的以太网负载,您必须减去 IP 协议开销。
  • 谢谢,这是我怀疑但不确定的。
  • @Lucero 是的,您可能是对的,具体取决于您将 MTU 定义为哪个层。在这种情况下,我猜是 IP 数据报的 MTU。
  • 以太网的 MTU 是我们正在讨论的那个,所以几乎没有猜测它适用于哪一层。
  • 值得注意的额外层是子网划分,8 个字节用于 802.2 SNAP LLC。
【解决方案2】:

是的,您的示例不适合一帧。

以太网数据负载为 1500 字节。 IPv4 的标头至少需要 20 个字节。或者,IPv6 至少需要 40 个字节。 UDP 的标头需要 8 个字节。剩下 1472 字节 (ipv4) 或 1452 (ipv6) 用于您的数据。

更多信息:

【讨论】:

    【解决方案3】:

    所以,这就是它的工作原理。即使您有一个 100 兆的胖管道,以太网也会将您的数据流限制为每帧 1500 字节。要真正使用线路速率,通过您的 UDP 应用程序,您将需要使用/移动到以太网巨型帧,每帧最多可支持 9000 字节。此外,如果您查看 netflix/youtube 和其他流媒体协议,它们会在开始流媒体之前测试您的链接。他们本质上所做的是,他们在转储流之前向您发送一些数据并计算/平均链接速度。它们本质上也使用 UDP,但数据包大小非常大。我猜肯定大于 1500 字节。

    【讨论】:

    • 这称为路径 MTU 发现,与我最初的问题无关。鉴于该问题已在 1 年前得到充分回答,因此没有必要发布您的答案。发帖前请三思。
    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2017-04-03
    • 2016-07-16
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多