利用Ping命令查找网络故障
chw · 2007-08-29 23:12 · 73125 次点击
进行网络管理和排除故障时,最方便的是使用操作系统配备的工具。Windows和Unix都配备有一些工具,用这些工具可以探察网络状态,查明故障原因。即使不能查明故障原因,至少也可以弄清问题的性质,以便进一步处理。
表1列出了Windows和Unix中附带的典型命令。操作系统不同使用的命令不同,即使同样功能的命令,在不同操作系统中,名称也不一样。在Unix和Windows中,命令所备有的命令选择参数的种类以及使用方法也不同。下面我们以Windows、TCP/IP通信协议为例,加以说明。
表1.Windows和Unix中附带的典型命令
功能Unix/LinuxWindowsNT/2000Windows95/98/ME
确认通信pingpingping
确认TCP/IP设定ifconfigipconfigipconfig,winipcfg
检查路由traceroutetracerttracert
显示、编辑路由表routerouteroute
显示收/发包的统计信息netstatnetstatnetstat
确认DNS机构nslookupnslookup-
确认NBT的功能nmblookupnbtstatnbtstat
首先要正确掌握命令的执行顺序,以便能迅速确定问题的性质。
首先,用ping查明问题性质,而后使用其他合适的工具。ping是用于确认是否能与目标计算机进行通信的命令。这是大家最熟悉的一个命令。遗憾的是,即使通过执行ping,确认了不能正常进行通信,但这还不能解决问题。如果有效活用ping命令所备有的功能,可以将问题分成两类:不能进行TCP/IP通信和名字解析过程有问题。
不能进行TCP/IP通信时,使用ipconfig、tracert、route、netstat等工具;而当名字解析机构有问题时,nslookup、nbtstat等命令将发挥作用。
熟练掌握ping的用法
ping是对TCP/IP网络上的任意一台计算机发送一个请求ICMP(InternetControlMessageProtocol)应答的小信息包程序。接收这个信息包的计算机,要返回个“应答”包。收到了“应答”包,就可确认可进行通信。ping除了确认通信外,还可以确认名字解析,测定通信所需的时间等。
在命令提示符后,键入ping<目标计算机名或IP地址>执行即可。在Windows中,目标计算机名可以是DNS中所用的主机名或NetBIOS名,也可以直接指定IP地址。
当指定目标计算机名时,ping检索该计算机的IP地址,向检索出的IP地址发送请求ICMP应答信息包。当指定IP地址时,直接对该IP地址发送请求ICMP应答信息包。也就是说,若指定目标计算机名,就自动加进了名字解析过程。
当和目标计算机的通信发生问题时,屏幕上显示“Unknownhost”或“Requesttimedout”信息。
一种情况是,当执行ping<目标计算机名>时,出现“Unknownhost”,表示没有找到所给目标计算机的IP地址,说明名字解析失败,但是否意味着不能和目标计算机进行通信,仍未可知。这时,将目标计算机名改换成IP地址,再次执行ping,如果能顺利通信,那么就可以判定只是名字解析的问题,如果屏幕上显示“Requesttimedout”,就可以判定与目标计算机不能进行通信。另一种情况是,当执行ping<目标计算机名>时,显示“Requesttimeout”,这说明名字解析虽然正确,但却不能进行通信。这样,通过执行ping,就可以将问题分成了两类。根据这个结果,来考虑下一步应选用的工具。
通过执行ping还可以知道“应答”包的往复时间,由此来判断网络的拥挤程度。在Windows的情况下,不指定命令选项执行ping,是给目标计算机连续重复发送4次请求应答信息包。当在1秒之内等不到“应答”时,显示“Requesttimedout”信息。显示内容包括:每次的往复时间、4次中的最小时间、平均时间和最大时间。如果花的时间太长,一般认为是频繁发生了信息包冲突。在网络没有故障的情况下,测定信息包的往复时间,比较执行结果,就可以判断出网络的拥挤程度。另外,在确认网络正常通信、而由于网络拥挤显示“Requesttimedout”信息时,为了正确测量“应答”包的返回时间,可以用ping的选项-w来指定等待应答时间(单位为μS)。如ping-w10000192.168.0.14。
当即使执行了ping也没有应答包返回时,很有可能是网卡驱动程序和操作系统的协议栈不正常。这时,只要对返回地址(loopbackAddress)执行ping就可以弄清楚。所谓返回地址就是计算机用于指示自己本身所用的特殊地址。哪个计算机的返回地址都是127.0.0.1,用这个地址执行ping,就能确认TCP/IP栈是否在正常运行。