首页 » 技术分享 » 网络协议 -- ICMP协议(3)Tracert程序

网络协议 -- ICMP协议(3)Tracert程序

 

Tracert是windows系统提供的一个工具,使用该程序可以让我们看到IP数据报从一台主机到另一台主机所经过的路由器。Linux系统也提供了类似的工具,叫traceroute,功能和Tracert一样。

一、 Tracert原理

在介绍Tracert的原理之前,需要先弄清楚IP首部TTL字段的含义,IP报文每经过一个路由器,路由器都会将该IP报文首部的TTL字段减1,
当路由器收到一份IP数据报的TTL是0或1时,路由器此时不会转发该数据报,而会丢弃该数据报,并且给IP数据报首部中的源地址发送一份ICMP超时报文。

IP首部的定义见:http://blog.csdn.net/china_jeffery/article/details/78984477

Tracert就是利用了路由器会丢弃TTL为1或0的数据报且返回ICMP超时报文的特性,来实现侦测路由的功能。Tracert程序先发送TTL值为1的IP数据报,处理这份数据报的第一个路由器将TTL减1,丢弃该数据报并返回ICMP超时报文,这样程序就得到了第一个路由器的地址,以此方式,递增IP数据报TTL的值,直到数据报最终到达目标主机。

那么怎么判断数据报到达了最终的目标主机呢?
我们不能单纯的通过未收到路由器返回的ICMP差错报文的方式来判断数据报到达目的地了,因为有可能我们由于接收ICMP差错报文超时等原因导致我们收不到ICMP差错报文(这也是为什么我们后面会介绍每一个TTL跃点会发送3次或多次请求的原因)。windows

转载自原文链接, 如需删除请联系管理员。

原文链接:网络协议 -- ICMP协议(3)Tracert程序,转载请注明来源!

0