链路大小、路径大小和有效载荷
一条路径可能经过多种链路,每段允许的报文大小并不一致。路径MTU受最小链路限制约束,因此只知道本机网卡的MTU,不能确定远端整条路径都接受同样大小。
应用可放入的有效载荷还要扣除相应协议首部,封装或隧道会再增加开销。TCP的MSS限制传送的数据部分,与包含网络层首部的MTU不是同一个数。
通过反馈调整发送大小
经典路径MTU发现利用不能转发过大报文时返回的控制信息。IPv6路由器不替源端分片,而是用Packet Too Big告知相关限制,源端据此调整。
路径也会变化,旧估计可能不再合适。一次收到较小限制并不说明以后永远如此,算法需要在避免反复丢包的同时,处理限制降低与可能提高。
控制消息缺失与探测
如果必要的报文过大通知被过滤或丢失,发送方可能不断发送无法通过的大小,形成报文黑洞。小请求成功而大响应卡住,就可能涉及不同大小触发的路径问题。
RFC 8899定义数据报分组层的探测方法,利用探测是否实际交付来调整大小,不必完全依赖ICMP反馈。它仍需要合适的确认与丢失判断,并不是任意发送更大报文的尝试。
参考:[3]