Traceroute 与 tracert

Traceroute 与 tracert

我遇到了以下问题:

从 Windows 7运行tracert会将所有跳数返回到给定的服务器。traceroute从 Fedora 30 运行,使用相同的连接和相同的目标,除了网关 IP 之外,它仅返回 * * *。

你能解释一下为什么它在 Windows 上可以运行,但在 Fedora 上却不行吗? 有什么区别?

另外,您能否告诉我如何traceroute在从 Fedora 运行时进行回程跳转?

答案1

视窗'tracert使用 ICMP 同时增加 TTL 进行探测:

如何使用 TRACERT 实用程序

TRACERT 诊断实用程序通过向目的地发送 Internet 控制消息协议 (ICMP) 回显数据包来确定到目的地的路由。

Fedoratraceroute默认情况下,发送 UDP 探测,就像以前的 Unix traceroute 实现一样。提示 UDP 是默认的(除了在写这个答案之前通过执行捕获进行双重检查外)来自男人首先讨论UDP:

我们不希望目标主机处理 UDP 探测数据包,因此将目标端口设置为一个不太可能的值(您可以使用 -p 标志更改它)。ICMP 或 TCP 跟踪路由不存在这样的问题(对于 TCP,我们使用半开技术,这可以防止我们的探测被目标主机上的应用程序看到)。

两种工具都希望获得ICMP 时间已超出作为建立路线的响应。

沿着这条路径,不同的路由器可能会根据所使用的探测方法选择不同的答案(即:根本不回答)。

如果您知道 ICMP 探测更适合您的测试,您可以在 Fedora 上执行相同的操作:

traceroute --icmp destination

与 UDP 相反,ICMP 通常需要制作特殊数据包,因此该命令可能需要 root 权限才能使用此选项运行。

答案2

这就是区别:

  • tracert:用途ICMP
  • traceroute:用途UDP

我不得不说,tracert最近它已经成为了我最喜欢的工具:

在此处输入图片描述

相关内容