当前位置:网站首页>SNMP起步啦
SNMP起步啦
2022-07-13 17:36:00 【一平米】
SNMP
SNMP协议概述
- 简单网络管理协议(SNMP:Simple Network Management Protocol)
- 主要用于网络设备的管理,利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。
SNMP版本
SNMP协议的版本包括:SNMPv1、SNMPv2c、SNMPv3。
- SNMP v1是SNMP协议的最初版本,不过依然是众多厂家实现SNMP基本方式。
- SNMP v2通常被指是基于community的SNMP V2。Community实质上就是密码。
- SNMP v3 是最新版本的SNMP。它对网络管理最大的贡献在于其安全性。增加了对认证和密文传输的支持。
SNMP管理框架
- SNMP包括三个网络元素:SNMP管理者(SNMP Manager),SNMP代理(SNMP Agent),MIB库(Management Information Base,管理信息库)
- SNMP管理者:运行在SNMP客户端程序的工作站,提供了非常友好的人机交互页面,方便网络管理员完成绝大多数的网络设备管理工作。
- SNMP-AGENT代理:驻留在被管理设备上的一个进程,负责接受、处理来自SNMP管理者的请求报文。在一些紧急情况下,SNMP代理也会通知SNMP管理者事件的变化。
- MIB库:被管理对象的集合。它定义了被管理对象的一系列的属性:对象的名字、对象的访问权限和对象的数据类型等。每个SNMP代理都有自己的MIB。SNMP管理者根据权限可以对MIB中的对象进行读/写操作。
SNMP的报文类型
- SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request和Trap 。
- 监视网络状态的有三种类型 Get-Request、Get-ResponseGet-Next-Request
- 修改网络设备配置 Set-Request
- 接收网络事件警告 Trap
- 监视网络状态的三种类型
SNMP 管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。Get-Next- Request用于和Get-Request组合起来查询特定的表对象中的列元素。
- 监视网络状态的三种类型
- 修改网络设备配置
SNMP 管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。
- 修改网络设备配置
- 接收网络事件警告
SNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生,如接口UP/DOWN,IP地址更改等。
- 接收网络事件警告
- SNMP 工作流程如图
- 各种报文的操作如下:
- get-request:从代理进程处提取一个或多个参数值。
- get-next-request:从代理进程处提取紧跟当前参数值的下一个参数值。
- set-request:设置代理进程的一个或多个参数值。
- get-response:返回的一个或多个参数值。这个操作是由代理进程发出的,它是对前面3种操作的响应。
- trap:代理进程主动发出的报文,通知管理进程有某些事件发生。
- 注意点
- 上面五种消息中Get-Request、Get-Next-Request和Set-Request是由管理站发送到代理端的161端口的
- 后面两种Get-Response和Trap是由代理端进程发给管理端进程的,其中Trap消息被发送到管理进程的162端口
- 所有数据都是走UDP封装。
SNMP报文格式
- 查询报文 设置报文报文格式

