ccidnet????

出版日期:2000-12-18 总期号:982 本年期号:94

本期导读
要闻综合
电脑工作室
渠道与市场
产品与应用
软件与服务
InfoCD
如何有效使用ping工具

王屹

  Ping是一个验证网络上的两个主机之间连通性的分析工具。它发送网间控制报文协议(ICMP)的回应请求(Echo_Request)报文到一个远程IP地址,然后准备接收返回的ICMP应答报文。Ping程序的最初版本的作者是Mike Muss。自该程序诞生以来,已有许多人修改和重写它,并在不同程度上沿用了Ping这一思想。

  一般情况下,Ping是检测机器收发IP报文能力的一个很好的指示器。如果你能Ping一个主机,那么你也能建立一个FTP或HTTP连接。目前,由于安全原因而被广泛采用的报文过滤方法,使得Ping的能力受到了限制。基于如下两个原因,许多防火墙通常不允许ICMP报文的通过。

  1.通常人们没有必要知道你的内部网络是什么样子的。

  2.任何协议都可能被用来作为发起攻击的工具,即使是ICMP也不例外。

  决定是否允许让ICMP通过你的防火墙是一件较难权衡的事,因为有人会正当地利用ICMP的功能和能力,但也有人会利用ICMP来进行攻击行动(比如:“Ping of Death”就是利用特大的报文来Ping,从而导致目标主机的IP栈过载——常造成严重的后果)。如果你选择允许ICMP进入你的网络,则必须确信你已考虑到这一后果。


  Linux系统中Ping的使用


  Ping最常用的方式是不加任何参数。它的运行结果形式如例1所示。

  该结果输出内容被分为三个部分:该命令的概述;收到应答的运行时间;对结果的总结。在本例中,检测的结果是好的,没有丢失的报文。

表1 ping命令参数(linux)

参数

描述

-c count

在收发指定的count个数目的报文后停止

-d

在套接口设置so_debug

-f

尽可能快地发送报文

-i wait

设置连续报文发送时报文间的发送时间间隔(单位为秒)

-i ?device?

设置输出接口

-l preload

尽可能快地发送预载的报文,然后再返回到正常发送模式

-n

不查寻主机名,仅仅给出ip地址值

-p pattern

定义随同报文一起被发送的便笺内容(便笺最长为16个字节)

-q

仅输出结果的总结内容

-r

不使用路由表来发送报文,而是直接把报文发到主机

-r

设置记录路由选择功能,即记录报文传送经过的路径

-s packetsize

设置要发送的报文大小(单位为字节,最大长度是64k,缺省长度是64)

-t tsonly

发送一个带有时间戳的ping报文

-t tsandaddr

收集时间戳和地址

-t tsprespec

