“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”命令的所有选项,请参阅此处。