ping网络命令不弹出来(ping命令开始到结束)

有朋友反映,能不能讲下ping命令的使用,其实对于命令的使用我们之前提到过一些,但对ping命令没有过多讲解,一般我们用的都是它的基本功能,今天我们来详细看下ping命令详细使用。

一、ping基本使用详解

在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为:

1、用来检测网络的连通情况和分析网络速度

2、根据域名得到服务器IP

3、根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。

我们通常会用它来直接ping IP地址,来测试网络的连通情况。

ping网络命令不弹出来(ping命令开始到结束)(1)

ping命令的七种用法,看完瞬间成大神

类如这种,直接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。

因此一般TTL值:

100~130ms之间,Windows系统 ;

240~255ms之间,UNIX/Linux系统。

当然,我们今天主要了解并不是这些,而是ping的其它参考。

ping命令除了直接ping网络的ip地址,验证网络畅通和速度之外,它还有这些用法。

ping网络命令不弹出来(ping命令开始到结束)(2)

ping命令的七种用法,看完瞬间成大神

二、ping -t的使用

不间断地Ping指定计算机,直到管理员中断。

ping网络命令不弹出来(ping命令开始到结束)(3)

ping命令的七种用法,看完瞬间成大神

这就说明电脑连接路由器是通的,网络效果很好。下面按按住键盘的Ctrl c终止它继续ping下去,就会停止了,会总结出运行的数据包有多少,通断的有多少了。

三、ping -a的使用

ping-a解析计算机名与NetBios名。就是可以通过ping它的ip地址,可以解析出主机名。

ping网络命令不弹出来(ping命令开始到结束)(4)

ping命令的七种用法,看完瞬间成大神

四、ping -n的使用

在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送10个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:

ping网络命令不弹出来(ping命令开始到结束)(5)

ping命令的七种用法,看完瞬间成大神

从以上我就可以知道在给47.93.187.142发送10个数据包的过程当中,返回了10个,没有丢失,这10个数据包当中返回速度最快为32ms,最慢为55ms,平均速度为37ms。说明我的网络良好。

如果对于一些不好的网络,比如监控系统中非常卡顿,这样测试,返回的结果可能会显示出丢失出一部分,如果丢失的比较多的话,那么就说明网络不好,可以很直观的判断出网络的情况。

五、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中断.

ping网络命令不弹出来(ping命令开始到结束)(6)

ping命令的七种用法,看完瞬间成大神

这样它就会不停的向211.84.7.46计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,网络严重堵塞,由此可见威力非同小可。

六、ping -r count 的使用

在"记录路由"字段中记录传出和返回数据包的路由,探测经过的

路由个数,但最多只能跟踪到9个路由。

ping -n 1 -r 9 202.102.224.25 (发送一个数据包,最多记录9个路由)

ping网络命令不弹出来(ping命令开始到结束)(7)

ping命令的七种用法,看完瞬间成大神

将经过 9个路由都显示出来了,可以看上图。

ping命令用的较多的就这6类的,大家有可能在项目中会用到的。

七、批量ping网段

对于一个网段ip地址众多,如果单个检测实在麻烦,那么我们可以直接批量ping网段检测,那个ip地址出了问题,一目了然。

先看代码,直接在命令行窗口输入:

for /L %D in (1,1,255) do ping 10.168.1.%D

IP地址段修改成你要检查的IP地址段。

ping网络命令不弹出来(ping命令开始到结束)(8)

ping命令的七种用法,看完瞬间成大神

当输入批量命令后,那么它就自动把网段内所有的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检测完为止。

八、ping命令的背后原理

那么对于 ping命令的原理,ping是如何检查网络的?大家之前有了解吗?接下来我们来跟着ping命令走一圈,看看ping是如何工作的。

环境准备和抓包

环境准备

抓包工具:Wireshark 准备两台电脑,进行互 ping操作:

1. A电脑(IP地址: 192.168.2.135/ MAC地址:98:22:EF:E8:A8:87)

2. B电脑(IP地址: 192.168.2.179/ MAC地址:90:A4:DE:C2:DF:FE)

抓包操作

打开 Wireshark,选取指定的网卡进行抓包,进行 ping操作,在 A电脑上 ping B电脑的 IP

ping网络命令不弹出来(ping命令开始到结束)(9)

抓包情况如下:

ping网络命令不弹出来(ping命令开始到结束)(10)

这里先简单的介绍下Wireshark的控制面板,这个面板包含7个字段,分别是:

· NO: 编号

· Time: 包的时间戳

· Source: 源地址

· Destination: 目标地址

