【Linux基础编程】ping命令

01.目录

02.命令介绍

ping命令用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作是否正常,在Windows上面也经常用ping命令在控制终端“CMD”中来测试内网是否通畅。

ping, ping6 - 向网络主机发送ICMP回显请求(ECHO_REQUEST)分组。

注意:Linux系统下的ping命令与Windows系统下的ping命令稍有不同。Windows下运行ping命令一般会发出4个请求就结束运行该命令;而Linux下不会自动终止,此时需要我们按CTR+C终止或者使用-c参数为ping命令指定发送的请求数目。

03.命令格式

下面是命令的通用格式:

格式:ping [选项] [参数]

04.常用选项

下面列举了ping的常用选项,通过help、man、或者直接ping回车,可得到,如果想要完整的选项内容,还是通过前面的两个命令获取

-d	使用Socket的SO_DEBUG功能
-c	指定发送报文的次数
-i	指定收发信息的间隔时间
-I	使用指定的网络接口送出数据包
-l	设置在送出要求信息之前,先行发出的数据包
-n	只输出数值
-p	设置填满数据包的范本样式
-q	不显示指令执行过程
-R	记录路由过程
-s	设置数据包的大小
-t	设置存活数值TTL的大小
-v	详细显示指令的执行过程

05.参考示例

5.1 测试能否ping通IP
[root@localhost ~]# ping 172.6.6.20
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=255 time=11.3 ms
64 bytes from 172.16.0.2: icmp_seq=2 ttl=254 time=1.71 ms
5.2 测试能否ping通域名
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (183.232.231.172) 56(84) bytes of data.
64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=1 ttl=57 time=7.93 ms
64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=2 ttl=57 time=7.89 ms
64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=3 ttl=57 time=8.70 ms
5.3 ping不通IP的情况
[root@localhost ~]# ping 172.16.0.89
PING 172.16.0.89 (172.16.0.89) 56(84) bytes of data.
From 172.16.0.76 icmp_seq=1 Destination Host Unreachable //目标主机不可达
From 172.16.0.76 icmp_seq=2 Destination Host Unreachable
From 172.16.0.76 icmp_seq=3 Destination Host Unreachable
From 172.16.0.76 icmp_seq=4 Destination Host Unreachable
5.4 指定ping的次数
[root@localhost ~]# ping -c 2 172.16.0.2
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=254 time=1.68 ms
64 bytes from 172.16.0.2: icmp_seq=2 ttl=254 time=1.81 ms

--- 172.16.0.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1004ms
rtt min/avg/max/mdev = 1.685/1.747/1.810/0.075 ms
[root@localhost ~]# 
5.5 指定ping的次数和时间间隔
[root@localhost ~]# ping -c 4 -i 0.5 172.16.0.2
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=254 time=1.76 ms
64 bytes from 172.16.0.2: icmp_seq=2 ttl=254 time=1.75 ms
64 bytes from 172.16.0.2: icmp_seq=3 ttl=254 time=2.27 ms
64 bytes from 172.16.0.2: icmp_seq=4 ttl=254 time=1.62 ms

--- 172.16.0.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 1511ms
rtt min/avg/max/mdev = 1.626/1.853/2.270/0.246 ms
[root@localhost ~]# 
5.6 执行ping的次数和域名
[root@localhost ~]# ping -c 5 www.baidu.com
PING www.a.shifen.com (183.232.231.172) 56(84) bytes of data.
64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=1 ttl=57 time=8.55 ms
64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=2 ttl=57 time=8.17 ms
64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=3 ttl=57 time=7.91 ms
64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=4 ttl=57 time=7.77 ms
64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=5 ttl=57 time=8.29 ms

