网络诊断工具traceroute vs tracepath用于显示IP数据包从源主机到目标主机所经过的路由
traceroute 和 tracepath 都是用于显示 IP 数据包从源主机到目标主机所经过的路径(即路由器的跳数和往返时间)的工具,但它们之间存在一些关键的区别。
traceroute vs. tracepath:主要区别
| 特性 | traceroute |
tracepath |
|---|---|---|
| Path MTU Discovery (路径最大传输单元发现) | 默认不包含此功能,但很多现代版本可以通过 -M 或 --mtu 选项启用。 |
默认包含此功能,会自动确定不分段的最大包大小。 |
| 所需的权限 | 传统上,执行涉及原始数据包(raw packet)操作的选项(如使用 ICMP 或 TCP 协议)通常需要 root 权限(或 sudo)。 |
通常不需要 root 权限即可运行,因为它主要使用 sockets API 和 UDP/ICMP。 |
| 使用的协议 | 更灵活。可以选择使用 ICMP、UDP 或 TCP 协议进行探测。 | 较简单。通常使用 UDP 协议进行探测,并利用 ICMP 错误消息。 |
| 功能和选项 | 更强大,功能更丰富。提供更多高级选项来定制探测(如设置 TTL、端口、探测包数量等)。 | 相对轻量、简单。功能较少,主要用于基本的路径和 MTU 发现。 |
| 输出格式 | 默认输出通常包含跳数、主机名/IP 地址和**三次往返时间 (RTT)**。 | 输出通常更简洁,除了路径信息外,还会显示路径 MTU。 |
| 通用性/历史 | 历史更悠久,更传统,在各种 Unix/Linux 系统上都广泛存在。 | 主要在 Linux 系统上更为常见,设计初衷是为了解决 traceroute 需要 root 权限的问题。 |
用法和选择建议
1. traceroute
基本用法:
traceroute <目标地址>例如:
traceroute 8.8.8.8适用场景:
需要进行更高级的网络故障排除,例如选择特定的探测协议(TCP/UDP/ICMP)。
需要精细控制探测参数(如源端口、最大跳数、探测次数等)。
在非 Linux/Unix 系统(如 Windows 的
tracert,或 BSD/macOS)上进行路径追踪。注意:在某些系统上,使用默认的 ICMP 模式或某些高级选项时,可能需要
sudo。
2. tracepath
基本用法:
tracepath <目标地址>例如:
tracepath google.com适用场景:
进行基本的路径发现和网络连通性检查。
快速诊断是否存在 MTU (最大传输单元) 问题,这对于确定最佳的网络传输效率非常重要。
在没有或不想使用 root 权限的环境中进行网络诊断。
总结
你可以将 tracepath 视为一个更现代、更用户友好、且专注于 MTU 发现的 traceroute 简化版本。
- 对于日常快速诊断和 MTU 问题,推荐使用 **
tracepath**。 - 对于需要详细控制和高级网络测试时,使用 **
traceroute**。