【问题标题】:How does Network layer knows if it has to fragment the packet网络层如何知道它是否必须对数据包进行分段
【发布时间】:2021-10-13 05:57:35
【问题描述】:

我有基本问题。试图了解网络层如何识别何时接收到大于其接口 MTU 配置的数据包并必须对其进行分段的机制。

例如。如果应用程序要传输的数据是 2000 字节,而服务器上的 NIC 的 MTU 为 1500。网络层现在必须进行分段,但它如何知道它必须这样做。传输层是否将完整的 2000 字节数据提供给网络层,然后网络层将其与配置的接口 MTU 进行比较并做出相应决定

【问题讨论】:

  • 如果理解上有一点点差距:当网络层绑定一个网络接口(从数据链路层)时,MTU是向上传递的,所以网络层总是知道的。
  • @Zac67 感谢您的回复。那么这是否意味着对于上面的示例,网络层将获取 2000byte 的数据包,然后将其存储在某个缓冲区中,同时根据 MTU 设置将数据包(1500bye)发送到下层。
  • 是的,差不多。当网络层从传输层 (L4) 获得对于底层数据链路层 (L2) 来说太大的数据报时,数据包将被分片(除非 L4 禁止分片)。

标签: tcp ip fragmentation


【解决方案1】:

如果应用要传输的数据是2000byte

有传输层 (L4) 协议(最突出的是 TCP)为应用程序执行所有分块。 TCP 可识别 MTU,并自动将其数据分段为最佳块。

其他 L4 协议不做任何自己的分块(例如 UDP)。任何应用程序数据都简单地封装成数据报并传递给网络层。如有必要,网络层随后会将封装的 IP 数据包分割成多个数据链路层帧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2012-03-23
    • 1970-01-01
    相关资源
    最近更新 更多