网络层如何知道它是否必须对数据包进行分段

How does Network layer knows if it has to fragment the packet

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

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

If the data to be transmitted by application is 2000byte

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

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