每日学习-ping与fping

1、ping 的使用

1.一、简介

ping命令经过发送ICMP(Internet控制消息协议)的ECHO REQUEST到目标网络主机,来测试网络联通性。ping命令支持多平台,linux,unix,windows等都有ping命令。html

1.二、使用

ping [-aAbBdDfhLnOqrRUvV46] [-c count] [-F flowlabel] [-i interval] [-I interface] [-l preload] [-m mark] [-M pmtudisc_option] [-N nodeinfo_option] [-w deadline] [-W time‐out] [-p pattern] [-Q tos] [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp option] [hop ...] destinationnode

[]:中括号中为可选参数
destination:为目的网络主机,能够是IP或域名linux

1.三、参数

参数 详解git

-a 带声音的 ping.
-A 自适应ping,根据ping包往返时间肯定ping的速度;
-b 容许ping一个广播地址;
-B 不容许ping改变包头的源地址;
-c count ping指定次数后中止ping; 
-d  使用Socket的SO_DEBUG功能;
-F flow_label 为ping回显请求分配一个20位的“flow label”,若是未设置,内核会为ping随机分配;
-f 极限检测,快速连续ping一台主机,ping的速度达到100次每秒;
-i interval 设定间隔几秒发送一个ping包,默认一秒ping一次;
-I interface 指定网卡接口、或指定的本机地址送出数据包;
-l preload 设置在送出要求信息以前,先行发出的数据包;
-L 抑制组播报文回送,只适用于ping的目标为一个组播地址
-n  不要将ip地址转换成主机名;
-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数据包;
-U  Print full user-to-user latency (the old behaviour).
Normally ping prints network round trip time, which can be different f.e. due to DNS failures.
-W timeout 以毫秒为单位设置ping的超时时间;
-w deadline deadline;github

引用自 <https://www.cnblogs.com/operationhome/p/9848138.html>; windows

1.四、ping的示例

1.4.一、使用ping -c 4 baidu.com 来检查与互联网的连通性

[root@master ~]# ping -c 4 baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=20.3 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=128 time=28.9 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=3 ttl=128 time=19.0 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=4 ttl=128 time=30.2 ms

--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 19.036/24.651/30.299/4.999 ms

从上能够看到百度服务器的ICMP ECHO RESPOND(返回)了64字节的包,icmp_seq为包序号,ttl为生存时间,time为延时;在下方的统计信息中能够看到发出4个包,收到4个包,丢包率0%,本次执行命令用时3004ms;rtt min/avg/max/mdev分别是最小/平均/最大响应时间和本机耗费时间。服务器

场景1:须要检查发包服务器到某边界网络设备的时延
在各地的局点中选择一部分服务器使用脚本加定时任务ping测固定大小的包到网络设备,在固定时长的状况下,取统计信息;
若是ttl有明显少于其余局点设备的,该局点中间设备可能存在网络环路;
若是平均响应时间较高,且最大或最小响应时间不正常,可能服务器驱动、硬件、或中间链路存在问题;
若是本机耗费时间较高,可能服务器程序(尤为是运行的c程序)、服务器驱动、硬件存在问题网络

1.4.二、使用ping -6 单纯测试ipv6地址联通性

Ping ipv6的地址须要加上有ipv6地址的网卡socket

1.4.三、使用-s参数ping大包

[root@master ~]# ping -c 4 -s 65507 192.168.236.21
PING 192.168.236.21 (192.168.236.21) 65507(65535) bytes of data.
^C
--- 192.168.236.21 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

linux系统最大能够ping65507字节的大包,经常使用于测试链路带宽。ide

2、fping

2.一、简介

fping能够批量测试网络联通性。fping 与ping的不一样之处在于,您能够在命令行上指定任意数量的目标,或指定包含要ping的目标列表的文件。fping不会发送到一个目标,直到它超时或答复为止,它会发出ping数据包并以循环方式移至下一个目标。
在默认模式下,若是目标答复,则将其记录下来并从要检查的目标列表中删除;若是目标在特定时间限制和/或重试限制内未响应,则将其指定为不可访问。 ping还支持向目标发送指定数量的ping或无限循环(如 ping)。与ping不一样,fping是在脚本中使用的,所以其输出旨在易于解析。
项目地址:https://github.com/schweikert/fping/

2.二、使用

下载:https://github.com/schweikert/fping/releases/download/v5.0/fping-5.0.tar.gz

2.2.一、编译安装

tar -xzf fping-5.0.tar.gz
cd fping-5.0/
./configure prefix=/usr/local/fping
make ; make install
echo "export PATH=$PATH:/usr/local/fping/sbin" >> /etc/profile

2.三、参数

参数 详解

-a 显示可ping通的目标
-A 将目标以ip地址的形式显示
-b ping 数据包的大小。(默认为56)
-B <f> 设置指数反馈因子到f
-c <num> ping每一个目标的次数 (默认为1)
-C <num> 同-c,返回的结果为冗长格式
-e 显示返回数据包所费时间
-f <file> 从文件获取目标列表( - 表示从标准输入)(不能与 -g 同时使用)
-g 经过指定开始和结束地址来生成目标列表(例如:./fping –g 192.168.1.0 192.168.1.255)或者一个IP/掩码形式(例如:./fping –g 192.168.1.0/24)
-i <num> 设置ip的TTL值 (生存时间)
-l 循环发送ping
-m ping目标主机的多个网口
-n 将目标以主机名或域名显示(等价于 -d )
-p <num> 对同一个目标的ping包间隔(毫秒) (在循环和统计模式中,默认为1000)
-q 安静模式(不显示每一个目标或每一个ping的结果)
-Q <num> 同-q, 可是每n秒显示信息概要
-r <num> 当ping失败时,最大重试次数(默认为3次)
-s 打印最后的统计数据
-t <num> 单个目标的超时时间(毫秒)(默认500)
-u 显示不可到达的目标
-v 显示版本号

2.四、fping 的示例

2.4.一、fping整个网段,显示不存活的设备

[root@master ~]# fping -u -g 106.117.244.230/24
117.244.1
117.244.2
117.244.3
…

2.4.二、fping连续的网段,显示不存活的设备

[root@master ~]# fping -u -g 106.117.244.100 106.117.244.235
106.117.244.100
106.117.244.101
106.117.244.102
…

2.4.三、fping不连续的多ip,显示不存活的设备

iplist文件为ip列表

[root@master ~]# fping -u < iplist 
106.117.244.174
106.117.244.175
106.117.244.176
106.117.244.177
[root@master ~]# fping -u -f iplist
106.117.244.174
106.117.244.175
106.117.244.176
106.117.244.177

2.4.四、fping 显示可达设备往返时间

[root@master ~]# fping -a -e < iplist 
106.117.244.231 (28.8 ms)
1.81.1.223 (42.6 ms)
182.86.84.229 (49.4 ms)
106.117.244.232 (42.7 ms)
125.64.1.232 (36.6 ms)

2.4.五、fping 打印可达设备的统计数据

[root@master ~]# fping -s -a < iplist 
106.117.244.232
182.86.84.229
125.64.1.232

       9 targets
       3 alive
       6 unreachable
       0 unknown addresses

      30 timeouts (waiting for response)
      33 ICMP Echos sent
       3 ICMP Echo Replies received
       0 other ICMP received

 208 ms (min round trip time)
 219 ms (avg round trip time)
 229 ms (max round trip time)
        4.148 sec (elapsed real time)

参考文章:
https://www.cnblogs.com/operationhome/p/9848138.html
http://www.javashuo.com/article/p-uhgvpewd-ew.html

相关文章
相关标签/搜索