snmp编程特点小结

来源:互联网 发布:数据分析师能力要求 编辑:程序博客网 时间:2024/05/16 13:49

SNMP是运行在网络管理程序和SNMP代理之间的通信协议,故而SNMP的开发也分为两部分。网络管理程序的开发和SNMP代理软件的开发。

SNMP代理运行在特定的网络设备中,由设备制造商负责开发。

对个人而言,主要需要负责网络管理程序的开发。


开发方法:采用WINDOWS环境下的SNMP++软件包。 //该软件包为封装的开源C++类库,相比依靠WinSNMP API直接进行编程要容易一些,不过智商是硬伤。T^T。


分析角度:客户机/服务器模式。

            1)网络管理程序和SNMP代理既是服务器,也是客户机。

            2)作为服务器,网络管理程序监听端口号162,接收SNMP代理发送的陷阱消息;

               作为服务器,SNMP代理监听端口号161,接收网络管理软件发送的各种查询请求;

               作为客户端,网络管理程序可以随时向SNMP代理发出查询请求;

               作为客户端,SNMP代理可以随时向网络管理程序发出陷阱消息。

 

主要工作:

           排除陷阱消息的处理,主要的开发工作分为以下两部分:

           1)构造PDU,组成SNMP报文。

           2)对发送(接收)的SNMP报文进行BER解码( 编码)。

###BER编码后的SNMP报文,交由UDP,同时指定服务器端(SNMP代理)的IP地址和端口号161.

###接收到返回的应答包后,对SNMP报文进行相应的解码处理,分析。

###SNMPV1的报文结构由SNMP版本号,共同体字符串和一个附加的PDU结构组成。BER编码处理的是整个报文。

###UDP数据的结构= =  源端口(随机)+目的端口161+数据长度+校验和+SNMP BER编码(数据部分)


###SNMP变量为运行期间SNMP代理所维护的被管理对象实例。

###网络管理程序通过查询SNMP变量的值,获得被管理网络设备的运行状态,通过设置SNMP变量的值,达到远程配置网络参数的目的。

###变量标示符就是列对象实例标示符,需要查询的SNMP变量标示符为对应列对象标示符+表索引。


###相应处理可以通过牺牲效率简化问题的方法,来促进问题的解决。


阻塞模式和非阻塞模式的网络请求:

SNMP++提供两种方式的网络请求:

*1   阻塞模式为一个请求发出后,程序等候回应包的到来,直至超时。

*2  非阻塞模式为请求发出后,控制返回继续执行,等待回应包的返回后,再做处理。

*3  非阻塞模式实现较为复杂,但应用灵活,在网络延时较大的情况下,效率更高,但一般情况下。管理工作站和代理处于同一局域网,阻塞模式相对易于实现。




0 0
原创粉丝点击