在ping结果中解释TTL


11

我为VoIP服务提供商提供服务,并且正在与客户建立有线网络连接,从而使我陷入困境。

他只有一个块,我们假装为70.141.15.0/29,网关位于.1,路由器位于.2和3.。这两个路由器都连接到他的电缆调制解调器,据我们所知,电缆调制解调器已设置为电缆提供商所想象的“桥接模式”。

我正在同一盒中同时对这两个路由器执行ping操作,这是一个Linux系统,从(可能)Level(3)连接到光纤。不用说,地球上没有人知道这里和那里之间有多少个节点。但是请检查ping结果。

到第一个路由器:

64 bytes from 70.141.15.2: icmp_seq=2637 ttl=47 time=45.0 ms
64 bytes from 70.141.15.2: icmp_seq=2638 ttl=47 time=39.2 ms
64 bytes from 70.141.15.2: icmp_seq=2639 ttl=47 time=37.3 ms
64 bytes from 70.141.15.2: icmp_seq=2640 ttl=47 time=46.1 ms
64 bytes from 70.141.15.2: icmp_seq=2641 ttl=47 time=45.8 ms
64 bytes from 70.141.15.2: icmp_seq=2642 ttl=47 time=46.5 ms
64 bytes from 70.141.15.2: icmp_seq=2643 ttl=47 time=40.9 ms

从第二个开始:

64 bytes from 70.141.15.3: icmp_seq=631 ttl=239 time=54.7 ms
64 bytes from 70.141.15.3: icmp_seq=637 ttl=239 time=40.5 ms
64 bytes from 70.141.15.3: icmp_seq=638 ttl=239 time=40.3 ms
64 bytes from 70.141.15.3: icmp_seq=639 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=640 ttl=239 time=44.9 ms
64 bytes from 70.141.15.3: icmp_seq=641 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=642 ttl=239 time=38.8 ms

检查TTL值。这有意义吗?这些设备彼此直接相邻,并通过单独的交换机端口插入该调制解调器。一个人又怎会有近200跳呢?通过ping其他站点,我得到的印象是TTL并未按照我认为的方式实施。我怀疑我和4.2.2.2或woot.com之间是否有200跳,但我从这两者得到的TTL结果都低于50。

这些路由器中的一个(TTL较高的路由器)来自Fortinet,而另一个则是基于Linux的自定义设备。我很确定Forti有一个家用网络栈,而Linux机器使用的是硬件开发人员下载的源压缩包中附带的任何东西。是否有可能以一种奇怪的形式在其中之一上实现了ICMP回显,并故意发送所有TTL为50的答复?

我还注意到,我能找到的唯一具有理性TTL答复的站点之一是slashdot,而且我可以想象到,它们的服务器和路由器在“我们在车库中发现的内容”可能比普通网站少一些。有点让我觉得我对最后一个假设的看法是正确的。

综上所述:ping上的TTL意味着可靠吗?


3
我读到某个地方,Windows XP和Windows 7将TTL设置为128,而对于Linux系统,它们通常具有TTL64。虽然不是很完美,但有时会很有用。
肖恩

Answers:


22

不用说,地球上没有人知道这里和那里之间有多少个节点。

我知道有多少个节点。恰好有16个。之所以会得到不同的响应,是因为不同的操作系统对TTL使用不同的起始值。一些设备使用255,而另一些设备使用63。因此,您要ping的其中一个设备发送的TTL设置为255。到收到它时,它已递减到239。即16跳。

您ping的另一台设备将TTL设置为63。因此,到达该设备时,该值为47。

255-239 = 63-47 = 16。

如果要确定目标与目标之间的跳数,请使用traceroute。


谢谢!我当时做出的假设是,我现在意识到这是毫无根据的(返回数据包TTL一定是由请求数据包TTL决定的)。还有一个问题:255个和63个基于标准的值还是任意的?也就是说,我可以安全地假设任何三位数的TTL起始寿命为255等吗?
丹尼尔·汤普森

3
我认为这没有“标准”。太太,我从未见过一个不是一个系统。
Ron Trunk

63个初始TTL值听起来不常见。
JeanPierre '18

2

TTL值由远程计算机确定。例如,如果您对Linux机器执行ping操作,则其原始TTL值为64。根据它经过多少网络才能返回给您,该TTL会减去1。因此,如果您对8.8.8.8进行ping操作,则Google的域名服务器,其原始值为128。到您的名称服务器,它的值可能为121(对我而言)。这意味着它跨越了7个网络才能到达我的手中,那是一台Windows计算机。

常见的TTL值

  • 路由器-255
  • 窗户-128
  • Linux-Mac-64

0

128个Windows,64个最多的Linux和路由器,60个非常罕见的32个Windows 95。

而且没有人使用63,它很可能在返回路径上撞到了另一台路由器。


0

尝试“ Tracert [IP地址]”以查看路由总数。

如果系统从64 TTL开始,则如果您跟踪距离一跳的设备,您将获得TTL = 63。

我尝试了,这就是我得到的。我总是想知道TTL ...嗯酷cool


这不能回答所问的问题。
Teun Vink
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.