tracert 路由追踪原理

发布时间 2023-09-15 18:14:13作者: 弩哥++

一、概念

就是利用ICMP(Internet Control Message Protocol)Internet控制报文协议 来追踪的计算机到目标计算机之间的所有路由器信息

二、不同平台下命令方式

  • windows下: tracert www.baidu.com
  • linux下 traceroute www.baidu.com

三、基于方式

  • UDP(user datagram protocol)--linux下
  • ICMP 回显 ---Windows下

四、TTL解释

Time To live(存活时间),TTL=1代表允许通过的最大链路

image

四、实现过程

  • 命令行输入 tracert www.baidu.com
  • 先会触发DNS请求,去解析www.baidu.com 的ip地址
  • 获取到目标IP后,客户端就会向目标IP发送ICMP请求回显报文,并在ip首部设置TTL的值为1,当到达第一个路由节点后,路由节点根据目标ip,决定要转发出去时,就会将TTL值减去1,发现1-1=0,就超时了,路由器就会返回一次ICMP的超时错误信息,客户端收到后就会判断是不是回显应答报文
  • 如果不是回显应答报文,客户端就会继续发送,而此时ICMP报文的TTL值就为2了,就可以通过2个节点了
  • 依次进行。。。直到收到ICMP回显应答报文

五、示例

  1. 过程1
    image

  2. 过程2
    image

  3. 过程3
    image

  4. 过程4
    image

六、linux基于udp的模式

原理类似,只是不是基于icmp请求回显、回显应答的模式,但是每次都是通过TTL值的递增关系,来追踪路由器的情况

  • linux 发送的udp 端口号默认是大于30000,为什么发送这么大呢?
    • 因为一般目标服务器监控的端口一般都比较小,比如80 443,这样做就是为了区分
    • 当达目标主机的时候,目标主机只能发送一个端口不可达的ICMP数据报给客户端。客户端就知道跑拢了
      image