Linux基本功系列之ping命令实战

时间:2023-01-20 20:55:24

Linux基本功系列之ping命令实战

前言????????????
想要学好Linux,命令是基本功,企业中常用的命令大约200多个,不管是写shell脚本还是管理操作系统,最常用的命令必须要牢牢掌握,像我们以前学乘法口诀一样,烂熟于心,唯有如此,才能打牢基础。
???? 知识最重要的是记忆
???? 入门须知: 想要人生从容,必须全力以赴,努力才是你最终的入场券????????????
???? 最后: 努力成长自己,愿我们都能在看不到的地方闪闪发光 ,一起加油进步????????????

一. 命令介绍

ping命令用来测试主机之间网络的连通性,通过发送Internet控制消息协议(ICMP)回响请求消息来验证与另一台TCP/IP计算机的IP级连接.

用途: 发送一个回送信号请求给网络主机,根据发送回的信号来判断网络的连通性

  • 确定网络和各个外部主机的状态。
  • 跟踪和隔离硬件与软件问题。
  • 测试、评估和管理网络。

ping 命令每秒发送一个数据包并且为每个接收到的响应显示一行输出。ping 命令计算信号往返时间和(信息)包丢失情况的统计信息,并且在完成之后显示一个简要总结。

Ping 命令将在程序超时或收到 SIGINT 信号时完成。Host 参数是有效主机名或因特网地址。

缺省情况下,ping 命令继续将回传请求发送到屏幕,直至接收到中断信号 (Ctrl-C)。由于连续的回传请求会增加系统的负载,所以重复的请求必须主要用于问题确定。

二. 语法格式及常用选项

可以使用man ping 来查看相关的参数信息


       -c     count   在发送(和接收)了正好数量为   count   的回显应答分组后停止操作。在发送了           count
              个分组后没有收到任何分组的特别情况是发送导致了终止(选程主机或网关不可达)-d     在所用的套接字上使用 SO_DEBUG 选项。

       -f     以高速方式来作 
                                                                            ping
              。以分组返回的速度来输出其它分组或每秒输出百次。当收到每个回显应答并打印一个退格符时,对每
个回显请求都打印一个句点``.''。这可以快速显示出丢弃了多少个分组,只有超级用户可以用这个选项。这(操作)对
网络要求非常苛刻,应该慎重使用。

       -i     wait                              在发送每个分组时等待                                wait
              个秒数。缺省值为每个分组等待一秒。此选项与-f选项不能同时使用。
       -l     preload              如果指定              preload              ,那么                      ping
              程序在开始正常运行模式前尽可能快地发送分组。同样只有超级用户可以用这个选项。

       -n     只以数字形式输出信息。这样就不尝试去查找主机名了。

       -p     pattern
              可以指定最多16个填充字节用于保持分组长度为16的整数倍。在网络上诊断与数据相关问题时此选项很有用。
              例如``-p ff''将使发出的分组都用全1填充数据区。

       -q     静态输出。在程序启动和结束时只显示摘要行。

       -R     记录路由。在回显请求分组中包含记录路由选项并在相应的分组返回时显示路由缓冲区。注意IP首部的容量只能存放9条这样的
              路由。很多主机

        -r     在所连接的网络上旁路正常的选路表,直接向主机发送分组。如果主机未处于直接相连的网络上,那么返回一个错误。此选项可用来通过无路由接口对一台主机进行检测(例如当接口已被
              routed 程序丢弃后)-s     packetsize   指定要发送数据的字节量。缺省值为   56   ,这正好在添加了   8   字节的  ICMP
              首部后组装成 64 字节的 ICMP 数据报。

       -v     详细模式输出。打印接收到的回显应答以外的 ICMP 分组。

       -w     waitsecs 在 waitsecs 秒后停止 ping 程序的执行。当试图检测不可达主机时此选项很有用。

参数简化版:

  • -d:使用Socket的SO_DEBUG功能;
  • -c<完成次数>:设置完成要求回应的次数;
  • -f:极限检测;
  • -i<间隔秒数>:指定收发信息的间隔时间;
    –I<网络界面>:使用指定的网络界面送出数据包;
  • -l<前置载入>:设置在送出要求信息之前,先行发出的数据包;
  • -n:只输出数值;
  • -p<范本样式>:设置填满数据包的范本样式;
  • -q:不显示指令执行过程,开头和结尾的相关信息除外;
  • -r:忽略普通的Routing Table,直接将数据包送到远端主机上;
  • -R:记录路由过程;
  • -s<数据包大小>:设置数据包的大小;
  • -t<存活数值>:设置存活数值TTL的大小;
  • -v:详细显示指令的执行过程。
  • -w<超时秒数>:无论之前发送或接受了多少包,只要超过此秒数,程序退出;

三. 参考案例

3.1 测试本机与指定网站服务器之间的网络连通性

