首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >计算机网络-ICMP协议(ping)

计算机网络-ICMP协议(ping)

作者头像
运维小路
发布2026-04-02 13:18:12
发布2026-04-02 13:18:12
1260
举报
文章被收录于专栏:运维小路运维小路

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

目前几乎所有的应用都会跟网络打交道,所以我们了解和熟悉网络对我们后续的排错是很有必要的,我这里讲解的部分主要是我个人理解来进行讲解。

前面介绍了TCP&和UDP都是属于应用层协议,需要有后端服务进行支撑,但是我们更多的时候首先要测试的是网络的连通性,这个并不需要需要有任何服务支持,只需要未单独屏蔽他则可(防火墙&内核都可以屏蔽)。

ICMP (Internet Control Message Protocol, 网际控制报文协议)

网络层的差错报告与诊断协议,用于反馈网络错误、测试连通性;IGMP (Internet Group Management Protocol, 网际组管理协议) 是网络层的组播成员管理协议,用于主机加入 / 离开组播组、通知路由器转发组播流量。两者同属网络层、封装于 IP 报文,但功能、报文、场景完全不同。

ICMP:网络的 “诊断医生”

1. 基本定位

层次:网络层(OSI 第 3 层),IP 协议的辅助协议

IP 协议号:1

核心作用:报告 IP 数据包传输错误(不可达、超时、参数错误)主动查询 / 诊断(连通性、路径、时间戳)不传输用户数据,只传控制 / 状态信息

2. 报文格式(固定 8 字节头部)

image
image

类型 (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端口)能正常访问,这个是最比较容易混淆的地方。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档