一.什么是ping 命令
在网络中 ping 是一个十分强大的 TCP/IP 工具,ping是定位网络通不通的一个重要手段。
ping 命令是基于 ICMP 协议来工作的,「 ICMP 」全称为 Internet 控制报文协议(Internet Control Message Protocol)。ping 命令会发送一份ICMP回显请求报文给目标主机,并等待目标主机返回ICMP回显应答。因为ICMP协议会要求目标主机在收到消息之后,必须返回ICMP应答消息给源主机,如果源主机在一定时间内收到了目标主机的应答,则表明两台主机之间网络是可达的。
简单来说,「ping」是用来探测主机A与网络中另一主机B之间是否可达的命令,如果两台主机之间ping通就表明这两台主机可以建立连接,可以通过网络传输数据. ping不通,则表明这两台主机不能建立起连接,不能通过网络传输数据。
二.ping命令的工作过程
1)假设有两个主机,主机A(192.168.0.1)和主机B(192.168.0.2),现在我们要监测主机A和主机B之间网络是否可达,那么我们在主机A上输入命令:ping 192.168.0.2;
2)此时,ping命令会在主机A上构建一个 ICMP的请求数据包(数据包里的内容后面再详述),然后 ICMP协议会将这个数据包以及目标IP(192.168.0.2)等信息一同交给IP层协议;
3)IP层协议得到这些信息后,将源地址(即本机IP)、目标地址(即目标IP:192.168.0.2)、再加上一些其它的控制信息,构建成一个IP数据包;
4)IP数据包构建完成后,还不够,还需要加上MAC地址,因此,还需要通过ARP映射表找出目标IP所对应的MAC地址。当拿到了目标主机的MAC地址和本机MAC后,一并交给数据链路层,组装成一个数据帧,依据以太网的介质访问规则,将它们传送出出去;
5)当主机B收到这个数据帧之后,会首先检查它的目标MAC地址是不是本机,如果是就接收下来处理,接收之后会检查这个数据帧,将数据帧中的IP数据包取出来,交给本机的IP层协议,然后IP层协议检查完之后,再将ICMP数据包取出来交给ICMP协议处理,当这一步也处理完成之后,就会构建一个ICMP应答数据包,回发给主机A;
6)在一定的时间内,如果主机A收到了应答包,则说明它与主机B之间网络可达,如果没有收到,则说明网络不可达。除了监测是否可达以外,还可以利用应答时间和发起时间之间的差值,计算出数据包的延迟耗时。
三.ping 命令的作用
1、用来检测网络的连通情况和分析网络速度
2、根据域名得到服务器 IP
3、根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。
4、用它直接 ping ip 地址,来测试网络的连通情况。
四,如何使用ping命令
1.直接 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 系列。
默认情况下,Linux 系统的 TTL 值为 64 或 255,WindowsNT/2000/XP 系统的 TTL 值为 128,Windows98 系统的 TTL 值为 32,UNIX 主机的 TTL 值为 255。
2.ping -t ip 地址或网关
不间断地 Ping 指定计算机,直到管理员中断。
这就说明电脑连接路由器是通的,网络效果很好。下面按按住键盘的 Ctrl+c 终止它继续 ping 下去,就会停止了,会总结出运行的数据包有多少,通断的有多少了。
3.ping -a ip 地址或网关
ping-a 解析计算机名与 NetBios 名。就是可以通过 ping 它的 ip 地址,可以解析出主机名。
4.ping -n 的使用
在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送 10 个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:
5.ping -l size 的使用
-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个路由经过都显示出来了,可以看上图。
7.批量ping网段
对于一个网段ip地址众多,如果单个检测实在麻烦,那么我们可以直接批量ping网段检测,那个ip地址出了问题,一目了然。
先看代码,直接在命令行窗口输入:
for /L %D in (1,1,255) do ping 192.168.2.%D
IP地址段修改成你要检查的IP地址段。
当输入批量命令后,那么它就自动把网段内所有的ip地址都ping完为止。
那么这段“for /L %D in(1,1,255) do ping 10.168.1.%D” 代码是什么意思呢?
代码中的这个(1,1,255)就是网段起与始,就是检测网段192.168.2.1到192.168.2.255之间的所有的ip地址,每次逐增1,直接到1到255这255个ip检测完为止。
来源 关于Ping命令的六种用法 - 知乎 (zhihu.com)