- 什么是SNMP?
- SNMP是广泛应用于TCP/IP网络的网络管理标准协议,该协议能够支持网络管理系统,用以检测连接到网络上的设备是否有任何引起管理上关注的情况。
- SNMP采用轮询的机制,提供最基本的功能及,适合小型、快速、低价格的环境使用,而且SNMP以UDP报文为承载,因而受到绝大多数设备的支持,同时保证管理信息在任意两点传送,便于管理员在网络上的任何节点检索信息,进行故障排查
- 为什么使用SNMP?
- 网络设备数量成几何级数增加,网络管理员对设备的管理变得困难,晚会罗 作为一个复杂的分布式系统,覆盖地域大,对设备的实时监控和故障排查变的困难
- 网络设备多种多样,不同厂商提供的管理接口各不相同
- SNMP应运而生,利用网络管理网络的方式
- 网络管理员利用snmp平台在网络上的任意节点完成信息查询、信息修改和故障排查等工作
- 屏蔽了设备间的物理差异,SNMP仅提供最基本的功能集,使得管理任务与被管理任务的物理特性、网络类型相互独立,因而实现对不同设备的统一管理,管理成本低
- 设计简单、运行代价低,SNMP采用尽可能简单的设计思想,其在设备上添加硬件、软件、报文的种类和报文的格式都力求简单,因此运行SNMP给设备造成的影响和代价都被最小化
- SNMP的基本组件
- NMS(Network Management System)
- 管理者的角色,是一个采用SNMP协议对网络设备进行管理/见识的系统,运行在NMS服务器上
- NMS可以向设备上的Agent发出请求,查询或修改一个或多个具体的参数值
- NMS可以接受设备上的Agent主动发送的Trap信息,以获知被管理设备当前的状态
- 管理者的角色,是一个采用SNMP协议对网络设备进行管理/见识的系统,运行在NMS服务器上
- 代理进程(Agent)
- 被管理设备中的衣蛾代理进程,用于维护和管理设备的信息数据并相应来自NMS的请求,把管理数据汇报给发送请求的NMS
- Agent收到NMS的请求信息后,通过MIB表完成相应指令后,并把操作结果响应给NMS
- 当设备发生故障或其他事件时,设备会通过Agent主动发送信息给NMS,向NMS报告设备当前的状态变化
- 被管理设备中的衣蛾代理进程,用于维护和管理设备的信息数据并相应来自NMS的请求,把管理数据汇报给发送请求的NMS
- 被管对象(Managed Object)
- 每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件,也可以是在硬件、软件上配置的参数集合
- 管理信息库MIB(Management Information Base)
- MIB是一个数据库,指明了被管理设备所维护的变量,是能够被Agent查询和设置的信息。MIB在数据库中定义了被管理设备的一系列属性:对象的名称、对象的状态、对象的访问权限和对象的数据类型等。
- Agent通过查询MIB,可以获知设备当前的状态信息
- Agent通过修改MIB,可以设置设备的状态参数
- MIB是一个数据库,指明了被管理设备所维护的变量,是能够被Agent查询和设置的信息。MIB在数据库中定义了被管理设备的一系列属性:对象的名称、对象的状态、对象的访问权限和对象的数据类型等。
- NMS(Network Management System)
- SNMP端口
- SNMP端口是SNMP的通信端电脑,SNMP消息传输通过UDP进行,通常使用UDP端口号161/162,有时候也使用TLS和DTLS
- SNMP端口是SNMP的通信端电脑,SNMP消息传输通过UDP进行,通常使用UDP端口号161/162,有时候也使用TLS和DTLS
- SNMP如何工作?
- 一旦网络中启动SNMP协议,NMS作为整个网络的网管中心,会对设备进行管理。每个被管理设备都包含驻留在设备上的Agent,多个被管对象和MIB。NMS通过与在被管理设备上的Agent交互,由Agent通过对设备端的MIB的曹组,完成NMS指令。
- 操作类型
- 工作原理:基于代理和管理器之间的通信。
- 管理器是网络管理系统的一部分,负责监视和控制网络中的设备和应用程序。
- 代理是安装在被管理设备上的软件模块,负责收集设备的信息并响应来自管理器的SNMP的请求
- 具体步骤
- 管理器发送请求:管理器向代理发送SNMP请求,请求获取特定的信息
- 代理处理请求:代理接收到请求后,根据请求类型执行相应的操作,如获取设备状态、配置信息等
- 代理发送响应:代理将请求的结果打包成SNMP相应,并发送回管理器
- 管理器处理响应:管理器接收到响应后,解析先攻数据并响应的进行处理,如显示状态信息、生成警报等。
- 使用SNMP的实例
-
from pysnmp.hlapi import *# 定义SNMP请求 snmp_object = ObjectIdentity('IF-MIB', 'ifInOctets', 1) snmp_target = SnmpEngine() snmp_community = CommunityData('public', mpModel=0) snmp_context = ContextData()# 发送SNMP请求 snmp_data = getCmd(snmp_target, snmp_community, snmp_object, snmp_context)# 处理SNMP响应 error_indication, error_status, error_index, var_binds = next(snmp_data) if error_indication: print('SNMP请求错误:', error_indication) else: if error_status: print('SNMP错误:', error_status.prettyPrint()) else: for var_bind in var_binds: oid = var_bind[0] value = var_bind[1] print('OID:', oid) print('值:', value)
- 参考文章
什么是SNMP?为什么需要SNMP? - 华为
详细介绍SNMP协议的原理、功能和应用_如何在软件中应用snmp-CSDN博客
网络工程师必知:SNMP是什么?如何配置? - 知乎
《从零理解SNMP协议:网络监控系统的设计与实现》
2025/10/20 5:19:00
来源:https://blog.csdn.net/qq_57446171/article/details/148116008
浏览:
次
关键词:《从零理解SNMP协议:网络监控系统的设计与实现》
版权声明:
本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。
我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com
热文排行
最新新闻
- 在css中使用js变量(待整理)
- 大规模CFD仿真计算中,SIMPLE或者PISO算法中加速压力场方程迭代求解
- 数据结构(特殊二叉树-堆结构(树))
- 如何使用 Python 和 Selenium 解决 Cloudflare 验证码
- Java面试复习指南:基础、多线程、JVM、Spring、算法精要
- Langgraph实战-Agent-使用ReAct进行情感分析
- 基于 Python 爬取 TikTok 搜索数据 Tiktok爬虫(2025.3.17)
- 微服务架构:构建灵活、可扩展的应用程序
- CANape、MF4格式文件和DBC文件之间的关系
- 第15周:注意力汇聚:Nadaraya-Watson 核回归
推荐新闻
- 在css中使用js变量(待整理)
- 大规模CFD仿真计算中,SIMPLE或者PISO算法中加速压力场方程迭代求解
- 数据结构(特殊二叉树-堆结构(树))
- 如何使用 Python 和 Selenium 解决 Cloudflare 验证码
- Java面试复习指南:基础、多线程、JVM、Spring、算法精要
- Langgraph实战-Agent-使用ReAct进行情感分析
- 基于 Python 爬取 TikTok 搜索数据 Tiktok爬虫(2025.3.17)
- 微服务架构:构建灵活、可扩展的应用程序
- CANape、MF4格式文件和DBC文件之间的关系
- 第15周:注意力汇聚:Nadaraya-Watson 核回归