snmp协议分析

介绍

Snmp协议为简单网络管理协议(Simple Network Management Protocol),属于应用层协议,传输层使用UDP协议,主要用于网络设备的管理。Snmp协议分为snmp管理站(client端)和snmp代理(server端),snmp管理站通过udp协议向snmp代理发送请求消息,当snmp代理收到请求消息后,返回snmp管理站需要的内容。snmp消息全部通过UDP端口161接收,只有Trap信息采用UDP端口162。Snmp操作有get、set、trap操作。

 

消息结构

Snmp协议消息报文分为2个部分:snmp报文头和协议数据单元PDU。

snmp协议分析

snmp协议分析

get-request操作:从代理进程处提取一个或多个参数值(网管系统发送)

get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值(网管系统发送)

set-request操作:设置代理进程的一个或多个参数值(网管系统发送)

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

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

报文抓包

get-request:

snmp协议分析

get-response:

snmp协议分析

snmp协议分析

Request ID: 保证请求报文和响应报文能对应起来。

Error status: 代理进程回复响应时0-5中的一个数字

0       noError    一切正常

1       tooBig      代理无法将回答装入到一个SNMP报文之中

2       noSuchName   操作指明了一个不存在的变量

3       badValue 一个set操作指明了一个无效值或无效语法

4       readOnly  管理进程试图修改一个只读变量

5       genErr      某些其他的差错

 

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

 

Trap首部:

企业(enterprise):填入trap报文的网络设备的对象标识符

trap类型:

0 coldStart        代理进行了初始化

1 warmStart    代理进行了重新初始化

2 linkDown       一个接口从工作状态变为故障状态

3 linkUp    一个接口从故障状态变为工作状态

4 authenticationFailure   从SNMP管理进程接收到具有一个无效共同体的报文

5 egpNeighborLoss 一个EGP相邻路由器变为故障状态

6 enterpriseSpecific 代理自定义的事件,需要用后面的“特定代码”来指明

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

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

变量绑定(variable-bindings):指明一个或多个变量的名和对应的值。在get或get-next报文中,变量的值应忽略。