其他分享
首页 > 其他分享> > Traceroute(路由追踪) --- 的原理及实现

Traceroute(路由追踪) --- 的原理及实现

作者:互联网

现实世界中的网络是由无数的计算机和路由器组成的一张的大网,应用的数据包在发送到服务器之前都要经过层层的路由转发。而Traceroute是一种常规的网络分析工具,用来定位到目标主机之间的所有路由器。

原理

在介绍Traceroute的原理之前,需要了解几个技术名词:

具体到traceroute的实现细节上,有两种不同的方案:

基于UDP实现

在基于UDP的实现中,客户端发送的数据包是通过UDP协议来传输的,会使用一个大于30000的端口号,服务器在收到这个数据包的时候会返回一个端口不可达的ICMP错误信息,客户端通过判断收到的错误信息是TTL超时还是端口不可达来判断数据包是否到达目标主机,如果报TTL超时,说明数据包还未到达目标主机,如果收到的消息是端口不可达,说明数据包已经到达目标主机。具体的流程如图所示:

 对于上图,解读如下:

基于ICMP实现

在基于ICMP协议实现的过程中,我们不使用UDP协议,而是直接发送一个ICMP回显请求(echo request)数据包,服务器在收到回显请求的时候会向客户端发送一个ICMP回显应答(echo reply)数据包,在这之后的流程还是跟第一种方案一样。这样就避免了我们的traceroute数据包被服务器的防火墙策略墙掉。采用这种方案的实现流程如下:

对于上图,解读如下:

  1. 客户端发送一个TTL为1的ICMP请求回显数据包,在第一跳的时候超时并返回一个ICMP超时数据包,得到第一跳的地址。
  2. 客户端发送一个TTL为2的ICMP请求回显数据包,得到第二跳的地址。
  3. 客户端发送一个TTL为3的ICMP请求回显数据包,到达目标主机,目标主机返回一个ICMP回显应答,traceroute结束。

可以看出与第一种实现相比,区别主要在发送的数据包类型以及对于结束的判断上,大体的流程还是一致的。

 

标签:Traceroute,主机,路由器,---,TTL,ICMP,数据包,路由,客户端
来源: https://blog.csdn.net/qq_42270373/article/details/121251602