SNMP用VC开发

发布时间 : 星期四 文章SNMP用VC开发更新完毕开始阅读

? SEQUENCE 这一数据类型与C程序设计语言中的“structure”类似。

一个SEQUENCE包括0个或多个元素,每一个元素又是另一个ASN.1数据类型。例如,MIB中的UdpEntry就是这种类型的变量。它代表在代理进程侧目前“激活”的UDP数量(“激活”表示目前被应用程序所用)。在这个变量中 包含两个元素:

? IpAddress类型中的udpLocalAddress,表示IP地址。

? INTEGER类型中的udpLocalPort,从0到65535,表示端口号。 ? SEQUENDEOF 这是一个向量的定义,其所有元素具有相同的类型。

如果每一个元素都具有简单 的数据类型,例如是整数类型,那么我们就得到一个简单的向量(一个一维向量)。但是我们将 看到,SNMP在使用这个数据类型时,其向量中的每一个元素是一个SEQUENCE(结构)。因而可以将它看成为一个二维数组或表。 ? Opague 不透明类型或未知类型

3 SNM规定了5种协议数据单元PDU

(也就是SNMP报文),用来在管理进程和代理之间的交换。

? get-request操作:从代理进程处提取一个或多个参数值

? get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参

数值

? set-request操作:设置代理进程的一个或多个参数值

? get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。

? trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。

前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。下图描述了SNMP的这5种报文操作。请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。

SNMP的5种报文操作

4 SNMP报文格式

SNMP报文格式

解释如下:

4.1 Version(版本号):

该字段是TLV 格式的数据块包含3个字节,表示报文的版本号

内容为02-01-XX 其中02 字节是数据类型,对应了表格1 中的Integer 整型数据01是数据长度:1个字节。XX 是数据值,它的取值分别对应SNMP的三种不同的版本。对应关系如下 XX=0 对应SNMPv1 XX=1 对应SNMPv2c XX=2 对应SNMPv2 XX=3 对应SNMPv3

4.2 Community(团体名)

字段也是TLV 格式的数据块,其LV 取决于实际的团体名,例如某个SNMPv1 的网管报文的团体名为字符串public, 则编码的二进制为04-06-70-75-62-6c-69-63。

04对应表格1 的Octet string 即字符串型数据。 06对应后面的长度是6个字节。

70-75-62-6c-69-63是“public“的ASCII码值。

从这里可以看出SNMPv1 的团体名是以明文表示的当SNMP。报文被非法截获后团体名就泄漏出去了对网络管理的安全将产生一定的威胁。SNMPv3在网络管理的安全性方面有改进采用MD5 SHA 的认证方法保证安全SNMP 报文的协议数据单元PDU 结构分两类一般网管报文的PDU 和Trap

4.3 一般的PDU报文(非Trap)

报文的 PDU 分别介绍如下:

一般的SNMP 报文的PDU 结构如图2 所示

4.3.1 PDU Type:

SNMP 的Get-Request、Get-Response 等基本命令集的操作类型。 根据PDU的类型,填入0~4中的一个数字(非Trap报文填写0-3),其对应关系如下表所示意图。

PDU类型

PDU类型 0 1 2 3 4

名称 get-request get-next-request get-response set-request trap 4.3.2 Request ID :

采用02-04-XX-XX-XX-XX 的TLV 数据块用于网管站和被管设备之间传递的SNMP 报文的操作和应答的匹配,这和CAMS服务器与设备之间交互的Radius 报文ID 的功能基本相同,之所以使用报文ID机制来匹配报文,根本原因在于UDP 通信的不可靠特点:基于UDP 的应用程序均应该依靠这种方法维持通信的正常秩序。

4.3.3 Error-status:

联系合同范文客服:xxxxx#qq.com(#替换为@)