tracert(windows) 和 traceroute(linux) 的区别

tracert(windows) 和 traceroute(linux) 的区别

我正在同一网络中使用 tracert(Windows) 和 traceroute(linux) 跟踪一些服务器。
但输出不同。tracert
可以跟踪目标服务器。
但 traceroute 不能。traceroute 输出如下(省略了一些星号)。

traceroute to xxx.com (112.125.57.195), 64 hops max, 52 byte packets
 1  192.168.1.1 (192.168.1.1)  1.347 ms  0.729 ms  1.083 ms
 2  113.109.124.1 (113.109.124.1)  6.519 ms  5.903 ms  6.368 ms
 3  183.56.38.137 (183.56.38.137)  6.094 ms  37.891 ms  5.314 ms
 4  58.61.243.129 (58.61.243.129)  7.002 ms  8.967 ms  7.673 ms
 5  61.144.3.22 (61.144.3.22)  6.169 ms  6.147 ms  5.359 ms
 6  202.97.34.117 (202.97.34.117)  40.194 ms  532.342 ms  536.089 ms
 7  220.181.16.54 (220.181.16.54)  578.522 ms  586.950 ms  627.117 ms
 8  220.181.70.150 (220.181.70.150)  607.408 ms  681.635 ms  671.447 ms
 9  182.92.255.228 (182.92.255.228)  760.188 ms  766.492 ms  399.930 ms
10  * * *
11  * * *

这样就无法跟踪目标服务器了。而且所有的输出都是星号。

答案1

tracert(windows)和traceroute(linux)的区别在于:

tracert(windows) 将仅使用 ICMP 回显请求。

traceroute(linux) [并且在某种程度上依赖于linux发行版] 默认为UDP回显请求。

这两种解决方案都非常古老,而且令人惊讶的是它们已经运行了很长时间,因为在互联网发展的大部分时间里,互联网的许多部分仍然会传递这两种类型的流量而不进行过滤。然而,随着时间的推移,越来越多的核心流量路由器开始过滤这些“回显”请求。(有关回显请求的更多信息,请从此处开始:https://en.wikipedia.org/wiki/Echo_Protocol

TCP Traceroute 使用 ICMP 或 UDP 回显请求的替代方案,因为它使用能够更好地穿越现代防火墙的 TCP SYN 数据包。

TCP Traceroute on Windows And Linux
http://simulatedsimian.github.io/tracetcp.html
https://github.com/SimulatedSimian/tracetcp/releases

并写下其工作原理:

https://support.logicboxes.com/helpdesk/index.php?/Knowledgebase/Article/View/11/37/using-tcp-traceroute-on-windows-and-linux

以下是一个简单/典型用法示例的副本:

C:\tracetcp>tracetcp www.redhat.com:443 -h 3

Tracing route to 184.85.48.112 [a184-85-48-112.deploy.akamaitechnologies.com] on
port 443
Over a maximum of 30 hops.
3 32 ms 50 ms 56 ms 172.20.16.65
4 34 ms 14 ms 33 ms 172.26.16.1
5 503 ms 14 ms 68 ms 172.20.7.34
6 43 ms 170 ms 25 ms 203.117.35.9
7 28 ms 86 ms 26 ms 203.117.34.2
8 216 ms 168 ms 99 ms 203.117.34.14
9 * * * Request timed out.
10 Destination Reached in 211 ms. Connection established to 184.85.48.112
Trace Complete.

您必须安装 winpcap 库才能使此版本正常运行。tracetcp 已使用此库的 3.* 和 4.* 版本进行测试。(因为 WinXP SP2 删除了原始套接字。)但如果您是网络人员,您可能已经安装了 winpcap 和 wireshark。

答案2

*NIX(操作系统)中的大多数 traceroute 默认发送 UDP 数据包(尽管通常可以选择更改此设置),Windows 则默认使用 ICMP 回显请求。

相关内容