跳到主要内容

6.1 Layering (分层)

6.1 Layering (分层)

在 IP 架构中, 选择发送何种大小数据报的决定由 IP 层之上的协议做出. 我们将此类协议称为"分组化协议" (packetization protocol). 分组化协议通常是传输协议 (例如 TCP), 但也可以是更高层协议 (例如, 构建在 UDP 之上的协议).

在分组化层实现 PMTU 发现简化了一些层间问题, 但有几个缺点: 可能需要为每个分组化协议重新实现, 难以在不同分组化层之间共享 PMTU 信息, 并且某些分组化层维护的面向连接状态可能不容易扩展以长期保存 PMTU 信息.

因此, 我们认为 IP 层应该存储 PMTU 信息, ICMP 层应该处理收到的"数据报过大"消息. 分组化层仍然必须能够响应路径MTU的变化, 通过改变其发送的数据报大小, 并且还必须能够指定数据报以设置 DF 位的方式发送. 我们不希望 IP 层简单地在每个数据包中设置 DF 位, 因为分组化层 (可能是内核之外的 UDP 应用程序) 可能无法改变其数据报大小. 涉及有意分片的协议虽然不够优雅, 但有时是成功的 (NFS 是主要例子), 我们不希望破坏此类协议.

为了支持这种分层, 分组化层需要对 [1] 中定义的 IP 服务接口进行扩展:

一种了解 MMS_S ("最大发送传输消息大小") 值变化的方式, MMS_S 由路径MTU减去最小 IP 头部大小得出.