跳到主要内容

3. Host Specification (主机规范)

3. Host Specification (主机规范)

当主机收到"数据报过大" (Datagram Too Big) 消息时, 它必须 (MUST) 根据消息中下一跳MTU (Next-Hop MTU) 字段的值 (参见第4节) 降低其对相关路径 PMTU 的估计值. 我们不规定主机在这种情况下的精确行为, 因为不同的应用程序可能有不同的需求, 不同的实现架构也可能倾向于不同的策略.

我们确实要求, 在收到"数据报过大"消息后, 主机必须 (MUST) 尝试在近期内避免引发更多此类消息. 主机可以减小其沿该路径发送的数据报的大小, 或者停止在这些数据报的头部设置不分片 (Don't Fragment) 位. 显然, 前一种策略可能在一段时间内继续引发"数据报过大"消息, 但由于每条此类消息 (以及它们所响应的被丢弃数据报) 都会消耗互联网资源, 主机必须 (MUST) 强制 PMTU 发现过程收敛.

使用 PMTU 发现的主机必须 (MUST) 尽快检测到路径MTU的减小. 主机可以 (MAY) 检测路径MTU的增加, 但由于这样做需要发送大于当前估计 PMTU 的数据报, 且 PMTU 未增加的可能性较大, 这必须 (MUST) 以不频繁的间隔进行. 尝试检测增加 (通过发送大于当前估计值的数据报) 的操作, 在收到给定目的地的"数据报过大"消息后不得 (MUST NOT) 少于5分钟进行, 或在上一次成功尝试增加后不得少于1分钟进行. 我们建议将这些计时器设置为其最小值的两倍 (分别为10分钟和2分钟).

主机必须 (MUST) 能够处理不包含下一跳MTU的"数据报过大"消息, 因为在有限时间内升级互联网中所有路由器是不可行的. 来自未修改路由器的"数据报过大"消息可以通过 (新定义的) 下一跳MTU字段中存在零值来识别. (这是 ICMP 规范 [7] 的要求, 该规范规定"未使用"字段必须为零.) 在第5节中, 我们讨论了主机响应旧式"数据报过大"消息 (由未修改路由器发送的消息) 的可能策略.

主机绝不能 (MUST never) 将其路径MTU估计值降低到68字节以下.

主机不得 (MUST not) 根据"数据报过大"消息的内容增加其路径MTU估计值. 声称宣告路径MTU增加的消息可能是在互联网中漂浮的过期数据报, 可能是作为拒绝服务攻击注入的虚假数据包, 或者是由于到目的地存在多条路径所致.