还是用的ICMP协议,因为ICMP是IP的上层协议,而IP里有TTL字段,trace主要就是用来查路由信息的。原理大概是这样:
你输入tracert命令后,它会先发一个TTL为1的数据包出去,到了第一个路由器,TTL减1变成0,路由器就把这个包丢掉,并返回一个超时信息,这样就知道第一个路由器的地址和延迟时间了;接着发TTL为2的包,就会卡在第二个路由器,同样也能拿到时间和地址……以此类推,直到数据包到达目标主机。这时候主机会回一个端口不可达的信息,tracert就根据这个算出总耗时。整个过程走下来,中间经过的每个路由器都会被显示出来。
你输入tracert命令后,它会先发一个TTL为1的数据包出去,到了第一个路由器,TTL减1变成0,路由器就把这个包丢掉,并返回一个超时信息,这样就知道第一个路由器的地址和延迟时间了;接着发TTL为2的包,就会卡在第二个路由器,同样也能拿到时间和地址……以此类推,直到数据包到达目标主机。这时候主机会回一个端口不可达的信息,tracert就根据这个算出总耗时。整个过程走下来,中间经过的每个路由器都会被显示出来。