动态图解 | 9分钟让你明明白白看懂Traceroute(路由追踪)的原理与实现

简介: 动态图解 | 9分钟让你明明白白看懂Traceroute(路由追踪)的原理与实现


目录


关于ICMP协议,本期就不在这里具体介绍,这里只是简单回顾一下报文类型。ICMP报文大致3大类,当然也可以分为2类:查询报文和差错报文。(也就说,一个ICMP报文,要么是查询报文,要么就是差错报文。)


ICMP分3大类



ICMP报文类型

ICMP 报文由首部和数据组成。首部为定长8字节(前4字节是通用部分,后4字节随类型不一样有所差异。)ICMP报文的一般格式如图所示:



tracert会用到的报文如下:









tracert原理除了会涉及上述报文,还涉及到一个机制,就是IP报文首部的TTL字段:


TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4报头的一个8 bit字段。TTL的作用是限制IP数据包在计算机网络中的存在的时间。TTL的最大值是255,TTL的一个推荐值是64。




traceroute的实现原理,有两种方法:1、基于UDP报文实现的;2、基于ICMP报文实现。接下来分别与大家介绍一下这2种方法是如何实现的?


基于UDP报文的traceroute是这样实现的:让你在客户端输入 traceroute 命令+ip时, 客户端就发起一个UDP报文,使用一个大于30000的端口号(选这么端口号,目的端一般都是未使用,所以待会就收到一个端口不可达信息。)这样子,服务器端收到这个UDP报文后就会返回ICMP端口不可达的错误信息。同时,第一个数据包,TTL=1,这样第一跳路由器收到后,要转发出去时,会将TTL减一,即TTL=0, 就丢弃,然后第一跳路由器就返回一个ICMP超时的错误信息,所以,客户端通过判断收到ICMP端口不可达报文来确定数据包已到达目的地,如果是收到ICMP超时错误信息报文,说明还没到达目的地,就会将TTL加1,以此类推。


下面,龙哥将通过动态图给大家演示,traceroute基于UDP的实现原理:希望大家看完能更加直观地掌握。




1、客户端发送第一个端口大于30000,TTL=1的UDP数据报文,第1跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=0,就丢弃该数据包,并向客户端返回TTL超时的ICMP报文。客户端收到,TTL超时ICMP报文,从报文里面的源地址,得到第1跳地址:10.10.10.10






2、由于客户端发现还没收到端口不可达的ICMP报文,于是继续尝试发送,端口号比上次发送的进行加1,TTL也进行加1。第1跳路由器收到后,根据目的地址进行转发,转发出去时,TTL减1,减完后TTL=1。第2跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=0,就丢弃该数据包,并向客户端返回TTL超时的ICMP报文。


客户端收到,TTL超时ICMP报文,从报文里面的源地址,得到第2跳地址:20.20.20.20




3、由于客户端仍然还没收到端口不可达的ICMP报文,于是继续尝试发送,端口号比上次发送的进行加1,TTL也进行加1。第1跳路由器收到后,根据目的地址进行转发,转发出去时,TTL减1,减完后TTL=2。第2跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=1, TTL不是0,路由器就继续转发。数据包终于到达服务器啦!服务器查看目的地址,就是找我的,于是继续解封装,查看UDP报文的数据部分,发现端口号不可达,于是向客户端发送一个 端口不可达的ICMP报文。


客户端收到,端口不可达的ICMP报文,确认UDP数据包已成功到达服务器了,traceroute结束,并记录源IP地址:192.168.2.1



这一次,我们不再使用UDP报文了,而是使用ICMP的回显请求和回显应答这两种报文。原理跟 前面介绍UDP差不多,换汤不换药。


基于ICMP报文的traceroute是这样实现的:让你在客户端输入 traceroute 命令+ip时, 客户端就发起一个ICMP回显请求报文,第一个数据包,TTL=1,这样第一跳路由器收到后,要转发出去时,会将TTL减一,即TTL=0, 就丢弃,然后第一跳路由器就返回一个ICMP超时的错误信息,客户端收到后,会判断是否收到ICMP 回显应答 报文? 如果还没收到,就会继续发送回显请求报文,TTL加1进行尝试,当到底服务器后,服务器就会发送ICMP 回显应答报文。




1、客户端发送第一个TTL=1的ICMP 回显请求报文,第1跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=0,就丢弃该数据包,并向客户端返回TTL超时的ICMP报文。客户端收到,TTL超时ICMP报文,从报文里面的源地址,得到第1跳地址:10.10.10.10




2、由于客户端发现还没收到回显应答 的ICMP报文,于是继续尝试发送,TTL进行加1。第1跳路由器收到后,根据目的地址进行转发,转发出去时,TTL减1,减完后TTL=1。第2跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=0,就丢弃该数据包,并向客户端返回TTL超时的ICMP报文。


