SNMP协议数据在协议的***个版本中就规定了5中,以及它的报文格式和一些管理进程等,都有明确的规定。那么我们接下来就对这部分内容详细阐述一下。首先还是来具体了解一下这5种单元有哪些。
SNMP 1.0规定了5种SNMP协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。
get-request操作:从代理进程处提取一个或多个参数值
get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值
set-request操作:设置代理进程的一个或多个参数值
get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。
trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。图1描述了SNMP的这5种图2 SNMP报文格式报文操作。请注意,在代理进程端是用熟知端口161来接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。
公共SNMP协议数据的报文首部
◆版本
写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。
◆共同体(community)
共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public"。表1 PDU类型
PDU类型
表1
根据PDU的类型,填入0~4中的一个数字,其对应关系如表1所示意图。#p#
get/set首部
◆请求标识符(request ID)
这是SNMP协议数据由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文
表2
◆差错状态(error status)
由代理进程回答时填入0~5中的一个数字,见表2的描述。
◆差错索引(error index)
当出现noSuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。#p#
trap首部
◆企业(enterprise)
填入trap报文的网络设备的对象标识符。此对象标识符肯定是在图3的对象命名树上的enterprise结点{1.3.6.1.4.1}下面的一棵子表3 trap类型树上。
trap类型
表3
此字段正式的名称是generic-trap,共分为表3中的7种。
类型2、3、5时,在报文后面变量部分的***个变量应标识响应的接口。
◆特定代码(specific-code)
SNMP协议数据指明代理自定义的时间(若trap类型为6),否则为0。
◆时间戳(timestamp)
SNMP协议数据指明自代理进程初始化到trap报告的事件发生所经历的时间,单位为ms。例如时间戳为1908表明在代理初始化后1908ms发生了该事件。
◆变量绑定(variable-bindings)指明一个或多个变量的名和对应的值。在get或get-next报文中,变量的值应忽略。