详解tracert

在工做生活中,若是干点跟网络沾边的活,可能都会用到tracert,tracert是windows操做系统上用于追踪到达目标地址路由的一个小工具,一样的软件在linux上也有,只不过是traceroute,原理类似,可能tracert就是根据traceroute开发的,细节上有些不一样而已。linux

Tracert属于icmp协议,经过使用它能够垂手可得的找出ip地址在网路上的路径,判断IP地址通过了哪些设备,找出哪些设备延迟太高,从而发现网络中存在的问题。好比,咱们常常接到反馈说,访问某个网站特别慢,那究竟是什么慢呢,其实就是咱们到达服务器的延时较高,从而致使数据传输过慢,网页加载也就更慢了。windows

1、Tracert原理服务器

要弄清tracert的原理什么,就得首先简单了解下ICMP和IP包头字段中的TTL。网络

ICMP全称Internet控制报文协议,做为TCP/IP的一个子协议,经常使用来在IP传输中用来指出网络不通、主机是否可达、路由是否可用等。例如常见的ping应用,当主机A测试可否到达主机B时,由主机A发送imcp request(type:8,code0),当主机B收到这个数据包时,主机B发送给主机A一个icmp replay(type:0,code0)。这时,主机A将收到的信息回显传输给上层应用。ide

wKioL1Zzj3_i_-sRAAAsd8elr2M382.png

TTL是IP包头的一个字段,用于表示该数据包在网络里存活了多久,通常根据系统不一样,初始的TTL值也不尽相同。例如在windows 10里,TTL通常设置为64。IP采用这个机制主要是为了防环,数据包每通过一个设备,TTL都会减一,也就是说,该数据包在网络里最多能有64跳,固然已经这足够用了。当TTL被最终减到1或0时,接收设备就不会再次转发该数据包,而是丢弃,而后给发送该数据包的源主机发送一个icmp Time-to-live exceeded(type:11,code:0)报文,也就是告诉源主机:“你的数据包死掉啦,重传仍是改变ttl你本身看着办吧!”工具

Tracert就巧妙的运用了以上两种技术,实现了对路径的识别。Tracert选取icmp协议(linux下traceroute使用udp协议,高端口号),当个人PC Tracert一个IP地址时,pc向目的ip发送一份icmp request(type:8,code0)报文,可是tracert程序会把该数据报的ttl设置1。什么,那不就发送不出去了吗?是的,tracert原本也没想直接就能送达到目的主机,他要的是什么?他要的是差错报文消息!性能

这样一来,第一跳设备就会给源主机回复一个icmp Time-to-liveexceeded(type:11,code:0)告诉源主机,你的ttl超时啦!tracert记录下时间,再重复两次该过程,如此以来,tracert就完成了第一跳信息的收集。接下来,tracert会把第二个数据报ttl设置为2,第三个数据报ttl设置为3,依次类推,直到某个数据报收到icmp replay(type:0,code0),连续收到3次后,最终认为tracert已经完成。测试

2、tracert抓包分析网站

接下来咱们看看数据包收发过程是否像我说的那样。spa

wKiom1Zzj3SzS6nPAAEzuHf9Otg421.png

ttl=1,ttl=2,ttl=3……咱们能够看到每一个数据包都发送了3次,而每次都收到了icmp Time-to-live exceeded 消息。

wKiom1Zzj3TzL4ryAADuD1tHVAY513.png

    可是也有没有收到icmp Time-to-liveexceeded 消息的,这将被tracert认为是未收到回应,将显示*号,请求超时。

wKioL1Zzj4DTiywEAAAhl07Ajd0809.png

当成功收到来自119.75.217.109的icmp replay时,则认为追踪完成。

wKiom1Zzj3WgtouAAACRhQAwXfw599.png

3、Tracert排障应用

原理咱们懂了,如何排除故障就简单了。根据案例分析,咱们到达目的地址119.75.217.109总共经历了8跳,可是有人要问了,为何8跳延迟没什么规律呢?其实,延迟除了由线路转发设备决定,也受回包设备的性能影响。如今的网络设备都是控制层面和转发层面分离,控制层面能够理解为一个小电脑,转发层面由控制层面进行控制,可是控制层面出问题短期不必定会影响转发层面转发。有点绕对不?

通常设备上的cpu主频比较低,再加上还要处理一些路由协议之类的信息,因此有可能回复的就慢一些,由于icmp协议处理的优先级比较低。因此通常而已,负载高的设备回复ping延迟高一些,负载低的设备回复ping延迟低一些。

因此,但只是根据延迟判断网络问题是不靠谱的。

wKioL1Zzj4CxXxLrAABbU6Tk38w687.png

如图所示,延迟到了16跳的时候,直接增长了200ms左右,并且后面的设备回应都大于200ms了,也就是说这一跳的设备要不是带宽负载太高,要不就是有限制。固然根据ip地址分析了下,15-16跳估计到国际出口了,带宽不足正常现象。可是若是假设这些延迟增高现象是发生在你本身的网络里的话,那你可就得当心了。

相关文章
相关标签/搜索