网络通信 频道

用PING解决路由器故障

Ping命令
Packet Internet groper(ping) 该命令主要是用来检查路由是否能够到达,由于该命令的包长非常小,所以在网上传递的速度非常快,可以快速检测要去的站点是否可达,一般您在去某一站点是可以先运行一下该命令看看该站点是否可达。如果执行Ping不成功,则可以预测故障出现在以下几个方面:网线是否连通、网络适配器配置是否正确、IP地址是否可用等。如果执行Ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,Ping成功只能保证当前主机与目的主机间存在一条连通的物理路径。它的使用格式是在命令提示符下键入:Ping IP地址或主机名,执行结果显示响应时间,重复执行这个命令,你可以发现Ping报告的响应时间是不同的。
以用户方式使用Ping命令实际上是个非常简单的全局命令。它的形式如下:
bjrouter#ping [protocol]  {host|address}
使用这个形式的Ping命令时,我们可以键入下面的命令来执行ping:bjrouter#ping 192.168.1.2
假设我们的路由器使用的是IP协议,将5个ICMP回送请求数据包发送到IP地址为192.168.1.2的对方路由器。另外我们也可以使用下面这个远程的路由器名字:
bjrouter#ping gzrouter
如果要使用路由器名字,就必须激活路由器名字转换特性。如果路由器不知道如何将gzrouter转换成IP地址,我们就无法完成Ping命令的运行了。这时我们将会看到这个消息:
bjrouter#ping gzrouter
Translating“gzrouter”
%Unrecognized host or address,or protocol not running.
如果我们感到这个消息的文字太长,我们可以设定使用的IP地址,用Ping命令来查询地址为192.168.1.2的对方机器,方法是输入如下的命令:
bjrouter#ping 192.168.1.2
或者,如果我们想要检查一个使用AppleTalk的网络路由器,我们可以在命令中用apple,而不是使用IP,然后使用一个有效的AppleTalk地址,例如:
bjrouter#ping apple 22.195
我们来看看以用户方式使用Ping命令能看到什么呢?
当在一个路由器上发出一个Ping命令:
bjrouter#ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2 ,timeout is 2 seconds:
.!!!
Success rate is 80 percent (4/5),round-trip min/avg/max=48/49/52ms
请注意,5个数据包已经发出,但是我们在第一个数据包上遇到一个超时,而所有其他的数据包平均只用了49毫秒就得到了应答。其实这也不一定说明它有问题,实际上这种情况是非常多见的,之所以第一个数据包超时,这是很容易解释的。以太网协议在OSI模型的第2层上运行,而IP和ICMP则在第3层上层运行。在我们能够与运程的路由器通信之前,我们必须将第3层的地址转换成第3层的地址,这需要花费时间,Ping的默认超时只有两秒钟。我们不能以足够快的速度将IP地址转换成MAC地址,来防止第一个数据包超时,而后面的数据包则不需要转换MAC地址,因为它已经保存在ARP表中了。如果我们在第一个Ping之后立即试发相同的Ping,那么我们就不应该看到第一个数据包超时,因为ARP高速缓存仍然存储着远程路由器的MAC地址。我们再来看一看,这个例子:
bjrouter#ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2 ,timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/), round-trip min/avg/max=48/50/55 ms
请注意这一次所有的数据包都接收到了,有些情况下,可能有几个数据包收不到。我们立即可以想到的一种情况是ISDN(DNN)连接有问题了。如果在发送Ping命令时数据链路恰巧出现故障,那么在连接恢复之前,所有的5个数据包都可能超时。在这种情况下,你既可以改变感兴趣的信息的定义,也可以在试发Ping命令之前使用另一种方法,就是扩展型Ping命令。

