SNMP学习的一点心得
来源:互联网 发布:ai人工智能编程培训 编辑:程序博客网 时间:2024/05/17 23:18
SNMP的体系结构及工作原理
什么是 SNMP?
SNMP是一系列协议组和规范,其提供了一种从网络中的设备中收集网络管理信息的方 法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。其网络管理主 要分为四部分被管理节点(设备)、代理、网络管理工作站、网络管理协议。
SNMP主要部分
从被管理设备中收集数据所遵循的原则及采用的方式
设计和构造网络管理的基础结构时,需要遵守下列两条网络管理的原则:
- 由于管理信息而带来的通信量不应明显的增加网络的通信量。
- 被管理设备上的协议代理不应明显得增加系统处理的额外开销,以致于该设备 的主要功能都被削弱了。
因此从被管理设备中收集数据重要有两种方法:一种是只轮询(polling-only)的方法, 另一种是基于中断(interrupt-based)的方法。
面向自陷的轮询方法(trap-directed polling)是网络管理采用较有效的方式。网络管理工作站轮询在被管理设备中的代理来收集所需的数据,并且在控制平台上使用数字或图形的方式来显示所 收集的数据,同时被管理设备中的代理可以在任何时候向网络管理工作站报告错误情况,如预制定阈值越界程度等,即所谓的SNMP自陷(trap)。
代理的概念及所提供的服务
管理代理(agent)是一种特殊的软件(或固件),它包含了关于一个特殊设备及该设备所处环境的信息。
其提供的服务:
- 网络管理工作站可以从代理中获得相关设备的信息。
- 网络管理工作站可以修改、增加或者删除代理中的相关表项。
- 网络管理工作站可以为一个特定的自陷设置阈值。
- 代理可以向网络管理工作站发送自陷。
MIB概念
MIB被称为管理信息库,一个MIB描述了包含在数据库中的对象或表项。
简单网络管理协议
SNMP请求/响应报文
简单网络管理协议允许网络管理工作站软件与被管理设备中的代理进行通信。这种通信可以包括来自管理工作站的询问消息、来自代理的应答消息或者来自代理给管理工作站的自陷消息。
SNMPv1实现起来很简单,其包含5个请求/响应原语:
- get-request
- set-request
- get-next-request
- get-response
- trap
报文格式
IP首部 UDP首部 版本 共同体 PDU类型(0-3) 请求标识 差错状态(0-5) 差错索引 名称 值 名称 值 ...
PDU类型4 企业 代理地址 Trap类型(0-6) 特定代码 时间戳 名称 值 ...
PDU类型 名称 0 Get-request 1 Get-next-request 2 Get-response 3 Set-request 4 Trap
SNMP开发工具
开发工具的使用
AdventNet所提供的的开发工具包,支持多种平台。
- Agent++
- SNMP++
Microsoft Virtual Studio 6.0,Windows下c++语言的开发包。MS自身提供一组称为WinSNMP的API(在MSDN中提供详细文档),而且MS提供基于Agent Service的SNMP Extension Agent开发。
ucd-snm(net-snmp)p是Linux平台下著名的C语言SNMP开发包,公开源码,是最常用的开发Agent的软件包。
辅助工具的使用
AdventNet所提供的对mib开发一系列开发工具包,包括:
- Mib Browser
- Mib Editor
- Mib Compiler
熟悉SNMP的开发过程
SNMP开发流程
Mib的创建和源码生成
首先第一步是Mib设计,开始Mib设计的时候要确定将被管理的对象纳入管理信 息库,最终实现asn.1的文档,在此可以使用AdventNet所提供的Mib Editor来实现。通过Mib编译器将asn.1的文档编译成c文件和头文件,可以使用Mib Compiler编译。
Agent的开发
Agent++支持多种平台,主要有solaris, hp unix, windows等。使用方法稍有不同,但原理一致,即生成库文件,进行开发应用时使用头文件及库文件即可。
unix下直接进行make,如果有问题对makefile中的一些宏/变量进行调整。在solaris下基本没有问题。
windows下vc6编译请参考附录
Snmpapp的开发
snmp++支持多种平台,主要有solaris, hp unix, windows等。使用方法稍有不同,但原理一致,即生成库文件,进行开发应用时使用头文件及库文件即可。
- unix下直接进行make,如果有问题对makefile中的一些宏/变量进行调整。在solaris下基本没有问题。新版本支持snmpv3,需要用到libdes或其他加解密库。
- windows下vc6编译请参考附录
附录:windows下vc6编译
创建项目,加入所有的源文件和头文件后。
要在PROJECT的SETTING中设置如下项:
1 在C++页,/I 项加入AGENT++的INCLUDE和SNMP++的INCLUDE 目录
2、设置成MTd 多线程DEBUG模式。
3、 编译运行。
以上用来编译AGENT++库。
对于AGENT++的例子,要在PROJECT的SETTING中设置如下项:
1、创建WIN32的控制台程序;
2、加入程序代码;
3、加入SNMP++.LIB和AGENT++.LIB;
4、 在C++页,/I 项加入AGENT++的INCLUDE和SNMP++的INCLUDE 目录
5、设置成MTd 多线程DEBUG模式。
6、在LINK页,加入Ws2_32.lib
7、加入/nodefaultlib:"libcmtd.lib"
8、编译运行。
- SNMP学习的一点心得
- SNMP学习的一点心得
- 学习的一点心得
- 学习jacob的一点心得
- 学习jacob的一点心得
- 学习jacob的一点心得
- 学习JSP的一点心得
- 学习dsp的一点心得
- 学习Lucene的一点心得
- Web学习的一点心得
- 学习javascript的一点心得
- 学习QTP的一点心得
- 学习JSP的一点心得
- 学习Photoshop的一点心得
- 学习C#的一点心得
- 学习Vim的一点心得
- 学习mybatis 的一点心得
- 如何学习机器学习的一点心得
- 等待彼此
- Java SE 6.0 发布啦!
- SD卡的读写和加解密
- 在编写JSP标签语言时,引用JS的BUG和解决办法
- 12月10日——培训第18天
- SNMP学习的一点心得
- 2006-12-12 谈谈怎么利用愚昧的大众
- 12月11日——培训第19天
- 使用Web Service 调用两地的数据
- E60的存储空间不足? NO
- 测试工具大全
- 今天正式开始驱动开发
- 12月12日——培训第20天
- 你是蓝色的还是黄色的?