网络诊断工具traceroute vs tracepath用于显示IP数据包从源主机到目标主机所经过的路由

traceroutetracepath 都是用于显示 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**。