为什么/如何 WinMTR 比 tracert / ftrace / wtrace 等快 30 倍?

为什么/如何 WinMTR 比 tracert / ftrace / wtrace 等快 30 倍?

当我运行 WinMTR 并跟踪任何主机(例如 google.com)时,内置的 Windows 命令 tracert(在 Win 7 上)以及第三方命令(如 ftrace)需要 30 秒左右才能完成,即使我将 ping 和跳数之间的延迟设置为最小值并尝试 UDP(在 ftrace 上)。使用 WinMTR,跟踪同一台主机需要不到 2 秒的时间才能显示所有主机,并且每个主机至少需要一次 ping。

这是为什么?有没有像 WinMTR 这样的 Windows 命令行工具可以更快地获得结果,因为我需要将输出结果放入脚本中。WinMTR 只有一个 GUI(可以通过命令行启动,但最终还是会进入 GUI)。WinMTR 是 OSS,但我不懂 C++,只懂 Perl。

答案1

WinMTR工作方式与其他程序(如tracert和)略有不同ftrace

使用传统traceroute工具时,工具首先从设置为 的ICMP/UDP数据包开始,接收响应,然后处理设置为 的数据包,依此类推,直到达到最大跳数(通常为)或目标主机。TTL1TTL230

WinMTR而是为从最大跳数到最大跳数的每一个跳数启动一个新线程1,并独立运行这些线程。这就是为什么你可以如此快速地获得总跳数的原因——你不必等待每一跳完成后再开始下一跳。

要从命令行获得相同的效果,您需要一个以相同方式工作的工具WinMTR...但我不知道有任何以这种方式工作的 Windows 命令行工具。

相关内容