SNMP的体pȝ构及工作原理
什么是 SNMPQ?/strong> SNMP主要部分 面向自陷的轮询方法(trap-directed pollingQ是|络理采用较有效的方式。网l管理工作站轮询在被理讑֤中的代理来收集所需的数据,q且在控制^C使用数字或图形的方式来显C所攉的数据,同时被管理设备中的代理可以在M时候向|络理工作站报告错误情况,如预制定阈D界程度等Q即所谓的SNMP自陷QtrapQ?/p>
代理的概念及所提供的服?/strong> MIB概念 单网l管理协?/font> SNMPh/响应报文 报文格式
SNMP是一pd协议l和规范Q其提供了一U从|络中的讑֤中收集网l管理信息的?nbsp;法。SNMP也ؓ讑֤向网l管理工作站报告问题和错误提供了一U方法。其|络理?nbsp;要分为四部分被管理节点(讑֤Q、代理、网l管理工作站、网l管理协议?/p>
被管理节点(讑֤Q网l管理协?/td>
被监控设?/td>
代理
用来跟踪被管理设备状态的Ҏ软g或固?/td>
|络理工作?/td>
与在不同的被理节点中的代理通信Qƈ且显C些代理状态的中心讑֤
|络理协议
被网l管理工作站和代理用来交换信息的协议
从被理讑֤中收集数据所遵@的原则及采用的方?br>设计和构造网l管理的基础l构Ӟ需要遵守下列两条网l管理的原则Q?/p>
理代理QagentQ是一U特D的软gQ或ZgQ,它包含了关于一个特D设备及该设备所处环境的信息?br>其提供的服务Q?/p>
MIB被称为管理信息库Q一个MIB描述了包含在数据库中的对象或表项?/p>
单网l管理协议允许网l管理工作站软g与被理讑֤中的代理q行通信。这U通信可以包括来自理工作站的询问消息、来自代理的应答消息或者来自代理给理工作站的自陷消息?br>SNMPv1实现h很简单,其包?个请?响应原语Q?/font>
IP首部
UDP首部
版本
共同?/td>
PDUcdQ?Q?Q?/td>
h标识
差错状态(0Q?Q?/td>
差错索引
名称
?/td>
名称
?/td>
...
PDUcd4
企业
代理地址
TrapcdQ?Q?Q?/td>
特定代码
旉?/td>
名称
?/td>
...
PDUcd
名称
0
Get-request
1
Get-next-request
2
Get-response
3
Set-request
4
Trap
SNMP开发工?/font>
开发工L使用
AdventNet所提供的的开发工具包Q支持多U^台?/p>
Microsoft Virtual Studio 6.0QWindows下c++语言的开发包。MS自n提供一l称为WinSNMP的APIQ在MSDN中提供详l文)Q而且MS提供ZAgent Service的SNMP Extension Agent开发?/p>
ucd-snmQnet-snmpQp是Linuxq_下著名的C语言SNMP开发包Q公开源码Q是最常用的开发Agent的Y件包?/p>
辅助工具的?/strong>
AdventNet所提供的对mib开发一pd开发工具包Q包括:
熟悉SNMP的开发过E?/font>
SNMP开发流E?br>
Mib的创建和源码生成
首先W一步是Mib设计Q开始Mib设计的时候要定被理的对象纳入管理信息库Q最l实现asn.1的文,在此可以使用AdventNet所提供的Mib Editor来实现。通过Mib~译器将asn.1的文编译成c文g和头文gQ可以用Mib Compiler~译?/p>
Agent的开?/strong> Snmpapp的开?/strong> 附录Qwindows下vc6~译 以上用来~译AGENTQ+库?br>对于AGENTQ+的例子,要在PROJECT的SETTING中设|如下项Q?br>1、创建WIN32的控制台E序Q?br>2、加入程序代码;
Agent++支持多种q_Q主要有solaris, hp unix, windows{。用方法稍有不同,但原理一_即生成库文gQ进行开发应用时使用头文件及库文件即可?br>?nbsp;unix下直接进行makeQ如果有问题对makefile中的一些宏/变量q行调整。在solaris下基本没有问题?br>?nbsp;windows下vc6~译请参考附?/p>
snmp++支持多种q_Q主要有solaris, hp unix, windows{。用方法稍有不同,但原理一_即生成库文gQ进行开发应用时使用头文件及库文件即可?/p>
创徏目Q加入所有的源文件和头文件后?br>要在PROJECT的SETTING中设|如下项Q?br>1 在CQ+,/I 加入AGENTQ+的INCLUDE和SNMPQ+的INCLUDE 目录
2、设|成MTd 多线EDEBUG模式?br>3?nbsp;~译q行?/p>
3、加入SNMPQ+.LIB和AGENTQ+.LIB;
4、 在CQ+,/I 加入AGENTQ+的INCLUDE和SNMPQ+的INCLUDE 目录
5、设|成MTd 多线EDEBUG模式?br>6、在LINK,加入Ws2_32.lib
7、加?nodefaultlib:"libcmtd.lib"
8、编译运行?/p>