1,snmp 协议(简单网络管理协议)
应用层协议,在传输层通过UDP传输,主要用于管理网络设备,目前存在的版本有3个,分别是V1 、v2/v2c、v3。v3在v2的基础上添加了安全机制(USM/VACM 提供认证和加密,访问权限的控制)。
注:SNMP的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI(一种管理信息的结构)和MIB,改进后的协议就是著名的SNMP。
2,snmp工作原理
SNMP采用特殊的客户机/服务器模式,即代理(agent)/管理站(NMS)模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询。所以,对于被管理设备来说,可以认为他就是一个agent。
SNMP的应用场景如图所示:
其中管理员通过操作管理站(NMS)跟被管设备(Agent)通信,同时在两者中都维护了一个MIB库,通过MIB库中定义的节点(OID)来唯一标识双方操作的是那个数据。当然MIB库也有公共的节点(system .etc),各个厂家也会加入自己的私有节点,通过写成MIB文件的形式发布个客户。
SNMP工作场景如图:
管理站和agent之间Get/Set请求使用161 port进行交互,因为使用UDP协议,不存在连接,GET/SET 通过数据报的消息发送和接收,162 port用于发送告警信息(Agent主动发出,告知NMS有某些事情发生)。
snmp 各版本在协议操作定义上有部分不同,如下:
3,SNMP 报文结构
SNMP代理和管理站通过SNMP协议中的标准消息进行通信,每个消息都是一个单独的数据报。SNMP使用UDP(用户数据报协议)作为第四层协议(传输协议),进行无连接操作。SNMP消息报文包含两个部分:SNMP报头和协议数据单元PDU。
在实际网络传输环境下,SNMP报文的长度取决于其所采用的编码方式。SNMP统一采用BER(Basic Encoding Rule)的编码规则,同时在正式SNMP规范中使用的是ASN.1语法,Abastract Syntax Notation v1,即抽象语法描述语言。这两个概念在后面实践环节再做进一步介绍,这里只要稍微了解一下即可,不妨碍我们对协议本身的分析。这里我们简单解释一下BER编码规则:
BER作为ANS.1的基本编码规则,描述具体的ANS.1对象如何编码为比特流在网络上进行传输。BER编码规则由三部分组成:
简单的理解BER就是:类型-长度-数据,例如 :010211 H:类型是1,比如说就是Int,数据长度是2,数据值是0x11=>这个数据是int型的17。
trap报文的结构:
snmp也定义了几种trap类型,如下:
4,总结:
参考博文:
SNMP(简单网络管理协议)详解_snmp协议详解_Jeremy_Lee123的博客-CSDN博客
网络协议篇之SNMP协议(一)——SNMP报文协议_zqixiao_09的博客-CSDN博客
SNMP报文格式_snmp数据格式_黄大刀的博客-CSDN博客https://blog.csdn.net/shjhuang/article/details/98489845