生存时间 (TTL) 是指数据包被设置为在被路由器丢弃之前存在于网络中的时间或“跳数”。 TTL 还用于其他上下文,包括 CDN 缓存和 DNS 缓存。
TTL 的工作原理
当一个信息包被创建并通过 Internet 发送出去时,存在着它会继续无限期地从一个路由器传递到另一个路由器的风险。为了减轻这种可能性,数据包被设计为具有称为生存时间或跳数限制的过期时间。数据包 TTL 还可用于确定数据包流通的时间,并允许发送方通过 Internet 接收有关数据包路径的信息。
每个数据包都有一个存储数值的位置,该数值决定了它应该继续在网络中移动多长时间。每次路由器收到一个数据包时,它都会从 TTL 计数中减去一个,然后将其传递到网络中的下一个位置。如果减法后的 TTL 计数在任何时候都为零,则路由器将丢弃该数据包并将 ICMP 消息发送回原始主机。
常用的网络命令 ping 和 traceroute 都使用 TTL。使用 traceroute 命令时,具有越来越高的连续 TTL 的数据包流将通过 Internet 发送到目的地。因为连接的每一步都是其中一个数据包的最后一站,所以每个位置在丢弃数据包后都会向发送方返回一条 ICMP 消息。 ICMP 消息返回到发送方所需的时间随后用于确定到达网络上每个连续跳跃所需的时间。
In what other circumstances is TTL used?
除了跟踪数据包通过 Internet 的路由外,生存时间还用于将信息缓存一段时间的上下文。一些网络用例以更传统的方式运行,而不是测量路由器之间的跳跃时间,每个路由器可能需要可变的时间。
CDN 通常使用 TTL 来确定在从源服务器获取新副本之前应从 CDN 边缘服务器提供缓存内容的时间。通过正确设置源服务器拉取之间的时间量,CDN 能够提供更新的内容,而无需请求不断传播回源。这种优化允许 CDN 有效地为更接近用户的内容提供服务,同时减少源所需的带宽。
在 DNS 记录的上下文中,TTL 是一个数值,用于确定 DNS 缓存服务器在联系权威 DNS 服务器并获取记录的新副本之前可以为 DNS 记录提供服务的时间。