tracert 路由追踪原理

一、概念

就是利用ICMP(Internet Control Message Protocol)Internet控制报文协议 来追踪的计算机到目标计算机之间的所有路由器信息

二、不同平台下命令方式

  • windows下: tracert www.baidu.com
  • linux下 traceroute www.baidu.com

三、基于方式

  • UDP(user datagram protocol)--linux下
  • ICMP 回显 ---Windows下

四、TTL解释

Time To live(存活时间),TTL=1代表允许通过的最大链路

image

四、实现过程

  • 命令行输入 tracert www.baidu.com
  • 先会触发DNS请求,去解析www.baidu.com 的ip地址
  • 获取到目标IP后,客户端就会向目标IP发送ICMP请求回显报文,并在ip首部设置TTL的值为1,当到达第一个路由节点后,路由节点根据目标ip,决定要转发出去时,就会将TTL值减去1,发现1-1=0,就超时了,路由器就会返回一次ICMP的超时错误信息,客户端收到后就会判断是不是回显应答报文
  • 如果不是回显应答报文,客户端就会继续发送,而此时ICMP报文的TTL值就为2了,就可以通过2个节点了
  • 依次进行。。。直到收到ICMP回显应答报文

五、示例

  1. 过程1
    image

  2. 过程2
    image

  3. 过程3
    image

  4. 过程4
    image

六、linux基于udp的模式

原理类似,只是不是基于icmp请求回显、回显应答的模式,但是每次都是通过TTL值的递增关系,来追踪路由器的情况

  • linux 发送的udp 端口号默认是大于30000,为什么发送这么大呢?
    • 因为一般目标服务器监控的端口一般都比较小,比如80 443,这样做就是为了区分
    • 当达目标主机的时候,目标主机只能发送一个端口不可达的ICMP数据报给客户端。客户端就知道跑拢了
      image
posted @   弩哥++  阅读(75)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示