“ping” 命令用于排除和诊断网络连接问题,并检查主机是否可访问,它适用于所有操作系统。

“ping”命令的工作原理

ping 数据包工作原理图

ping 命令从“主机 a”(源)向“主机 b”(目标)发送一个 32 字节的 icmp(互联网控制消息协议)数据包,并等待“主机 b”向“主机 a”响应一个 32 字节的数据包”。如果连接成功,则打印整个往返时间,如果不成功,则打印失败原因,诸如丢包、超时、连接错误等。

如何执行“ping”命令?

以下是调用“ping”命令的方法:

ping [ip/domain] 

例子:

ping gceasy.com 

执行上述命令后,控制台会打印以下消息:

pinging gceasy.com [195.201.17.137] with 32 bytes of data:  reply from 195.201.17.137: bytes=32 time=217ms ttl=45  reply from 195.201.17.137: bytes=32 time=185ms ttl=45  reply from 195.201.17.137: bytes=32 time=188ms ttl=45  reply from 195.201.17.137: bytes=32 time=196ms ttl=45   ping statistics for 195.201.17.137:         packets: sent = 4, received = 4, lost = 0 (0% loss),  approximate round trip times in milli-seconds:         minimum = 185ms, maximum = 217ms, average = 196ms 

•时间:这是往返时间。它是数据包从源地址到达目的地并报告回源地址所花费的时间

•ttl(生存时间):是时间或“跳数”的量,它可以从 0 到 255 不等,具体取决于主机操作系统。当数据包通过互联网发送时,数据包有可能从路由器通过,并且数据包将被发送,直到用户中断此命令。数据包设计了一个称为生存时间的过期时间。

•ping statistics:

packets sent(发送的数据包): 数据包从主机发送到目的地的次数。

packets received(收到的数据包) : 从目的地到主机收到的数据包的次数。

packets lost(数据包丢失) : 无法到达目的地的数据包数。

•大约往返时间:

最小值:以毫秒为单位获得响应的最短时间

平均:以毫秒为单位获得响应的平均时间

最大:以毫秒为单位获得响应的最长时间

ping 的默认 ttl(生存时间) 是多少?

ping 命令的 ttl值因操作系统而异。下表总结了ping命令对于常用操作系统的默认ttl

ping 错误:

•请求超时:如果由于网络流量过大,主机没有响应,或者 arp 请求包过滤失败,或者如果路由器出现错误,则 ping 请求将超时。

例子:

ping gceasy.io  pinging gceasy.io [52.52.12.54] with 32 bytes of data:  request timed out.  request timed out.  request timed out.  request timed out.   ping statistics for 52.52.12.54:           packets: sent = 4, received = 0, lost = 4 (100% loss) 

解决方案:使用 ping -w 开关增加等待时间。

•ping 请求无法找到主机:当无法根据传递给 ping 命令的主机名确定 ip 地址时,将遇到此错误。

例子:

ping test123blah.com  ping request could not find host test123blah.com. please check the name and try again. 

解决方案:验证传递给 ping 命令的主机名。验证 dns 服务器是否可用/可从主机访问。

•目标主机无法访问:当访问的主机停机或在网络上不可用时,将返回“目标主机无法访问”错误。

例子:

ping 192.168.0.0  pinging 192.168.0.0 with 32 bytes of data:  reply from 192.168.0.102: destination host unreachable.  reply from 192.168.0.102: destination host unreachable.  reply from 192.168.0.102: destination host unreachable.  reply from 192.168.0.102: destination host unreachable.   ping statistics for 192.168.0.0:            packets: sent = 4, received = 4, lost = 0 (0% loss) 

解决方案:验证目标主机是否已启动并正在运行。修改本地路由表或通知路由器管理员。

•ttl 在传输过程中过期: 当将数据包路由到目的地时出现重循环时,ttl 将过期。这将导致“ttl在传输中过期”错误。

解决方案: 确定重复并导致循环的 ip 地址。在 linux 问题上,以 root 用户身份使用“route -n”命令查看当前路由表,在 windows 问题上,命令输出“route print”。

•ping命令:传输失败。

一般故障:当设备网卡或无线适配器存在物理问题时,将导致“ping:transmit failed. ”(ping:传输失败)、“一般失败’错误。

例子:

ping 2dab:ffff:0000:3eae:01aa:00ff:dd72:2c4a   pinging 2dab:ffff:0:3eae:1aa:ff:dd72:2c4a with 32 bytes of data:  ping: transmit failed. general failure.  ping: transmit failed. general failure.  ping: transmit failed. general failure.  ping: transmit failed. general failure.   ping statistics for 2dab:ffff:0:3eae:1aa:ff:dd72:2c4a:            packets: sent = 4, received = 0, lost = 4 (100% loss) 

解决方案:确保网卡没有问题。确保设备上安装了最新版本的网络驱动程序,检查是否为设备分配了正确的 ip 地址。

常用的 ping 命令

可以在使用 ‘ping’ 命令的同时使用其它选项来获取要查找的信息。

发送更多请求,请执行以下操作:

如果要发送 ‘5’ 回显请求,则可以发出以下命令:

ping -n 5 gceasy.com 

执行上述命令后,控制台会打印以下消息:

pinging gceasy.com [195.201.17.137] with 32 bytes of data:  reply from 195.201.17.137: bytes=32 time=168ms ttl=45  reply from 195.201.17.137: bytes=32 time=165ms ttl=45  reply from 195.201.17.137: bytes=32 time=170ms ttl=45  reply from 195.201.17.137: bytes=32 time=170ms ttl=45  reply from 195.201.17.137: bytes=32 time=183ms ttl=45   ping statistics for 195.201.17.137:          packets: sent = 5, received = 5, lost = 0 (0% loss),  approximate round trip times in milli-seconds:          minimum = 165ms, maximum = 183ms, average = 171ms 

要ping指定主机直到停止,请执行以下操作:

如果想向指定的主机发送请求,直到手动停止为止,则可以发出以下命令:

ping -t gceasy.com 

ping 工具

性能根本原因分析工具(如ycrash)捕获应用程序级工件(如线程转储、堆转储、垃圾收集日志)和系统级工件(如 netstat、vmstat、iostat、top、top -h、dmesg 等)。除此之外,该工具还捕获 ping 命令输出。工具分析所有工件,并立即生成统一的根本原因分析报告。如果该工具在 ping 命令输出中发现任何错误,它将在报告中发出警报。

图: ycrash工具中捕获并报告的 ping 输出

‘ping’ 命令选项

如果想了解传递给“ping”命令的所有选项,请参阅此处。