traceroute、tracert服务的工作原理

目录

1、Traceroute 

2、Tracert

3、小结


1、Traceroute 

traceroute 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。路由器收到TTL为1的包文减1后直接丢弃,然后回复 ICMP(type=11,code=0,TTL equals 0 during transit——传输期间生存时间为0),目标主机收到traceroute 的UDP探测包回复ICMP(type=3,code = 3,端口不可达)。Linux上称之为 traceroute,Windos类似的功能为tracert。

linux 上 traceroute 运行过程是:traceroute 连续发送TTL从1开始递增的UDP包,目标端口 30000+,目标地址为探测地址 dst_addr,每个TTL相同的UDP包默认发送三次,端口依次递增。当收到目标地址 dst_addr 回的 ICMP包(端口不可达),traceroute 停止发包,否则继续发送,默认最多发送 30 个,每个包大小 60Byte(IP+UDP+Data)。

具体报文分析如下:

1、从10.43.85.162 到 10.43.2.170 经过 4 跳,第 5 跳到达目标主机。

2、连续发送 UDP 包,当收到来自路由器10.43.66.125 第一个探测包(frame881)的回复的ICMP包(frame892,0.979ms)时还是会继续发送UDP包文。当时当收到来自目标机器 10.43.2.170 回复的ICMP报文时(frame = 895),表示探测成功traceroute 停止发送UDP报文。

2.1、发送的第一个TTL = 3 的UDP包文 Frame=881

2.2、收到来自路由器10.43.66.125的回复信息ICMP包,Frame = 892

3、UDP报文的目标端口依次递增

4、收到路由器回复的 892号报文后,继续发送UDP包,此时TTL=6

5、普通路由器回复的ICMP为TTL= 0丢去,目标主机回复的ICMP则是端口不可达,因为此时的TTL != 0,只是目标主机没有监听相应的端口而已。

6、traceroute总共发送了17个UDP包,(TTL = 1~5) * 3,(TLL=6) * 2,因此源主机收到了17个ICMP回复,其中的5个均来自目标主机10.43.2.170。

2、Tracert

通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。

Tracert 先发送 TTL 为 1 的回应数据包,并随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。

Tracert 有一个固定的时间等待响应(ICMP TTL到期消息)。如果这个时间过了,它将打印出一系列的*号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。然后,traceroute 给TTL记数器加1,继续进行。

报文监测如下:

1、从10.40.140.97 到 10.43.85.162 经过 3 跳,第 4 跳到达目标主机。

2、PC机依次发送ICMP请求信息(Type=8,Echo request——回显请求[Ping请求]),收到目标主机的ICMP回的应答信息(type=0,Echo Reply——回显应答[Ping应答])后,停止发送请求信息,注意是三个应答信息都收到之后,才停止发送

3、当超出设定的跳数,源主机也会停止发送ICMP请求,如下所示设置跳数为3

3、小结

       tracert 和 traceroute虽然都是路由跟踪,但是两者探测方法及探测的数据类型不同。默认情况下,traceroute是向目的地址的某个端口(大于30000)发送UDP数据报,tracert是向目的地址发出ICMP请求回显数据包。

      当出现了tracert可达,但是traceroute不可达时,需要考虑路径的路由器是否对UDP进行了过滤,或者端口限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老王不让用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值