traceroute 生存时间如何减少?

网络工程 icmp 跟踪路由
2022-03-03 20:42:57

默认情况下,对于 Traceroute 实用程序,每次数据包通过路由器时,“生存时间”值将减 1。但是,接收主机是否也会减少“生存时间”值?

在此处输入图像描述

如图,最后一次发送traceroute包,设备A将TTL值增加到3。包经过路由器B和C后,仍然有TTL=1。然后,似乎当数据包到达接收主机 - 设备 D 时,它的 TTL 值再次递减为 0,即使数据包不再被转发。

我在互联网上找不到任何来源说目标主机也减少了数据包的 TTL 值。他们中的大多数只是在谈论路由器。

提前致谢!

2个回答

接收主机是否也会减少“生存时间”值?

不。 TTL 在转发数据包之前递减(RFC 791声明“处理时”)。当 TTL 计数器达到 0 时,数据包被丢弃。

如果目标主机将 TTL 从 1 减为 0,则它需要丢弃数据包,从而使之前的所有传输都无效,尽管实际上到达了目标。

RFC 791 明确声明(强调我的)

如果在 Internet 数据报到达其目的地之前生存时间达到零,则 Internet 数据报被销毁。

(请注意,上述 RFC 最初将 TTL 定义为计时器,但是当转发最终变得比预期快时,TTL 有效地增长为计数器。)

TTL 在两种情况下递减:

通过路由器,即从一个接口转发到另一个接口

或者

在路由器队列中延迟一定时间,通常每秒 TTL 下降一次

如果它变为零则被丢弃。

目标主机与该值无关。