TCP/IP 网络中故障节点的诊断方法.docVIP

TCP/IP 网络中故障节点的诊断方法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TCP/IP 网络中故障节点的诊断方法   摘要:本文描述了一种在TCP/IP网络中进行故障节点诊断的程序实现,该方法基于VxWorks操作系统的网络测试仪环境,但此程序算法的实现,并不依赖于底层的操作系统及硬件环境,经过少量修改可以在任何提供TCP/IP协议栈的操作系统中实现,比如Linux,Windows等。   关键词:ICMP;TCP;UDP;路由追踪   中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)18-2pppp-0c      1 背景      网路故障的一般表现是网速变慢或者无法访问互联网或内网服务器,在现场进行网络故障诊断时,往往需要借助各种工具软件如Sniffer、ping、traceroute等进行逐步排查,最后经过分析,选择怀疑的网络节点,然后在局端或现场对怀疑的网络节点进行各种连通性、替代性测试,方法步骤繁杂,而且往往无法准确诊断。   经过分析,故障诊断的过程,可以使用专用的设备,并编写相应的诊断程序,自动完成网络故障节点的测试和判断。      2 算法和设计      当测试节点到达目的网络位置的链路存在问题时,一般可能是:物理链路断开(线缆或节点设备故障);目的地址的相应端口没有开放,或者中间链路经过的设备(交换机,路由器等)禁止了协议或端口;终端设备故障。故,处理流程首先是找到测试节点到达连接服务器节点的路径,确定经过的网络节点位置,然后对节点中的各个位置实施连通性测试,最后根据测试结果判断故障节点位置和原因。   2.1 网络路由的查询   该部分的功能类似于Linux系统中提供的命令traceroute,不同的是,该部分功能进行路由诊断依赖的协议不仅仅是ICMP。   ICMP的原理是链路上的节点设备都要在转发该 ICMP 回显请求报文之前将报文头部的 TTL 值减 1,当报文的 TTL 值减少到 0 时,节点设备向源发回 ICMP 超时信息。该诊断实用程序通过向目的地发送具有不同生存时间 (TTL) 的 ICMP报文,确定至目的地的路由。通过发送 TTL 为 1 的第一个回显报文并且在随后的发送中每次将 TTL 值加 1,直到目标响应或达到最大 TTL 值,可以确定链路经过的路由。通过检查链路中间节点设备发回的 ICMP 超时信息,可以确定故障节点。   如果使用ICMP协议无法完成测试,则改为使用UDP协议和TCP协议分别进行路由侦测。源发出UDP数据包,源端口使用随机的大于32768的高段端口号,目的端口从33434开始依此递增,直至33434+29,同时TTL从1开始依此递增,直至1+29=30。节点设备送回的 ICMP超时报文,使得源可以侦测到链路上每一个节点。   2.2 网络节点诊断   向节点发送TCP握手信号,如果该节点可以通过connect连接成功,表示节点可以正常连接,如果回应RST,表示该节点禁止了该端口的访问,如果该节点长时间不回复SYN,也可以认为该节点禁止端口。   因此,依据上述现象可以很容易判断当前故障节点――离测试者最近的故障点,可以被认定为当前网络故障点。   2.3 故障节点位置的判断策略   如果路由寻找完整,一般能够找到节点。在所有不回应SYN包或者回应RST包的   节点中,应该是离源最近跳数的节点设备将端口关闭。   如果路由寻找不完整,有可能找不到所找的故障点。如果在找到的n个节点中,只有非最远离源的一个节点不回应,或回应RST包,则不能确定故障节点;如果是包括最远离源在内的一个或多个节点不回应或回应RST包,则最右端节点可能为故障节点,但并不能确定在整个路由中的故障节点所在,因为路由不完整。   2.4 不能覆盖的异常情况   如果使用ICMP和UDP都无法寻找到完整路由,则有可能找不到故障节点,但这种情况非常少,因为根据UDP的测试原理,除非中间节点将大于32768的端口全部封掉,否则都可以得到完整的路由路径。      3 代码片段和程序流程      3.1 整体框架代码      int f_procon_scan_showerr(char *re_info)   {char err_node[16];   inet_ntoa_b(info_scan.node[info_scan.err_num],err_node);   if(err_tcpscan == ERR_PORTSCAN_ROUTE_HALF){   sprintf(re_info,路由信息不完整,故障点可能是:%s,err_node);   }else if(err_tcpscan == ERR_PORTSCAN_ROUTE_NO){   sprintf(r

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档