MSS/MTU 是否违反协议栈层独立性?

网络工程 tcp ip 协议论 UDP mtu
2022-03-02 03:09:13

我们研究了互联网协议套件层的美妙之处在于,每一层都负责通信过程的一部分。这些层为相邻层提供服务并独立运行(理论上),因此上层不受(不应该)受下层细节的影响。

但是,当谈到 MTU/MSS 时,我有点困惑。

IP 数据包的理论最大大小为 65535 字节,但为了避免分片,发送的数据包大小小于 MTU。在这种情况下,L3 字段(IP 数据包大小)取决于 L1/L2 字段(MTU)。

这同样适用于实际上源自 MTU 的 MSS(一个 L4 字段)。

事实上,上层的某些特性强烈依赖于下层的细节,这是否在某种程度上违反了协议层的独立性?

2个回答

协议层独立性就像政治或经济哲学——在纸面上听起来不错,但很难付诸实践。

对于网络层来说,底层的碎片是看不见的。由于硬件限制(重新组装需要太多处理),而不是出于任何协议原因,我们避免了 IP 分段。

OSI 网络层模型就是这样,一个模型特定的实例可能更适合或更差。另请注意,TCP/IP 协议套件是在 OSI 模型之前设计的,因此匹配通常可能更加脆弱。但是,模型的特点之一是层之间存在接口,当您将 TCP/IP 映射到 OSI 模型时,第 2 层到第 4 层之间的接口部分包括传递进入 MTU/MSS 的值计算。上层不必获取这些数据并且可以在没有它的情况下运行,但是如果他们拥有它,它们可以更有效地运行。