Linux系统之ping命令的基本使用

举报
江湖有缘 发表于 2024/12/04 23:32:28 2024/12/04
【摘要】 Linux系统之ping命令的基本使用

在这里插入图片描述

一、ping命令介绍

ping 命令是一个网络工具,用于测试主机之间的连通性。它通过发送ICMP(Internet Control Message Protocol)回声请求报文到目标主机,并等待接收回声应答来判断网络连接的状态。ping 命令非常有用,因为它可以帮助用户快速诊断基本的网络问题,如确定远程主机是否可达、测量数据包往返时间以及检查丢包率等。

二、ping命令的使用帮助

2.1 ping命令的帮助信息

在命令行终端中,我们使用-h选项查询ping命令的基本帮助信息。

root@jeven01:~# ping -h

Usage
  ping [options] <destination>

Options:
  <destination>      dns name or ip address
  -a                 use audible ping
  -A                 use adaptive ping
  -B                 sticky source address
  -c <count>         stop after <count> replies
  -D                 print timestamps
  -d                 use SO_DEBUG socket option
  -f                 flood ping
  -h                 print help and exit
  -I <interface>     either interface name or address
  -i <interval>      seconds between sending each packet
  -L                 suppress loopback of multicast packets
  -l <preload>       send <preload> number of packages while waiting replies
  -m <mark>          tag the packets going out
  -M <pmtud opt>     define mtu discovery, can be one of <do|dont|want>
  -n                 no dns name resolution
  -O                 report outstanding replies
  -p <pattern>       contents of padding byte
  -q                 quiet output
  -Q <tclass>        use quality of service <tclass> bits
  -s <size>          use <size> as number of data bytes to be sent
  -S <size>          use <size> as SO_SNDBUF socket option value
  -t <ttl>           define time to live
  -U                 print user-to-user latency
  -v                 verbose output
  -V                 print version and exit
  -w <deadline>      reply wait <deadline> in seconds
  -W <timeout>       time to wait for response

IPv4 options:
  -4                 use IPv4
  -b                 allow pinging broadcast
  -R                 record route
  -T <timestamp>     define timestamp, can be one of <tsonly|tsandaddr|tsprespec>

IPv6 options:
  -6                 use IPv6
  -F <flowlabel>     define flow label, default is random
  -N <nodeinfo opt>  use icmp6 node info query, try <help> as argument

For more details see ping(8).

2.2 ping命令帮助解释

用法

ping [选项] <目标>
  • <目标>:可以是DNS名称或IP地址。

选项

选项 描述
-a 使用可听音效进行ping操作。
-A 使用自适应ping,根据网络状况调整发送速率。
-B 固定源地址,确保数据包从同一接口发出。
-c <计数> 在收到<计数>个回复后停止。
-D 打印时间戳。
-d 使用SO_DEBUG套接字选项。
-f 洪水式ping,快速发送数据包。
-h 显示帮助信息并退出。
-I <接口> 指定使用的网络接口名或地址。
-i <间隔> 设置每次发送之间的时间间隔(秒)。
-L 抑制多播数据包的回环。
-l <预加载> 在等待回复时发送<预加载>数量的数据包。
-m <标记> 给外出的数据包打上标记。
-M <pmtud选项> 定义MTU发现,可以是dodontwant之一。
-n 不解析DNS名称。
-O 报告未完成的回复。
-p <模式> 设置填充字节的内容。
-q 安静输出。
-Q <tclass> 使用服务质量<tclass>位。
-s <大小> 发送数据包的数据字节数。
-S <大小> 将SO_SNDBUF套接字选项设置为<大小>。
-t <TTL> 定义生存时间。
-U 打印用户到用户的延迟。
-v 详细输出。
-V 显示版本信息并退出。
-w <截止时间> 等待回复的最大时间(秒)。
-W <超时> 等待响应的时间(毫秒)。

IPv4 特有选项

选项 描述
-4 使用IPv4。
-b 允许向广播地址发送ping。
-R 记录路由。
-T <时间戳> 定义时间戳,可以是tsonlytsandaddrtsprespec之一。

IPv6 特有选项

选项 描述
-6 使用IPv6。
-F <流标签> 定义流标签,默认为随机。
-N <节点信息选项> 使用ICMPv6节点信息查询,尝试使用help作为参数以获取更多信息。

三、ping命令的基本使用

3.1测试与特定IP地址或域名的连通性

