一、TTL
存活时间(英语:Time To Live,简写TTL)是电脑网络技术的一个术语,指一个数据包在经过一个路由器时,可传递的最长距离(跃点数)。每当数据包经过一个路由器时,其存活次数就会被减一。当其存活次数为0时,路由器便会取消该数据包转发,IP网络的话,会向原数据包的发出者发送一个ICMP TTL数据包以告知跃点数超限。其设计目的是防止数据包因不正确的路由表等原因造成的无限循环而无法送达及耗尽网络资源。
二、TTL 是如何工作的?
当一个信息包被创建并通过 Internet 发送出去时,存在着它会继续无限期地从一个路由器传递到另一个路由器的风险。为了减少这种可能性,数据包被设计为具有称为生存时间或跳数限制的过期时间。数据包 TTL 还可用于确定数据包流通的时间,并允许发送方通过 Internet 接收有关数据包路径的信息。
每个数据包都有一个存储数值的位置,该数值决定了它应该继续通过网络移动多长时间。每次路由器收到一个数据包时,它都会从 TTL 计数中减去一个,然后将其传递到网络中的下一个位置。如果减法后的 TTL 计数在任何时候都为零,则路由器将丢弃该数据包并将ICMP 消息发送回原始主机。
常用的网络命令 ping 和 traceroute 都使用 TTL。使用 traceroute 命令时,具有越来越高的连续 TTL 数据包流将通过 Internet 发送到目的地。由于连接的每一步都是其中一个数据包的最后一站,因此每个位置在丢弃数据包后都会向发送方返回一条 ICMP 消息。ICMP 消息返回到发送方所用的时间随后用于确定到达网络上每个连续跳转所需要的时间。
三、在什么其他情况下使用 TTL?
除了跟踪数据包通过 Internet 的路由外,生存时间还用于将信息缓存一段时间的上下文。一些网络用例以更传统的方式运行,而不是测量路由器之间的跳跃时间,每个路由器可能需要可变的时间。
CDN 与Cloudflare 的 CDN类似,通常使用 TTL 来确定在从源服务器获取新副本之前应从 CDN 边缘服务器提供缓存内容的时间。通过正确设置源服务器拉取之间的时间量,CDN 能够提供更新的内容,而无需请求不断传播回源。这种优化允许 CDN 有效地为更接近用户的内容提供服务,同时减少源所需的带宽。
在DNS 记录的上下文中,TTL 是一个数值,它确定 DNS 缓存服务器在联系权威 DNS 服务器并获取记录的新副本之前可以为 DNS 记录提供服务的时间。