IPv4 TTL 何时递减,丢弃条件是什么?

网络工程 ipv4
2021-07-26 00:50:34

当 IPv4 数据包通过路由器或被主机处理时,TTL 会递减,如果 TTL 太低,数据包将被丢弃。

我的问题是:

  • TTL 何时递减?在考虑丢弃数据包之前还是之后?
  • 掉落条件是什么?是 TTL=0 吗?或者如果 TTL 递减,TTL 是否为 0?还有什么?
  • 某些类型的网络硬件的行为是否与其他类型不同?例如,如果路由器丢弃接收到的 TTL=0 的数据包,主机是否也会丢弃该数据包,还是会将其转发给客户端?

从这个论坛帖子看来,第一个问题的答案通常是只有在路由器决定不丢弃数据包时才会递减 TTL,而丢弃条件是如果 TTL=0 则丢弃数据包在收到的数据包上。

真正留下的是:

  • 这些答案是否比论坛帖子看起来更细微?
  • 如果路由器会丢弃数据包,向客户端传送数据包的主机是否被视为“跳”(因此数据包被丢弃)?
1个回答

您要查找的内容在RFC1812 中指定要回答您的具体问题:

当路由器在决定转发数据包后发现 TTL 太低时,它会丢弃数据包:

请特别注意,除非转发数据包,否则路由器不得检查数据包的 TTL。

路由器不得发起或转发生存时间 (TTL) 值为 0 的数据报。

路由器不能仅仅因为接收到的数据报的 TTL 等于 0 或 1 就丢弃它;如果它是给路由器的并且在其他方​​面有效,则路由器必须尝试接收它。

接收主机不检查 TTL,因此即使不应发送 TTL 为 0 的数据包,接收主机也会处理它:

TTL 过期旨在导致数据报被路由器丢弃,但不会被目标主机丢弃。