首页/网络/协议速查/ICMP Echo(类型 8/0)与 ping

ICMP Echo(类型 8/0)与 ping

最基础的连通性探测:请求类型 8、应答类型 0,报文含标识符与序列号,用发送/接收时间差计算 RTT。

协议速查网络更新于 2026-10-13

Echo 请求与应答

ICMP Echo 是最基础的连通性探测机制:探测方发出类型为 8 的请求报文,目标回一个类型为 0 的应答,两者都带标识符与序列号,发送端用发出时间与收到应答的时间差算出往返时延。ping 命令封装的就是这一对消息。它只能证明 IP 层可达,既证明不了端口在听,也证明不了应用正常。

基本信息

类型 8Echo Request,由探测方主动发出
类型 0Echo Reply,由目标主机回送
Identifier区分不同会话,ping 用它配对请求与应答
Sequence序列号,用来统计丢包与乱序
封装IP 协议号 1;IPv6 上对应 ICMPv6 的 128 与 129
权限Linux 普通用户即可执行,部分环境依赖 ping_group_range 设置

最小实验

最小实验
ping -c 3 1.1.1.1                                   # 最基本的三次探测
ping -c 3 -s 1200 -M do 10.0.0.9                     # 指定包大小并禁止分片,用于探测 MTU
ping -6 -c 3 2400:3200::1                            # IPv6 探测,链路本地地址要带 %eth0
tcpdump -nn 'icmp[0] == 8 or icmp[0] == 0' -c 6      # 同时抓到请求与应答,确认双向通路

ping 输出逐列读法

字段含义异常表现
icmp_seq序列号出现跳号说明中途丢包
ttl剩余跳数可用于粗略推断对端系统与经过的路由跳数
time往返时延,毫秒数值忽大忽小说明链路抖动
packet loss丢包率统计短时高丢包要与限速策略区分开
rtt min 与 avg 与 max 与 mdev时延的最小、平均、最大与偏差mdev 偏大是抖动最直接的信号
ping 通不代表服务可用:IP 层可达时目标端口仍可能没监听;ping 不通也不代表主机挂了,很可能只是链路上禁用了 ICMP 或做了限速。
云安全组与部分企业防火墙默认丢弃 ICMP,用 ping 判断主机存活在这些环境里不可靠,应改用 nc 或 curl 对业务端口做探测。
排查丢包时建议同时看两端:本端 ping 统计只能说明这条路的表现,如果对端也能 ping 本端且丢包率明显不同,说明去程与回程分别在不同设备上受限速或策略影响,单向丢包比双向丢包更常见。

易错点

  • 把 ping 通当作服务正常的依据,实际端口没监听、应用已崩溃的情况完全看不出来
  • ping 不通就去申请加白名单放行 ICMP,忽略了真正需要放行的是业务端口
  • 用 ping 测大包却不看 ICMP 需要分片的提示,把 MTU 问题误判成链路丢包
  • 在高延迟或限速链路上用 ping 的时延代表业务时延,量级差异可达数十倍,结论没有参考价值

数据来源与参考

  • RFC 792
  • RFC 1122 §3.2.2.6

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