虽然DOS系统早已被淘汰,但是在管理维护网络时,DOS命令给我们提供了一种更加方便快捷、系统资源占用更少的操作方式。在这个系列中将陆续介绍一些在网络管理中经常用到的网络命令。
一、ping命令
1、ping命令的工作原理
Ping是最常用的网络命令,对这个我们最熟悉的命令非常有必要首先对它的原理进行深入了解。
ping命令利用ICMP协议进行工作。ICMP,Internet控制消息协议,主要用来在网络中的IP主机、路由器之间传递一些控制消息,所谓控制消息是指网络通不通、目的主机是否可达等消息。ICMP协议中包括了很多不同类型的控制消息,ping命令主要利用了其中的两种:“echo request”(回显请求)消息和“echo reply”(回显应答)消息。
ping命令的工作原理是在发送方主机上发送“echo request”(回显请求)控制消息,接收方正确接收后即发回“echo reply”(回显应答)控制消息,从而判断出双方能否正常通信。其过程如下图所示。
假设在A计算机上ping B,如果能ping通,在A计算机上显示的信息是从B计算机上返回来的。如果不能ping通,A计算机上显示的信息则是由系统产生的错误提示。
2、ping命令的显示信息
在
Windows系统中,默认情况下,每次执行ping命令会发送4个“echo request”消息,每个数据包大小为32字节,如果一切正常,应能收到4个同样为32字节大小的“echo reply”消息。如对百度执行ping命令显示的消息如下:
从这些消息中,首先可以获知百度的IP地址,当然这是由DNS服务器解析出来的。
另外,通过回显应答中的“time”,可以大致推断出网速情况,数据传递经过的时间越长,网速越慢。
回显应答中的“TTL”,即数据包的生存周期。每个系统对其所发送的数据包都要赋一个TTL的初始值,默认情况下,Windows XP和Window 2003系统的TTL初始值为128,Win7和Linux系统为64(当然,系统的TTL初始值都是可以修改的)。当数据包被发送到网络上之后,每经过一次路由,TTL值就要减1,所以通过TTL值,我们可以大概地推算出推断出数据包在传送过程中经过了多少次路由。像ping百度的回显应答中显示的TTL值为54,首先可以推断出对方的TTL初始值应该为64,数据包在传送过程中经过了10次路由。
如果执行
ping命令后,无法接收到对方的回显应答,则错误提示通常为:“Request timed out”(请求超时),出现这种提示,表示网络不通,但具体故障原因要视实际网络情况而定。
另外还有一种错误提示为:“Destination host unreachable”(目的主机不可达),
出现这种提示,则通常是因为没有设置网关或网关设置不正确。
比如,有台
PC的IP地址为192.168.0.10,子网掩码255.255.255.0,默认网关为192.168.0.1。在PC机上随便ping另外一个网段中的不存在的IP,如ping 172.16.1.10,因为这个IP根本不存在,所以显示错误提示“Request timed out”;将PC机的默认网关删掉,再次ping 172.16.1.10,此时则因为没有网关为其转发数据,所以显示错误提示“Destination host unreachable”。因而通过不同的错误提示,我们可以大致地判断出故障原因。
3、防火墙中对ICMP协议的设置
由于ICMP协议是一个比较复杂的协议,功能强大,经常被黑客利用来攻击网络上的路由器和主机,所以目前的很多杀毒软件或防火墙都提供了过滤ICMP控制消息的功能。如Windows XP中自带的防火墙就提供了这样的设置,在防火墙的高级选项中有一项专门针对ICMP协议的设置,如下图所示。
点击设置按钮之后,可以设置是否过滤某种类型的ICMP控制消息,默认情况下,所有类型的控制消息都被禁止传入,所以此时即使在网络正常连通的情况下别人也无法ping通这台主机。为了能够正常地执行ping命令,必须
启用“允许传入回显请求”。
WIN7系统中的防火墙默认也过滤了回显请求消息,在防火墙设置的入站规则中启用“网络-回显请求(ICMPv4-In)”,并将操作设置为“允许”,如下图所示。
3、ping命令的常用参数
(1)ping IP地址 –t
连续不停对IP地址发送ICMP数据包,直到被用户以Ctrl+C中断。
如:ping 192.168.1.1 -t
(2)ping IP地址 –n
自由指定所发送的ICMP数据包的个数,并且个数没有限制。
如:ping 192.168.1.1 –n 10
(3)ping IP地址 –l n
自由指定所发送的ICMP数据包的大小,上限为65500B。
如:ping 192.168.1.1 –l 100
这些参数也可以同时使用,如执行“
ping IP地址 –l 65500 –t”命令,连续向某一主机发送最大数据包,则很有可能使对方系统资源耗尽而死机或无法上网,所以这个命令也被称为“死亡之ping”。
死亡之
ping是一种典型的DoS(denial of service)攻击,即拒绝服务攻击。拒绝服务攻击以被攻击者的机器无法提供正常服务为攻击目的,常见的DoS攻击都是向被攻击者发送大量的垃圾数据包,使被攻击者一直在处理这些垃圾数据包而浪费资源,同时也消耗大量的网络带宽,最后导致被攻击者宕机,或者网络迟缓。但对于目前的计算机来讲,由于大多性能强劲,带宽也很高,所以死亡之ping以及一些类似的攻击方法已无法发挥作用。
单独一台计算机对目标机器发动死亡之
ping无法发挥作用,但是如果有多台计算机同时向目标机器发动死亡之ping,则威力仍然是巨大的。这种攻击方式就被称为DDoS(Distribution Denial of service),即分布式拒绝服务攻击。大规模的DDoS攻击很难防御,这也是目前一直无法从根本上解决的一个重要的网络安全问题。
二、tracert命令
Tracert也是一个利用ICMP协议工作的常用命令,它的工作原理是向指定的目的主机发送回显请求消息,并把封装该消息的数据包的TTL值从1开始递增。这样当数据包发送到网络中后,每经过一个路由器,路由器都要检查该报文的TTL是否到期,没有到期则把TTL值减1并传送到下一个路由器,如果到期了,则向发送方主机发送超时“Timed out”的ICMP消息。通过这种递进的查询过程,查询端就可以追踪到达目的主机所经过的所有路由器的情况。
例如,通过tracert跟踪到达百度所经过的路由,如下图所示。
Tracert命令每次发出3个回显请求消息,所以执行命令后首先看到的是路由器发回的3个超时消息所经过的时间,然后依次是所经过的每一个路由器的IP地址。从执行的结果看,从主机发出数据包直至百度,中间的确是经过10次路由,这也印证了从ping命令中推测的结果。
不过需要指出的是数据包途经的路由器,在每次传递过程中都可能不一样。
如果网络出现故障,通过tracert命令可以确定数据包在网络上的停止位置,从而使我们能够发现故障点。
本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/816172