您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 绩效管理 > 第18章 基于SNMP协议的网络拓扑发现程序
《计算机网络高级软件编程技术》1吴功宜董大凡王珺刘乾“十一五”国家重点图书计算机科学与技术学科前沿丛书计算机科学与技术学科研究生系列教材(中文版)计算机网络高级软件编程技术《计算机网络高级软件编程技术》2第18章基于SNMP协议的网络拓扑发现程序《计算机网络高级软件编程技术》3概述SNMP简单网络管理协议是目前应用最为广泛的网络管理协议一个。通过本次编程训练,帮助读者掌握网络管理的基本概念,掌握SNMP协议的基本内容和实行方法,培养读者编写网络管理软件的编程能力《计算机网络高级软件编程技术》4•编程训练目的•编程训练要求•相关知识介绍•程序设计分析•扩展与提高提纲《计算机网络高级软件编程技术》5编程训练目的•掌握SNMP通信原理,实现基于SNMP协议进行通信,获得所需信息的功能•掌握基于SNMP协议,与特定路由器进行通信,生成路由器连通拓扑结构图的网络拓扑发现程序的设计与实现的方法《计算机网络高级软件编程技术》6•编程训练目的•编程训练要求•相关知识介绍•程序设计分析•扩展与提高提纲《计算机网络高级软件编程技术》7编程训练要求编写程序,实现基于SNMP协议的拓扑发现程序,要求:•程序可以设置与路由器通信的团体名•递归深度可以控制•界面友好,可以清晰显示路由器连通拓扑结构•实现基于ICMP协议的特定网段内活动主机扫描《计算机网络高级软件编程技术》8程序界面示例《计算机网络高级软件编程技术》9•编程训练目的•编程训练要求•相关知识介绍•程序设计分析•扩展与提高提纲《计算机网络高级软件编程技术》10SNMP体系结构Get-ResponseGet-ResponseLinkIPUDPSNMP管理进程管理应用程序GetGet-NextSetTrapLinkIPUDPSNMP管理代理GetGet-NextSetTrapSNMP被管对象被管资源SNMP消息应用管理对象SNMP管理系统SNMP被管系统Get-ResponseGet-ResponseLinkIPUDPSNMP管理进程管理应用程序GetGet-NextSetTrapLinkIPUDPSNMP管理代理GetGet-NextSetTrapSNMP被管对象被管资源SNMP消息应用管理对象SNMP管理系统SNMP被管系统通信网管理数据《计算机网络高级软件编程技术》11MIB树结构rootiso(1)ccitt(0)joint-iso-ccitt(2)standard(0)org(3)dod(6)internet(1)mib-2(1)directory(1)mgmt(2)experimental(3)private(4)security(5)snmpv2(6)mail(7)system(1)interfaces(2)at(3)ip(4)icmp(5)tcp(6)udp(7)transmission(10)snmp(11)rootiso(1)--org(3)dod(6)internet(1)mib-2(1)udpInDatagrams(1)《计算机网络高级软件编程技术》12PDU结构版本团体名GetRequest,GetNextRequest,SetRequest,GetResponsePDUPDU类型请求ID错误状态错误索引名字1:值1名字2:值2a)Request/ResponsePDU结构,,,…SNMP消息…版本团体名TrapPDUPDU类型代理地址特殊Trap类型名字一般Trap类型b)TrapPDU结构SNMP消息版本团体名TrapPDU企业代理名字1:值1名字2:值2时间戳《计算机网络高级软件编程技术》13•编程训练目的•编程训练要求•相关知识介绍•程序设计分析•扩展与提高提纲《计算机网络高级软件编程技术》14程序总体结构NetExplorer维护图状结构维护图状结构维护相关数据维护相关数据绘制屏幕绘制屏幕与路由器通讯与路由器通讯Worker ThreadWorker ThreadClass:CNetExplorerViewClass:CNetExplorerViewClass:CNetExplorerDocClass:CNetExplorerDoc显示调用与路由器通讯,获得本路由器的IP地址列表和下一跳IP地址的列表与路由器通讯,获得本路由器的IP地址列表和下一跳IP地址的列表Class:DistributeDateClass:DistributeDate接收Worker Thread的消息,为新生成的路由器Enty分配位置并在屏幕上绘制该路由器以及其与其它路由器的连线接收Worker Thread的消息,为新生成的路由器Enty分配位置并在屏幕上绘制该路由器以及其与其它路由器的连线维护一个路由器拓扑图的生成树结构,并且在插入新的子节点是判断是否存在环路,并作相应标识维护一个路由器拓扑图的生成树结构,并且在插入新的子节点是判断是否存在环路,并作相应标识负责相关数据结构的构造,析构和动态生成管理负责相关数据结构的构造,析构和动态生成管理SendMessage插入新获得的路由器信息提供更新界面所需数据《计算机网络高级软件编程技术》15功能模块分析•获得路由器信息的工作者线程模块•ClassCNetExplorerView•ClassDistributeDate•ClassNetExplorerDoc《计算机网络高级软件编程技术》16工作者线程执行流程获得四个参数,需要连接的路由器IP地址和一个父节点指针,团体名,和当前递归深度获得该节点的IP地址列表在doc中的RouterEnty中创建新的节点,将IP地址列表附值判断是否达到递归深度获得该节点的下一跳步列表针对该列表中的每一个IP地址,加上这个Routerenty的指针和当前递归深度+1三个参数循环调用该函数像绘图线程发送消息,通知他调用DrawRouter绘制doc中RouterEnty链表中最后一个元素以该列表和父节点指针为参数调用AddChild()获得该节点的下一跳步列表像绘图线程发送消息,通知他调用DrawRouter绘制doc中RouterEnty链表中最后一个元素针对该列表中的每一个IP地址,加上这个AddChild返回的指针和当前递归深度+1三个参数循环调用该函数退出递归AddChild返回是否为空成功?生成一个只有一个IP的链表,调用AddChild成功?成功?获得该节点的IP地址列表成功?生成一个只有一个IP的链表YNYNNYNYYNNYNYRouterEnty是否为空?(该节点为某节点的子节点)(该节点为头节点)《计算机网络高级软件编程技术》17ICMP扫描线程执行流程异步过程调用处理流程检查参数个数是否正确检查参数是否以直接转化为所需格式的IP地址检查参数是否可以通过DNS转化为IP地址加载DLL并且获得相应函数指针失败返回初始化IP_OPTION_INFORMATION结构体发送ICMPECHOREQUEST数据包判断是否循环结束成功返回投递APC请求SleepEx(完成APC操作)解析ICMP_ECHO_REPLY结构生成存储相应主机信息的字符串发送Message,通知界面线程显示该主机信息字符串正常退出等待其他APC操作程序开始YNYYNFailedSuccessYNN《计算机网络高级软件编程技术》18•编程训练目的•编程训练要求•相关知识介绍•程序设计分析•扩展与提高提纲《计算机网络高级软件编程技术》19其他网络管理协议•CMIP(公共管理信息协议)•WS-Management(WebServiceManagement)《计算机网络高级软件编程技术》20网络管理新技术•RMON(远程网络监控)•基于WEB的网络管理
本文标题:第18章 基于SNMP协议的网络拓扑发现程序
链接地址:https://www.777doc.com/doc-4455848 .html