In this Article
无论你要完成什么任务,确认主机是否可用、网络是否连通都是基本需求。而一个强大的工具其实就在你手边:ping。本文将介绍 ping 是什么、有哪些用途、如何 ping 网站、如何解读 ping 结果,以及其他可用于网络监控和故障排查的 ping 工具。
ping 是什么,为什么重要
Ping 是一种网络诊断工具。在 Windows 上,你可以在命令提示符中运行它;在 MacOS 或 Linux 上,则可以在终端中运行。在命令后输入一个空格,再输入 IP 地址或网站名称(如 dataimpulse.com),然后按 “Enter”。执行后,系统会向目标服务器或设备发送一条 Internet Control Message Protocol (ICMP) 回显请求。该请求是一个小型数据包。如果目标服务器在线且运行正常,就会返回一个回显响应包。
当你 ping 一个网站或设备时,发送的并非一条回显请求,而是多条。例如,Windows 默认会发送 4 条请求。
PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: icmp_seq=0 ttl=118 time=17.051 ms 64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=17.199 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=17.168 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=17.112 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=118 time=17.149 ms ^C --- 8.8.8.8 ping statistics --- 5 packets received 5 packets transmitted, 100.0% packet loss round-trip min/avg/max/stddev = 17.051/17.136/17.199/0.055 ms
要获得准确结果并了解网络状况,发送多条请求是必要的。
不过,你还需要知道如何解读 ping 结果。
如何解读 ping 结果
首先,我们来看看输出中每一行的含义。
接下来的几行显示目标地址的响应,并提供许多有价值的信息。首先会显示收到的响应数据包大小。在我们的示例中,数据包包含 32 字节数据。不过,请求和响应的大小可能不同,具体取决于操作系统、网络配置、响应类型等。例如,在 Windows 上,默认数据包大小为 32 字节,而在 Linux 上则为 56 或 64 字节。如果你的设备和目标设备使用不同的系统,请求包和响应包的大小可能不同。如果目标服务器没有响应,ICMP 响应可能包含 ICMP 错误消息,这也会影响响应包的大小。
下一项是时间。这是响应中最关键的部分,因为它显示请求从你的设备到目标服务器,再由响应返回你的设备所需的总时间。这称为往返时间(RTT),以毫秒(ms)为单位。一般来说,RTT 越低越好。在 ping 摘要中,你会看到最小、最大和平均 RTT 值。最小 RTT 代表最佳情况,有助于估算网络的固有延迟;平均 RTT 则反映常规网络性能。
最大 RTT 代表最坏情况。监控最大 RTT 值有助于判断网络中发生了什么问题。它可能反映数据包丢失、带宽受限或设备过载等情况。如果最大 RTT 明显高于平均 RTT,可能与路由不理想有关。最大 RTT 突然飙升,可能由网络不稳定、路由器故障或临时中断导致。若最大 RTT 极高,且单位不是毫秒而是秒,可能意味着网络路径上的某个路由器或线缆出现故障。不过,最大 RTT 偏高也可能是目标主机性能问题所致,而不一定是网络问题。
另一个指标是 Time-to-Live,即 TTL,表示一个数据包在被丢弃前最多可经过多少个路由器(跳)。TTL 值取决于操作系统。例如,在 Windows 上,默认 TTL 值为 128;在 Linux 或 MacOS 等类 Unix 系统上,该值为 64。Cisco 网络设备(如路由器)通常将 255 设为默认 TTL 值。数据包每经过一个路由器,TTL 值就减 1。在 ping 报告中,你看到的是剩余的 TTL 值。不过,如果 TTL 降至 0,路由器就不再转发该数据包,而会将其丢弃。当路由器收到 TTL 过期的数据包时,会生成 ICMP “Time Exceeded” 消息并发送到你的设备。你会看到 “Time to live exceeded” 消息。TTL 必不可少,因为它能防止网络拥塞和路由循环,即路由器无休止地转发同一个数据包。
通过分析 TTL,你或许可以推断主机的操作系统,并发现瓶颈或网络拥塞等潜在问题。此外,一些防火墙和安全设备可以修改 TTL 值,因此监控这些值有助于你更好地了解网络配置。异常高的 TTL 可能意味着数据包经过了不合适的路由。如果操作系统、应用程序和安全策略允许,你可以调整 TTL 值,例如用来找出性能较差的路由器。不过,调整 TTL 可能带来负面后果,如增加数据包丢失或引发路由问题。因此,在更改 TTL 值前,务必了解网络拓扑并有充分理由。
根据操作系统的不同,ping 结果中还可能包含其他指标。例如,MacOS 和 Linux 会为每个数据包分配一个从 0 开始的序列号,你可以在 icmp_seq 字段中找到它。
如何自定义 ping 命令?
你可以根据需要调整传统的 ping 命令。要查看可用选项,只需输入 “ping /?”(不含引号)并按 “Enter”。随后会显示可用选项的列表。
例如,在 Windows 上,发送到目标主机的默认请求数为 4。不过,你可以使用 “-n count” 选项将其设置为从 1 到 4294967295 之间的任意数字。随后系统会发送设定数量的请求,而不是默认的 4 个。
请注意,许多选项仅在你 ping IPv4 地址时有效。此外,某些选项会因所用操作系统而异。例如,如果你使用 MacOS 并想自定义请求数量,需要输入 “ping -c count hostname”。
ping -c 10 8.8.8.8 PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: icmp_seq=0 ttl=118 time=17.051 ms 64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=17.199 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=17.168 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=17.112 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=118 time=17.149 ms 64 bytes from 8.8.8.8: icmp_seq=5 ttl=118 time=17.051 ms 64 bytes from 8.8.8.8: icmp_seq=6 ttl=118 time=17.199 ms 64 bytes from 8.8.8.8: icmp_seq=7 ttl=118 time=17.168 ms 64 bytes from 8.8.8.8: icmp_seq=8 ttl=118 time=17.112 ms 64 bytes from 8.8.8.8: icmp_seq=9 ttl=118 time=17.149 ms --- 8.8.8.8 ping statistics --- 10 packets received 10 packets transmitted, 0.0% packet loss round-trip min/avg/max/stddev = 17.051/17.136/17.199/0.055 ms
要查看 MacOS 的所有可用选项,可输入 “ping -h” 查看简要说明,或输入 “ping -h extended” 查看详细列表。
ping -h
Usage: ping [-AaLnQqRrvwx] [-c count] [-i interval] [-I interface]
[-l preload] [-m ttl] [-p pattern] [-S src_addr]
[-s packetsize] [-t timeout] [-W waittime] [host]
Options:
-A Use ICMP timestamp instead of ICMP echo
-a Audible ping
-L Loose source routing
-n Numeric output only
-Q Quiet output
-q Quiet output
-R Record route
-r Bypass normal routing tables
-S Set the IP source address of the outgoing packet
-v Verbose output
-w Time to wait for a response, in seconds
-x Exclude network interfaces in the output
-c count Stop after sending count packets
-i interval Wait interval seconds between sending packets
-I interface Use interface as source interface
-l preload Send preload number of packages asap
-m ttl Set the IP Time to Live
-p pattern Fill padding bytes with the specified hexadecimal pattern
-s packetsize Specify the number of data bytes to be sent
-t timeout Specify a timeout, in seconds, before ping exits regardless of
how many packets have been received
-W waittime Time to wait for response, in seconds (after all were sent)
ping -h extended
Usage: ping [-AaLnQqRrvwx] [-c count] [-i interval] [-I interface]
[-l preload] [-m ttl] [-p pattern] [-S src_addr]
[-s packetsize] [-t timeout] [-W waittime] [host]
Options:
-A Use ICMP timestamp instead of ICMP echo
-a Audible ping
-L Loose source routing
-n Numeric output only
-Q Quiet output
-q Quiet output
-R Record route
-r Bypass normal routing tables
-S Set the IP source address of the outgoing packet
-v Verbose output
-w Time to wait for a response, in seconds
-x Exclude network interfaces in the output
-c count Stop after sending count packets
-i interval Wait interval seconds between sending packets
-I interface Use interface as source interface
-l preload Send preload number of packages asap
-m ttl Set the IP Time to Live
-p pattern Fill padding bytes with the specified hexadecimal pattern
-s packetsize Specify the number of data bytes to be sent
-t timeout Specify a timeout, in seconds, before ping exits regardless of
how many packets have been received
-W waittime Time to wait for response, in seconds (after all were sent)
Extended options:
-C Clear counters before sending
-H Print histogram of response times
-M [do|dont] Set DF bit on IP packets
-o Report outstanding replies
-O Print time-stamped output
-P [in|out] Print ICMP packets received/sent
-T [tsonly] Print timestamp(s) of returned packets
-Z Set the SO_MARK option on socket
自定义 ping 命令可以帮助你测试网络性能,更好地了解连通性,并在比较不同系统的网络性能时获得更准确的结果。
Ping 的用途
Ping 易于使用,大多数计算机都默认安装了它,无需额外工具。它免费、会定期更新,提供的信息丰富且用途广泛,包括:
– 网络连通性测试
ping 是一种简单而有效的方法,可用于检查目标主机、应用或服务是否可用,以及连接是否正常。
– 网络监控
定期 ping 有助于分析一段时间内的网络性能并建立基线,也便于识别网络规律和问题。
– 速度测量
Ping 可提供有关网络速度的详细信息,是识别潜在速度问题的有用工具。
– 故障排查
ping 可以帮助你识别问题及其根源,无论问题出在目标主机一侧,还是网络本身。其他变体同样会派上用场。
ping 命令的变体
传统的 ping 命令并不是唯一可用的选项。在某些情况下,其他变体更合适。
fping
当你需要 ping 大量主机时,fping 非常适合。你可以直接输入主机名或 IP 地址,也可以指定一个包含目标主机列表的文件。与经典 ping 命令不同,fping 会并行 ping:它发送请求后不会等待响应,而是继续向列表中的下一台服务器发送请求。这意味着你能更快获得结果。如果你进行负载测试或网络测试,fping 是合适的选择。
hping和hping3
hping 及其较新的版本 hping3 可用于创建自定义 TCP/IP 数据包。最初的 hping 是为 Linux 和其他类 Unix 系统设计的,因此在 Windows 上使用时有一些限制。hping3 与包括 Windows 在内的多种操作系统兼容性更好,除 ICMP 外还支持更多协议,因此更灵活,也更常用。不过,这两个实用工具都适用于防火墙测试、端口扫描、拒绝服务 (DoS) 测试等场景。
nping
这个工具出现得更晚。nping 将 ping 提升到新的层次:它不仅能构造数据包,支持 DNS、HTTP、FTP 等多种协议,还能分析从目标主机收到的响应。它可提供有关网络连通性和延迟的详细信息。
psping
如果你想测量网络中两个端点之间的延迟或带宽,并检测数据包丢失,psping 会很有帮助。该工具兼容多种操作系统,并支持多种协议。
请注意,经典 ping 默认已安装在你的计算机上。其他变体可能需要自行安装后才能使用。
Ping 洪泛攻击
Ping 洪泛攻击是一种攻击方式。攻击者会向目标主机发送大量 ICMP 数据包,耗尽其资源,使主机无法为用户提供服务。Ping 洪泛攻击相对容易实施,但很有效,常被用作 DDoS 攻击的一部分。此外,攻击者也可借助 ping 探测网络拓扑,收集开放端口、可用主机等信息,为后续攻击做准备。攻击者常使用伪造的 IP 地址来隐藏攻击来源,让请求看起来像是来自其他地址,试图借此绕过安全机制。
用于 ping 的代理
代理广泛用于 ping,原因充分。要有效地将 ping 用于网络连通性测试和故障排查,你需要让流量看起来来自不同的位置和网络,这有助于更全面地了解网络健康状况。代理可以在这里发挥作用。你可以在 DataImpulse 找到可靠的代理。使用我们的服务,你可以获得来自 195 个地点的 1500 多万个 IP 地址,从而有效地在这些地址之间分配请求。不过,请记住,代理只能用于合法目的。DataImpulse 不对代理的非法使用承担责任。
Ping 常见问题
ping 和延迟是同一回事吗?
你可能在许多资料中见过 ping=latency 的说法。两者确实相关,但并不相同。Ping 测量的是 RTT,即数据包从起点到目标主机再返回所需的时间。延迟通常指单向时延,例如数据从起点到目标主机所需的时间。此外,ping 只提供与特定主机相关的信息,而延迟是描述整体网络性能的更宽泛术语。有人建议将 RTT 值除以 2 来估算延迟,但这种方法相当粗略。Ping 请求和响应可能走不同路径,目标主机一侧也可能存在处理延迟,从而影响 RTT。另外,你和目标端的时钟必须精确同步,因为任何漂移都可能造成误差。因此,测量延迟时应使用 OWAMP 等单向主动测量协议,以及 PTP 等时间同步协议。
ping 和 traceroute 是同一回事吗?
ping 和 traceroute 都是网络诊断工具,常常一起使用,但二者并不相同。Ping 是监控网络连通性和检查主机可用性的便捷工具。Traceroute 则跟踪数据包从源点到目标地址的路径。它发送一系列 TTL 逐步增加的 UDP 或 ICMP 数据包,使数据包在不同跳点超时并被丢弃。该工具会收集每个路由器的 IP 地址及对应的 RTT。通过这种方式,traceroute 可提供源点和目的地之间网络路径的详细信息,是识别路由循环、拥塞和网络配置错误的重要工具。
我可以用智能手机 ping 目标主机吗?
可以。你可以使用移动设备 ping 目标主机。需要安装专用应用,例如 iOS 上的 “Termius” 或 Android 上的 “Ping”,也可以选择其他应用。然后按照所选应用的说明操作即可。
Discord 上的 ping 是什么?
在 Discord 上,ping 是指借助 “@” 符号提及某个用户、一组用户、某个角色,或使用特殊提及。当你提及某个用户或一组用户时,他们会收到通知,这也叫 ping。玩家也常用这个词指 RTT,因为它是流畅游戏体验的关键指标。良好的 ping 表示 RTT 在 15 到 45 ms 之间;较差的 ping 即高于 100 ms,通常会严重影响游戏体验。
结语
有时,你不必花数千美元购买新工具。只要打开命令提示符或终端,花 0 美分输入短短 4 个字母 ping,就能获得目标主机可用性、网络连通性和延迟等方面的大量有价值信息。它简单而有效,可在各种设备和操作系统上使用,也可与代理等其他工具结合使用。DataImpulse 可以为你提供合法来源的代理,提升你的 ping 使用体验。只需点击屏幕右上角的”立即试用“按钮,或通过 [email protected] 联系我们。