linux中的ping命令无法自己停止,需要手动按下ctrl+c组件按键命令来停止ping

此时,无需加任何参数,直接在ping后面加上IP或者网址

root@mufenggrow ~]# ping www.baidu.com
PING www.baidu.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=52 time=25.1 ms
^C
--- www.baidu.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 25.181/25.181/25.181/0.000 ms
[root@mufenggrow ~]# 

也可以直接ping IP地址:
Linux基本功系列之ping命令实战

这里面的几个参数:

  • icmp_seq=1  ping序列,从1开始;
  • bytes值: 数据包大小,也就是字节。
  • time值:响应时间,这个时间越小,说明你连接这个地址速度越快。
  • TTL值:Time To Live,表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。

拓展:

TTL就是说ping的数 据包 能在网络上存在多少时间。

当我们对网络上的主机进行ping操作的时候,我们本地机器会发出一个数据包,数据包经过一定数量的路由器传送到目的主机,但是由于很多的原因,一些数据包不能正常传送到目的主机,那如果不给这些数据包一个生存时间的话,这些数据包会一直在网络上传送,导致网络开销的增大。
当数据包传送到一个路由器之后,TTL就自动减1,如果减到0了还是没有传送到目的主机,那么就自动丢失。

  • rtt min/avg/max/mdev 表示最小/最大、平均响应时间和本机硬件耗费时间

3.2 指定ping的次数

-c 参数可以用来指定ping的次数

[root@mufenggrow ~]# ping -c 3 www.baidu.com
PING www.baidu.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=52 time=25.4 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=52 time=25.5 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=52 time=25.9 ms

--- www.baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 25.411/25.633/25.906/0.205 ms

3.3 指定时间间隔和次数

这里会用到两个参数
-i 时间间隔参数,也就是发送周期
-c ping的次数

[root@mufenggrow ~]# ping -c1 -i 0.3 www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=52 time=25.4 ms

--- www.a.shifen.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 25.407/25.407/25.407/0.000 ms


3.4 设置TTL为255

-t参数可以设置存活数值TTL大小为255, 这里我们一并用上 -c 发送周期为3秒, -s设置发送包为1024

[root@mufenggrow ~]# ping -c 3  -i 0.3 -s 1024 -t 255 192.168.1.101
PING 192.168.1.101 (192.168.1.101) 1024(1052) bytes of data.
1032 bytes from 192.168.1.101: icmp_seq=1 ttl=64 time=0.029 ms
1032 bytes from 192.168.1.101: icmp_seq=2 ttl=64 time=0.060 ms
1032 bytes from 192.168.1.101: icmp_seq=3 ttl=64 time=0.028 ms

--- 192.168.1.101 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 600ms
rtt min/avg/max/mdev = 0.028/0.039/0.060/0.014 ms

3.5 极快速的测试使用大包ping

以最快的速度,使用最大的包进行ping,一般用于测试目标主机的承压能力测试。
说到这不得不提中国黑客教父,当年在中美黑客大战中一战成名,最大的本事就是号召中国网民,ping TN官网。

这里用到两个参数一个是-f: 极限检测,快速连续ping一台主机,ping的速度达到100次每秒。
另一个是: -s 指定每次ping发送的数据字节数,但不能大于65535,所以linux最大值为65507

[root@mufenggrow ~]# ping -f -s 65507 192.168.1.101
PING 192.168.1.101 (192.168.1.101) 65507(65535) bytes of data.
^C 
--- 192.168.1.101 ping statistics ---
372312 packets transmitted, 372312 received, 0% packet loss, time 19675ms
rtt min/avg/max/mdev = 0.012/0.015/2.202/0.012 ms, ipg/ewma 0.052/0.016 ms
[root@mufenggrow ~]# 

四. 使用ping命令常见问题

【常见问题分析】

在ping的过程中,经常会遇到以下的情况,我们根据情况的反馈来判断具体的问题。

  1. No Answer: ,对方主机没工作,双方网络配置不正确,路由问题等。

  2. Request Time Out: 对方主机已关机,路由问题或对端防火墙设置禁止ping

  3. Destination Net Unreachable: 双方没有建立连接,或对方主机不存在

  4. Unknown Host Name: DNS设置问题,或者对方主机不存在

  5. transmit failed,error code: 网卡驱动问题

  6. Bad IP Address: IP地址不存在或IP不能被DNS服务器解析

7.pining 127.0.0.1 如果ping不通,表明本地机TCP/IP协议不能正常工作

  1. no rout to host 网卡工作不正常

使用ping来辅助判断网络的连通性

总结

我们经常用ping命令来判断主机是否在线,网络是否连通, 在脚本中也经常会用到ping命令,目前用的最多的参数就是 -c -i -w 这几个参数。

???????????? 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
????????????如果你喜欢的话,就不要吝惜你的一键三连了~

冲冲冲

Linux基本功系列之ping命令实战