网络不通使用的PING命令是用的什么协议?

 几乎每一名网工及弱电工程师都遇到过网络不通的情况,通常判断标准是以外网连通性及Ping测试得出结果,而ping属于ICMP协议中的一个工具。今天讲一下ICMP个协议。文末为本周福利。兄弟们记得看完哦。

因特网控制消息协议:ICMP 为控制层面协议;IPv4协议为面向无连接协议,而ICMP是协助IPv4,用于检测三层网络的连通性、差错提示和路径优化(重定向Redirect)。

报文封装:Ethernet2/IPv4/ICMP/FCS(IP协议号1)

网络不通使用的PING命令是用的什么协议?_第1张图片

注:Type:类型  Code:编码  checksum:ICMP报文校验

ICMP消息类型和编码类型(Code);目的不可达报文、源端抑制报文、超时报文、参数问题、改变路由、回送请求和回答、时间戳请求和回答、地址掩码请求和回答、路由询问和通告;部分如下:

网络不通使用的PING命令是用的什么协议?_第2张图片

Ping命令:Echo Request 回声请求

Echo Reply   回声应答

网络不通使用的PING命令是用的什么协议?_第3张图片

Traceroute命令:路由跟踪

报文封装:Ethernet 2/IPv4/UDP/Traceroute/FCS UDP 端口号33434

原理:Traceroute 命令用TTL字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。首先Traceroute送出一个TTL是1的IP 数据包到目的地,当路径上的第一个路由器收到这个数据包时,分组改写引擎将TTL减1。此时,TTL变为0,所以该路由器会将此数据包丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),Traceroute收到这个消息后,便知道这个路由器存在于这个路径上,接着Traceroute 再送出另一个TTL是2 的数据包,发现第2 个路由器...... Traceroute 每次将送出的数据包的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个数据包抵达目的地。当数据包到达目的地后,该主机则不会送回ICMP time exceeded消息,一旦到达目的地,由于Traceroute通过UDP数据包向不常见端口号33434发送数据包,因此会收到「ICMP port unreachable」消息,故可判断到达目的地。

网络不通使用的PING命令是用的什么协议?_第4张图片

注:Traceroute 1.1.1.1 source 2.2.2.2 指定源地址Traceroute目的地址,思科带源Traceroute的源地址必须是该路由器的接口地址,防止DDOS攻击。

513ba8f17dad00819158eb0bfd509b48.png

往期推荐

MySQL中使用“utf8”的坑有多少人遇到过,下次注意记得用“utf8mb4”

为啥微信有扫一扫登录,而我们没有?从0到1搞定扫码登录(附源码)

面试官:请你说说k8s 和 Docker的区别?

架构师:关系型数据库设计技巧?

面试官:给我讲讲你的项目是怎么性能优化的?

怎么样通过Nginx实现限流?

非常nice的分布式事务方案总结

精髓!深入浅出剖析12个Zookeeper知识点

12306 支撑百万 QPS 的核心秘诀!

MyBatis 的执行流程,面试的时候用得上

高频 MySQL 面试题,看看是不是都会了?

网络不通使用的PING命令是用的什么协议?_第5张图片

你可能感兴趣的:(路由器,网络,数据库,java,网络协议)