实战

ping example.com
ping -c 4 example.com               # 4 次后停
ping -i 0.5 example.com             # 间隔 0.5 秒
ping -W 2 example.com               # 单包超时 2 秒
ping -s 1024 example.com            # 大包测试
ping6 ipv6.google.com               # IPv6
ping 192.168.1.1                    # 直接 IP

看什么

PING example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=42.3 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=41.8 ms
...
--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3008ms
rtt min/avg/max/mdev = 41.5/42.0/42.6/0.4 ms

关键看:

  • 是否有回包time= 出现)
  • 丢包率X% packet loss
  • 延迟time= 数字)

常用参数

参数 含义
-c N 发 N 个包后停
-i S 包间隔 S 秒(可小数)
-W N 等回包超时 N 秒
-w N 整个 ping 超时 N 秒
-s N 包大小 N 字节
-q 安静(最后才出汇总)
-n 不解析 IP 为名字
-D 显示时间戳
-f flood(快速 ping,仅 root

实战场景

# 测网关
ping -c 4 $(ip route | awk '/default/{print $3}')

# 多目标快速试
for h in google.com baidu.com github.com; do
    if ping -c 1 -W 1 "$h" >/dev/null 2>&1; then
        echo "$h ✓"
    else
        echo "$h ✗"
    fi
done

# 持续监控(每 5 分钟 1 次)
ping -i 300 example.com | while read line; do
    echo "$(date) - $line"
done > ping.log

ping 不通可能的原因

  1. 对方真挂了
  2. 中间网络断
  3. 对方禁了 ICMP 响应(很常见——很多服务器把 ping 关了)
  4. 防火墙拦
  5. DNS 不解析(用 IP 试)

ping 不通 ≠ 服务不通——很多服务器禁 ping 但 80 端口照样开。curl -Inc -zv 测真正的服务端口

ICMP 阻塞时的替代

nc -zv example.com 443          # 测 TCP 443
curl -I https://example.com     # 测 HTTPS

  • ping 用 ICMP——TCP 服务是否能连完全是另一回事
  • macOS / Windows 的 ping 默认行为不同(包数、间隔)
  • 高 RTT 的链路 ping 不丢包不等于带宽够——只能说连通性 OK