SNMP 协议中提供了多种操作类型,但是它们的报文格式主要分为两种格式,下面详细介绍这两种报文格式。
第一种SNMP报文格式
在 SNMP 协议中,操作类型 get-request、get-response、get-next-request、set-request 或 informRequest 的报文格式基本是相同的。
报文格式如图所示。
报文中每个字段的含义如下:
- 版本:版本字段,写入版本字段的是版本号减 1。例如,SNMP(即 SNMPV1)应写入 0。
- 共同体:字符串形式,作为网络管理站 NMS 和 SNMP 代理之间的明文口令,默认为 public。
- PDU 类型:SNMP 协议的操作类型。值为 0,表示 get-request 操作;值为 1,表示 get-next-request 操作;值为 2,表示 get-response 操作;值为 3,表示 set-request 操作;值为 7,表示 informRequest 操作。
- 请求标识:管理站 NMS 设置的一个整数值。SNMP 代理在发送 get-response 报文时也要返回此请求标识符。
- 差错状态:整数,由 SNMP 代理进行标注,指明有错误发生。可用的值及含义如下表所示。
- 差错索引:当出现 noSuchName、badValue 或 readOnly 的错误时,由代理进程在回答时设置的一个整数。该数值指明引起错误的变量在变量列表中的偏移位置。
- 名称:MIB 管理信息库中的 OID。
- 值:OID 对应的值。
错误状态
错误状态 |
名称 |
含义 |
0 |
noError |
一切正常 |
1 |
tooBig |
代理无法将回答封装到一个 SNMP 报文之中 |
2 |
noSuchName |
操作使用了一个不存在的变量 |
3 |
badValue |
一个 set 操作使用了一个无效值或无效语法 |
4 |
readOnly |
管理进程试图修改一个只读变量 |
5 |
genErr |
其他错误 |
第二种SNMP报文格式
在 SNMP 协议中,trap 操作类型的报文格式基本是相同的。
报文格式如图所示。
报文中每个字段的含义如下:
- 版本:版本字段。
- 共同体:作为管理进程和代理进程之间的明文口令,默认为 public。
- PDU 类型:SNMP 协议的操作类型。这里值为 4。
- 企业:填入 trap 报文的网络设备的 OID。该 OID 必须在 1.3.6.1.4.1 的节点上。
- SNMP 代理地址:SNMP 代理的 IP 地址。
- trap 类型:trap 类型可用的类型及含义如下表所示。
- 特定代码:指明代理自定义的时间。
- 时间戳:指明从代理进程初始化到 trap 报告的事件发生所经历的时间,单位为 10ms。例如,时间戳为 1908 表明在代理初始化后 19080ms 发生了该事件。
- 名称:MIB 管理信息库中的 OID。
- 值:OID 对应的值。
trap 类型
trap 类型 |
名称 |
含义 |
0 |
coldStart |
代理进行了初始化 |
1 |
warmStart |
代理进行了重新初始化 |
2 |
linkDown |
一个接口从工作状态变为故障状态 |
3 |
linkUp |
一个接口从故障状态变为工作状态 |
4 |
authenticationFailure |
从网络管理站 NMS 接收到一个具有无效共同体的报文 |
5 |
egpNeighborLoss |
一个 EGP 相邻站变为故障状态 |
6 |
enterpriseSpecific |
代理自定义的事件,在这个特定的代码字段中查找 trap 信息 |