龙源期刊网 http://www.qikan.com.cn
TCP/IP网络故障的诊断与排除
作者:林国兰 陈显毅 来源:《硅谷》2008年第17期
[摘要]结合Windows平台和网络设备提供的诊断工具说明了TCP/IP网络故障的诊断方法,接着论述了分层、分块和分段三种网络故障排除法,最后给出排除网络故障的基本流程。 [关键词]TCP/IP网络、故障诊断、故障排除
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0910111-02
一、TCP/IP网络故障的诊断
网络故障诊断应该实现三方面的目的:确定网络的故障点,恢复网络的正常运行;发现网络规划和配置中欠佳之处,改善和优化网络的性能;观察网络的运行状况,及时预测网络通信质量[1]。下面结合常用的网络诊断工具说明具体的诊断方法。 (一)Windows平台提供的诊断工具 1.Ping命令
Ping命令通过向目标主机发送ICMP数据包并侦听应答数据包来验证源主机与目标主机间在网络层是否可达。默认情况下,Ping连续发送4个包含32个字節的ICMP数据包,每个数据包均根据返回的消息分别进行验证。
当用Ping命令进行网络诊断时,若能成功接收到应答数据包则表明源主机与目标主机之间的所有物理层、数据链路层和网络层的功能都正常运行,此外从命令的输出结果我们还可以获取相关信息,比如根据往返时间“time”的值大小可以判断连接速度的快慢、根据生存时间“TTL”的值可以推算出数据包经过了多少个路由器。若不能成功接收到应答数据包且目标主机又允许响应ICMP数据包,则表明物理层、数据链路层和网络层存在问题,可根据出错提示信息进行相应检查;若目标主机由于防火墙、访问控制列表等配置而拒绝响应ICMP数据包,则应更改目标主机的配置使其允许响应ICMP数据包,否则不能说明任何问题。 2.IPconfig命令
龙源期刊网 http://www.qikan.com.cn
IPconfig命令用于显示本机TCP/IP协议的配置信息,具体包括:网络适配器的物理地址、主机IP地址、子网掩码、默认网关、DNS服务器和DHCP服务器等信息。
当进行网络诊断时,可以使用IPconfig命令来检验TCP/IP的配置是否正确;特别是当主机通过DHCP服务器自动获取IP地址时,利用IPconfig命令可以很方便地了解IP协议的实际配置参数。 3.Arp命令
在TCP/IP网络中,每个主机均维护着一张IP地址和MAC地址的映射关系表,该表保存在本地主机的高速缓存中,通过ARP协议动态地更新表中的记录。利用Arp命令可以显示当前表中的全部记录,也可以向表中静态地增加或删除记录。
当进行网络诊断时,可以使用Arp命令来查看IP地址和MAC地址的映射关系;特别是当网络中设置了IP地址和MAC地址绑定时,使用Arp命令还可以验证配置是否正确。 4.Route命令
在TCP/IP网络中,每个主机均维护着一张包含若干条记录的路由表,每条记录由目的子网、子网掩码、下一跳IP(网关)、转发接口和路由权值组成。利用Route命令可以显示路由表中的全部记录,也可以向表中增加或删除记录。
当进行网络诊断时,可以使用Route命令来查看路由表,检查表中是否有达到目的主机或子网的路由,若没有则添加相应路由。 5.Netstat命令
Netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,也可用于显示路由表的内容。
当进行网络诊断时,可以使用Netstat命令来检验本机各端口的连接情况,经常用来诊断传输层的网络故障。
(二)网络设备提供的诊断工具
网络设备中往往提供许多有用的故障诊断工具,利用这些工具可以诊断排除绝大多数网络故障。网络中的核心设备包括交换机和路由器,不同厂家的设备提供的命令有所不同,但使用方法基本相同,下面以华为设备为例介绍交换机和路由器提供的常用诊断工具。 1.显示命令
龙源期刊网 http://www.qikan.com.cn
display version命令用来查看软件的版本信息、发布时间和基本硬件配置信息;该命令通常在软件升级、获取在线帮助、硬件维修和替换设备时使用。display interface命令用来显示接口当前的运行状态和相关信息,包括接口的物理状态和协议状态、接口的物理特性、接口的IP地址、接口的链路层协议以及链路层协议运行状态和统计信息、接口的输入输出报文统计等信息;该命令通常在物理层、数据链路层、网络层出现故障时使用。display ip routing命令用来查看路由表的摘要信息,包括目的地址、掩码长度、协议、优先级、度量值、下一跳和输出接口;该命令通常在网络层出现故障时使用。display current命令用来显示当前生效的全部配置信息;该命令通常在检验配置的参数是否生效时使用。Display diagnostic命令用来显示系统当前各模块的所有运行信息,该命令通常在网络出现严重故障需要收集大量信息时使用。 2.调试命令
debug命令用来打开系统调试开关,undo debug命令用来关闭系统调试开关。缺省情况下,系统关闭全部调试开关。路由器系统提供种类丰富的调试功能,一般用于技术支持人员和资深维护人员进行网络故障诊断。由于打开调试开关,会产生大量的调试信息,导致系统效率的降低,尤其在执行debugging all命令打开全部调试开关后,可能会引起网络系统瘫痪,建议不要使用debugging all命令,而undo debugging all命令却给用户带来极大方便,可以一次关闭全部调试开关,不必去一一关闭。
二、TCP/IP网络故障的排除
(一)常用的故障排除法 1.分层排障法
网络分层体系结构的基本思想是每一层在它的下层提供的服务基础上提供更高级的增值服务,而最高层提供运行分布式应用程序的服务,且各层的功能相对,这样就把复杂的网络问题简单化。基于同样的思路,我们可以将分层的方法应用到网络故障排除中。在TCP/IP网络中,网络协议可分为物理层、数据链路层、网络层、传输层和应用层[2],下面分别介绍各层的主要故障现象及解决方法。
物理层是分层结构体系中最基础的一层,它规定通信设备机械的、电气的、功能的和过程的特性,用以建立、保持和拆除数据链路实体间的连接,为数据链路层进行透明传输。物理层的故障主要表现在设备的物理连接方式不恰当;连接电缆错误;信号电平不满足要求;编码是不正常;时钟不同步。判断交换机路由器接口物理连接是否完好的有效方法是使用display interface命令,检查每个接口的物理状态、协议建立状态和接口的物理特性参数。
龙源期刊网 http://www.qikan.com.cn
数据链路层的主要任务是为网络层建立、维持和释放一条无差错的信道,使网络层无须了解物理层的特征而获得可靠的传输。数据链路层对通过链路层的数据进行封装和拆装,并具备流量控制和差错检测功能。数据链路层的故障主要表现在链路接口两端封装类型不一致;链路利用率低;广播帧比重过大;重复帧异常。判断交换机路由器接口数据链路层是否正常的有效方法是使用display interface命令,检查每个接口的封装类型、链路层协议、链路层协议运行状态和统计信息。
网络层通过不可靠、无连接的方式为传输层提供尽可能快的数据报传输服务,网络层的最主要的功能是为分组选择一条最佳路由。网络层的故障主要表现在路由配置错误;地址和子网掩码不正确。排除路由配置错误故障的有效方法是:沿着从源到目标的路径,使用display ip routing命令查看三层交换机或路由器的路由表,检查是否已经存在合适的静态路由、默认路由或者动态路由。如果路由表中没有合适的路由,则可手工配置正确的静态路由或默认路由,也可排除动态发现路由协议故障使其自动发现正确路由。在路由表中可以间接地检查接口的IP地址及子网掩码设置是否正确,当然也可使用display interface命令直接显示并加以判断。
传输层的基本任务是为两台主机的应用层提供端到端的通信。在TCP/IP网络中有两个传输协议:TCP和UDP。TCP通过面向连接的方式提供高可靠的数据传输;UDP通过无连接的方式提供不可靠的简单服务,可靠性由应用层提供。传输层的故障主要表现在端口配置错误;访问控制列表不正确。排除传输层故障的有效方法是:用display acl命令显示三层交换机或路由器的访问控制列表,检查已应用的规则是否合适;用Netstat命令检查服务器的端口开启状态是否正常,客户机的端口连接是否正确。
应用层负责处理特定的应用程序细节,例如telnet负责处理远程登录、FTP负责处理文件传输、SNMP负责处理网络管理、SMTP负责文件邮件传送等。由于应用层的多样性,其故障现象及排除方法没有一个固定模式,需根据具体的情况具体分析。 2.分块排障法
分块排障法的基本思想是:由于交换机、路由器的配置文件是按分块的方式存储和显示的,因此当网络故障是由于交换机、路由器的参数配置错误而引起时,先用display current命令显示当前生效的配置文件的全部配置信息,然后根据故障原因快速定位于配置文件的相应模块内容。
交换机、路由器的配置文件通常可分为以下几个模块:管理模块,如路由器名称、口令、服务、日志等信息;接口模块,如IP地址、封装、认证等信息;路由模块,如静态路由、RIP、OSPF、BGP、路由引入等信息;策略模块,如路由策略、访问控制、安全策略等信息;应用模块,如语言配置、VPN配置、Qos配置等如信息。 3.分段排障法
龙源期刊网 http://www.qikan.com.cn
根据网络节点位置,把网络物理分段,逐段排除故障。通常可以把网络分为以下几段:主机到路由器LAN接口段;路由器到CSU/DSU界面段;CSU/DSU到电信部门界面段;WAN电路段;CSU/DSU本身问题;路由器本身问题;主机本身问题。
在实际网络故障排错时,一般先采用分段法确定故障点,然后通过分层法或分块法排除故障。当然这也不是绝对的,在某些场合可能需要综合使用各种方法才能排除故障。 (二)网络故障排除基本步骤
排除网络故障的流程图如图1所示,其具体做法如下:第一步,故障现象描述,这是顺利排除故障的前提。对于具体的故障现象要求用专业的、全面的、准确的语言加以描述,比如我们不能使用“日志服务器與备份服务器间备份出现故障”这样的文字描述某网络故障,而应使用“在网络的高峰期,日志服务器10.11.56.11/16到集中备份服务器10.15.254.253/16之间进行备份时,FTP传输速度很慢,大约是1Mbps”这样的语言加以描述。第二步,相关信息收集。一般可以从两方面收集故障信息,一方面向用户、网络管理员、管理者和其他关键人物询问和故障有关的问题从而收集到一些表层信息;另一方面使用前面介绍的各种诊断方法收集与故障相关的深层信息。第三步,故障原因分析,这是正确排除网络故障的关键。根据收集到的信息,结合已有的经验作出初步判断并进行全面深入的理论分析,考虑全部可能的故障原因。第四步,可能原因列表。根据故障原因的分析结果,对各种故障原因按可能发生的概率从高到低排序。第五步,排除方案制定。针对每种可能的故障原因,分别制定排除计划,最后形成故障排除方案。第六步,排除方案实施。方案实施时每次只改变一个参数,认真做好每一步测试和观察。第七步,判断故障现象是否消失,若是则转到每八步,若没有则恢复改变参数的值并转到第六步。第八步,故障排除文档化。就是用文字、图片对故障排除过程中所做的工作进行记录,形成文档,这对积累经验、提高排障效率有很大作用。 三、结语
网络故障诊断与排除以网络原理和网络配置的知识为基础,从故障现象出发,通过网络诊断工具获取诊断信息,确定网络故障点,查找问题的根源,排除故障,恢复网络正常运行。网络故障诊断和排除是网络管理中的一项重要技术工作,为了做好这项工作,需要注意以下几方面的问题:提高网络技术理论;掌握网络的结构设计,包括网络拓朴、设备连接、系统参数设置及软件使用;了解网络正常运行状况、注意收集网络正常运行时的各种状态和输出参数;熟悉常用的诊断工具,准确专业地描述故障现象。
参考文献:
龙源期刊网 http://www.qikan.com.cn
[1]张蒲生,局域网组网技术与实训[M].清华大学出版社 2006:306-315.
[2]W.Richard Stevens.TCP/IP Illustrated Volume 1:The Protocols[M].China Machine Press 2000:1-5.
作者简介:
林国兰,女,助理实验师,主要研究方向:网络管理与维护;陈显毅,男,讲师,硕士研究生,主要研究方向:网络安全。