1.tracert命令的作用
简单网络诊断工具,探测数据包从源地址到目的地址经过的路由器IP地址
2.实现原理
图片来自网络方便理解
-
源端(SwitchA)向目的端(日志主机)发送一个UDP报文,TTL值为1,目的UDP端口号是大于30000的一个数,因为在大多数情况下,大于30000的UDP端口号是任何一个应用程序都不可能使用的端口号。
-
第一跳(SwitchB)收到源端发出的UDP报文后,判断出报文的目的IP地址不是本机IP地址,将TTL值减1后,判断出TTL值等于0,则丢弃报文并向源端发送一个ICMP超时(Time Exceeded)报文(该报文中含有第一跳的IP地址10.1.1.2),这样源端就得到了SwitchB的地址。
-
源端收到SwitchB的ICMP超时报文后,再次向目的端发送一个UDP报文,TTL值为加一,此时为2。
-
第二跳(SwitchC)收到源端发出的UDP报文后,回应一个ICMP超时报文,这样源端就得到了SwitchC的地址(10.1.2.2)。
-
以上过程不断进行,直到目的端收到源端发送的UDP报文后,判断出目的IP地址是本机IP地址,则处理此报文。根据报文中的目的UDP端口号寻找占用此端口号的上层协议,因目的端没有应用程序使用该UDP端口号,则向源端返回一个ICMP端口不可达(Destination Unreachable)报文(该报文含有目的端的IP地址10.1.3.2)。
-
源端收到ICMP端口不可达报文后,判断出UDP报文已经到达目的端,则停止Tracert程序,从而得到数据报文从源端到目的端所经历的路径(10.1.1.2;10.1.2.2;10.1.3.2)。
有人可能疑惑最后为什么源端收到ICMP端口不可达报文后,判断出UDP报文已经到达目的端口,其实原理不难理解,因为我们用了一个不可达的端口(端口号大于30000,没有应用程序使用的端口),只要找到目的ip后就会依照端口号寻找应用程序,但此时显然找不到,所以会返回一个ICMP端口不可达报文,但我们找到目的ip地址的目的确是达到了,简单来说就是跳转到下一个路由时候,判断IP地址是否为目的IP,是就返回一个端口不可达的报文,不是就继续跳转,直到到达目的ip或者目的ip不可到达,就算结束
3.tracert命令详解
命令行输入tracert就可以打开这个选项菜单按照上述格式编写指令即可
例如我们跟踪一下www.baidu.com的路由,输入以下指令
tracert www.baidu.com
这些IP地址,一般为中国电信骨干路服务器或省级骨干或信息信息港等。那些ms结尾的是服务器返回的ttl值,这个值越小越好,越小表示延时短,访问速度就越快。
例如:
121.14.14.162 广东省广州市 电信
113.96.4.166 广东省广州市 电信
这里注意最后一个IP是目的IP地址也就是www.baidu.com的IP地址(14.215.177.38),第一个ip(192.168.93.74)是自己路由器的地址,也是第一跳的地址,从上面的图片来看我访问百度一个经过了12个路由节点,一般来说10个以内的路由节点的网站访问是很快的,15个以内的较慢,超过30个路由节点的网站认为是无法访问的网站。文章来源:https://www.toymoban.com/news/detail-782183.html
希望对各位理解tracert命令有所帮助文章来源地址https://www.toymoban.com/news/detail-782183.html
到了这里,关于一篇搞懂tracert命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!