![什么原因导致 TTL 在 ping 时发生变化?](https://linux22.com/image/1574151/%E4%BB%80%E4%B9%88%E5%8E%9F%E5%9B%A0%E5%AF%BC%E8%87%B4%20TTL%20%E5%9C%A8%20ping%20%E6%97%B6%E5%8F%91%E7%94%9F%E5%8F%98%E5%8C%96%EF%BC%9F.png)
我总是打开一个窗口并连续运行ping -t 8.8.8.8
。
很多时候,我的 TTL 会在一段时间后发生变化,导致应用程序和游戏断开连接并重新连接。例如,我的 TTL 为 117,持续一小时,然后毫无征兆地变为 121。当它发生变化时,我的应用程序和游戏会自动断开连接并重新连接。
这太烦人了,没有一个支持技术人员可以解释发生了什么。
只要我不是自治体,有人能向我解释一下这些 TTL 变化是怎么回事吗?!
我有 Windows 10。
答案1
互联网上的通信是通过发送许多小的信息包来实现的。每个信息包都通过称为路由器的设备从其源头移动到目的地。路由器连接构成公共互联网的许多不同的小型网络。
当数据包通过路由器时,路由器会减少数据包的 TTL(生存时间)字段。这样做有两个目的:
它提供了一种机制来了解数据包经过了多少个路由器(即跳数)
它可以防止网络配置错误时数据包无限循环传输。当 TTL 达到零时,路由器将丢弃该数据包。
“ping”命令会显示经过这种递减之后收到的 TTL。通常,发送方会指定 TTL 为 128(或 64),因此如果您收到的 TTL 为 117,则表示它已通过 11 个路由器(128-117)。
谁能向我解释一下 TTL 变化是怎么回事吗?!
互联网上的路由器通常与其他路由器有多个连接。路由器通常会有多种的可用于传递数据包的连接。路由器的工作是选择最佳的连接。由于网络条件的变化,路由器可能不会每次都为您的数据包选择相同的路由。当发生这种情况时,您的数据包最终可能会经过一条涉及不同数量路由器的路径。这就是您看到不同 TTL 的原因。这是非常正常的。目的地之间存在多条路线确实是互联网如此具有弹性的原因之一。
我的 TTL 为 117,持续了 1 小时,一瞬间,毫无征兆地变为了 121,我的应用和游戏也因此断开连接并重新连接
在这种情况下,TTL 变化不是问题的原因,而是一种症状。导致您暂时失去互联网连接的原因还导致您的数据包通过不同的路由到达目的地。如果 TTL 发生变化全部您的数据包,这表明问题离您很近,要么在您自己的 LAN 中,要么在您的 ISP 网络中。