这是从我家到 的路线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.65
和221.11.165
?这是什么意思?
数据包是否从 140.0.5.1 跳转到 221.11.155.65
,然后从 跳转 221.11.155.65
到221.11.165
?
答案1
这里给您的信息traceroute
是,您至少有 2 条从路由器出发到达目的地的路线:
IP adresses Internet operator
140.0.5.1 Firstmedia - Indonesia
/ \
/ \
221.11.155.65 221.11.165.9 China Unicom - China
对于一个庞大的互联网运营商来说,这是很正常的情况:有很多路线来抵抗互联网上的正常事件。
FreeBSD -a
(-A
在 Linux 上)选项traceroute
可以帮助您识别每个 IP 地址属于哪个运营商。
这是一个更大的路由树的示例,您甚至可以通过服务器等网络工具从手机获取路由http://ping.eu/traceroute/:
答案2
来自traceroute(8)
手动的在 OpenBSD 上:
发送三个探测(可以使用该选项更改确切的数量
-q
),并打印一行,显示 TTL 或跳数限制、网关地址以及每个探测的往返时间。如果探测答案来自不同的网关,则将打印每个响应系统的地址。
Linux 手册也会有类似的措辞。
您看到的多个 IP 地址是响应特定跃点限制的各个探测的网关。
在您的情况下,三个探测产生的答复在跃点限制 3 处从 221.11.155.65 和 221.11.165.9 的网关返回给您。
所以,答案是:不,数据包不会在该行列出的两个主机之间跳转,发送了三个探测,并且它们从 140.0.5.1 出发采用两条不同的路由。
答案3
Traceroute 的作用是在发送互联网控制消息协议 (icmp) 数据包时使用选项字段。网络中的每个网关或路由点在一个接口上读取数据包,决定它们应该去哪里,然后将它们写到另一个接口上。该接口可能更接近目的地。当路由器转发数据包时,它也会修改数据包标头。它将“生存时间”或跳数字段减少一。数据包通往目的地的路径中的每个网关都会减少该字段。
当跳数字段降至零时,许多路由器将发回一条 icmp 消息,说明数据包被丢弃的位置。为了找到特定距离之外的 IP 地址,traceroute 将发送带有生存时间选项的数据包,并在超时时给我一个响应。跳数从 1 开始并逐渐增加的消息将返回逐渐更远的路由器的 IP 地址。因为traceroute会多次执行此操作,所以您将在某些计数上得到多个答案(如果您有一个连接丰富的网络,如互联网)。由于到该网关的路由经过了不同的跃点,因此特定网关可能会以不同的数量进行应答。