电子说
1 引言
简单网络管理协议SNMP(Simple Network Management Protocol)是由Internet工程任务组织IETF (Internet Engineer-ing Task Force)研究小组为解决Intemet上的路由器管理问题而提出的。SNMP是一系列协议组和规范,可提供一种从网络设备中收集网络管理信息的方法。 SNMP也为设备向网络管理工作站报告问题和错误提供方法。
2 SNMP体系结构简介
图1为SNMP体系结构与协议栈。
2.1 SNMP消息类型
SNMP消息类型提供请求与响应的交互形式,其中:(1)Get Request:管理站用来检索代理管理信息库中的标量对象值;(2)GetNext Request:管理站用来检索代理管理信息库中的当前标量对象的下一个对象值;(3)Set Request:管理站用来设置代理管理信息库中的标量对象值;(4)Response:代理用于发送管理站对代理的请求;(5)Tmp:代理用于向管理站报告管理对象的状态变化。图2为SNMP消息类型。
2.2 SNMP PDU协议数据单元结构
图3为SNMP报文格式。SNMP PDU协议数据单元结构描述如下:
2.3 ANS.1和BER
抽象语法表示(ANS.1)是一种形式语言,可提供统一的网络数据表示,用于定义应用数据的抽象语法和应用层协议数据单元结构。在OSI和SNMP的管理信息库都是用其定义的。基本编码规则(BER)用ANS.1定义的应用数据在传输过程中要按照一定的规则转换成比特串。图4给出了SNMP消息的BER编码实例(对代理202.117-49.61的Get请求)。
2.4 RFC1213管理信息库MIB
RFC1213定义MIB-2管理对象的核心集合,这些对象在任何SNMP系统必须实现。管理信息结构说明了定义和构造MIB的总体框架,以及数据类型的表示和命名方法。SMI只允许存储标量对象和矢量对象(表对象),不支持复杂的数据结构。其提供标准化技术表示管理信息如下:(1)SNMP所有的管理对象组织成分层结构;(2)提供结构化的信息组织技术;(3)提供命名机制。树中的叶子结点都有一个分层的编号。叶子结点代表实际的管理对象,从树根到树叶的编号串联起来,用圆点隔开,形成管理对象标识符。
2.5 UDP协议
用户数据报协议UDP(User Data Protocol)是一个面向无连接的协议,其传输效率较高。协议格式如表1所示。在SNMP代理中,常用161作为SNMP消息接收;162为AgentSNMP消息响应。
3 SNMP编程与测试环境
SNMP要求的编程环境有:Java;C/C++;Borland C++Builder6。该程序选用Borland C++ Builder6编程环境。而SNMP的测试环境要求:(1)Windows SNMP服务:Windows NT/Win-dows 2000/Windows XP的网络监视服务提供SNMP代理,端口:161;(2)AdventNet SNMP服务:AdventNet公司的SNMP代理。端口可自己设定;(3)AdventNet SNMP MIB Browse:AdventNet公司的SNMP动作测试工具;(4)Sniff软件是一个很好的网上抓包程序,用来分析发送和接收的SNMP消息。
4 SNMP编程实现
4.1 SNMP消息分析
通过对SNMP协议的理解在C++Builder中将其定义为以下结构体类型;分别完成对消息的构造和解析。
(1)消息结构的结构体
4.3 SNMP消息发送与接收
使用C++Builder提供的TNMUDP控件完成对SNMP消息的发送和接收,并存入Data1[]数组中,以备解析。以下为部分程序代码:
4.4 SNMP消息解析
将UDP接收到的消息存入data1[]数组中,与消息的解析相反;将其每一部分添人所定义的SNMPMessage结构中,以备解析显示调用。以下为部分程序代码:
5 结束语
SNMP协议已广泛应用于各种路由器和高端交换机,同时在各种网络操作系统的远程管理中也广泛应用。利用该协议可监控网络核心设备的运行情况(流量、吞吐率、状态等),还可认证上网用户,完成计费功能。
全部0条评论
快来发表一下你的评论吧 !