ping 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
ping——网络基础命令族(见网络基础与远程访问命令族)。排网络的第一反应往往就是它:通不通、延迟多少、丢不丢包。
ping 通过发送 ICMP Echo 请求报文并等待回显,测试到目标主机的连通性和往返延迟(RTT)。
一、基本用法
bash
ping 8.8.8.8 # 持续 ping,直到 Ctrl-C
ping -c 4 example.com # -c 只发 4 个包就停(脚本里必加,否则不返回)
ping -i 0.2 example.com # -i 设发包间隔为 0.2 秒(默认 1 秒)
ping -s 1472 example.com # -s 设包大小(payload,不含 IP/ICMP 头)交互用默认持续 ping 看实时延迟;脚本里务必加
-c,否则 ping 永不退出、脚本卡死。-c 4发 4 包后自动停并打印统计(丢包率、平均 RTT)。
二、看关键信息
bash
ping -c 10 example.com
# 64 bytes from ...: icmp_seq=1 ttl=56 time=23.4 ms
# --- example.com ping statistics ---
# 10 packets transmitted, 10 received, 0% packet loss, time 9012ms
# rtt min/avg/max/mdev = 22.1/23.8/26.0/1.1 ms三件事要看:① 丢包率(packet loss)高说明链路不稳;② 平均 RTT(avg)反映延迟;③ mdev(均值偏差)反映抖动——抖动大比单纯延迟高更影响体验(视频卡顿)。
ttl可粗略判断经过的跳数/操作系统。
三、踩坑:ping 通 ≠ 服务可用
bash
ping db-host # 通,但 3306 端口可能根本没开
# 连通性只证明网络层可达,不证明应用层服务在ping 只测 ICMP 层。很多服务器出于安全禁了 ICMP(防火墙 drop),导致
ping不通但实际 TCP 服务正常——这时别急着断定"网络断了",改用 telnet/nc 测端口,或用 traceroute/mtr 看断在哪跳。
四、实战:拨测判断链路质量
bash
ping -c 100 -i 0.1 gateway.local # 发 100 包、间隔 0.1s,看平均延迟与抖动五、配合 TTL 与包大小测 MTU 问题
bash
ping -s 1472 -M do example.com # -M do 禁止分片,配合大包探测 MTU 是否过小导致丢包一句话总结
ping = ICMP 连通性/延迟测试:-c 限定次数(脚本必加)、-i 间隔、-s 包大小;重点看丢包率、平均 RTT、mdev 抖动。但 ping 通只说明网络层可达——禁 ICMP 或应用层故障时要用 telnet/mtr 进一步排查。