- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SNMP管理器编程
一、课程设计目的以及要求
1) 课程设计目的
网络管理是监督、组织和控制网络通信服务和信息处理所必需的各种活动的总称。除了专门的标准化组织制定了一些标准外,一些网络发展比较早的机构与厂家也制定了一些在各自网络上应用的管理标准,其中应用最广泛的是简单网络管理协议(Simple Network Management Protocol,SNMP)。
SNMP 是由 IETF 提出的面向 Internet的管理协议,其管理对象包括网桥、路由器、交换机等内存和处理能力有限的网络互连设备。SNMP 由于其简单性得到了业界广泛的支持,成为目前最流行的网络管理协议。
本课程设计的目的是通过编程实现 SNMP 协议,从而加深对 SNMP 协议的理解。
2) 课程设计要求
A)采用 VC 6.0 进行编程。
B)根据某路由器的 IP 及共同体名,获得该路由器的系统信息。
C)获取路由器的 IP 地址信息以及路由表信息;
原理分析
网管系统是指课管理真个网络及其中的网络设备的软件系统。网管系统设计4个方面的内容:网管功能、资源、信息及结构。其中,网管功能由ISO网络管理功能域定义:网管资源的表示涉及资源的表示方法,主要包括网络中硬件,软件与服务等资源;网管信息的表示方法与传输方式,由网管系统采用的网络管理协议决定;网管系统的结构主要包括两层结构与三层结构。
SNMP网管系统采用客户机/服务器工作模式。SNMP网管系统包括两个组成部分:SNMP客户机与SNMP服务器。其中,SNMP客户机是SNMP服务的请求者,他安装在网管管理工作站中,通常被称为SNMP管理器:SNMP服务器是SNMP服务的响应者,它安装在支持SNMP服务的网络设备中,通常被称为SNMP代理。管理信息保存在SNMP代理的MIB中。SNMP服务在传输层采用UDP协议,在传输管理信息之前不需要先建立连接。需要注意的是,SNMP代理主动发送Trap信息给SNMP管理器。
基本思路及关键问题的解决方法
1)程序流程图
程序流程图如图1所示:
图1 程序流程图
2)基本思路
首先,加载SNMP(包括SNMP主版本号、SNMP副版本号、支持的最高操作标准、默认的实体/上下文传输模式以及默认的重发机制);建立会话,在此过程中得到的会话句柄非常重要;设置传输模式SnmpSetTranslateMode和重传模式SnmpSetRetransmitMode,这两个函数的参数就是加载SNMP时使用的传输模式以及重发机制;创建实体HSNMP_ENTITY,第一个参数是步骤2中得到的句柄。IP可以是发送消息的网络设备的IP地址或接收消息的管理设备的IP地址,通过需要具体创建实体——hSrcEntity、hDestEntity;对源实体和目的实体设置超时时间和重传次数——SnmpSetTimeout、SnmpSetRetry;建立上下文句柄——HSNMP_CONTEXT、hContext;建立变量捆绑列表;设置PDU格式,要正确发送数据必须采用特定的PDU格式;发送SNMP命令——SnmpSendMsg;接收SNMP响应;等到响应成功就释放资源。
3)关键问题及解决方案
1.如何设置PDU格式
PDU是SNMP数据包的一个部分,它包括请求标识符、错误状态、错误索引以及捆绑的变量名称。因此设置PDU格式是此程序的关键部分。
HSNMP_PDU hPdu;
hPdu=SnmpCreatePdu(hSession,SNMP_PDU_GETNEXT,0,NULL,NULL,hVbl)
第二个参数是PDU类型,有多种操作方式:SNMP_PDU_GETNEXT用来在不了解该表时获取第一个组值,SNMP_PDU_GET用来获得某个对象某个对象标识符的值;SNMP_PDU_SET用来修改某个对象标识符的值。
2.如何接收和响应SNMP
要接收和响应SNMP就先得创建实体,然后SNMP管理器调用函数,接收从SNMP代理返回的SNMP响应,SNMP管理器需要解析SNMP响应数据包,对各个字段逐个进行分析与判断,SNMP管理器需要分析错误类型字段,判断是否成功完成对管理对象的操作。
hSrcEntity = SnmpStrToEntity (hSession,(LPCSTR)GetLocalIP());
hDestEntity = SnmpStrToEntity(hSession,ip);
源代码
#include winsock2.h
#include Winsnmp.h
#include string
#include vector
#in
文档评论(0)