例如我们需要检查本机与 8.8.8.8 的连接状态,可以执行:

 ping 8.8.8.8

在这里插入图片描述

例如我们需要检查本机与一个域名如www,baidu.com,则可以使用以下命令:

ping www.baidu.com

在这里插入图片描述

我们可以按 Ctrl+C 来中断ping进程,并查看最终的统计信息。

在这里插入图片描述

3.2 指定发送的数据包数量

如果我们不想命令持续运行,可以使用-c选项后跟一个数字来限制发送的ICMP请求次数。

root@jeven01:~# ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=112 time=30.0 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=112 time=29.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=112 time=29.9 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=112 time=30.0 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 29.802/29.937/30.036/0.101 ms
字段 解释
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 开始向 8.8.8.8 发送ICMP回声请求。每个数据包的实际大小为56字节,加上8字节的ICMP头部和20字节的IP头部,总共84字节。
64 bytes from 8.8.8.8: icmp_seq=1 ttl=112 time=30.0 ms 收到第一个响应。数据包大小为64字节,序列号为1,TTL值为112,往返时间(RTT)为30.0毫秒。
64 bytes from 8.8.8.8: icmp_seq=2 ttl=112 time=29.8 ms 收到第二个响应。数据包大小为64字节,序列号为2,TTL值为112,往返时间为29.8毫秒。
64 bytes from 8.8.8.8: icmp_seq=3 ttl=112 time=29.9 ms 收到第三个响应。数据包大小为64字节,序列号为3,TTL值为112,往返时间为29.9毫秒。
64 bytes from 8.8.8.8: icmp_seq=4 ttl=112 time=30.0 ms 收到第四个响应。数据包大小为64字节,序列号为4,TTL值为112,往返时间为30.0毫秒。
字段 解释
--- 8.8.8.8 ping statistics --- 统计信息开始。
4 packets transmitted, 4 received, 0% packet loss, time 3004ms 共发送了4个数据包,收到了4个响应,没有丢包,整个过程耗时3004毫秒。
rtt min/avg/max/mdev = 29.802/29.937/30.036/0.101 ms 往返时间统计:
- 最小值:29.802毫秒
- 平均值:29.937毫秒
- 最大值:30.036毫秒
- 标准偏差:0.101毫秒
  • 命令ping -c 4 8.8.8.8
  • 目标:8.8.8.8(Google的公共DNS服务器)
  • 发送的数据包数量:4
  • 接收的数据包数量:4
  • 丢包率:0%
  • 最小往返时间:29.802毫秒
  • 平均往返时间:29.937毫秒
  • 最大往返时间:30.036毫秒
  • 标准偏差:0.101毫秒

3.3 设置每次发送之间的时间间隔:

我们可以使用-i选项来设定每两次发送之间的秒数,这里设置为每隔2秒发送一次。

ping -i 2 8.8.8.8

3.4 指定数据包大小

使用 -s 选项来定义发送的数据包大小(字节),注意实际发送的总大小会加上ICMP头部的8字节。

ping -c 4 -s 1024 8.8.8.8

在这里插入图片描述

3.5 仅显示摘要信息

如果我们只需要查看统计结果而不关心每个数据包的具体信息,可以使用 -q 选项。

root@jeven01:~# ping -c 4 -q  8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 29.206/29.735/29.980/0.315 ms

四、注意事项

  • 确保你有足够的权限(如root用户),特别是在使用某些高级选项时。
  • 检查目标地址是否正确且可解析,无论是IP地址还是域名。
  • 选择合理的数据包大小,避免因过大导致网络设备无法处理。
  • 设置适当的时间间隔,避免过短导致网络拥塞或被视为攻击行为。
  • 控制发送的数据包数量,过多的数据包可能对网络造成不必要的负担。
  • 设置合理的超时时间,以避免误判丢包或等待时间过长。
  • 避免滥用洪水式ping (-f),这可能会被视为拒绝服务攻击。
  • 检查防火墙规则,确保ICMP请求未被阻止。
  • 使用 -n 选项禁用DNS解析,以加快响应速度。
  • 使用 -v 选项获取详细输出,有助于故障排除。
  • 使用 -R 选项记录返回路径上的路由器,但需目标主机支持。
  • 使用 -A 选项启用自适应ping,根据网络状况调整发送速率。
  • 使用 -I 选项指定源地址,适用于多网卡环境。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。