Traceroute原理

1. 先看一则案例

yum install traceroute -y
traceroute $host
1
1

2. 什么是traceroute

从上图可以看出来,traceroute是诊断两端服务器网络路由节点可用性工具。它可以定位从源主机到目标主机之间经过了哪些路由器,以及到达各个路由器的耗时。而mtr探测底层就是由traceroute实现,只不过是ICMP协议。

3. traceroute的原理

主机之间通信,网络层IP数据报的首部中,有个TTL字段(Time To Live)。TTL的作用是,设置IP数据报被丢弃前,最多能够经过的节点数。

同时,每经过一个中间节点,再向下一个节点转发数据前,都会将TTL减1。如果TTL不为0,则将数据报转发到下一个节点;否则,丢弃数据报,并返回错误。

假设TTL设置为N,当前转发到第M个节点:

  • 第1个节点:将TTL设置为N-1。如果TTL != 0,则将数据报传递给第2个节点;否则丢弃数据报,并向源主机报错。
  • 第2个节点:将TTL设置为N-2。如果TTL != 0,则将数据报传递给第3个节点;否则丢弃数据报,并向源主机报错。
  • 第M个节点:将TTL设置为N-M。如果TTL != 0,则将数据报传递给第3个节点;否则丢弃数据报,并向源主机报错。
2
2

4. 抓包追溯

tcpdump -i any -w filename
  • 4.1 从mtr图中能看到,第一跳"10.22.33.1",这个是内部网络网关,ttl=1
3
3
  • 4.2 第二跳为"192.168.150.1",ttl=2
4
4
  • 4.3 第三跳为"211.103.114.1",ttl=3
5
5

从图中可以看到,traceroute源端是"UDP"协议,经过的每一跳都返回"ICMP"协议且报文中携带当前路由src ip。

5. 如何判断是否达到了目标主机

多次测试发现,ICMP报文中的Type与Code 都为3说明达到了目标主机(用同网段机器模拟的)

6
6

若Type=11,Code=0, 返回的就是超时错误(Time Exceeded Message)

7
7

Copyright & TianCiwang 2021 all right reserved,powered by Gitbook修改时间: 2022-03-17 19:09:25

results matching ""

    No results matching ""

    results matching ""

      No results matching ""