轻松学习SNMP协议之入门篇( 三 )


GetNextRequest ( ipRouteDest.10.0.0.51,ipRouteNextHop.10.0.0.51,ipRouteMetric1.10.0.0.51 )
agent响应:GetResponse (( ipRouteDest.10.0.0.99 = "10.0.0.99" ),( ipRouteNextHop.10.0.0.99 = "89.1.1.42" ),( ipRouteMetric1.10.0.0.99 = 5 ))
网管站继续:
GetNextRequest(ipRouteDest.10.0.0.99,ipRouteNextHop.10.0.0.99,ipRouteMetric1.10.0.0.99)
这时因为路由表中所有的行都被取遍 , agent因返回路由表对象的下一字典后继即该治理对象在MIB树中的后序遍历的直接后继 。这里应是nettoMediaIndex , 治理对象的OBJECT IDENTIFIER 。这个响应通知网管站对表的遍历已经完成 。
1.8. GetResponse PDU
GetResponse PDU只有当受到getRequest GetNextRequest SetRequest才由协议实体产生 , 网管站收到这个PDU后 , 应显示其结果 。
1.9. SetRequest PDU
SetRequest PDU除了PDU类型标识以外 , 和GetRequest相同 , 当需要对被管变量进行写操作时 , 网管站侧的协议实体将生成该PDU 。
对SetRequest的响应将根据下面情况分别处理:
1.假如是关于一个只读变量的设置请求 , 则收到该PDU的协议实体产生一个GetReponse报文 , 并置error status为noSuchName, error index的值是错误变量在变量list中的位置 。
2.假如被管设备上的协议实体收到的PDU中的变量对偶中的值 , 类型、长度不符和要求 , 则收到该PDU的协议实体产生一个GetReponse报文 , 并置error status为badValue, error index的值是错误变量在变量list中的位置 。
3.假如需要产生的GetReponse报文长度超过了本地限制 , 则收到该PDU的协议实体产生一个GetReponse报文 , 并置error status为tooBig, error index的值是0 。
4.假如是其他原因导致SET失败 , 则收到该PDU的协议实体产生一个GetReponse报文 , 并置error status为genErr, error index的值是错误变量在变量list中的位置 。
假如不符合上面任何情况 , 则agent将把治理变量设置收到的PDU中的相应值 , 这往往可以改变被管设备的运行状态 。同时产生一个GetResponse PDU , 其中error status置为noError,error index的值为0 。
1.10. Trap PDU
Trap PDU的有如下的形式
 
Trap是被管设备碰到紧急情况时主动向网管站发送的消息 。网管站收到trapPDU后要将起变量对偶表中的内容显示出来 。一些常用的trap类型有冷、热启动 , 链路状态发生变化等 。
4. SNMP MIB编译器的功能
MIB编译器是Agent开发的一个工具 , 一个Agent的开发者首先面对的是一个MIB文件 , 其中是用ASN.1描述的治理对象集 。MIB编译器要把这个文件转换成相应的C语言源文件 。MIB编译器可极大的提供Agent的开发效率 。


推荐阅读