--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4013ms
rtt min/avg/max/mdev = 7.770/8.140/8.552/0.282 ms
[root@localhost ~]# 
5.7 综合小案例1
[root@localhost ~]# ping -i 3 -s 1024 -t 255 172.16.0.2
PING 172.16.0.2 (172.16.0.2) 1024(1052) bytes of data.
1032 bytes from 172.16.0.2: icmp_seq=1 ttl=254 time=2.15 ms
1032 bytes from 172.16.0.2: icmp_seq=2 ttl=254 time=1.96 ms
1032 bytes from 172.16.0.2: icmp_seq=3 ttl=254 time=1.98 ms
1032 bytes from 172.16.0.2: icmp_seq=4 ttl=254 time=2.02 ms

说明:-i 3 发送周期为 3秒 -s 设置发送包的大小为1024 -t 设置TTL值为 255

5.8 综合小案例2
[root@localhost ~]# ping -i 0.2 -c 3 -I 172.16.0.76 172.16.0.2 -q  
PING 172.16.0.2 (172.16.0.2) from 172.16.0.76 : 56(84) bytes of data.

--- 172.16.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 406ms
rtt min/avg/max/mdev = 1.653/1.953/2.498/0.386 ms
[root@localhost ~]# 

说明:-i 指定发送数据包时间间隔,-c 指定一共发送多少个数据包,-I 指定源地址,-q指定直接显示程序的启动和最后结果

5.9 综合小案例3
[root@localhost ~]# ping -I 172.16.0.76 172.16.0.2 -w 3
PING 172.16.0.2 (172.16.0.2) from 172.16.0.76 : 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=254 time=1.64 ms
64 bytes from 172.16.0.2: icmp_seq=2 ttl=254 time=1.71 ms
64 bytes from 172.16.0.2: icmp_seq=3 ttl=254 time=1.63 ms

--- 172.16.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.632/1.664/1.715/0.059 ms
[root@localhost ~]# 

【说明】
-I 网络界面:使用指定的网络界面送出数据包,即172.16.0.76是发出ping命令的主机IP地址,172.16.0.2是被ping的主机的IP地址。
-w 等待指定时间后停止ping程序的执行。当试图测试不可达主机时此选项很有用,时间单位是秒。

5.10 综合小案例4
[root@localhost ~]# ping -c 1 www.baidu.com | grep from | cut -d " " -f 4
183.232.231.174
[root@localhost ~]# 

利用ping命令获取指定网站的IP地址

06.常见问题(解释)

下面列举一些常见的ping返回的错误问题,解释一下原因

  • No Answer: 原因可能是,对方主机没工作,双方网络配置不正确,路由问题等。
  • Request Time Out: 对方主机已关机,路由问题或对端防火墙设置禁止ping
  • Unknown Host Name: DNS设置问题,或者对方主机不存在
  • Destination Net Unreachable: 双方没有建立连接,或对方主机不存在
  • Bad IP Address: IP地址不存在或IP不能被DNS服务器解析
  • transmit failed,error code: 网卡驱动问题
  • no rout to host 网卡工作不正常
  • Ping 127.0.0.1 如果ping不通,表明本地机TCP/IP协议不能正常工作。

Ps:127.0.0.1,熟悉协议的人肯定知道这是本地回环的地址,但是,这不是唯一的。
本地回环规定只要范围在127.0.0.1——127.255.255.254就算是本地回环。

07.使能和禁用Ping的方法

7.1 临时允许ping
[root@localhost ~]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 
[root@localhost ~]#
7.2 临时禁用ping
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 
[root@localhost ~]#
7.3 永久禁用ping

终端输入vim /etc/sysctl.conf,在最后增加一行
修改完成后执行sysctl -p使新配置生效

net.ipv4.icmp_echo_ignore_all=1          # 1表示禁止
7.4 永久使能ping

终端输入vim /etc/sysctl.conf,在最后增加一行
修改完成后执行sysctl -p使新配置生效

net.ipv4.icmp_echo_ignore_all=0          # 0表示允许

08.命令总结

在这里插入图片描述

上面就是ping命令的大致内容了,后面两天先聊聊help、man命令吧。每次都在说这个命令,但是就是没聊,确实是我没搞清楚先后顺序。
版权声明:转载请注明出处,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cain Xcy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值