· Protocol: 协议

· Length: 包长度

· Info: 数据包附加信息

03 深入解析

上图中抓包编号 54-132显示的就是整个ping命令的过程,我们知道ping命令不是依托于 TCP或者 UDP这种传输层协议的,而是依托于ICMP协议实现的, 那么什么是ICMP协议呢?这里简单介绍下:

ICMP协议的产生背景

[RFC792]中说明了 ICMP产生的原因:由于互联网之间通讯会涉及很多网关和主机,为了能够报告数据错误,所以产生了ICMP协议。也就是说ICMP协议就是为了更高效的转发 IP数据报和提高交付成功的机会。

ICMP协议的数据格式

ping网络命令不弹出来(ping命令开始到结束)(11)

根据上图我们知道了 ICMP协议头包含 4个字节,头部主要用来说明类型和校验ICMP报文。下图是对应的类型和代码释义列表,我们后面分析抓包的时候会用到。

ping网络命令不弹出来(ping命令开始到结束)(12)

简单介绍完了 ICMP,那么抓包过程中出现的ARP协议是什么呢?我们同样来简单解释下:

ARP协议

我们知道,在一个局域网中,计算机通信实际上是依赖于 MAC地址进行通信的,那么ARP(AddressResolutionProtocol)的作用就是根据 IP地址查找出对应的 MAC地址。

Ping过程解析

了解了上面的基础概念后,我们来分析下抓包的数据,其流程如下:

A 电脑( 192.168.2.135)发起ping请求,ping192.168.2.179

A 电脑广播发起 ARP请求,查询192.168.2.179的 MAC地址。

B 电脑应答 ARP请求,向 A电脑发起单向应答,告诉 A电脑自己的 MAC地址为90:A4:DE:C2:DF:FE

知道了 MAC地址后,开始进行真正的 ping请求,由于 B电脑可以根据A电脑发送的请求知道 源 MAC地址,所以就可以根据源 MAC地址进行响应了。

上面的请求过程我画成流程图比较直观一点:

ping网络命令不弹出来(ping命令开始到结束)(13)

观察仔细的朋友可能已经发现,Ping 4次请求和响应结束后,还有一次 B电脑对 A电脑的 ARP请求,这是为什么呢?这里我猜测应该是有 2个原因:

由于 ARP有缓存机制,为了防止ARP过期,结束后重新更新下ARP缓存,保证下次请求能去往正确的路径,如果ARP过期就会导致出现一次错误,从而影响测试准确性。

由于 ping命令的响应时间是根据请求包和响应包的时间戳计算出来的,所以一次 ARP过程也是会消耗时间。这里提前缓存最新的ARP结果就是节省了下次ping的ARP时间。

为了验证我们的猜测,我再进行一次 ping操作,抓包看看是不是和我们猜测的一样。此时,计算机里面已经有了ARP的缓存,我们执行ARP-a看看缓存的arp列表:

ping网络命令不弹出来(ping命令开始到结束)(14)

我们看看第二次 ping的抓包

ping网络命令不弹出来(ping命令开始到结束)(15)

我们看到上图中在真正 ping之前并没有进行一次ARP请求,这也就是说,直接拿了缓存中的ARP来执行了,另外当 B计算机进行响应之前还是进行了一次ARP请求,它还是要确认下之前的ARP缓存是否为正确的。然后结束ping操作之后,同样再发一次ARP请求,更新下自己的ARP缓存。这里和我们的猜想基本一致。

弄懂了 ping的流程之后我们来解析下之前解释的ICMP数据结果是否和抓包的一致。我们来点击一个ping request看看ICMP协议详情

ping网络命令不弹出来(ping命令开始到结束)(16)

图中红框内就行 ICMP协议的详情了,这里的Type=8,code=0, 校验是正确,且这是一个请求报文。我们再点击Responseframe:57,这里说明响应报文在序号57。详情如下:

ping网络命令不弹出来(ping命令开始到结束)(17)

上图的响应报文, Type=0,code=0,这里知道就是响应报文了,然后最后就是根据请求和响应的时间戳计算出来的响应延迟。3379.764ms-3376.890ms=2.874ms。

04 总结

我们分析了一次完整的 ping请求过程,ping命令是依托于ICMP协议的,ICMP协议的存在就是为了更高效的转发 IP数据报和提高交付成功的机会。ping命令除了依托于ICMP,在局域网下还要借助于ARP协议,ARP协议能根据 IP地址反查出计算机的 MAC地址。另外ARP是有缓存的,为了保证ARP的准确性,计算机会更新ARP缓存。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页