客户端收到,TTL超时ICMP报文,从报文里面的源地址,得到第2跳地址:20.20.20.20




3、由于客户端仍然还没收到 回显应答 的ICMP报文,于是继续尝试发送,TTL进行加1。第1跳路由器收到后,根据目的地址进行转发,转发出去时,TTL减1,减完后TTL=2。第2跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=1, TTL不是0,路由器就继续转发。数据包终于到达服务器啦!服务器查看目的地址,就是找我的,于是继续解封装,查看IP数据部分(ICMP),发现是回显请求的ICMP报文,于是向客户端发送一个 回显应答的ICMP报文。


客户端收到,回显应答的ICMP报文,确认UDP数据包已成功到达服务器了,traceroute结束,并记录源IP地址:192.168.2.1





配置很简单,这里不再列出。

1、配置直连接口IP地址、设备名。2、把路由打通,我随便配了OSPF路由协议,全网可达就行。






R1处抓包:TTL=1 , ICMP请求报文。


PC1收到TTL 超时报文:


实现中,traceroute每次会发3个同样的数据包,这里只列举一个。




R1处抓包:TTL=2, ICMP请求报文。


R2处抓包:TTL=1, ICMP请求报文。


PC1收到的TTL 超时报文:



中间的多跳路由器,收到的ICMP 回显请求报文,这里不在列举。这列举一下,PC1收到的回显应答报文:




2、在路由器上R1 tracert PC 2,然后再每个进方向的接口处抓包:






发送UDP报文,TTL=1 ,端口号 33434


收到TTL超时报文,并且会把刚刚请求报文的头部信息放在数据部分:



每一次会发3个同样的UDP报文,TTL一样,端口会再上一个基础上加1::


发送UDP报文,TTL=2,端口号 334347


第2跳路由器收到的UDP报文:TTL=1,端口号 334347


PC1收到的TTL 超时报文:



中间的多跳路由器,收到的很多UDP报文,这里不在列举。这列举一下,PC1收到的端口不可达报文:



相关文章
|
算法 数据库 计算机视觉
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
|
11月前
|
运维 网络协议 Ubuntu
Linux网络路径追踪利器(手把手教你使用traceroute命令)
教程来源https://www.vps5.cn/本文介绍Linux下的网络诊断工具traceroute,帮助用户了解数据包从本机到目标主机的完整路径。通过分析每跳的响应时间与IP,快速定位网络延迟或中断问题。涵盖安装方法、基本用法、常用参数及实际应用场景,是运维和网络排查的必备技能。
|
监控 网络协议 安全
Tcpdump简直就是命令行抓包中的神!
【10月更文挑战第32天】
1599 1
Tcpdump简直就是命令行抓包中的神!
|
12月前
|
存储 数据采集 人工智能
当数据湖遇上数据仓库:不是对立,而是走向“湖仓一体”的未来
当数据湖遇上数据仓库:不是对立,而是走向“湖仓一体”的未来
772 11
|
Windows
Microsoft Activation Scripts v3.6 (MAS)激活工具安装教程!中文汉化版(激活工具)
Microsoft Activation Scripts v3.6(MAS)是一款开源、轻量级的批量激活工具,支持HWID、KMS38、TSforge等多种方式,可离线永久激活Win7至Win11及Office全系列。兼容旧系统如Vista,操作简单,无误报风险。
15347 1
|
canal 关系型数据库 MySQL
数据同步神器-Canal
Canal是阿里巴巴开源的MySQL增量日志解析工具,通过模拟MySQL主从复制机制,实时捕获数据库变更,实现数据同步至Kafka、Elasticsearch等系统,广泛应用于数据同步、监控、备份与迁移场景。
8453 5
|
缓存 网络协议 网络架构
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
本文详细介绍了如何使用网络抓包工具Wireshark进行网络抓包分析,包括以太网v2 MAC帧、IP数据报、ICMP报文和ARP报文的格式,以及不同网络通信的过程。文章通过抓包分析展示了IP数据报、ICMP数据报和ARP数据报的具体信息,包括MAC地址、IP地址、ICMP类型和代码、以及ARP的硬件类型、协议类型、操作类型等。通过这些分析,可以更好地理解网络协议的工作机制和数据传输过程。
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
|
存储 设计模式 测试技术
了解三层架构:表示层、业务逻辑层、数据访问层
了解三层架构:表示层、业务逻辑层、数据访问层
9014 0
|
存储 负载均衡 中间件
Nginx反向代理配置详解,图文全面总结,建议收藏
Nginx 是大型架构必备中间件,也是大厂喜欢考察的内容,必知必会。本篇全面详解 Nginx 反向代理及配置,建议收藏。
Nginx反向代理配置详解,图文全面总结,建议收藏
|
负载均衡 安全 网络安全
什么是 Traceroute?为什么要使用它?
【8月更文挑战第31天】
1958 1