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.因此,跟踪路由将无法正常工作.
我误解了什么吗?
从手册页:
Traceroute 跟踪从 IP 网络到给定主机的路由数据包
因此,如果您试图找到 您的数据包可能采用的路径之一,您会在traceroute
。
现在,由于路由表不会每分钟都发生变化,因此您发送的数据包很可能会会采用与 Traceroute 跟踪的相同路径。
另一个不容忽视的重要点是IPv4 标头中的记录路由选项。一旦您指定要使用此选项,路径中的每个路由器都会将其 IP 地址添加到标头中的选项中。你可以在这里读更多关于它的内容读更多关于它的内容。问题是目的地了解中间跃点,而不是源。
我发现您在traceroute的描述中错过了icmp echo请求和回复消息的作用。如果这不是故意的,请看一下。
更新:您可以通过执行以下操作来查看正在运行的记录路线选项ping -R
ping -R 打开 Echo Request 数据包的路由记录,并显示返回数据包的路由缓冲区(许多路由器会忽略)。