扩展型Ping命令
关于Ping命令还有另一个问题需要注意,按照默认设置,用户方式的Ping命令将TTL组件设置为32。Ping遇到每个路由器时,这个值将递减1。如果TTL的值变成0,那么最后一个路由器将发回一个ICMP超时消息。如果你有一个非常长的路径,那么这个值可能不够。在大型网络中,必须使用扩展型Ping来检查网络的连通性。
扩展型Ping命令与用户方式的Ping命令有一些差别,比如:扩展型Ping我们必须激活才能使用。它只支持IP协议、AppleTalk和IPX协议,不支持Apollo、CLNX、DECnet、Vines、XNS等协议,还有一个最重要的优点是,我们自己可以改变Ping命令使用的默认值,改变这些值后,就可以使用相同的应用程序来进行许多不同的测试。
我们来看看扩展Ping是怎么来运行的,要使用扩展Ping首先要处于激活方式时键入Ping,并按回车键,然后Ping实用程序提示你输入各个变量,比如:
bjrouter#ping
Protocol [ip]:
Target IP address: 192.168.1.2
Repeat count [5]:
Datagram size[100]:
Timeout in seconds [2]:
Extended commands [n]:y
Source address or interface:192.168.1.1
Type of service [0]:
Set DF bit in IP header ? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose [none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2 ,timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max=1/2/4 ms

Ping命令的参数设置
从上面的输出结果中,我们可以看出一些参数是很有用的。第一,它问我们使用什么协议。这时,如果按回车键,就选择默认协议,即IP。下一个项目是目标IP地址。如果我们选择AppleTalk作为我们的协议,它将提示我们输入AppleTalk目标地址。如果选择IPX,情况也一样。
下一个参数是重复运行Ping命令的次数。我们可以将它设置为任何一个合理的整数。如果我们会遇到间歇性丢失连接的问题,那么将这个值设置得大一些,Ping命令将运行更长的时间,你就能够查看何时失去连接。它也使你能够连续运行Ping命令,而在另一方路由器上运行的应用程序似乎失去了连接。如果应用程序和Ping命令同时失去了连接,你就可以认为网络的连通性存在问题。但是,如果应用程序失去了连接,而Ping命令没有失去连接,那么就表示问题出在应用程序中。
数据包的大小也可以改变,它的默认值是100个字节。在网络的负荷量较大时,它可以用来检查连接的状态。当数据包的大小是默认值100个字节时,Ping命令常常无法暴露网络的任何异常情况,但是,当你将数据包的大小提高到500个字节时,你就能够看到重要的连接丢失现象或者应答时间中的重要变化。在你对网络进行基线性能分析时,你应该将大型、中型和小型Ping命令的吞吐量速度记入文档。这将有助于你准确地描绘在不同负荷量的情况下网络的运行情况。
当你设置这个参数时,应该小心,不要把它设置成会将其他因素掺和进来的程度。如果将数据包的大小设置为10000个字节,那么可以肯定它会产生你意料不到的结果。出现这种情况的原因之一是,以太网机器必须将数据包分割成以太网能够处理的大小,然后才能在网络线路上发送。远程接收到数据包后,要对数据包重新进行组合。这种组合花费的时间比你希望的要长,并且会导致它根据Ping所需时间之外的其他因素来解释连接的速度。当你改变数据包的大小时,请使用合理的方法。观察下面的命令输出,注意Ping是如何因为数据包的大小增加到最大值18024个字节时而造成超时的。另外,应答的时间同样也大大增加了,其原因肯定是因为数据包的大小有问题:
bjrouter#ping
Protocol [ip]:
Target IP address: 192.168.1.2
Repeat count [5]:
Datagram size[100]:18024
Timeout in seconds [2]:
Extended commands [n]:y
Source address or interface:192.168.1.1
Type of service [0]:
Set DF bit in IP header ? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose [none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 18024-byte ICMP Echos to 192.168.1.2 ,timeout is 2 seconds:
!!!..
Success rate is 60 percent (3/5), round-trip min/avg/max=40/40/40 ms
我们能够调整的下一个参数是超时参数。如果已经将数据的大小设置为大于默认值,我们也应该改变超时参数,因为数据包越大,发送和接收数据包所需要的时间也越长。如果将超时参数设置得太小,结果它看上去既可能像出现了间歇性连接中断,也可能像连接完全中断了一样。实际上,它只不过是在Ping命令已经超时以后数据包才到达的一种表现。如果你遇到了似乎是间歇性连接中断或者连接完全中断的问题,请将超时的值增加一倍,看看结果是如何变化的:
bjrouter#ping
Protocol [ip]:
Target IP address: 192.168.1.2
Repeat count [5]:
Datagram size[100]:
Timeout in seconds [2]:4
Extended commands [n]:y
Source address or interface:192.168.1.1
Type of service [0]:
Set DF bit in IP header ? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose [none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 18024-byte ICMP Echos to 192.168.1.2 ,timeout is 4 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max=40/40/40 ms
这些变量可以用于许多不同的目的,而对我们最有用的变量是源地址变量。你可以将Ping的源地址设置为另一个接口,而不是你所进入的路由器的接口,按照默认设置,如果你使用telnet通过以太网接口进入路由器,那么你的Ping将使用该以太网接口的源地址。有时你使用的接口不是你为telnet选择的接口。比如你设置了一个访问列表,这样你的以太网接口中只有一个接口能够访问某个网络,同时你不能使用telnet来访问该接口,如果对扩展型Ping命令的提示回答“y”,你仍然能够测试网络的连通性。这时路由器将要求你输入源接口的地址。如果输入原先不能使用的接口地址,将导致Ping命令离开该接口,这样,你就不用在修改可能成为故障原因的访问列表,就能够测试网络的连通性。

文章转载地址:http://www.365master.com/kt_article_show.php?article_id=1155&categ_code=10151002

0
相关文章