Networking Traceroute:发送的所有探测数据包的路径是否相同?

Networking Traceroute:发送的所有探测数据包的路径是否相同?,networking,ping,tcp-ip,icmp,traceroute,Networking,Ping,Tcp Ip,Icmp,Traceroute,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 se

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
我有一个疑问,这使我怀疑这个算法是否正确工作

由于路由表在跟踪路由期间频繁更新,例如对于TTL=3,探测数据包遵循路径A1->A2->A3->A4

现在,当我们发送一个TTL=4的探测包时,它能保证通过A1、A2、A3和A4,然后到达A5吗

如果没有?最终输出是否表示有效路径

希望有人能对这个问题有所帮助。提前多谢

现在,当我们发送一个TTL=4的探测包时,它能保证通过吗 通过A1、A2、A3和A4,然后到A5

不,这不是保证,但在大多数现实情况下可能是这样。如果TTL=4数据包与之前的数据包不在同一路径上传输,那么最终的结果将无法准确反映实际的网络拓扑:


您可以通过使用来减少这种情况的发生,这是一种跟踪路由实现,它可以处理各种IP和ICMP头字段(),以增加所有数据包沿同一路径传输的机会。

感谢您提供的信息,非常有用。我有一个后续问题。路由器多久更新一次转发表?有标准吗?还是一个可能的答案?基本上,我想分析一下我的traceroute数据的错误频率,因为这将决定我是否需要将我的实现转向paris traceroute,因为这增加了复杂性,我不确定是否可以在Android上实现。再次感谢。更改转发表并不是因为路由器突然决定更改它们,而是因为网络发生了变化。这种变化偶尔会发生,特别是在不同的网络之间。然而,这些类型的异常更可能是由于负载平衡器而不是网络变化引起的。我建议你看一下巴黎traceroute白皮书,哪怕只是看一眼。如果准确性很重要,那么在实践中实施巴黎跟踪路线并不难。