这是我的跟踪路由的结果
跟踪路由 211.140.5.120
1 141.1.31.2 (111.1.31.2) 0.397 ms 0.380 ms 0.366 ms
2 141.1.28.38 (111.1.28.38) 3.999 ms 3.971 ms 3.982 ms
3 142.11.124.193 (112.11.124.133) 1.315 ms 1.533 ms 1.455 ms
4 (201.141.0.261) 2.615 ms 2.749 ms 2.572 ms
5 (201.141.0.82) 2.705 ms 2.564 ms 2.680 ms
6 (201.118.231.14) 5.375 ms 5.126 ms 5.252 ms
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
我想知道 *** 是什么意思,结果是否意味着我的主机和目标服务器之间确实有超过 30 跳?
答案1
所有 traceroute 的实现都依赖于发送给发起者的 ICMP(类型 11)数据包。
此程序尝试通过启动具有较小 ttl(生存时间)的 UDP 探测数据包,然后监听来自网关的 ICMP“超时”回复来跟踪路由。它以 1 的 ttl 开始探测,然后逐个增加,直到我们收到 ICMP“端口不可达”(这意味着我们到达了“主机”)或达到最大值(默认为 30 跳,可以使用 -m 标志进行更改)。在每个 ttl 设置下发送三个探测(使用 -q 标志进行更改),并打印一行,显示 ttl、网关地址和每个探测的往返时间(因此是三个 *)。如果在 5 秒超时间隔内没有响应(使用 -w 标志进行更改),则将为该探测打印“*”。
因此,就您的情况而言,我们可以得出结论,我们只在 201.118.231.14 之前收到响应。此后,节点未响应 ICMP 数据包(类型 11)直至跳数 30,这是最大生存时间(最大跳数)。您可以使用 -m 标志增加最大生存时间。
答案2
Traceoute 需要目标服务器和每个中间跳转的响应才能创建其输出。如果路由器未生成响应Time-to-live exceeded
,则 traceroute 将对该跳转一无所知。输出的跳转* * *
意味着该跳转处的路由器不响应您用于 traceroute 的数据包类型(默认情况下,在类 Unix 上为 UDP,在 Windows 上为 ICMP)。
如果你使用与我相同的 traceroute 版本,你可以尝试使用-e
尝试逃避防火墙的选项以及-P
使用 ICMP、TCP 或研究生入学考试 (GRE)数据包而不是 UDP。您还可以尝试使用该选项指定不太可能被过滤的特定端口(例如 80 或 25)-p
。
可能还有其他选项可以帮助您获得回复。检查traceroute 的手册页。
回答你问题的第二部分,不,这个 traceroute 并不意味着你和目标服务器之间正好有 30 个跳数。Traceroute 在经过一定数量的跳数后“放弃”。这是通过限制数据包中的最大 TTL 来实现的,在 Linux 上,默认情况下是 30。你可以使用选项更改它-m
。可能有更多或更少的跳数,但由于第 6 个之后的跳数都没有响应,所以我们不知道。