Linux traceroute 命令2025年3月17日 | 阅读 7 分钟 Traceroute 简介Linux traceroute 命令是一个网络故障排除实用程序,可帮助我们确定到达目标所需的跳数和数据包传输路径。它用于显示数据从本地机器传输到远程机器的过程。加载网页是 traceroute 的常见用例之一。网页加载通过网络和路由器传输数据。traceroute 可以显示网络上的路由器路由、IP 地址和主机名。这对于诊断网络问题很有用。 在计算中,tracert 和 traceroute 是用于计算机网络诊断的命令,用于显示可能的路由并测量 IP 网络中数据包传输延迟。路由历史记录是从所有连续主机到路由的数据包往返时间记录的;每次跳数的平均时间总和是创建连接所花费的总时间。 traceroute 命令将一直运行,直到所有发送的数据包丢失超过两次;连接丢失,路径无法评估。另一方面,ping 命令仅测量到达目标点的最后往返时间。有时,该工具有一个类似名称 tracert6 和 traceroute6,用于 IPv6。 语法选项traceroute 命令支持以下命令行选项 -f, --first-hop=NUM:用于设置初始跳数。 -g, --gateways=GATES:用于显示松散源路由的网关列表。 -I, --icmp:指定使用 ICMP ECHO 作为探针。 -m, --max-hop=NUM:用于设置最大跳数,默认为 64。 -M, --type=METHOD:指定 traceroute 操作的 METHOD(icmp 或 udp),默认方法是 udp。 -p, --port=PORT:定义使用目标 PORT 端口,默认 PORT 为 33434。 -q, --tries=NUM:用于每跳发送 NUM 个探测包,默认为 3。 --resolve-hostnames:用于解析主机名。 -t, --tos=NUM:用于将服务类型(TOS)设置为 NUM。 -w, --wait=NUM:用于设置等待响应的秒数,默认为 3。 -?, --help:用于显示帮助手册,其中包含支持的命令行选项和用法的简要说明。 --usage:显示简短的用法消息。 -V, --version:用于显示 traceroute 的版本信息。 让我们看看该主题的快速索引
traceroute 的实现traceroute 命令在多种现代操作系统上可用。在类 Unix 系统(如 Linux、macOS 和 FreeBSD)上,它是一个命令行工具。此外,traceroute 在 macOS 的 Network Utilities 套件中也可用,尽管这些实用程序自 macOS Big Sur 发布以来已被弃用。 ReactOS 和 Microsoft Windows 提供了一个名为 tracert 的程序,它实现了类似的路由跟踪功能。此外,基于 Windows NT 的操作系统提供了 PathPing,它可以将 ping 命令的功能与 tracert 结合起来。ReactOS 版本由 Get Murphy 集成,并根据 GPL 获得许可。 默认情况下,traceroute 在类 Unix 操作系统上发送一系列 UDP(用户数据报协议)数据包,目标端口号范围为 33434 到 33534。macOS、DragonFly BSD、OpenBSD、NetBSD、FreeBSD 和 Linux 随附的 traceroute 实现可以选择使用 ICMP Echo Request 数据包,以及使用 ICMP 或 TCP SYN 数据包的 TCP 和 UDP。默认情况下,tracert 在 Windows 上传输 ICMP Echo Request 数据包,而不是 traceroute 传输的 UDP 数据包。 traceroute 的用法大多数实现至少提供了一些选项来定义每跳要发送的查询数、等待响应的时间、跳数限制以及使用的端口。如果我们不带指定选项调用 traceroute,它会显示可用的选项列表,而 man traceroute 命令则提供更多详细信息,例如错误标志。 traceroute 的起源traceroute 的手册页指出,实际的 traceroute 程序由 Van Jacobson 于 1987 年根据 Steve Deering 的建议指定,并得到了 C. Philip Wood、Ken Adelman 和 Tim Seaver 的具体有说服力的修复和建议。ping 程序作者 Mike Muuss 表示,traceroute 是在支持他早期编码以激活原始 ICMP 套接字的内核 ICMP 的支持下指定的,而他最初是指定 ping 程序的。 traceroute 的局限性traceroute 的局限性是众所周知的,在使用该工具时应予以考虑。例如,traceroute 在接口级别识别路径,但在路由级别不识别。当路由器不响应检查或路由器限制 ICMP 响应时,会出现其他限制。 在负载均衡流量存在的情况下,traceroute 可能会显示一个不存在的路径。为了最小化此问题,存在一个名为 Paris-traceroute 的 traceroute 修改版,它管理检查流标识符以忽略负载均衡。 安装 traceroute 命令traceroute 不是 Linux 系统的默认实用程序。要使用 traceroute,我们需要手动安装它。要安装它,请执行以下命令之一 以上命令将在我们的系统上安装 traceroute 实用程序。成功安装后,输出将如下所示 ![]() 它是如何工作的?要跟踪已连接网络主机的路由,请传递您想要连接的服务器名称或 IP 地址。例如,要跟踪“javatpoint.com”服务器的路由,请执行以下命令 上述命令将显示给定路由上的跳数、数据包和其他许多信息。考虑以下输出 ![]() 从上面的输出中,我们可以看到几件事。让我们来理解输出的每个部分
使用 IPv6 跟踪路由“6”选项用于使用 Ipv6 协议跟踪到主机网络的路由。考虑以下命令 上述命令将使用 Ipv6 协议跟踪到“google.com”的路由。考虑以下输出 ![]() 使用 Ipv4 跟踪路由“4”选项用于使用 Ipv6 协议跟踪到主机网络的路由。考虑以下命令 上述命令将使用 Ipv6 协议跟踪到“google.com”的路由。考虑以下输出 ![]() 禁用 IP 地址和主机名映射“n”选项用于禁用 IP 地址和主机名映射。考虑以下命令 上述命令将产生如下输出 ![]() 设置每跳查询数“-q”选项用于设置每跳查询数。考虑以下命令 上述命令将产生如下输出 ![]() 设置响应等待时间“-w”选项用于在 traceroute 中设置响应等待时间。它将以秒为单位指定响应探测的等待时间。考虑以下命令 从上面的命令中,响应等待时间为 1 秒。它将产生如下输出 ![]() 指定要使用的接口“i”选项用于设置 traceroute 应该使用的网络接口。如果未设置,它将根据路由表设置接口。考虑以下命令 上述命令将产生如下输出 ![]() 设置初始 TTL 值我们可以设置初始 TTL(生存时间)值,而不是默认值。它将跳过一些跳。通常,它设置为一、二、三等,用于相应的测试集。因此,如果我们将其设置为七,第一个测试将尝试第七跳,并跳过从一到六的跳。考虑以下命令 上述命令将直接跳到第七跳。考虑以下输出 ![]() 设置最大跳数“-m”选项用于设置数据包到达目标的最大跳数。最大跳数的默认值为 30。考虑以下命令 上述命令将设置 7 个最大跳数让数据包到达目标。考虑以下输出 ![]() 获取帮助要显示包含用法摘要和支持的选项的帮助手册,请执行以下命令 上述命令将显示帮助。它将产生如下输出 ![]() 我们也可以通过执行 man 命令来访问手册页 上述命令将显示 traceroute 命令的手册页。它将如下所示 ![]() 滚动页面以阅读更多内容,然后按“q”键退出手册页。 下一主题Linux tracepath |
我们请求您订阅我们的新闻通讯以获取最新更新。