Tracert是一种网络诊断工具,用于确地数据包从源主机到目标主机沿途经过的路由路径。其工作原理基于IP协议中的生存时间(Time-to-live,TTL)字段和ICMP(Internet Control Message Protocol)错误消息。下面是Tracert的工作过程:
1.初始化与发送:当在源主机上执行Tracert命令并制定一个目标地址时,Tracert首先会发送一个TTL值为1的UDP数据包(实际上,有些实现可能会使用ICMP Echo Request数据包)到目标地址。使用UDP数据包是因为它不需要响应,而我们关心的是沿途中路由器的行为。
2.TTL递增与路由器跟踪:当这个数据包到达网络中的第一个路由器时,路由器会减去数据包头部的TTL值。由于初始TTL为1,减去TTL变为0.这导致路由器丢弃该数据包,并根据ICMP协议向源端口发送一个“Time Exceeded”的错误信息。这个消息中包含了路由器的IP地址,这时Tracert能够记录下来的第一跳信息。
3.连续追踪:Tracert接下来会发送一个TTL值为2的数据包,这次它会通过第一跳路由器,并在第二跳路由器处因TTL到期而被丢弃,同样返回一个ICMP Time Exceeded消息。这个过程会持续进行,每次发送的TTL值加1,直到数据包到达目标地址或达到用户设定的跃点限制。
4.目标响应或达到最大TTL:如果数据包成功到达目标地址,目标要么响应(如果是UDP数据包,则目标通常没有监听该端口,因此会返回一个ICMP Port Unreachable错误),要么在之前的某个路由器就达到了用户设定的最大TTL值仍未到达目标,则追踪结束。
5.输出展示:Tracert命令的输出会显示每个跃点的IP地址以及到达每个跃点的大致延迟时间 。这些信息帮助网络管理员或用户诊断网络连接问题,了解数据包的传输路径及可能存在的延迟点。
通过这个逐步增加TTL值的过程,Tracert能够构建出数据包从源到目的地的完整路由路径。
-
起点: 我的本地网络开始跟踪至目标
www.baidu.com
,该域名解析到了IP地址183.2.172.42
,并且显示为www.a.shifen.com
,这表明百度使用了DNS负载均衡或者域名别名技术,www.baidu.com
可能指向了多个实际的服务器地址之一。 -
第一跳: 数据包从我的设备出发,首先进入局域网的默认网关,IP地址为
10.11.0.1
,延迟较低,约为3-8毫秒。 -
第二跳: 紧接着数据包到达下一个节点,IP地址
10.0.0.2
,延迟非常低,约为1毫秒,这也是本地网络内部或非常接近出口的设备。 -
第三至第十跳: 从这里开始,连续8个跃点都显示为请求超时(
*
),这可能意味着以下几个情况: -
这些中间路由器配置为不响应ICMP TTL超时报文,这是一种常见的安全措施。为了安全考虑,许多网络管理员会配置路由器和防火墙不响应ICMP(Internet Control Message Protocol)的Time Exceeded消息,这是Traceroute(Tracert)操作中用来探测路径的关键机制。这样做可以减少对外暴露网络架构的细节,提高安全性。
-
路由器可能因为网络拥堵或其他原因没有足够资源处理并回应这些ICMP请求。
-
存在网络路径中的问题,比如临时的链路故障或配置错误,导致数据包无法正常转发。
-
第十一至第十二跳: 经过一系列未响应的跃点后,数据包最终成功到达了目的地
183.2.172.42
,延迟为34毫秒。虽然中间有一些环节未给出反馈,但数据包还是找到了通往目标的路径。
注:因为像百度这样的大型互联网服务提供商,其网络架构复杂且遍布全球,其网络设备(尤其是核心路由器和边界设备)为了安全和防止DDoS攻击等目的,往往会配置成不响应或限制ICMP回显及TTL超时响应。