跳到主要内容

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