Traceroute是一个跟踪从A到B的路径的应用程序。(A是您的位置,B是您要跟踪的服务器)。
基本算法如下:
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
我怀疑这让我对这个算法是否正常工作持怀疑态度。
由于路由表经常更新,在traceroute期间,例如TTL = 3,探测包遵循路径A1-> A2-> A3-> A4。
现在,当我们发送一个TTL = 4的探测包时,是否可以保证通过A1,A2,A3和A4再到A5?
如果没有?最终输出是否代表有效路径?
希望有人可以对这个问题有所了解。非常感谢提前!
答案 0 :(得分:2)
现在,当我们发送一个TTL = 4的探测包时,它是否保证通过 通过A1,A2,A3和A4然后到A5?
不,这不是保证,但在大多数现实案例中都有可能。如果TTL = 4数据包不会沿着与先前数据包相同的路径传输,则最终会得到一个不能准确反映实际网络拓扑的结果:
您可以使用Paris Traceroute来减少发生这种情况的可能性,article是一种针对各种IP& amp; ICMP标头字段({{3}}),以增加所有数据包沿同一路径传播的机会。