In this Article
无论你的任务是什么,检查主机是否可用、网络是否连通,都是基础需求。一个强大的工具其实就在手边: ping。本文将介绍ping是什么、它有哪些用途、如何ping一个网站、如何解读ping结果,以及可以用于网络监控和故障排查的其他基于ping的工具。
ping是什么,为什么重要
Ping (Packet InterNet Gopher) 是一种网络诊断工具。在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上,128是默认TTL值。在Linux或MacOS等类Unix系统上,这个数值是64。Cisco网络设备,例如路由器,通常将255设为默认TTL值。数据包每经过一个路由器,TTL值就减1。在ping报告中,你看到的是未使用的跳数。不过,如果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地址,也可以写入包含目标主机列表的文件名。与经典命令不同,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欺骗还用于了解网络拓扑,并收集开放端口、可用主机等信息,以便攻击者策划下一次攻击。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,通常会通常会严重影响游戏体验。
结语
有时,你不需要花费数千美元购买新工具。你只需要打开Command prompt或Terminal,花费0美分,输入短短4个字母 – ping – 就能获得关于目标主机可用性、网络连通性和延迟等方面的大量有价值信息。它是一个简单而有效的工具,可在各种设备和操作系统上使用,也可以与包括代理在内的其他工具结合使用。DataImpulse可以为你提供合法获得的代理,以提升你的ping使用体验。只需点击屏幕右上角的”立即试用“按钮,或通过 [email protected] 联系我们。



