什么是生存时间 (TTL)?| TTL定义

生存时间 (TTL) 是指数据包在被路由器丢弃之前可存在于网络内部的时间或“跃点”数。TTL 还用于其他上下文中,包括 CDN 缓存和 DNS 缓存。

Share facebook icon linkedin icon twitter icon email icon

生存时间

学习目标

阅读本文后,您将能够:

  • 定义生存时间 (TTL)
  • 说明 TTL 在网络中的用途
  • 了解其他使用 TTL 的情况

网络中的生存时间 (TTL) 是什么?

生存时间 (TTL) 是指数据包在被路由器丢弃之前可存在于网络内部的时间或“跃点”数。TTL 还用于其他上下文中,包括 CDN 缓存和 DNS 缓存。

TTL 的工作原理

信息数据包被创建并通过 Internet 发送时,有可能持续无限期地在路由器之间传递。为了减轻这种可能性,数据包在设计时带有称为生存时间或跃点限制的到期时间。数据包 TTL 可用于确定数据包已流通多长时间,并允许发送方通过 Internet 接收有关数据包路径的信息。

每个数据包都有一个位置存储数值,该数值确定数据包应继续在网络中移动的时间。路由器每次接收到一个数据包,都会从 TTL 计数中减一,然后将其传递到网络中的下一个位置。如果在减去后的任意时间,TTL 计数等于零,则路由器将丢弃该数据包并将 ICMP 消息发回给原始主机。

常用的网络命令 ping 和 traceroute 都使用 TTL。使用 traceroute 命令时,一串剩余计数越来越高的 TTL 的数据包流将通过 Internet 发送到目的地。由于连接的每一步都是其中一个数据包的最后一站,因此每个位置都会在丢弃数据包后向发送方返回 ICMP 消息。然后,ICMP 消息返回到发送方所花费的时间就可以用于确定到达网络上每个连续跃点所花费的时间。

ICMP traceroute diagram

TTL 还用于什么情况?

除了在 Internet 上跟踪路由数据包外,生存时间还用于在一定时间内缓存信息。某些网络用例以更传统的方式运行,而不是测量路由器之间的跳跃时间(每次跳跃之间的时间可能不同)。

Cloudflare CDN 这样的 CDN 通常使用 TTL 来确定在从源站获取新副本之前,应从 CDN 边缘服务器提供多长时间的缓存内容。通过正确设置源站获取之间的时间量,CDN 能够提供更新的内容,而无需将请求不断传播回源站。这种优化使 CDN 可以有效地从更靠近用户的位置提供内容,同时减少从源站开始所需的带宽。

在 DNS 记录的环境中,TTL 是一个数值,它确定 DNS 缓存服务器在连接到权威性 DNS 服务器并获取记录的新副本之前可以为 DNS 记录提供服务的时间。