第18章 基于SNMP协议的网络拓扑发现程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
正常退出
17
《计算机网络高级软件编程技术》
提纲
• • • • •
编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高
18
《计算机网络高级软件编程技术》
其他网络管理协议
• CMIP(公共管理信息协议 )
• WS-Management(Web Service Management)
19
3
《计算机网络高级软件编程技术》
提纲
• • • • •
编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高
4
《计算机网络高级软件编程技术》
编程训练目的
• 掌握SNMP 通信原理,实现基于SNMP 协议进行通信,获得所需信息的功能 • 掌握基于SNMP协议,与特定路由器进 行通信,生成路由器连通拓扑结构图的 网络拓扑发现程序的设计与实现的方法
像绘图线程发送消息,通知他调用 DrawRouter绘制doc中RouterEnty 链表中最后一个元素 获得该节点的下一跳步列表 获得该节点的下一 跳步列表 N 成功? 成功? Y 针对该列表中的每一个IP地址,加上这个 Routerenty的指针和当前递归深度+1三 个参数循环调用该函数 Y 针对该列表中的每一个IP地址,加上这个 AddChild返回的指针和当前递归深度+1三个 参数循环调用该函数 N
维护相关数据 维护相关数据
Class:CNetExplorerDoc Class:CNetExplorerDoc
负责相关数据结构的构 负责相关数据结构的构 造,析构和动态生成管 造,析构和动态生成管 理 理
14
《计算机网络高级软件编程技术》
功能模块分析
• • • • 获得路由器信息的工作者线程模块 Class CNetExplorerView Class DistributeDate Class NetExplorerDoc
snmpv2(6) mail(7)
transmission(10) snmp(11)
udpInDatagrams(1)
11
《计算机网络高级软件编程技术》
PDU结构
SNMP 消息 版本 团体名 GetRequest , GetNextRequest , SetRequest , GetResponse PDU
15
《计算机网络高级软件编程技术》
工作者线程执行流程
获得四个参数,需要连接的路由器IP地址和 一个父节点指针,团体名,和当前递归深度 判断是否达到 递归深度 Y 退出递归
Y (该节点为头节点)
N RouterEnty是否为 空?
N (该节点为某节点的子节点)
获得该节点的IP地址列表
获得该节点的IP地址列表
《计算机网络高级软件编程技术》
网络管理新技术 • RMON(远程网络监控) • 基于WEB的网络管理
20
《计算机网络高级软件编程技术》
《计算机网络高级软件编程技术》
• • • •
7
程序界面示例
8
《计算机网络高级软件编程技术》
提纲
• • • • •
编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高
9
《计算机网络高级软件编程技术》
Trap
被管对象 管理代理 SNMP SNMP UDP Link
Set Set Get - Next Get - Next Get Get
Fra Baidu bibliotek
应用管理对象
SNMP消息
IP
Get Get Response Response
通信网
SNMP体系结构
SNMP管理系统
Trap Trap
应用程序 管理进程 SNMP UDP 管理 Link
Set Get Get - Next Get Get
管理 数据
IP
Get Get Response Response
《计算机网络高级软件编程技术》
提纲
• • • • •
编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高
13
《计算机网络高级软件编程技术》
NetExplorer
程序总体结构
与路由器通讯 与路由器通讯
Worker Thread Worker Thread
SendMessage
与路由器通讯,获得本 与路由器通讯,获得本 路由器的IP地址列表和 路由器的IP地址列表和 下一跳IP地址的列表 下一跳IP地址的列表
成功? Y N 生成一个只有一个IP的链 表,调用AddChild
成功? N Y 以该列表和父节点指针为参 数调用AddChild()
生成一个只有 一个IP的链表 N
AddChild返回 是否为空
Y
在doc中的RouterEnty中创建新的 节点,将IP地址列表附值
像绘图线程发送消息,通知他调 用DrawRouter绘制doc中 RouterEnty链表中最后一个元素
Y
SleepEx (完成APC操作)
N
加载 DLL 并且获得相应函 数指针
Failed
判断是否 循环结束
Y
Success
等待其他APC操作
失败返回
成功返回
异步过程调用处理流程 解析 ICMP_ECHO_R EPLY结构 生成存储相 应主机信息 的字符串 发送Message,通知界 面线程显示该主机信息 字符串
维护图状结构 维护图状结构
Class:DistributeDate Class:DistributeDate
显示调用
维护一个路由器拓扑图 维护一个路由器拓扑图 的生成树结构,并且在 的生成树结构,并且在 插入新的子节点是判断 插入新的子节点是判断 是否存在环路,并作相 是否存在环路,并作相 应标识 应标识
PDU 类型
请求 ID
错误 状态
错误 索引
名字1:值1
名字2:值2
…
a) Request/Response PDU 结构
SNMP 消息 版本 团体名 Trap PDU
PDU 类型
企业
代理 地址
一般 Trap 类型
特殊 Trap 类型
时间戳
名字1:值1
名字2:值2 名字
…
b) Trap PDU 结构
12
10
《计算机网络高级软件编程技术》
SNMP被管系统
被管资源
MIB树结构
root ccitt(0) standard(0) iso(1) org(3) dod(6) internet(1) joint -iso - ccitt(2) -
directory(1) mgmt(2) experimental(3) private(4) security(5) mib - 2(1) system(1) interfaces(2) at(3) ip(4) icmp(5) tcp(6) udp(7)
5
《计算机网络高级软件编程技术》
提纲
• • • • •
编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高
6
《计算机网络高级软件编程技术》
编程训练要求
编写程序,实现基于SNMP协议的拓扑 发现程序,要求: 程序可以设置与路由器通信的团体名 递归深度可以控制 界面友好,可以清晰显示路由器连通拓 扑结构 实现基于ICMP协议的特定网段内活动 主机扫描
插入新获得的路由器信息
绘制屏幕 绘制屏幕
Class:CNetExplorerView Class:CNetExplorerView
提供更新界 面所需数据
接收Worker Thread的 接收Worker Thread的 消息,为新生成的路由 消息,为新生成的路由 器Enty分配位置并在屏 器Enty分配位置并在屏 幕上绘制该路由器以及 幕上绘制该路由器以及 其与其它路由器的连线 其与其它路由器的连线
16
《计算机网络高级软件编程技术》
ICMP扫描线程执行流程
程序开始
初始化 IP_OPTION_INFORMATION 结构体
N
检查参 数个数是否 正确
Y
检查参数是否以 直接转化为所需格式的 IP地址
N
发送ICMP ECHO REQUEST数据包
Y
投递APC请求
N
检查参数 是否可以通过DNS 转化为IP地址
“十一五”国家重点图书 计算机科学与技术学科前沿丛书
计算机科学与技术学科研究生系列教材(中文版)
计算机网络 高级软件编程技术
吴功宜 董大凡 王 珺 刘 乾
1
《计算机网络高级软件编程技术》
第18章 基于SNMP协议的网 络拓扑发现程序
2
《计算机网络高级软件编程技术》
概述
SNMP简单网络管理协议是目前应用最为 广泛的网络管理协议一个。通过本次编程 训练,帮助读者掌握网络管理的基本概念, 掌握SNMP协议的基本内容和实行方法, 培养读者编写网络管理软件的编程能力