您的位置:首页 > 其它

SNMP 报文格式

2014-02-03 11:45 274 查看
   SNMP采用的是UDP协议,也是采用C/S模型,不过在SNMP会话中,通常不称为客户端,服务器,而是叫管理进程,代理进程,可以认为管理进程是客户端,代理进程是服务器。

   SNMP 规定了 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 报文。

                                              


     下图是封装成 UDP 数据报的 5 种操作的 SNMP 报文格式。 可见一个 SNMP 报文共有三个部分组成,即公共 SNMP 首部、get/set 首部 trap 首部、变量绑定。

                        


 

(1)公共 SNMP 首部,共三个字段:

 版本
写入版本字段的是版本号减 1,对于 SNMP(即 SNMPV1)则应写入 0。

共同体(community)
共同体就是一个字符串, 作为管理进程和代理进程之间的明文口令,常用的是 6 个字符“public” 。

PDU 类型
根据 PDU 的类型,填入 0~4 中的一个数字,其对应关系如表 2 所示意图。

                                                     


(2)get/set 首部

请求标识符(request ID)
这是由管理进程设置的一个整数值。代理进程在发送 get-response 报文时也要返回此请求标识符。 管理进程可同时向许多代理发出 get 报文, 这些报文都使用 UDP 传送, 先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。

差错状态(error status)
由代理进程回答时填入 0~5 中的一个数字,见表 3 的描述。

                                                          

                  

 差错索引(error index)
当出现 noSuchName、badValue 或 readOnly 的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。

  (3)trap 首部

 企业(enterprise)
填入 trap 报文的网络设备的对象标识符。此对象标识符肯定是在图 3 的对象命名树上的 enterprise 结点{1.3.6.1.4.1}下面的一棵子树上。

trap 类型
此字段正式的名称是 generic-trap,共分为表 4 中的 7 种。

                                                                       

 

 当使用上述类型 2、3、5 时,在报文后面变量部分的第一个变量应标识响应的接口。

 特定代码(specific-code)
指明代理自定义的时间(若 trap 类型为 6),否则为 0。

 时间戳(timestamp)
指明自代理进程初始化到 trap 报告的事件发生所经历的时间,单位为 10ms。例如时间戳为 1908 表明在代理初始化后 1908ms 发生了该时间。

(4)变量绑定(variable-bindings)

指明一个或多个变量的名和对应的值。在 get 或 get-next 报文中,变量的值应忽略。

 

SNMP并不采用简单的二进制格式,上面只说明了SNMP的报文格式,但并没有说明字段是如何进行编码的,实际上SNMP字段编码还是比较复杂的。不同的字段和值有类型区分,一些字段组合起来构成一种新的类型SEQUENCE,类似于C语言的结构体.采用的编码规范BER点击打开接,也是需要认真消化理解的。snmp具体如何编码请看下一篇博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  snmp 报文格式 BER