Pra*_*oor 5 networking tcp ping traceroute icmp
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
Run Code Online (Sandbox Code Playgroud)
我有一个疑问让我怀疑这个算法是否正确工作。
由于路由表更新频繁,在跟踪路由期间,假设 TTL=3,探测数据包遵循路径 A1->A2->A3->A4。
现在,当我们发送一个TTL=4的探测包时,是否能保证先经过A1、A2、A3、A4,然后到达A5呢?
如果不?最终输出是否代表有效路径?
希望有人能够对这个问题有所启发。预先非常感谢!
现在,当我们发送一个TTL=4的探测包时,是否能保证先经过A1、A2、A3、A4,然后到达A5呢?
不,不能保证,但在大多数现实情况下很可能如此。如果 TTL=4 数据包不沿着与先前数据包相同的路径传输,您最终得到的结果将无法准确反映实际的网络拓扑:
您可以使用Paris Traceroute来减少发生这种情况的可能性,这是一种跟踪路由实现,它会处理各种 IP 和 ICMP 标头字段(文章),以增加所有数据包沿同一路径传输的机会。