8. 主机分片
分包层 (Packetization Layer) 应该 避免发送需要分片的消息 [Kent87] [frag-errors]. 然而, 完全避免分片并不总是可能的. 某些分包层, 例如内核之外的 UDP 应用, 可能无法改变它发送的消息大小, 从而产生超过路径 MTU (Path MTU) 的数据报大小.
IPv4 允许这类应用发送未设置 DF bit 的分组. 未设置 DF bit 的超大分组在遇到 MTU 小于该分组的链路时, 会在网络中或发送主机上被分片. 在某些情况下, 如果存在一系列 MTU 逐级变小的级联链路, 分组可能会被分片多次. 这种方法不推荐.
推荐 IPv4 实现采用一种模拟 IPv6 功能的策略. 当应用发送大于有效路径 MTU 的数据报时, 即使这些数据报小于直接连接到主机的第一条链路的 MTU, 也应该在主机 IP 层将其分片到路径 MTU. 这些分片上应该设置 DF bit, 因而它们不会在网络中再次被分片. 这项技术会尽量降低应用以 IPv6 无法实现的方式依赖 IPv4 分片的可能性. 至少一个主流操作系统已经使用这种策略. 第 9 节描述了此规则的一些例外情况, 即应用为了探测或诊断目的发送超大分组时的情况.
由于未实现 PLPMTUD 的协议仍会受到 ICMP 黑洞导致的问题影响, 可能适合将这些协议限制在很可能适用于任意路径的 "安全" MTU 上 (例如 1280 字节). 对于任何实现 PLPMTUD 的协议, 则允许其在下层支持的完整范围内运行.
注意, IP 分片会把数据划分为分组, 因此它至少是一个分包层. 但是, 它没有检测丢失分组的机制, 因而不能支持 PLPMTUD 的原生实现. 基于分片的 PLPMTUD 需要一个辅助协议, 如第 10.3 节所述.