traceroute
是一个非常有用的网络诊断工具,用于追踪从源主机到目标主机的路径。这个工具在 Linux 系统中广泛使用,帮助网络管理员和用户了解数据包在网络中的传输情况,从而诊断网络问题。
traceroute
利用 IP 数据包的 TTL 字段来确定数据包经过的每个网络设备。初始 TTL 值通常设置为 1。traceroute
发送一个 TTL 为 1 的数据包,如果该数据包到达第一个路由器,路由器会将其 TTL 减 1,然后丢弃它并返回一个 ICMP 时间超过(TTL exceeded)的消息。traceroute
收集这个 ICMP 消息,并显示第一个路由器的 IP 地址和往返时间(RTT)。traceroute
增加 TTL 值并重复这个过程,每次增加 1,直到数据包到达目标主机或达到最大 TTL 值。输入命令 traceroute
后跟目标主机的域名或者 IP 地址。例如:
traceroute qq.com
第一行显示了目标地址和一些其他参数信息,比如尝试探测的最大跳数、探测报文的字节数。
后续的每一行代表一个“跃点”,从本地网络开始,直到目标服务器,其中
-m
:设置最大 TTL 值,即最大跳数。例如,-m 10
表示最多追踪 10 个跃点。-n
:不将 IP 地址解析为主机名,减少 DNS 查找的时间。-w
:设置超时时间。-i
:使用指定的网络接口送出数据包。-p
:指定发送数据包时使用的端口号,对于 ICMP 协议则是指定初始的 ICMP 序号。-q
:设置每跳探测数据包的数量,默认值为 3。-I
:使用 ICMP ECHO 报文进行探测。-T
:使用 TCP SYN 报文进行探测。-z
:每发送完一个 TTL 值的数据包后暂停一段时间,默认为 1 秒。traceroute
可能需要管理员权限,特别是在使用 ICMP 时。traceroute
请求,导致路径中的某些跃点不显示。traceroute
,在 Windows 系统中为 tracert
。