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 开始 |
ttl | Time To Live,每经过一个路由器减 1,到 0 就丢包。用来防环路 |
time | 往返时间 RTT,单位 ms |
packet loss | 丢包率,0% 最好,高丢包率说明网络不稳定 |
min/avg/max/stddev | RTT 的统计值,stddev 大说明延迟抖动大 |
5. 常见场景与判断
| 现象 | 可能原因 |
|---|---|
Request timeout | 对方没回 / ICMP 被防火墙挡 / 路由不通 |
Unknown host | DNS 解析失败,域名拼错或 DNS 服务器问题 |
| 高丢包率 | 网络拥塞、Wi-Fi 信号差、中间路由问题 |
| RTT 忽高忽低 (stddev 大) | 网络抖动严重,实时应用(视频/游戏)会卡 |
| TTL 过小或递减异常 | 路由环路或目标距离过远 |
6. 排查网络问题的典型顺序
ping 127.0.0.1— 本机 TCP/IP 协议栈是否正常ping 8.8.8.8— 本机到外网是否通(跳过 DNS)ping example.com— DNS 解析是否正常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 时接着用)