在网络排查中,为什么访问目标地址失败?数据卡在了哪个节点?这类问题屡见不鲜。路由追踪命令(Linux 的 traceroute 与 Windows 的 tracert)正是解决这类问题的网络探针——它能精准定位数据包从本地主机到目标主机的传输路径,暴露每一跳的延迟、丢包等关键信息,是运维、开发及普通用户排查网络故障的核心工具。本文将从语法、适用场景、使用方法、结果解读、问题解决五个维度,全面拆解两个系统的路由追踪命令,让你快速上手。
一、核心概念:路由追踪命令到底是什么?
路由追踪的核心原理是利用 IP 协议的 TTL(生存时间)字段和 ICMP(互联网控制消息协议)反馈机制:
- 本地主机向目标主机发送数据包时,会将 TTL 值设为 1(第一跳);
- 数据包经过第一个路由器时,TTL 减 1 变为 0,路由器会丢弃数据包并返回 TTL 超时(ICMP Time Exceeded)消息;
- 本地主机记录该路由器的 IP 和延迟,再将 TTL 设为 2,重复上述过程,直到数据包到达目标主机,目标主机会返回端口不可达(ICMP Port Unreachable)消息,追踪结束。
简单说,路由追踪就像给数据包贴了个倒计时标签,通过每一跳的超时反馈,画出数据传输的完整路径,同时检测每一段的网络状态。
二、分系统详解:语法、适用场景与使用方法
(一)Linux 系统:traceroute 命令
1. 基础语法
traceroute [选项] 目标地址(IP/域名)
2. 常用选项(核心必记)
| 选项 | 作用 | 示例 |
|---|---|---|
| -n | 不解析域名(仅显示 IP),速度更快 | traceroute -n 8.8.8.8 |
| -m <跳数> | 设置最大追踪跳数(默认 30 跳) | traceroute -m 20 www.baidu.com(最多追踪 20 跳) |
| -w <秒数> | 设置超时时间(默认 3 秒),避免卡顿 | traceroute -w 1 192.168.1.1(1 秒无响应则判定超时) |
| -q <次数> | 每跳发送的数据包数量(默认 3 个) | traceroute -q 5 www.github.com(每跳发 5 个包,结果更精准) |
| -p <端口> | 指定目标端口(TCP 模式下生效) | traceroute -T -p 80 www.google.com(追踪 TCP 80 端口) |
| -T | 使用 TCP 协议追踪(默认 UDP,部分网络禁用 UDP 时用) | traceroute -T www.taobao.com |
3. 适用场景
- 排查 Linux 服务器访问外网 / 内网服务失败(如无法访问 API 接口、数据库连接超时);
- 定位跨机房、跨地区网络延迟过高的节点(如南方用户访问北方服务器卡顿);
- 检测是否存在路由环路、黑洞路由(数据包被丢弃无反馈);
- 验证 CDN 节点是否生效(如追踪 www.taobao.com,看是否经过 CDN 节点)。

