WINDOWS平台命令:

tracert

LINUX平台命令:

traceroute

简介:

Tracert(traceroute) 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。用来跟踪到目的IP所经过路径

原理简介

首先,tracert送出一个TTL是1的IP 数据包到目的地,当路径上的第一个路由器收到这个数据包时,它将TTL减1。此时,TTL变为0,所以该路由器会将此数据包丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),tracert 收到这个消息后,便知道这个路由器存在于这个路径上,接着tracert 再送出另一个TTL是2 的数据包,发现第2 个路由器…… tracert 每次将送出的数据包的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个数据包 抵达目的地。

LINUX下的目的地到达判断方法:

当数据包到达目的地后,该主机则不会送回ICMP time exceeded消息,一旦到达目的地,由于tracert通过UDP数据包向不常见端口(30000以上)发送数据包给目的主机,因此会收到「ICMP port unreachable」消息,故可判断到达目的地。

WINDOWS下的目的地到达判断方法

发送的报文如果到达终点,会向目的地地址发送ICMP请求回显数据包

注意:

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

示例如下:

在windows cmd命令窗口执行命令tracert www.baidu.com,结果如下:

过程分析如下:

1)解析域名,主机发起查询DNS记录,并将请求转到网关处理(网关代理),网关返回域名的对应的IP

2)主机发送TTL=1, 等待第一个路径节点(一般是网关)返回ICMP time exceeded消息到主机后,再次发送TTL=2的请求

3)第二个路径节点返回ICMP time exceeded消息到主机后,再次发送TTL=3的请求

4)路径不可达,则会在cmd窗口打印* * *,然后将TTL+1,如下所示:

5)tracert发送的报文如果到达终点,会向目的地地址发送ICMP请求回显数据包,如下图所示:

如需看原文请参考我的博客:

https://blog.csdn.net/God_luck/article/details/83548090