我为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表示任何可靠的东西吗?

评论

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

#1 楼


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


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

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


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

评论


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

– DDT
2014年11月7日,3:15

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

–罗恩·托恩(Ron Trunk)
2014年11月11日13:00

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

–让·皮埃尔(JeanPierre)
18年7月30日在20:48

#2 楼

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

公用TTL值


路由器-255
Windows-128
Linux-Mac-64


#3 楼

128 Windows,
64个Linux和路由器,
60-非常罕见,
32 Windows95。

没有人使用63,这大概是在返回路径上击中另一个路由器。

#4 楼

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

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

我尝试了,这就是我得到的。我一直在想TTL ...嗯...很酷
😎

评论


这不能回答所问的问题。

– Teun Vink♦
19 Mar 20 '19在6:13