目录
一、ping概述
二、Ping用法
三、ping参数详解
四、使用
五、Wireshark抓取ICMP请求应答消息
一、ping概述
ping 命令用于测试与目标主机之间的连接。它向目标主机发送一个ICMP(Internet Control Message Protocol)Internet控制报文协议回显请求,并等待它的回应。如果目标主机正常工作并且连接畅通,则会收到一个回显响应。如果没有收到响应,则说明有问题,需要进一步排除故障。ping可以用来测试本机与目标主机是否联通、联通速度如何、稳定性如何。
使用ping命令作用:
1. 检测网络连接问题:如果我们无法访问某个网站或主机,可以使用ping命令来检测网络连接是否正常。如果ping命令能够成功收到目标主机的回复,说明网络连接正常;如果无法收到回复,可能是网络故障或目标主机不可达。
2. 测量网络延迟:通过ping命令可以测量网络延迟,即从发送ICMP请求到接收到回复所需的时间。可以使用ping命令的-c选项指定发送的ICMP请求次数,然后计算平均延迟时间。较高的延迟可能会导致网络连接缓慢,需要进一步排查网络问题。
3. 检测丢包率:ping命令还可以用于检测网络丢包率,即发送的ICMP请求在传输过程中丢失的比例。可以观察ping命令的输出结果中的丢包率字段,如果丢包率较高,可能是网络拥堵或目标主机负载过高。
二、Ping用法
ping命令运行在命令提示符终端,用法为:“ping 参数 目标主机”。其中参数为零到多个,目标主机可以是IP或者域名。
[root@hdp105 ~]# ping --help
ping: invalid option -- '-'
Usage: ping [-aAbBdDfhLnOqrRUvV64] [-c count] [-i interval] [-I interface]
[-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
[-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
[-w deadline] [-W timeout] [hop1 ...] destination
Usage: ping -6 [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
[-l preload] [-m mark] [-M pmtudisc_option]
[-N nodeinfo_option] [-p pattern] [-Q tclass] [-s packetsize]
[-S sndbuf] [-t ttl] [-T timestamp_option] [-w deadline]
[-W timeout] destination
[root@hdp105 ~]#
例如,如果您要测试与主机hdp105之间的连接,可以使用以下命令:
ping hdp105
Ping命令告诉我们,它会持续不断地给目标IP发送ICMP数据报,上面的截图中的每一行代表了一个从ICMP响应的信息,具体包括
- icmp_seq:ICMP 数据包序号,从1开始递增,如果中间不连续代表丢包了。
- ttl:生存时间,具体指允许数据包之间通过多少个路由器或跳数,数据包每经过一个路由器,ttl会减1,当ttl归零时,这个数据包的生成周期结束,处理它的路由器会丢弃这个数据包。默认情况下,Linux系统的TTL值为64或255。
- time: 这个数据报的响应时间,时间越短,代表响应速度越快。
然后是统计信息,它告诉我们,一共有12个数据报被传递,全被接收,没有数据包丢失。最后一行是:最小/最大/平均响应时间和本机硬件耗费时间。
三、ping参数详解
参数 | 详解 |
-a | Audible ping. |
-A | 自适应ping,根据ping包往返时间确定ping的速度; |
-c count | ping指定次数后停止ping; |
-i interval | 设定间隔几秒发送一个ping包,默认一秒ping一次; |
-I interface | 指定网卡接口、或指定的本机地址送出数据包; |
-l preload | 设置在送出要求信息之前,先行发出的数据包; |
-p pattern | 指定填充ping数据包的十六进制内容,在诊断与数据有关的网络错误时这个选项就非常有用,如:“-p ff”; |
-q | 不显示任何传送封包的信息,只显示最后的结果 |
-Q tos | 设置Qos(Quality of Service),它是ICMP数据报相关位;可以是十进制或十六进制数,详见rfc1349和rfc2474文档; |
-R | 记录ping的路由过程(IPv4 only); |
-r | 忽略正常的路由表,直接将数据包送到远端主机上,通常是查看本机的网络接口是否有问题;如果主机不直接连接的网络上,则返回一个错误。 |
-S sndbuf | Set socket sndbuf. If not specified, it is selected to buffer not more than one packet. |
-s packetsize | 指定每次ping发送的数据字节数,默认为“56字节”+“28字节”的ICMP头,一共是84字节; |
-t ttl | 设置TTL(Time To Live)为指定的值。该字段指定IP包被路由器丢弃之前允许通过的最大网段数; |
-T timestamp_option | 设置IP timestamp选项,可以是下面的任何一个: |
-M hint | 设置MTU(最大传输单元)分片策略。 |
-m mark | 设置mark; |
-v | 使ping处于verbose方式,它要ping命令除了打印ECHO-RESPONSE数据包之外,还打印其它所有返回的ICMP数据包; |
-W timeout | 以毫秒为单位设置ping的超时时间; |
-w deadline | deadline; |
ping常用命令选项:
-c count:指定发送的ICMP请求次数,默认为无限次。
-i interval:指定发送ICMP请求的时间间隔,默认为1秒。
-s packetsize:指定发送的ICMP请求的数据包大小,默认为56字节。
-W timeout:指定等待ICMP回复的超时时间,默认为10秒。
四、使用
1、正常访问域名、错误域名和不可达的 IP一共 ping 5次
如上对于不可达的IP和域名为返回错误。
2、极限快速的使用大包ping
以最快的速度,使用最大的包进行ping,可用于测试目标主机的承压能力
注意:65535(包头+内容)*100个包每秒=6.25MB,每秒发送6.25MB的数据,相当于50Mbps的带宽,完全可能导致目标主机拒绝服务。谨慎使用。
3、ping发送1024大小的包,间隔5秒发送,一共发送5次
ping -c 5 -i 3 -s 1024 192.168.2.155
如图,发送包的尺寸不再说默认的64bytes,但是不是设置的1024bytes。因为这个是对端主机返回的包。上一行,标注的才是我发出的包大小“1024(1052)”。
3、ping发送1024大小的包,间隔1秒发送,将在3秒后停止ping
ping -w 3 -i 1 -s 1024 192.168.2.155
4、ping过程记录路由信息 -R选项参数实现
在“记录路由”字段中记录传出和返回数据包的路由,探测经过的路由个数,但最多只能跟踪到9个路由。
ping -c 1 -R www.baidu.com
五、Wireshark抓取ICMP请求应答消息
在 Wireshark 的数据包界面中输入显示过滤器并执行,我们选择 ping 百度:
在框框中输入显示过滤器,进行数据查找,也可以根据协议过滤数据包,我输入 ip.addr == 110.242.68.3,然后开始捕获,在开始ping 百度,输出如下捕获到的信息:
ICMP回显请求报文
ICMP回显请求报文
Linux常用网络命令总结 - 换甲 - 博客园
Linux常用的网络命令有哪些?快速入门!
Linux 常用ping命令详解 - 爱E族