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。
get-request操作:从代理进程处提取一个或多个参数值(网管系统发送)
get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值(网管系统发送)
set-request操作:设置代理进程的一个或多个参数值(网管系统发送)
get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作(代理发送)
trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生(代理发送)
报文抓包
get-request:
get-response:
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报文中,变量的值应忽略。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181042.html原文链接:https://javaforall.cn