诸如 Windows 之类的实用程序ping.exe
有一个选项,可以更改 IP 标头中 Echo Request 消息的默认 TTL 值。TTL 显示数据包的最大跳数限制。我知道每个路由器都会降低 TTL 值,它是为了“清除”网络中的循环数据包而制作的。但改变 TTL 有什么意义呢?为什么不把它设置为最大值 255?我怎么知道哪个值更好?我听说 TTL 在某种程度上与域名区域和它的尺寸。有人能解释一下吗?谢谢。
答案1
TTL 是一个相当通用的术语,意思是“生存时间”。它用于许多需要有限生存期的情况。
在 ping 中,正如您正确提到的,它用于设置数据包可以传输的最大跳数。在 DNS 中,它用作缓存中条目过期之前的时间长度。
您可能会问为什么不一直将其设置为 255?好吧,在 99% 的情况下,使用 ping 都是可以的。只有少数情况(嗯,我突然想到的这种情况)您可能需要指定确切的跳数。
想象一下,如果您有一个在 A 点和 B 点之间具有多条路由的网络。路由 1 (R1) 在 A 点和 B 点之间有 6 跳。路由 2 (R2) 在 A 点和 B 点之间有 8 跳。
通过将 ping 设置为仅允许 6 跳,您可以准确确定有多少数据包采用 R1,有多少数据包采用 R2。
答案2
据我所知,ping 中的 TTL 基本上是为了在一定时间后消除数据包,然后它就无法在网络上传播。您还可以使用此值查看您发送回显请求的站点的流量,因为每个路由器在发送之前都会减少它。但是!当回显请求数据包到达目标站点(因此它仍然处于活动状态)时,会生成一个“回显回复”数据包,并且此回复还包含一个 TTL,该 TTL 会根据“目标站点规则”重置为最大值。Linux/BSD 站点将其设置为 64,Windows 128,思科或 Solaris 设备将其设置为 255,我猜,然后将其发送回目标地址。
这就是为什么您可以在 ping 报告上看到不同的 TTL 值。