简单网络管理协议(SNMP)的研究与应用

电子说

1.3w人已加入

描述

1 引言

简单网络管理协议SNMP(Simple Network Management Protocol)是由Internet工程任务组织IETF (Internet Engineer-ing Task Force)研究小组为解决Intemet上的路由器管理问题而提出的。SNMP是一系列协议组和规范,可提供一种从网络设备中收集网络管理信息的方法。 SNMP也为设备向网络管理工作站报告问题和错误提供方法。

2 SNMP体系结构简介

图1为SNMP体系结构与协议栈。

SNMP

2.1 SNMP消息类型

SNMP消息类型提供请求与响应的交互形式,其中:(1)Get Request:管理站用来检索代理管理信息库中的标量对象值;(2)GetNext Request:管理站用来检索代理管理信息库中的当前标量对象的下一个对象值;(3)Set Request:管理站用来设置代理管理信息库中的标量对象值;(4)Response:代理用于发送管理站对代理的请求;(5)Tmp:代理用于向管理站报告管理对象的状态变化。图2为SNMP消息类型。

SNMP

2.2 SNMP PDU协议数据单元结构

图3为SNMP报文格式。SNMP PDU协议数据单元结构描述如下:

SNMP

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消息响应。

SNMP

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)消息结构的结构体

SNMP

SNMP

4.3 SNMP消息发送与接收

使用C++Builder提供的TNMUDP控件完成对SNMP消息的发送和接收,并存入Data1[]数组中,以备解析。以下为部分程序代码:

SNMP

4.4 SNMP消息解析

将UDP接收到的消息存入data1[]数组中,与消息的解析相反;将其每一部分添人所定义的SNMPMessage结构中,以备解析显示调用。以下为部分程序代码:

SNMP

SNMP

5 结束语

SNMP协议已广泛应用于各种路由器和高端交换机,同时在各种网络操作系统的远程管理中也广泛应用。利用该协议可监控网络核心设备的运行情况(流量、吞吐率、状态等),还可认证上网用户,完成计费功能。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分