如何用Ping命令诊断网络连接状态

Ping是最古老也最实用的工具之一,能帮你快速判断连接问题是不是真实存在,以及大致出在哪个环节。

Ping通过发送ICMP回显请求来工作

ping命令会向目标地址发送一个很小的ICMP"回显请求"数据包,并测量收到"回显响应"所用的时间——这个往返时间就是ping报告的数值。

只需在终端输入一行命令即可运行

在Windows上打开命令提示符,输入"ping"加上域名或IP地址即可(例如ping google.com)。在Mac上打开终端使用同样的命令,但Mac的ping默认会持续运行直到按Ctrl+C停止,而Windows会自动发送固定次数的请求后结束。

响应时间(毫秒)反映了距离和网络拥堵程度

数值越低越好。大致参考:20毫秒以内非常优秀(通常是连接附近服务器的情况),20到100毫秒对浏览网页和视频通话来说基本没问题,持续超过150毫秒往往会让游戏、视频通话等实时应用出现明显卡顿。

丢包意味着有些请求根本没有收到回复

ping测试结果中只要丢包率高于0%,就说明有部分请求没有得到响应。偶尔的丢包可能属于正常范围,但持续几个百分点以上的丢包通常指向真实的连接问题,比如Wi-Fi干扰或网络链路过载。

TTL(生存时间)能提示路径信息,有时还能提示操作系统

每次回复中都包含一个TTL值,每经过一个路由器就会减1。将收到的TTL值与常见的初始值(64、128、255)对比,可以大致估算目标有多少"跳"之远,有时还能推测目标运行的操作系统。

Ping告诉你路径是否通畅,traceroute才能展示路径本身

Ping只报告目标是否响应以及耗时多久,并不显示具体路由。当ping发现问题时,下一步自然是用traceroute(Windows上是tracert)来查看具体是哪一跳出了问题。

Ping测试能告诉你什么,又不能告诉你什么

Ping非常适合做第一步快速诊断:目标能否连通、感觉上距离有多远。但它无法告诉你连接为什么慢——原因可能是Wi-Fi信号、运营商、网络拥堵,或者目标服务器端的问题,要排查这些都需要用到进一步的工具。

有些服务器会故意忽略Ping

"请求超时"的结果并不总是意味着服务器已经下线。出于安全考虑,许多服务器和防火墙被配置为完全忽略ICMP回显请求,所以对一个运行正常的知名网站执行ping失败并不罕见,也不一定说明存在真实问题。

常见问题

ping值高和下载速度慢是一回事吗?

不是,两者衡量的是不同的东西。ping测量的是往返延迟(latency),下载速度测量的是吞吐量(每秒到达的数据量)。一条连接可能延迟低但带宽窄,也可能反过来。

为什么每次对同一个网站执行ping,数值都不一样?

因为网络状况一直在变化。自己网络内的其他流量、Wi-Fi干扰,以及路径上任意一点的拥堵,都会导致每次ping的响应时间出现波动。