- 报文中的主要字段如下:
- 版本:表示SNMP的版本,如果是SNMPv1报文则对应字段值为0,SNMPv2c则为1。
- 团体名:用于在SNMP Agent与NMS之间完成认证,字符串形式,用户可自行定义。团体名包括“read”和“write”两种,执行SNMP查询操作时,采用“read”团体名进行认证;执行SNMP设置操作时,则采用“write”团体名进行认证。
- Request ID:用于匹配请求和响应,SNMP给每个请求分配全局唯一的ID。
- Non repeaters/Max repetitions:GetBulk操作基于GetNext操作实现,相当于多次执行GetNext操作,这两个参数用于设置执行GetNext操作次数。
- Error status:用于表示在处理请求时出现的状况。
- Error index:差错索引。当出现异常情况时,提供变量绑定列表(Variable bindings)中导致异常的变量的信息。
- Variable bindings:变量绑定列表,由变量名和变量值对组成。
- 简单的说,一条SNMP消息由"版本号"、"SNMP共同体名"和"协议数据单元(PDU)"构成,数据包的长度不是固定的。
- 版本,团体名上面已经说过;
- PDU(协议数据单元)是SNMP消息中的数据区, 即Snmp通信时报文数据的载体.
SNMP报文处理过程
- Agent通过UDP端口161接收来自NMS的Request报文。
- Agent接收到报文后,其基本处理过程如下:
- 解码:依据ASN.1基本编码规则,生成用内部数据结构表示的报文。如果此过程出现错误导致解码失败,则丢弃该报文,不做进一步处理。
- 比较SNMP版本号:将报文中的版本号取出,与本Agent支持的SNMP版本号比较。如果不一致,则丢弃该报文,不做进一步处理。
- 团体名验证:将报文中的团体名取出,此团体名由发出请求的网管站填写。如与Agent所在设备认可的团体名不符,则丢弃该报文,不做进一步处理,同时产生一个Trap报文。SNMPv1提供较弱的安全措施,在版本3中这一功能被加强。
- 提取PDU:从通过验证的ASN.1对象中提出协议数据单元PDU。如果失败,丢弃报文,不做进一步处理。
- 处理PDU:根据不同的PDU,SNMP协议实体进行不同的处理。得到管理变量在MIB树中对应的节点,从相应的模块中得到管理变量的值,形成Response报文,编码发回网管站。
- 网管站得到响应报文后,经过同样的处理,最终显示结果。
MIB介绍
- MIB(管理信息库)
- MIB是一个被管理对象的集合,它定义被管理对象的一系列属性,包括
- 对象的名字
- 对象的访问权限
- 对象的数据类型
MIB树结构
- MIB以树状结构进行存储,树的叶子节点表示管理对象,它可以通过从根节点开始的一条惟一路径来识别,这也就是OID(Object Identifier)。
- OID是由一些系列非负整数组成,用于唯一标识管理对象在MIB树中的位置。由SMI来保证OID不会冲突。
- MIB文件一旦发布,OID就和被定义的对象绑定,不能修改。MIB节点不能被删除,只能将它的状态置为“obsolete”,表明该节点已经被废除。
- 在图1的树形结构中,mgmt对象可以标识为:{ iso(1) org(3) dod(6) internet(1) mgmt(2) },简单标记为:1.3.6.1.2,这种标识就叫做OID。
- NMS通过OID引用Agent中的对象。
边栏推荐
- 基于logisim的八位求补器的设计与实现
- 【Tensorflow2】AttributeError: ‘Tensor‘ object has no attribute ‘numpy‘ 解决 (tf.py_function)
- 2022 GopherChina 出品人及演讲内容陆续揭晓···
- Keil reports an error: error 118 (errors reference to external variables) solution and reason
- Micro service mode: sidecar
- C语言:有关字符串函数的一些自我实现
- Flink CDC + oceanbase full incremental integrated data integration scheme
- fenxi
- 数组变化,但是无法更新视图(原因和思考)
- <statement> or DELIMITER expected, got ‘id‘
猜你喜欢

基于logisim的八位求补器的设计与实现

MVN clean or MVN clean package did not detect the test file

41.js--闭包

Based on the use of PageHelper paging plug-in in SSM project (easy to use)

CONDA based operation record of starting a tensorflow GPU (2.6.0) environment on win10 from scratch (2022.07)
c语言中的输入输出函数之printf函数

c语言中的输入输出函数之scanf函数

快手实时数仓保障体系研发实践

Practice of Flink CDC in Dajian cloud warehouse

ssm项目中下拉框功能的实现
随机推荐
PV operation procedure questions
Random signal analysis, 2nd Edition [edited by Zhao Shuqing and Zheng Wei] (part) answer to homework after class (written by myself)
【无标题】
油猴脚本更改tw样式
P1664 clock in every day and feel good [getting started]
Changement de style TW du script singe huileux
JS预编译
How to shield yandexbot
Basic related concepts of database
ES6--数组
美团基于 Flink 的实时数仓平台建设新进展
一文理解分布式开发中的服务治理
Implementation of drop-down box function in SSM project
Research and development practice of Kwai real-time warehouse guarantee system
解决ssm項目上傳圖片後無法及時回顯
(CVPR-2022)用于改进步态识别的拉格朗日运动分析和视角嵌入
ES6--箭头函数
基于ssm项目中pagehelper分页插件的使用(简单易上手)
ES5中数组对象有哪些方法和ES6新增了哪些方法
JS字符串内置功能



