我看到一些条目有多行。有人知道为什么吗?谢谢。
$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 52 byte packets
...
8 108.170.252.129 (108.170.252.129) 36.476 ms
108.170.240.129 (108.170.240.129) 33.678 ms
108.170.240.193 (108.170.240.193) 33.947 ms
9 108.170.226.183 (108.170.226.183) 38.487 ms
72.14.232.167 (72.14.232.167) 129.904 ms
108.170.231.71 (108.170.231.71) 140.930 ms
10 dns.google (8.8.8.8) 30.013 ms 31.672 ms 29.138 ms
答案1
每条编号的行代表一个路由器“跳”,并显示数据包从源到指定目的地所采用的路径。
默认情况下,大多数经典的 Traceroute 应用程序会在每个路由器跳转中发送三次探测,从而对每个跳转进行三次延迟测量。这些测量结果报告在右侧,通常以毫秒 (ms) 为单位。
三个跳跃之间的差异可以通过每个数据包到达目标的不同路由或瞬时的网络拥塞来解释。
我猜测,目标离您的计算机越远,可能的中间路线的数量就会越多,并且时间差异越大的可能性也会随之增加。
答案2
每行代表一个第 3 层设备。第一个设备将是具有其 IP 地址的默认网关。如果总共有 7 行,则 7 行之后的 3 行设备用于到达最终目的地。ms 列是时间。该特定航段需要多长时间。
答案3
许多网络运营商采用 ECMP(等价多路径)将多条路径合并到同一目的地。例如,流量可以分散到两个或四个路由器(每个路由器处理所有数据包的 1/2 或 1/4),也可以分散到两个完全不同的 ISP。
ECMP 中的路径通常由数据包的 IP 和 TCP/UDP 层标头选择(因此同一连接的所有数据包都将采用相同的路径)。如果您的 traceroute 工具使用的是 ICMP 探测器,那么所有探测器看起来都足够相似,以至于总是选择相同的路径 - 但由于 Linuxtraceroute
默认使用带有随机端口号的 UDP,因此每个探测器最终可能会采用不同的路径。在三个探测器中,您最终会得到三条路径。
需要注意的是,并非所有路径的长度都相同(例如,当它们经过不同的上游 ISP 时)。如果具有相同 TTL 的跟踪路由探测最终选择了不同长度的路径,则跟踪输出在该点之后几乎不可能被解读。
答案4
快速信息:
还有一种替代方法traceroute
,其输出更全面一些,可能有助于进一步分析任何问题:
$ sudo apt-get install mtr # 另请注意;mtr-tiny(没有“X”)
从下面可以看出,有很多选项,可以在纯网络设置上创建不同类型和输出格式的报告。
但运行它可以像这样简单:
$ mtr -i 15 8.8.8.8
...这将创建一个定期(15 秒延迟)更新的表格,并显示该表格,直到您指示它停止。点击d
和/或y
更改显示格式(重复以循环显示选项)。p/space
暂停/取消暂停(例如允许复制和粘贴)h
以获得简要帮助,q
退出。
高血压
$ mtr --version
mtr 0.93
$ mtr --help
Usage:
mtr [options] hostname
-F, --filename FILE read hostname(s) from a file
-4 use IPv4 only
-6 use IPv6 only
-u, --udp use UDP instead of ICMP echo
-T, --tcp use TCP instead of ICMP echo
-I, --interface NAME use named network interface
-a, --address ADDRESS bind the outgoing socket to ADDRESS
-f, --first-ttl NUMBER set what TTL to start
-m, --max-ttl NUMBER maximum number of hops
-U, --max-unknown NUMBER maximum unknown host
-P, --port PORT target port number for TCP, SCTP, or UDP
-L, --localport LOCALPORT source port number for UDP
-s, --psize PACKETSIZE set the packet size used for probing
-B, --bitpattern NUMBER set bit pattern to use in payload
-i, --interval SECONDS ICMP echo request interval
-G, --gracetime SECONDS number of seconds to wait for responses
-Q, --tos NUMBER type of service field in IP header
-e, --mpls display information from ICMP extensions
-Z, --timeout SECONDS seconds to keep probe sockets open
-M, --mark MARK mark each sent packet
-r, --report output using report mode
-w, --report-wide output wide report
-c, --report-cycles COUNT set the number of pings sent
-j, --json output json
-x, --xml output xml
-C, --csv output comma separated values
-l, --raw output raw format
-p, --split split output
-t, --curses use curses terminal interface
--displaymode MODE select initial display mode
-n, --no-dns do not resolve host names
-b, --show-ips show IP numbers and host names
-o, --order FIELDS select output fields
-y, --ipinfo NUMBER select IP information in output
-z, --aslookup display AS number
-h, --help display this help and exit
-v, --version output version information and exit
See the 'man 8 mtr' for details.