Ping

1. 定义

Ping 是最基础的网络诊断工具,用来测试本机到另一台主机之间的网络连通性。 本质上是发一个 ICMP Echo Request 包过去,等对方回一个 ICMP Echo Reply,测出往返时间 (RTT) 和丢包率。

Ping 不是端口扫描工具,它走的是 ICMP(网络层,IP 同层),不涉及 TCP/UDP 端口。所以”ping 不通”≠“对方服务挂了”,可能只是 ICMP 被防火墙挡了。

2. 工作原理

本机 ──ICMP Echo Request──> 目标主机
本机 <──ICMP Echo Reply──── 目标主机
  • ICMP (Internet Control Message Protocol) 是 IP 层的协议,没有端口概念
  • Ping 每发一个包,记录发出时间和收到回复时间,差值就是 RTT (Round-Trip Time)

3. 基本用法

ping example.com              # 一直 ping,Ctrl+C 停止(Linux/Mac 默认)
ping -c 4 example.com         # 只发 4 个包后停止
ping -i 0.5 example.com       # 每 0.5 秒发一次(默认 1 秒)
ping -s 1000 example.com      # 指定包大小 1000 字节(默认 56 字节 payload)
ping -W 2 example.com         # 等待回复超时 2 秒
ping 8.8.8.8                  # 直接 ping IP,跳过 DNS,用来区分是 DNS 问题还是网络问题

4. 输出怎么读

64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=12.3 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.8 ms
^C
--- example.com ping statistics ---
4 packets transmitted, 4 received, 0.0% packet loss
round-trip min/avg/max/stddev = 11.8/12.1/12.5/0.3 ms
字段含义
icmp_seq第几个包,从 0 开始
ttlTime To Live,每经过一个路由器减 1,到 0 就丢包。用来防环路
time往返时间 RTT,单位 ms
packet loss丢包率,0% 最好,高丢包率说明网络不稳定
min/avg/max/stddevRTT 的统计值,stddev 大说明延迟抖动大

5. 常见场景与判断

现象可能原因
Request timeout对方没回 / ICMP 被防火墙挡 / 路由不通
Unknown hostDNS 解析失败,域名拼错或 DNS 服务器问题
高丢包率网络拥塞、Wi-Fi 信号差、中间路由问题
RTT 忽高忽低 (stddev 大)网络抖动严重,实时应用(视频/游戏)会卡
TTL 过小或递减异常路由环路或目标距离过远

6. 排查网络问题的典型顺序

  1. ping 127.0.0.1 — 本机 TCP/IP 协议栈是否正常
  2. ping 8.8.8.8 — 本机到外网是否通(跳过 DNS)
  3. ping example.com — DNS 解析是否正常
  4. ping 局域网网关 — 局域网段是否正常

这是经典的”由近到远”排查法:先确认本机没坏,再确认能出本机,再确认能解析域名,再确认能到目标。

7. 常见误区

  • ❌ “Ping 不通就是对方宕机” → 很多服务器禁 ICMP 但服务正常(如某些云主机默认禁 ping)
  • ❌ “Ping 通了服务就能访问” → Ping 只测 ICMP,不测 TCP 端口。服务可能挂了但主机还能回 ping
  • ❌ “延迟低就是网络好” → 还要看丢包率和抖动 (jitter)

8. 延伸阅读 / 关联工具

  • traceroute / tracert — 看路径上每一跳的延迟,定位卡在哪一段
  • tcping — 测 TCP 端口连通性(绕开 ICMP 限制)
  • mtr — ping + traceroute 合体,实时刷新
  • nslookup / dig — DNS 诊断(ping 报 Unknown host 时接着用)