代码之家  ›  专栏  ›  技术社区  ›  hookenz

一个包含头的IP包帧有多大?

udp
  •  8
  • hookenz  · 技术社区  · 14 年前

    有点背景。

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

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

    在互联网上寻找一个明确的答案似乎比应该的要困难,我看到了相互矛盾的信息。

    4 回复  |  直到 6 年前
        1
  •  9
  •   nos    14 年前
    ------------------------------------------------------------------------------
    |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以太网的顶部,那么VLAN头段为4字节。
    • 您和目的地之间的一些路由器可能会添加更多层。
        2
  •  3
  •   teambob    14 年前

    是的,您的示例不适用于一个框架。

    以太网数据负载为1500字节。IPv4的头至少需要20个字节。或者,IPv6至少需要40个字节。UDP的头需要8个字节。这将为您的数据留下1472字节(IPv4)或1452字节(IPv6)。

    更多信息:

        3
  •  2
  •   Mayank Sharma Lucero    6 年前

    也许这篇文章有助于: Article

        4
  •  -1
  •   Biswajit Jena    10 年前

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