一、ping命令
1、在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为:
a、用来检测网络的连通情况和分析网络速度
b、根据域名得到服务器IP
c、根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。
我们通常会用它来直接ping ip地址,来测试网络的连通情况
类如这种,直接ping ip地址或网关,ping通会显示出以上数据,有朋友可能会问,bytes=32;time<1ms;TTL=128 这些是什么意思。
bytes值:数据包大小,也就是字节。
time值:响应时间,这个时间越小,说明你连接这个地址速度越快。
TTL值:Time To Live,表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。可以通过Ping返回的TTL值大小,粗略地判断目标系统类型是Windows系列还是UNIX/Linux系列。
因此一般TTL值:
100~130ms之间,Windows系统 ;
240~255ms之间,UNIX/Linux系统。
ping命令除了直接ping网络的ip地址,验证网络畅通和速度之外,它还有这些用法。
2、ping -t的使用
不间断地Ping指定计算机,直到管理员中断。
3、ping -a的使用ping-a解析计算机名与NetBios名。就是可以通过ping它的ip地址,可以解析出主机名。当你遇到一个ip,却不知道他是那个设备时,这时你可以通过ping -a知道它的主机名。
4、ping -n的使用
在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送10个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:
从以上我就可以知道在给47.93.187.142发送10个数据包的过程当中,返回了10个,没有丢失,这10个数据包当中返回速度最快为32ms,最慢为55ms,平均速度为37ms。说明我的网络良好。
如果对于一些不好的网络,比如监控系统中非常卡顿,这样测试,返回的结果可能会显示出丢失出一部分,如果丢失的比较多的话,那么就说明网络不好,可以很直观的判断出网络的情况。
5、ping -l size的使用
ping-l size:发送size指定大小的到目标主机的数据包。
在默认的情况下Windows的ping发送的数据包大小为32byt,最大能发送65500byt。当一次发送的数据包大于或等于65500byt时,将可能导致接收方计算机宕机。所以微软限制了这一数值;这个参数配合其它参数以后危害非常强大,比如攻击者可以结合-t参数实施DOS攻击。(所以它具有危险性,不要轻易向别人计算机使用)。
例如:ping -l 65500 -t 211.84.7.46
会连续对IP地址执行ping命令,直到被用户以Ctrl+C中断
这样它就会不停的向211.84.7.46计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,网络严重堵塞,由此可见威力非同小可。
6、ping -r count 的使用
这个命令在“记录路由”字段中记录传出和返回数据包的路由,探测经过的路由个数,但最多只能跟踪到9个路由。
ping -n 1 -r 9 202.102.224.25 (发送一个数据包,最多记录9个路由)
将经过 9个路由都显示出来了,可以看上图。也就是说可以跟踪ip地址所经过的9个路由,在检查故障时可以快速定位。
7、如何同时批量ping多个ip地址
(1)ping一个网段
对于一个网段ip地址众多,如果单个检测实在麻烦,那么我们可以直接批量ping网段检测,那个ip地址出了问题,一目了然。
先看代码,直接在命令行窗口输入:
for /L %D in (1,1,255) do ping 10.168.1.%D
IP地址段修改成你要检查的IP地址段。
当输入批量命令后,那么它就自动把网段内所有的ip地址都ping完为止。
那么这段“for /L %D in(1,1,255) do ping 10.168.1.%D” 代码是什么意思呢?
代码中的这个(1,1,255)就是网段起与始,就是检测网段192.168.1.1到192.168.1.255之间的所有的ip地址,每次逐增1,直接到1到255这255个ip检测完为止。
(2)ping网段升级
上面的命令虽然能批量ping 地址,但是上面代码在命令行窗口显示数量多的时候看起来也很麻烦,那么我们再升级一下,用下面的代码。
for /L %D in (1,1,255) do ping -n 10.168.1.%D >>a.txt
说明,ip地址是变的,你填你需要测的ip网段就行,a.txt也是变的,可以自已设置名称。
这样就会把结果导入的a.txt文件中,全部IP检查完成后打开a.txt搜索“TTL=”包含它的就是通的地址,没有包含“TTL=”的地址就是不通的。如下图
打开后,就直接搜索没TTL的就可以了。
(3)ping网段命令再升级
很多人要说了这样还要搜索,也不是太方便,需要这样查来查去,那么我们再看下,是否有更简便的方法呢?
答案肯定是有的,我们来看代码。
for /l %D in (1,1,255) do (ping 192.168.1.%D -n 1 && echo 192.168.1.%D>>ok.txt || echo 192.168.1.%D >>no.txt)
这段代码会将ping通的IP和不通的IP分别放到两个文件里面,这样是不是很方便啦,如下图:
这段代码非常实用,在大网络中可以用到,就是大家在输入的时候需要细心,不过也没有关系,可以直接把这个文章收藏,日后要用,直接复制里面代码,然后改下里面ip地址就行了。
(4)ping网段命命令终极方法
上面提到的三种代码提到的都是针对同一个网段内ip地址批量检测,那么肯定在实际项目中,也可能存不同网段的ip地址需要同时检测,那么怎么办呢?
也有方法,可以把没有规划的ip地址同时批量检测,我们来看下代码:
for /f %D in (ip.txt) do (ping %D -n 1 && echo %i>>ok.txt || echo %D >>no.txt)
看见没有多了一个ip.txt文件,这个文件是要你自己准备的哦,把你ping的地址写到这个文件里面,同时可以ping 1000个ip地址以上,代码会自己读取这个文件里面的ip地址,并且把结果放到两个文件里面去。这里就不给大家截图了与上图差不多。
这里面补充下:
上面代码生成的文件在你命令行默认目录下。也就是说如果你的命令行状态是:
"c:\windows\system32>"那么生成的文件就在系统的system32目录下面。如果是"c:\"那么文件就在C盘根目录下。这个可以根据自己的实际情况进行调整。
二、Linux下ping命令
-d 使用Socket的SO_DEBUG功能。
-f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。
-n 只输出数值。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-R 记录路由过程。
-v 详细显示指令的执行过程。
-c 数目:在发送指定数目的包后停止。
-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-I 网络界面:使用指定的网络界面送出数据包。
-l 前置载入:设置在送出要求信息之前,先行发出的数据包。
-p 范本样式:设置填满数据包的范本样式。
-s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。
-t 存活数值:设置存活数值TTL的大小。
三、Linux下fping命令
(1)Usage: fping [options] [targets...]
用法:fping [选项] [ping的目标]
-a show targets that are alive
显示可ping通的目标
-A show targets by address
将目标以ip地址的形式显示
-b n amount of ping data to send, in bytes (default 56)
ping 数据包的大小。(默认为56)
-B f set exponential backoff factor to f
设置指数反馈因子到f 【这个不懂,求指教~】
-c n count of pings to send to each target (default 1)
ping每个目标的次数 (默认为1)
-C n same as -c, report results in verbose format
同-c, 返回的结果为冗长格式
-e show elapsed time on return packets
显示返回数据包所费时间
-f file read list of targets from a file ( - means stdin) (only if no -g specified)
从文件获取目标列表( - 表示从标准输入)(不能与 -g 同时使用)
-g generate target list (only if no -f specified)
生成目标列表(不能与 -f 同时使用)
(specify the start and end IP in the target list, or supply a IP netmask)
(ex. fping -g 192.168.1.0 192.168.1.255 or fping -g 192.168.1.0/24)
(可指定目标的开始和结束IP, 或者提供ip的子网掩码)
(例:fping -g 192.168.1.0 192.168.1.255 或 fping -g 192.168.1.0/24)
-H n Set the IP TTL value (Time To Live hops)
设置ip的TTL值 (生存时间)
-i n interval between sending ping packets (in millisec) (default 25)
ping包之间的间隔(单位:毫秒)(默认25)
-l loop sending pings forever
循环发送ping
-m ping multiple interfaces on target host
ping目标主机的多个网口
-n show targets by name (-d is equivalent)
将目标以主机名或域名显示(等价于 -d )
-p n interval between ping packets to one target (in millisec)
对同一个目标的ping包间隔(毫秒)
(in looping and counting modes, default 1000)
(在循环和统计模式中,默认为1000)
-q quiet (don't show per-target/per-ping results)
安静模式(不显示每个目标或每个ping的结果)
-Q n same as -q, but show summary every n seconds
同-q, 但是每n秒显示信息概要
-r n number of retries (default 3)
当ping失败时,最大重试次数(默认为3次)
-s print final stats
打印最后的统计数据
-I if bind to a particular interface
绑定到特定的网卡
-S addr set source address
设置源ip地址
-t n individual target initial timeout (in millisec) (default 500)
单个目标的超时时间(毫秒)(默认500)
-T n ignored (for compatibility with fping 2.4)
请忽略(为兼容fping 2.4)
-u show targets that are unreachable
显示不可到达的目标
-O n set the type of service (tos) flag on the ICMP packets
在icmp包中设置tos(服务类型)
-v show version
显示版本号
targets list of targets to check (if no -f specified)
需要ping的目标列表(不能和 -f 同时使用)
-h show this page
显示本帮助页
(2) 使用实例
# fping -A -u -c 4 192.168.1.1 192.168.1.74 192.168.1.20
192.168.1.1 : xmt/rcv/%loss = 4/4/0%, min/avg/max = 1.54/2.30/4.32
192.168.1.74 : xmt/rcv/%loss = 4/0/100%
192.168.1.20 : xmt/rcv/%loss = 4/4/0%, min/avg/max = 0.07/0.07/0.08
(3)备注点
-i 多个目的地址ping包的发送间隔时间;
-p 单个IP地址ping包的发送间隔时间;
-i和-p同时使用的条件:目的地址的数量 * - i的时间 <= -p的时间;
fping [options] targets 此处描述是复数,用排除法可以得知 -i和-p的区别;