• 【Linux】ping命令详解


    目录

    一、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或者域名。

    1. [root@hdp105 ~]# ping --help
    2. ping: invalid option -- '-'
    3. Usage: ping [-aAbBdDfhLnOqrRUvV64] [-c count] [-i interval] [-I interface]
    4. [-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
    5. [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
    6. [-w deadline] [-W timeout] [hop1 ...] destination
    7. Usage: ping -6 [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
    8. [-l preload] [-m mark] [-M pmtudisc_option]
    9. [-N nodeinfo_option] [-p pattern] [-Q tclass] [-s packetsize]
    10. [-S sndbuf] [-t ttl] [-T timestamp_option] [-w deadline]
    11. [-W timeout] destination
    12. [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大小的包,间隔3秒发送,一共发送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族

  • 相关阅读:
    你还有什么问题吗?
    ②、企业快速开发平台Spring Cloud之HTML 元素
    C语言运行代码示例
    【人工智能选修课】实验报告
    带你深入理解面向对象三大特性 - 封装
    后端Long型数据传到前端js后精度丢失的问题
    仿闪照功能娱乐微信小程序源码下载-带外卖CPS功能和流量主
    SpringBootCms
    DDT+yaml实现数据驱动接口自动化
    扬帆际海—shopee跨境店和本土店谁更有优势?
  • 原文地址:https://blog.csdn.net/qq_35995514/article/details/133554181