Traceroute:它能否正确追踪从A到B的路径?

hqt*_*hqt 6 networking icmp tcp-ip

Traceroute是一个跟踪从A到B的路径的应用程序.(A是您的位置,B是您要跟踪的服务器).在Windows中,您可以键入tracert.主要算法是:

send UDP with TTL = 1
Server A1 received, and return ICMP packet to A because TTL is expired.
--> know first machine between. For example A1.

send UDP with TTL = 2
Server A1 received, and send this UDP to server A2.
Server A2 received, and return ICMP packet to A because TTL is expired
--> know second machine between. In this example is A2.

Do it until to B. we can track down: A -> A1 -> A2 -> ... ->B
Run Code Online (Sandbox Code Playgroud)

这个算法是否正常工作?因为在不同的时间,中间服务器可以向不同的服务器发送消息.例如,第一次将UDP消息发送到A1,但稍后,它可以发送到另一个服务器,例如B1.因此,跟踪路由将无法正常工作.

我误解了什么吗?

axi*_*iom 4

从手册页:

Traceroute 跟踪从 IP 网络到给定主机的路由数据包

因此,如果您试图找到 您的数据包可能采用路径之一您会在traceroute

现在,由于路由表不会每分钟都发生变化,因此您发送的数据包很可能会会采用与 Traceroute 跟踪的相同路径。

另一个不容忽视的重要点是IPv4 标头中的记录路由选项。一旦您指定要使用此选项,路径中的每个路由器都会将其 IP 地址添加到标头中的选项中。你可以在这里读更多关于它的内容读更多关于它的内容。问题是目的地了解中间跃点,而不是源。

我发现您在traceroute的描述中错过了icmp echo请求和回复消息的作用。如果这不是故意的,请看一下

更新:您可以通过执行以下操作来查看正在运行的记录路线选项ping -R

ping -R 打开 Echo Request 数据包的路由记录,并显示返回数据包的路由缓冲区(许多路由器会忽略)