[host1 [host2 [host3 [host4]]]] 收集来自预定的网络段的时间戳和地址


  该例子也显示了一个要点——你不能仅仅依赖一个报文来分析你的网络状况。一个有5个或10个报文的序列检测效果才有可能真实地反映你的网络状况。因为,当网络发生拥塞时很有可能导致多达40%的数据被遗失,甚至,你要检测那端的主机碰巧很忙时也可能会丢失你的整个报文。

  Ping命令有好几个有用的参数。表1是对这些参数的概要描述。

  这些参数被组合使用可能会使Ping的输出内容更有用处。比如,例1的执行可能要花好几秒钟才能返回输出结果,但如果使用了-f参数则将会减少运行时间。把该参数和-c 5和-q参数组合使用将会很快使你获得运行结果,并且输出结果清晰易读。输出形式如下所示:

  # ping -c 5 -fq mango

  PING mango (192.168.1.1) from 192.168.1.10 : 56(84) bytes of data.

  --- mango ping statistics ---

  5 packets transmitted, 5 packets received, 0% packet loss

  round-trip min/avg/max = 0.2/0.2/0.9 ms

  #

  注意:-f和-l参数仅能由root用户使用,因为,滥用它们可能会引起严重的网络性能下降。

  有些时候,可能需要用较大的报文来测试。你可以使用:ping -c 5 -s 1024 -qf来发送较大的报文。当你怀疑问题可能出现在报文分段和重组方面的时候,采用这一策略可能特别有用。

  为了查看你的报文被传递的路由情况,你可以使用:ping -c 5 -R。

  注意:由-R定义的记录路由功能并不一定被所有的路由器和主机所支持,并且,它只有一段有限的空间来存放路由地址。要确定报文流经网络的路由路径,用一个效果更好的工具traceroute(Windows系统中是tracert程序)将更合适。

  

  例1

  $ ping mango

  PING mango (192.168.1.1) from 192.168.1.10 : 56(84) bytes of data.

  64 bytes from mango (192.168.1.1): icmp_seq=0 ttl=255 time=0.5 ms

  64 bytes from mango (192.168.1.1): icmp_seq=1 ttl=255 time=0.3 ms

  ...

  

  --- mango ping statistics ---

  6 packets transmitted,6 packets received,0% packet loss round-trip min/avg/max=0.3/0.3/0.5 ms


  Windows系统中Ping的使用


  在Windows系统中使用Ping的方法与前述的在Linux系统中的使用方法基本一致,只是参数有些差异。另外,在Windows中允许报文长度超过64KB,而不像Linux系统中因遵循Internet标准而把报文长度限制在64KB内,且它的缺省报文长度是32bytes。此处仅列出它的命令格式和参数的基本含义。

  ping命令格式:

  ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count]

  [[-j host-list] | [-k host-list]] [-w timeout] destination-list

  在Windows中使用Ping得出的输出结果样式框架基本,与Linux中的Ping输出结果相似,在此就不再细加解释。


  问题分析方法


  连通性问题是由许多原因引起的,如本地配置错误、远程主机栈失效等,当然还包括设备等造成的故障。

  遇到连通性问题时,作为一个有经验的用户首先想到的诊断工具就应该是Ping。Ping命令最适合于判断故障是否由配置、路由或物理故障引起的,而不太适合于判定应用层引起的故障。

  使用Ping测试连通性时,如果在指定时间内没有收到ICMP应答报文,则Ping就认为该主机不可达,然后向用户屏幕发送“host unreachable”信息(在Windows系统中信息是“Request time out”)。该信息可能是由一台主机故障引起的,也可能是目标主机关机了,或其通信协议栈不能响应远程用户请求。要确定目标主机是否有故障,只需向同一网段中的其它主机发Ping命令,如果可达,则可以确定是目标主机发生了故障;否则,故障就可能是由本地配置错误、物理故障或路由问题引起的。如果问题是由路由配置不当引起的,建议你使用Traceroute或Windows系统的Tracert程序来跟踪一个数据报文在主机间传送所经过的路径,以检测问题到底出在哪个环节上。如果Ping成功,则问题很可能是出在网络系统配置方面。

  总之,Ping命令是一个在故障处理方面很有用的且很便于使用的工具,你不应该忽视它的存在。

表2 ping命令参数(windows)

参数

描述

-t

不断地向指定的主机发送报文,直到组合键ctrl-c终止反复按ctrl-break可以查看统计信息或继续运行

-a

解析主机名的ip地址

-n count

指定要发送的请求应答报文的数目

-l size

设置发送缓冲区大小

-f

在报文中设置不分段标志

-i ttl

设置报文在网络中的生存时间(time to live)

-v tos

服务类型(type of service)

-r count

记录指定个数的路由段的路由情况

-s count

指定个数的路由段的时间戳

-j host-list

由指定的路由发送报文,但不强求一致

-k host-list

严格按指定路由发送报文

-w timeout

指定等待每个响应的最长时间(单位是毫秒)

destination-list

指定要ping的目标主机名或ip地址



  NT 5.0打印更安全


  从NT 4.0 到NT 5.0 很多系统内部的变化,用户可能很难感觉到。本文向大家介绍NT 5.0 在打印方面安全措施的改进。

  NT 4.0的打印驱动是运行在系统的核心层的,而在NT 5.0(Windows 2000)里,打印驱动运行于用户层空间里。这样的改变带来哪些好处呢?

  以前,当第三方提供的一些可能有问题的打印驱动在系统中运行,可能会造成系统的崩溃。但是,现在在NT 5.0系统中,即使运行着一些第三方提供的有问题的打印驱动程序,系统也不会因此而崩溃,至少在理论上是不会的。

  一个值得推荐的做法是,尽可能地使用NT 5.0提供的打印驱动程序。(石嘉)