0


【Linux】ping命令详解

一、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);
注意:由于IP头的限制,最多只能记录9个路由,其他会被忽略;

-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字节;
包头+内容不能大于65535,所以最大值为65507(linux:65507, windows:65500);

-t ttl

设置TTL(Time To Live)为指定的值。该字段指定IP包被路由器丢弃之前允许通过的最大网段数;

-T timestamp_option

设置IP timestamp选项,可以是下面的任何一个:
'tsonly' (only timestamps)
'tsandaddr' (timestamps and addresses)
'tsprespec host1 [host2 [host3]]' (timestamp prespecified hops).

-M hint

设置MTU(最大传输单元)分片策略。
可设置为:
'do':禁止分片,即使包被丢弃;
'want':当包过大时分片;
'dont':不设置分片标志(DF flag);

-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族

标签: linux 服务器 ping

本文转载自: https://blog.csdn.net/qq_35995514/article/details/133554181
版权归原作者 开着拖拉机回家 所有, 如有侵权,请联系我们删除。

“【Linux】ping命令详解”的评论:

还没有评论