什么是生存时间(TTL)?
生存时间(TTL)是计算机网络中的一个术语,指的是数据在网络中的存活期。TTL 决定了数据包在被路由器丢弃之前能存活多久。设置恰当的 TTL 值对于优化网络性能和可靠性至关重要。
什么是生存时间?
TTL 是指在互联网协议(IP)数据包的报头中设置的一个值,它告知网络设备该数据包在被丢弃之前能够经过的最大路由器跳数。
生存时间(TTL)值是一个计数器,每当数据包通过一个路由器时,该计数器就会减 1。一旦 TTL 值降至 0,路由器将不再转发该数据包,而是将其丢弃。
生存时间(TTL)有助于防止数据包在网络中无休止地循环或阻塞网络。如果没有 TTL,由于路由配置错误或路由环路,数据包可能会在路由器之间无限循环。
TTL是如何工作的?
当设备生成一个 IP 数据包时,它会分配一个初始的生存时间(TTL)值。常见的默认 TTL 值有:
- 64 – Linux/MAC OSX 系统
- 128 – Windows 系统
- 255 – 像路由器这样的网络设备
当这个数据包从源地址传输到目的地址时,路径上的每个路由器在将其转发到下一跳之前都会将生存时间(TTL)减 1。一旦 TTL 减至 0,路由器就会丢弃该数据包,并可能向源地址发送一个互联网控制消息协议(ICMP)消息,告知该数据包的生存时间已超时。
例如,如果初始生存时间(TTL)为 64 并且经过 6 个路由器,生存时间将按如下方式递减:
- 64(源)
- 63(路由器1)
- 62(路由器2)
- 61(路由器3)
当数据包的生存时间(TTL)值降至 0 时,路由器会丢弃该数据包。它还可能向源发送一个 ICMP 超时消息,表明数据包在传输过程中 TTL 已过期。
TTL 在不同环境中的工作原理
cdn中的TTL
内容分发网络(CDN)使用生存时间(TTL)来控制内容的缓存时长。例如,生存时间为 3600 秒意味着内容应在重新验证前缓存 1 小时。较短的生存时间会使内容更快过期。
内容分发网络(CDN)会根据内容的缓存能力来定制缓存时间(TTL)。动态内容的 TTL 较低,而静态资源的 TTL 较高。使用合适的缓存时间可以提高性能。
计算机网络中的生存时间(TTL)
生存时间(TTL)字段限制了计算机网络中 IP 数据包的生存期,以防止出现路由问题。TTL 的值应设置得足够高,以便数据包能够到达目的地,同时避免过多的跳数。
网络工程师会根据拓扑结构、可靠性要求和应用类型来优化生存时间(TTL)。交互式应用程序需要较低的 TTL,而批量传输则可以使用较高的 TTL。
DNS中的TTL
DNS 记录具有一个 TTL(生存时间),用于控制缓存持续时间。典型的 DNS TTL 值范围从频繁变化的记录的几分钟到稳定记录的几天不等。
使用较低的生存时间(TTL)值可确保更改更快传播,但会导致查询更频繁。较高的 TTL 值可减少 DNS 流量,但在更改后会增加延迟。调整 DNS TTL 可提高解析性能。
TTL最佳实践
以下是针对不同环境的一些 TTL 最佳实践:
CDNs
- 为像 API 数据这样的动态内容设置较低的生存时间(TTL)
- 对于像图片、 CSS 这样的静态资源,请使用更长的缓存时间(以天为单位)
- 根据实际内容变更频率调整生存时间(TTL)
- 利用诸如“过期时重新验证”之类的扩展来增强缓存的弹性
计算机网络
- 默认的操作系统 TTL 值(64 或 128)是合理的起点
- 对于公共互联网,64 到 128 是常用的。
- 设置生存时间(TTL)时请考虑拓扑结构——对于较大的网络,请将其设置得更高。
- 通过跟踪路由来验证端到端的生存时间(TTL)行为
- 如果出现诸如 ICMP 超时过多之类的问题,请更改 TTL 值。
DNS
- 对于频繁更新的记录使用较短的生存时间(TTL),对于稳定的记录使用较长的生存时间(TTL)
- 将生存时间(TTL)与每条记录的预期更改频率相匹配
- 对于大多数内部 DNS 记录,请使用 60 秒或 300 秒的生存时间(TTL)
- 对于公共 DNS,较高的值(如 86400,即 1 天)较为常见。
- 逐步调整生存时间(TTL),并监控是否出现问题