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代表允许通过的最大链路
四、实现过程
- 命令行输入
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
-
过程2
-
过程3
-
过程4
六、linux基于udp的模式
原理类似,只是不是基于icmp请求回显、回显应答的模式,但是每次都是通过TTL值的递增关系,来追踪路由器的情况
- linux 发送的udp 端口号默认是大于30000,为什么发送这么大呢?
- 因为一般目标服务器监控的端口一般都比较小,比如80 443,这样做就是为了区分
- 当达目标主机的时候,目标主机只能发送一个端口不可达的ICMP数据报给客户端。客户端就知道跑拢了
本文来自博客园,作者:弩哥++,转载请注明原文链接:https://www.cnblogs.com/bangbangzoutianya/p/17705422.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」