如何理解traceroute的输出?

如何理解traceroute的输出?

我看到一些条目有多行。有人知道为什么吗?谢谢。

$ 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.

相关内容