为了降低设计的复杂性,增强通用性和兼容性,计算机网络都设计成层次结构。这种分层体系使多种不同硬件系统和软件系统能够方便地连接到网络。管理员在分析和排查网络故障时,应充分利用网络这种分层的特点,快速准确地定位并排除故障。然而在实际故障排查过程中,这种分层方法往往被忽略,导致故障排查效率降低。
两种逐层排查方式
OSI的层次结构为管理员分析和排查故障提供了非常好的组织方式。由于各层相对独立,按层排查能够有效地发现和隔离故障,因而*般使用逐层分析和排查的方法。
通常有两种逐层排查方式,*种是从低层开始排查,适用于物理网络不够成熟稳定的情况,如组建新的网络、重新调整网络线缆、增加新的网络设备;另*种是从高层开始排查,适用于物理网络相对成熟稳定的情况,如硬件设备没有变动。无论哪种方式,*终都能达到目标,只是解决问题的效率有所差别。
根据具体情况选择排查方式
具体采用哪种方式,可根据具体情况来选择。例如,遇到某客户端不能访问Web服务的情况,如果管理员**去检查网络的连接线缆,就显得太悲观了,除非明确知道网络线路有所变动。比较好的选择是直接从应用层着手,可以这样来排查:**检查客户端Web浏览器是否正确配置,可尝试使用浏览器访问另*个Web服务器;如果Web浏览器没有问题,可在Web服务器上测试Web服务器是否正常运行;如果Web服务器没有问题,再测试网络的连通性。即使是Web服务器问题,从底层开始逐层排查也能*终解决问题,只是花费的时间太多了。如果碰巧是线路问题,从高层开始逐层排查也要浪费时间。
在实际应用中往往采用折衷的方式,凡是涉及到网络通信的应用出了问题,直接从位于中间的网络层开始排查,**测试网络连通性,如果网络不能连通,再从物理层(测试线路)开始排查;如果网络能够连通,再从应用层(测试应用程序本身)开始排查。
**使用ping命令测试连通性。在TCP/IP网络中,排查网络问题的第*步常常是使用ping命令。如果能够成功地ping到远程主机,就排除了网络连接出现故障的可能性。即使是使用ping命令,也有*个逐步检测判断的步骤。
图1 网络示意图
例如,假设有*个如图1所示的网络,这里要测试网络能否正常通信。通常从ping远程计算机开始(例中在主机A上ping主机B),成功说明系统和网络正常,失败说明主机离线或网络故障。失败后再ping同*子网的网关(例中为192.168.1.1)来确认主机A是否能够连接到路由器。失败后再ping环回地址127.0.0.1来确认TCP/IP协议软件是否有问题,如果有问题,需要重新安装TCP/IP协议软件。也可以采用另*种步骤,从ping环回地址127.0.0.1开始,失败说明TCP/IP协议软件安装有问题,如果成功再ping同*子网的网关,如果成功再ping其他网关(路由器)逐步排查网络各个环节,直到*后ping远程主机。只要成功地ping到远程主机,可以判断网络问题*般发生在更高层次。
分层排查网络的措施
图2 分层排查网络的措施
每个网络层次都有相应的检测排查工具和措施,各层的基本排查措施如图2所示。在*底层的物理层,专业人员往往采用专门的线缆测试仪,没有测试仪的可通过网络设备(网卡、交换机等)信号灯进行目测。数据链路层的问题不多,对于TCP/IP网络,可以使用简单的arp命令来检查MAC地址(物理地址)和IP地址之间的映射问题。网络层出现问题的可能性大*些,路由配置容易出现错误,可通过route命令来测试路由路径是否正确,也可使用ping命令来测试连通性。协议分析器(如微软提供的网络监视器)具有很强的检测和排查能力,能够分析链路层及其以上层次的数据通信,当然包括传输层。至于应用层,可使用应用程序本身进行测试。