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