Linux ping 命令 - 测试网络连接状态
介绍
ping 是一个非常常用的计算机网络测试工具,用于测试数据包能否透过 IP 协议到达特定主机,从而判断网络的连通性。无论是 Linux、Windows、macOS 还是嵌入式 RTOS 都会提供 ping 命令。ping 的运作原理是向目标主机传出一个 ICMP 的请求回显数据包,并等待接收回显回应数据包。程序会按时间和成功响应的次数估算丢失数据包率(丢包率)和数据包往返时间(网络时延,Round-trip delay time)。
语法:
ping [options] <destination>
选项:
<destination>:IP 地址或 DNS 域名。-a:使用听得见的(audible)ping。-A:使用自适应(adaptive)ping。-B:粘性源地址(sticky source address)。-c <count>:在<count>个回复后停止。-D:打印时间戳。-d:使用SO_DEBUG套接字选项。-f:flood ping。-h:打印帮助信息。-I <interface>:指定网卡接口名称或 IP 地址。-i <interval>:指定发送每个数据包之间的时间间隔(秒数)。-L:抑制组播(multicast)数据包的环回(loopback)。-l <preload>:在等待回复时发送<preload>个包数。-m <mark>:标记发出的数据包。-M <pmtud opt>:定义 mtu 发现,可以是<do|dont|want>之一。-n:没有 DNS 名称解析。-O:报告未完成的答复。-p <pattern>:填充字节的内容。-q:安静的输出。-Q <tclass>:使用服务质量<tclass>位。-s <size>:使用<size>作为要发送的数据字节数。-S <size>:使用<size>作为SO_SNDBUF套接字选项的值。-t <ttl>:定义生存时间。-U:打印用户到用户(user-to-user)的延迟(latency)。-v:详细输出。-V:打印版本信息并退出。-w <deadline>:回复等待<deadline>秒。-W <timeout>:等待响应的时间。
IPv4 专用选项:
-4:使用 IPv4。-b:允许 ping 广播。-R:记录路由。-T <timestamp>:定义时间戳,可以是<tsonly|tsandaddr|tsprespec>之一。
IPv6 专用选项:
-6:使用 IPv6。-F <flowlabel>:定义流标签,默认为随机。-N <nodeinfo opt>:使用 icmp6 节点信息查询。
示例
测试本机与「人人都懂物联网」网站的连通情况
ping getiot.tech
测试本机与 192.168.0.2 设备的网络连通情况
ping 192.168.0.2
指定网卡进行 ping 测试(网卡名称可通过 ifconfig 命令查看)
ping -I eth0 192.168.0.2
测试 1000 次
ping -c 1000 192.168.0.2
以时间间隔 2 秒测试 1000 次
ping -i 2 -c 1000 192.168.0.2
