[计算机网络][Wireshark]tracerouter命令的原理

本文详细介绍了traceroute命令的作用、原理及其具体执行过程。通过结合ICMP错误报文机制,traceroute利用UDP包的TTL值追踪数据包到目标主机的路径。同时,还讨论了traceroute的参数,如发送包数量(-q)、最大跳数限制(-m)和起始TTL值(-f),帮助读者更深入地理解路由跟踪过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍一个linux命令–traceroute的作用和原理。

1.traceroute命令的作用

tracerouter是linux的一个命令,顾名思义,是用来跟踪包走过的路径的,使用起来很简单,不加任何参数的话:

traceroute target-ip

这个命令可以查看数据包从本机到target-ip经过的路由路径,比如:

traceroute 223.87.26.49
traceroute to 223.87.26.49 (223.87.26.49), 64 hops max, 52 byte packets
 1  117.174.122.1 (117.174.122.1)  4.005 ms  4.929 ms  4.498 ms
 2  221.182.42.129 (221.182.42.129)  4.088 ms  5.518 ms  5.312 ms
 3  223.87.26.33 (223.87.26.33)  5.985 ms  5.732 ms  6.568 ms
 4  223.87.26.49 (223.87.26.49)  5.941 ms  4.790 ms  6.514 ms

可以看到从源主机到目标主机 223.87.26.49,需要经过4个路由器,第一个路由器是117.174.122.1,发了三个包去试探路线,包从去到回需要的时间分别的 4.005 ms,4.929 ms, 4.498 ms,以此类推,最后一个路由器是 223.87.26.49,也就是目的地。

2.traceroute的原理

traceroute是基于ICMP(Internet Configuration Message Protocol)协议的,这个协议是用来检测网络的状态和性能的,比如测试网络是否可达,主机是否可达,网络传输时间等指标,具体内容可以参考文章Wireshark分析ICMP协议
我们熟悉的ping命令也是基于ICMP的,ping是基于ICMP的查询报文的,在ICMP的基础上加上一些封装,比如封装Sequence Number等信息,可以用来跟踪ping报文的顺序。
traceroute也是基于ICMP协议的,不过它是基于ICMP的错误报文的,也就是利用ICMP错误报文的机制来检测路由的路径,具体的说是着两种错误报文:

  • 传输期间生存时间为0(TTL=0),当路由器收到一个过期的报文后,会向源主机发送这个类型的ICMP报文
  • 端口不可达,当目标主机收到一个不存在的端口时,就会向源主机回复一个端口不可达的错误报文

预备知识:
1.由于要有借助端口,所以我们是需要传输层的协议支持的,traceroute借助的是UDP协议。
2.TTL(Time To Live)是数据包在传输期间的生存时间,数据包每经过一个路由器,TTL就会减1。

3.traceroute的具体过程

有了上述的铺垫,让我们来看一下具体的过程具体过程是:

  • Step1.源主机src host(172.20.5.31)发送一个UDP包要到目标的主机(223.87.26.49),设置TTL=1
    在这里插入图片描述
  • Step2.由于不在同一个子网中,源主机所处的子网的默认网关会将这个包发到路由器Router1。到了路由器Router1拿到包之后,将此包的TTL减1,发现TTL等于0了,就给源主机发送ICMP错误报文,表示这个包已经没有生存时间了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值