如何选择 TTL 值

网络工程 路由 互联网 icmp
2022-02-27 18:59:24

查看ping请求的结果时,我总是看到TTL包的值(生存时间)。正如你们大多数人所知,该值用于避免 Internet 路由层次结构中的无限循环,但我想知道要使用的最小值是多少?

显然,这等于互联网深度的两倍:在最坏的情况下,一个包必须往返于骨干网,但是有人知道全球互联网路由层次结构的最大深度是多少吗?

让我解释一下我的问题的根源:
大约 15 年前,我参加了关于 IP 基础的课程(关于如何使用路由器设置互联网),在那里我了解了路由表:这些表包含所需的信息知道如何连接到路由 IP 网络中的下一个节点,所以如果一个请求被发送到不知道如何处理请求的路由器,他会将其发送到下一个路由器,而不仅仅是他旁边的路由器,而是对网络有更深入了解的人。
因此,路由器是分层放置的。第一层是互联网的边缘(连接到互联网网关),因此这些路由器通常被称为“边缘路由器”。最深的位于一层,称为骨干网,这些路由器称为“骨干路由器”。这是骨干路由器的简单定义,他的路由表包含连接到互联网的每个引擎的路由信息​​。
当我学习该课程时,互联网被设置为七个这样的层,所以理论上 15 的 TTL 值足以覆盖整个互联网(这显然没有考虑到路由器没有响应或任何其他问题案例)。
现在我们已经十五年了,显然互联网的结构仍然是一样的,但是层数呢,仍然存在路由器知道每个引擎都连接到互联网的情况(就像我们现在有一个“物联网”,我想连接到互联网的项目数量很大,是否还有机器可以处理所有这些信息)?

3个回答

如果你在google上搜索TTL你会发现它没有显示时间,实际上它显示了你的数据包可以通过的路由器数量...... TTL = hop limit TTL的值是255并且每个路由器都会减少到路由它的目的地。如果 TTL 字段在数据报到达其目的地之前达到零,则丢弃该数据报,并将 ICMP 错误数据报(11 - 超时)发送回发送者。[维基百科]

以毫秒为单位的实际生存时间是一个非常早期的概念,并不实用,每个人都采用减一的方式,因为这是一跳使用的最小“时间”。正如@Commander 所指出的,这是今天的用法。

没有已知的互联网最大深度。绝对最大值应该是最大的 IPv4 跳数,但是构建一个可笑的长路由结构的人可以很容易地在家门口重置该值。在实践中,您必须搜索超过 20 跳的路线。

要使用的最小值是多少?

在这种情况下,“最小价值”的概念没有意义。

您可以很安全地将其设置为 30,这是该traceroute实用程序的默认 TTL。但是,如果目标主机距离您的机器多于n跳,则将pingTTL设置为太小的值n将导致 ping 失败。因此,ping 数据包的 TTL 总是设置为最大值(即 255,因为 TTL 是一个 8 位字段)。具有较小的值将没有任何优势,并且会冒 ping 失败的风险。