ping 是什么
ping 用 ICMP Echo Request/Reply 探测对端是否可达,是最轻量也最常用的连通性工具:本机发出一个 56 字节载荷的请求包,对端协议栈原样回包,由此得到往返时延与丢包情况。Linux 上由 iputils 提供,Windows 自带同名命令,华为 VRP、思科 IOS 等网络设备也有等价命令。它只测 IP 层可达性,不涉及端口与任何应用逻辑,因此常与 traceroute、mtr 搭配:先用 ping 判断能不能到,再用路径工具判断卡在哪一跳。
基本信息
| 适用平台 | Linux(iputils)、Windows、macOS、华为/思科等网络设备 |
|---|---|
| 协议 | ICMP Echo Request/Reply(IPv4);IPv6 用 ICMPv6,Linux 上可写 ping -6 |
| 语法 | ping [选项] 目标(域名或 IP 均可) |
| 默认行为 | Linux 每秒 1 包持续发送,Ctrl+C 结束;Windows 默认只发 4 包 |
| 常用选项 | -c 包数、-i 间隔、-s 载荷、-I 源接口、-W 单包超时、-w 总超时、-D 时间戳、-q 只留汇总 |
| 权限要求 | 普通用户即可;间隔小于 0.2 秒、洪泛等激进选项需要 root |
典型使用场景
- 判断主机是否在线:服务器割接、防火墙放行后,第一件事是 ping 一下确认可达
- 验证本机协议栈与网卡:ping 127.0.0.1 测协议栈,ping 本机地址测网卡收发
- 逐级收敛故障范围:回环、网关、公网 IP、域名逐级测试,定位断在哪一段
- 观察链路质量:长时 ping 加时间戳,看丢包是随机、周期还是与业务高峰同步
- 排除 DNS 干扰:直接 ping 一个公网 IP,能通说明网络正常、问题只在解析环节
- 配合 MTU 探测:加 -M do 与 -s 逐级加大包,找出路径上能通过的最大载荷
最小示例
最小示例
ping -c 3 example.com # 发 3 个包后停止,给出汇总统计
ping -c 10 -i 0.2 10.0.0.5 # 每秒 5 包,快速采样时延抖动
ping -D -c 100 10.0.0.5 > /tmp/p.log # -D 每行带 UNIX 时间戳,便于事后分析
ping -q -c 1000 -i 0.2 8.8.8.8 # -q 只输出汇总,长测不刷屏
ping -W 2 -w 10 10.0.0.5 # -W 单包超时 2 秒,-w 整体最多 10 秒
ping -I eth0 10.0.0.5 # 指定从 eth0 发出,验证特定网卡路径输出逐列读法
| 字段 | 含义 | 正常与异常 |
|---|---|---|
| 56(84) bytes | 载荷 56 字节,加上 8 字节 ICMP 头与 20 字节 IP 头共 84 字节 | 数字与 -s 设置一致即正常 |
| icmp_seq | 包序号,用来发现缺口 | 连续递增;跳号说明中间有丢包 |
| ttl | 回包剩余生存时间,可粗判对端系统与跳数 | 同一目标前后差异大说明路径变化 |
| time | 单个回包往返时延,单位毫秒 | 同机房常在 1 毫秒内,跨省数十毫秒,跨国百毫秒级 |
| mdev | RTT 平均偏差,衡量抖动 | 超过平均时延的两成说明抖动明显 |
| packet loss | 汇总行的丢包百分比 | 内网稳定链路应为 0,持续非零先查物理层与拥塞 |
常见返回与指向
| 返回信息 | 字面含义 | 排查方向 |
|---|---|---|
| 请求超时 | 发出去的包没有回来,或回程被丢 | 本机或对端防火墙丢弃、中间设备过滤 ICMP、链路丢包 |
| 目标主机不可达 | 本机或上一跳找不到通往目标的路径 | 本机路由与网关缺失、对端网段无回程路由 |
| 某一跳返回重定向 | 网关提示存在更优的下一跳 | 网络存在多条出口,通常反映路由设计问题 |
| 管理上被禁止 | 中间设备用策略明确拒绝 | 防火墙 REJECT 类规则,属策略问题而非链路故障 |
| 丢包但无报错行 | 部分回包被静默丢弃 | 链路质量或限速,需长时统计确认丢包比例 |
ping 通不代表服务可用:ICMP 与业务端口是两套策略,不少防火墙只放行 ICMP 或只放行端口。要确认业务,用 curl 或 nc 测实际端口与响应。
IPv6 环境用 ping -6 或系统提供的 ping6;IPv6 下 ICMPv6 属于协议本身的一部分,被整体封禁会连带影响邻居发现,排查时不要把 IPv4 的经验直接套过来。
云安全组与运营商设备常对 ICMP 限速甚至封禁:ping 不通但业务正常、或 ping 通但端口连不上,都属常见现象,不要只凭一个 ping 下结论。