为什么traceroute在同一跃点上显示许多IP地址?


14

这是从我家到的路线sina.com.cn

 traceroute -n   sina.com.cn
traceroute to sina.com.cn (202.108.33.60), 30 hops max, 60 byte packets
 1  192.168.31.1  0.476 ms  0.587 ms  0.695 ms
 2  140.0.5.1  2.557 ms  2.699 ms  3.065 ms
 3  221.11.155.65  4.501 ms * 221.11.165.9  5.045 ms
 4  * 221.11.156.18  26.480 ms 221.11.165.233  22.950 ms
 5  219.158.9.97  14.176 ms * 219.158.19.149  21.472 ms
 6  219.158.9.97  18.142 ms 219.158.8.81  44.856 ms  52.539 ms
 7  124.65.194.190  53.162 ms 219.158.8.81  50.614 ms 124.65.194.190  47.266 ms
 8  124.65.194.190  50.760 ms 61.148.143.26  49.351 ms  53.515 ms
 9  210.74.176.138  43.056 ms  43.286 ms 61.148.143.26  53.712 ms
10  202.108.33.60  46.385 ms 210.74.176.138  42.896 ms  46.931 ms

192.168.31.1是我的家用路由器。
140.0.5.1是ISP提供的我的公共IP。

curl  ifconfig.me
140.0.5.1 

第三行说

3  221.11.155.65  4.501 ms * 221.11.165.9  5.045 ms

为什么有两个IP地址221.11.155.65221.11.165?这是什么意思?

从是否该140.0.5.1包跳 221.11.155.65,然后从跳跃 221.11.155.65221.11.165


一澄清。如果ISP为您提供了IP地址,则不应在您运行的traceroute命令中显示该IP地址。而且,如果您要对IP地址进行跟踪路由,它将显示为跃点1。更有可能您没有任何IP地址,140.0.5.1而是某种CGN,其行为有点不寻常。
kasperd

Answers:


4

traceroute所做的是在发送Internet控制消息协议(icmp)数据包时使用选项字段。网络中的每个网关或路由点都在一个接口上读取数据包,确定数据包应到达的位置,然后在另一接口上将其写出。该接口可能更接近目的地。当路由器转发数据包时,它也会对数据包头进行修改。它将“生存时间”或跳数字段减少了一个。数据包通往目的地的路径中的每个网关都会减少此字段。

当跳数字段降为零时,许多路由器将发回icmp消息,说明数据包的丢弃位置。为了找到距离特定距离的IP地址,traceroute将发送带有生存时间选项的数据包,并在超时时给我答复。跳数从1开始并逐渐增加的消息将分别返回距离越来越远的路由器的IP地址。因为traceroute会多次执行此操作,所以您将在某些方面获得多个答案(如果您的网络连接良好,互联网也是如此)。特定网关可能会以不同的距离应答,因为到该网关的路由经过了不同的跃点。


11

是什么traceroute让你在这里的信息是,你至少有两条路线到达目的地的路由器开始:

           IP adresses                 Internet operator

           140.0.5.1                   Firstmedia - Indonesia
             /    \
            /      \
221.11.155.65      221.11.165.9        China Unicom - China

对于一个庞大的Internet运营商来说,这是正常的情况:拥有许多路由来抵抗Internet上的正常事件。

-a的选项traceroute可以帮助您确定哪个运营商的每个IP地址所属。

这是一个更大的路由树示例,您甚至可以通过移动电话通过服务器http://ping.eu/traceroute/之类的网络工具从手机中获取这些树: 跟踪路由到140.0.5.1


在debian9中,我的traceroute没有-a选项。
沙哑的

traceroute [-46dFITUnreAV] [-f first_ttl] [-g gate,...] [-i设备] [-m max_ttl] [-p端口] [-s src_addr] [-q nqueries] [-N squeries] [ -t tos] [-l flow_label] [-w等待时间] [-z sendwait] [-UL] [-D] [-P协议] [--sport = port] [-M方法] [-O mod_options] [ --mtu] [--back]主机[packet_len]
scrapy

我在这里用的是FreeBSD。

8

从OpenBSD 的traceroute(8)手册中:

发送了三个探测器(可以使用该-q 选项更改确切的数量),并打印一行以显示TTL或跃点限制,网关的地址以及每个探测器的往返时间。如果探测答案来自不同的网关,则将打印每个响应系统的地址。

Linux手册将有类似的措辞。

您看到的多个IP地址是网关在特定跃点限制下对各个探测器的响应。

在您的情况下,这三个探测导致答复,在跃点限制3处,从网关221.11.155.65和221.11.165.9返回给您。

因此,答案是:不,数据包不会在该行上列出的两个主机之间跳转,发送了三个探测,并且它们采用了140.0.5.1的两条不同的路由。


1
@RuiFRibeiro我已澄清我的回答,以回答所要求的明确问题。
Kusalananda

的确,我确认,至少在Debian traceroute中具有相同的措辞。
Rui F Ribeiro
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.