1.基本用法
Ping用于测试网络是否连通,可以说是最常用的网络命令。
Ping命令利用ICMP协议进行工作,原理是在发送方主机上发送“echorequest”(回显请求)控制消息,接收方正确接收后即发回“echoreply”(回显应答)控制消息,从而判断出双方能否正常通信。
假设在A计算机上pingB,如果能ping通,在A计算机上显示的信息是从B计算机上返回来的。如果不能ping通,A计算机上显示的信息则是由系统产生的错误提示。
在Windows系统中,默认情况下,每次执行ping命令会发送4个ICMP“回显请求”(echorequest),每个数据包大小为32字节,如果一切正常,应能收到4个同样为32字节大小的ICMP“回显应答”(echoreply):
通过回显应答中的“time”,可以大致的推断出网速情况,数据传递经过的时间越长,网速越慢。
回显应答中的“TTL”,即数据包的生存周期。每个系统对其所发送的数据包都要赋一个TTL的初始值,默认情况下,WindowsXP系统为128,Win7系统为64,Linux系统为64或255(当然,系统的TTL值都是可以修改的)。另外因为数据包每经过一次路由,TTL值就要减1,所以通过TTL值,我们既可以大概地推算出对方主机所用的操作系统,又可以推断出在数据包在传送过程中经过了多少次路由。比如,执行命令“pingwww.baidu.com”,回显应答中显示的TTL值为52,则首先可以推断出对方使用的是Linux系统,其次可以得知数据在传送过程中经过了12次路由。
这点可以通过tracert命令进行验证,tracert也是一个利用ICMP协议的命令,它的原理非常巧妙:它向指定的目的主机发送多次回显请求消息,并把封装该消息的IP报文的TTL值从1开始递增。即tracert命令第一次发送出去的IP报文的TTL为1,这样该报文在经过第一个路由器时,TTL值便被减为了0,这台路由器就要向源主机发回一个回显应答消息,通过这种方式就获得了这台路由器的信息。通过这种递进的查询过程,查询端就可以追踪到达目的主机所经过的所有路由器的情况。
tracert命令的执行结果:
另外,大家可能会发现,每次执行tracert命令所查询到路径都不大一样,这是完全正常的,数据包每次传送时采用不同的路径,这正是Internet所采用的分组交换方式的特点。
2.错误提示分析
如果执行ping命令后,无法接收到对方的回显应答,则错误提示通常为:
Requesttimedout
出现这种提示,表示网络不通,但具体故障原因要视实际网络情况而定。
另外还有一种错误提示为:
Destinationhostunreachable
出现这种提示,则通常是因为没有设置网关或网关设置不正确。
比如,有台PC的IP地址为192.168.0.10,子网掩码255.255.255.0,默认网关为192.168.0.1。在这台PC机上随便ping另外一个网段中的不存在的IP,如ping172.16.1.10,因为这个IP根本不存在,所以显示错误提示“Requesttimedout”;
将PC机的默认网关删掉,再次ping172.16.1.10,此时则因为没有网关为其转发数据,所以显示错误提示“Destinationhostunreachable”。因而通过不同的错误提示,我们可以大致地判断出故障原因。
3.ping命令的防火墙设置
Ping命令利用ICMP协议工作,ICMP是一个比较复杂的协议,功能强大,也经常被黑客利用来攻击网络上的路由器和主机,互联网上的很多攻击方式都或多或少的用到了ICMP协议,所以目前的很多杀毒软件或防火墙都提供了禁用ICMP协议的功能。如Windows2003/XP系统中自带的防火墙就提供了这样的设置,如果两台安装Windows2003/XP系统的主机在网络正常连通的情况下无法彼此ping通,则可以检测在防火墙的ICMP设置中是否启用了“允许传入回显请求”,如果没启用该项功能,那么防火墙将过滤掉ICMP回显请求数据包,从而导致无法ping通。
对于Windows7或WindowsServer2008系统的防火墙,可以在“入站规则”中启用“文件和打印机共享(回显请求-ICMPv4-In)”规则,这样防火墙就不会过滤ICMP回显请求数据包了,从而使计算机可以ping通。
或者我们也可以自己新建一条防火墙规则,以允许ping命令的数据包通过。
新建一条入站规则,规则类型选择“自定义”:
规则应用于所有程序:
协议类型选择ICMPv4
也可以点击右下角的“自定义”按钮,用于设置允许通过的ICMP消息类型,默认是允许所有消息全部通过:
将规则应用于所有的本机IP和所有的远程IP:
对符合条件的数据包允许通过:
将规则应用于所有的网络类型:
为规则起一个名称:
这样,我们便自己创建好了一条防火墙规则,利用该规则同样可以使得ping命令的数据包通过。
4.ping命令常用参数
参数可以对命令的功能进行扩展,Ping命令的参数比较多,常用的主要有以下几个:
(1)pingIP地址–t
连续不停对IP地址发送ICMP数据包,直到被用户以Ctrl+C中断。
如:ping192.168.1.1-t
(2)pingIP地址–n
自由指定所发送的ICMP数据包的个数,并且个数没有限制。
如:ping192.168.1.1–n10
(3)pingIP地址–ln
自由指定所发送的ICMP数据包的大小,上限为65500B。
如:ping192.168.1.1–l100
5.拒绝服务攻击
Ping命令的参数也可以组合使用,比如执行“pingIP地址–l65500–t”命令,就可以连续地向某一台主机发送最大数据包,这样就有可能使对方系统资源耗尽而死机或导致无法上网,所以这个命令也被称为“死亡之ping”。
死亡之ping是一种典型的DoS(DenialofService)攻击,即拒绝服务攻击。拒绝服务攻击以被攻击者的机器无法提供正常服务为攻击目的,常见的DoS攻击都是向被攻击者发送大量的垃圾数据包,使被攻击者一直在处理这些垃圾数据包而浪费资源,同时也消耗大量的网络带宽,最后导致被攻击者宕机,或者网络迟缓。但对于目前的计算机来讲,由于大多性能强劲,网络带宽也很高,所以死亡之ping以及一些类似的攻击方法已无法发挥作用。
单独一台计算机对目标机器发动死亡之ping无法发挥作用,但是如果有多台计算机同时向目标机器发动死亡之ping,则威力仍然是巨大的。这种攻击方式就被称为DDoS(DistributionDenialofService),即分布式拒绝服务攻击。大规模的DDoS攻击很难防御,这也是目前一直无法从根本上解决的一个重要的网络安全问题。
下面我们通过一款“SYN攻击器”工具来体验一下拒绝服务攻击。“SYN攻击器”的原理是利用在TCP三次握手的过程中建立大量伪造的半连接,从而耗尽目标计算机的资源。
我们在一台安装有Win2003系统的虚拟机中运行该软件(为保证实验效果,建议将Win2003系统的防火墙关闭),输入要攻击的目标计算机的IP地址和端口号(端口号可以是任意一个开放的TCP端口),然后点击“start”按钮开始攻击。
攻击开始后,到目标计算机上打开Windows任务管理器,可以看到此时CPU使用率基本达到了100%,拒绝服务攻击成功。
无论目标计算机上是否启用了防火墙,都无法阻挡住SYN攻击,而且此种攻击方式对Win7系统也同样有效。这还只是由单一攻击方发起的DoS攻击,如果是众多攻击方同时展开的DdoS攻击,那么威力将更加强大。
6.利用ping命令排查网络故障
Ping命令对于我们排查网络故障将提供极大地帮助。比如电脑无法接入Internet,我们可以按照如下思路来排查故障。
①首先来ping网关,如果能够ping通,则证明内部网络没有问题,问题应该出在外部网络。
②再来ping某个网址,比如“pingwww.baidu.com”,测试能否将网址解析为IP,以确认是否DNS服务器设置错误。
③如果在步骤①中ping网关不通,则证明问题出在内部网络。此时可以测试能否ping通内网中的其它电脑,如果不能ping通,则证明是我们自己的电脑或是网线出了问题,如果能ping通,问题则与我们的电脑或网线没有关系,多半是内部网络的某处出现了问题。
本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1300573