作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

目前几乎所有的应用都会跟网络打交道,所以我们了解和熟悉网络对我们后续的排错是很有必要的,我这里讲解的部分主要是我个人理解来进行讲解。
前面介绍了TCP&和UDP都是属于应用层协议,需要有后端服务进行支撑,但是我们更多的时候首先要测试的是网络的连通性,这个并不需要需要有任何服务支持,只需要未单独屏蔽他则可(防火墙&内核都可以屏蔽)。
ICMP (Internet Control Message Protocol, 网际控制报文协议)
网络层的差错报告与诊断协议,用于反馈网络错误、测试连通性;IGMP (Internet Group Management Protocol, 网际组管理协议) 是网络层的组播成员管理协议,用于主机加入 / 离开组播组、通知路由器转发组播流量。两者同属网络层、封装于 IP 报文,但功能、报文、场景完全不同。
ICMP:网络的 “诊断医生”
1. 基本定位
层次:网络层(OSI 第 3 层),IP 协议的辅助协议
IP 协议号:1
核心作用:报告 IP 数据包传输错误(不可达、超时、参数错误)主动查询 / 诊断(连通性、路径、时间戳)不传输用户数据,只传控制 / 状态信息
2. 报文格式(固定 8 字节头部)

类型 (Type, 1B):功能大类(如 8 = 回显请求、0 = 回显应答、3 = 目的不可达、11 = 超时)
代码 (Code, 1B):细分类型(如 Type=3 时,Code=0 = 网络不可达、Code=1 = 主机不可达)
校验和 (Checksum, 2B):报文完整性校验
可变字段 (4B):标识符、序号(用于请求 / 应答匹配)
数据部分:出错 IP 报文首部 + 前 8 字节数据
3. 两大报文类型
(1) 差错报告报文(被动)
类型 3:目的不可达 (Destination Unreachable)网络 / 主机 / 端口不可达、协议不可达、需分片但 DF 置位。
类型 11:超时 (Time Exceeded),TTL=0 被丢弃、分片重组超时(Traceroute 核心)。
类型 12:参数问题 (Parameter Problem),IP 首部字段错误。
(2) 查询报文(主动)
类型 8/0:回显请求 / 应答 (Echo Request/Reply),Ping 命令:测试连通性、往返时延。
类型 13/14:时间戳请求 / 应答测时钟同步、链路延迟
4. 典型应用
Ping:发 Echo Request,收 Echo Reply → 连通性 + RTT,Linux进阶-PING命令。
Traceroute:逐次发 TTL=1、2、3… 的包 → 每跳返回 ICMP 超时 → 路径可视化
路径 MTU 发现:需分片但 DF=1 → 返回 “目的不可达(需分片)”
其实前面说了这么多,这个协议在实际的运维当中就是ping用来探测网络的连通性。
正常返回:并且延迟很低,如果实际大于100ms甚至更高,那么这个网络一般就不是很好。

非正常返回:但是这个并不一定代表实际不通,只是代表icmp协议不通(有可能真的不通,也可能是防火墙或者内核屏蔽)。

还有一种就是一会通,一会不通(如果ping多个会更明显),这个可能代表我们前面讲过的arp协议ip冲突,也可能是网络情况不好(比如带宽有限或者系统繁忙)。
总结
在实际情况中,ping能通只代表网络连通性没有问题,不代表实际应用(比如web的80端口)能正常访问,这个是最比较容易混淆的地方。