SNMP(简单网络管理协议)介绍
简介
作为系统管理员的重要工作之一是收集关于服务器和基础设施的准确信息。有许多工具和选项可用于收集和处理这种类型的信息。其中许多工具都是建立在一种称为SNMP的技术之上。
SNMP代表简单网络管理协议。这是服务器可以共享有关其当前状态的信息的一种方式,也是管理员可以修改预定义值的通道。虽然协议本身非常简单,但实现SNMP的程序的结构可能非常复杂。
在本指南中,我们将向您介绍SNMP协议的基础知识。我们将介绍其用途,协议在网络中的典型使用方式,协议版本之间的差异等。
基本概念
SNMP是实现在网络堆栈的应用层上的协议(点击这里了解网络层)。该协议被创建为一种以一致的方式从非常不同的系统中收集信息的方式。尽管它可以与各种系统连接,但查询信息的方法和相关信息的路径是标准化的。
SNMP协议有多个版本,许多网络硬件设备实现了某种形式的SNMP访问。最广泛使用的版本是SNMPv1,但在许多方面它是不安全的。它的流行主要源于其无处不在和长期存在。除非您有充分的理由不这样做,我们建议您使用提供更高级安全功能的SNMPv3。
一般来说,由SNMP进行配置文件的网络主要由包含SNMP 代理的设备组成。代理是一个可以收集有关硬件的信息,将其组织成预定义条目,并使用SNMP协议响应查询的程序。
在这个模型中,用于向代理查询信息的组件称为SNMP 管理器。这些机器通常具有其网络中所有支持SNMP的设备的数据,并可以发出请求以收集信息和设置某些属性。
SNMP管理器
SNMP管理器是配置为轮询SNMP代理以获取信息的计算机。在仅讨论其核心功能时,管理组件实际上比客户端配置要简单得多,因为管理组件只是请求数据。
管理器可以是任何能够使用正确凭据向SNMP代理发送查询请求的计算机。有时,这是作为监控套件的一部分实现的,而其他时候,这是管理员使用一些简单的实用程序来快速创建请求。
在SNMP协议中定义的几乎所有命令(我们稍后将详细介绍这些)都是设计为由管理器组件发送。这些包括GetRequest、GetNextRequest、GetBulkRequest、SetRequest、InformRequest和Response。除此之外,管理器还被设计为响应Trap和Response消息。
SNMP代理
SNMP代理完成了大部分工作。它们负责收集有关本地系统的信息并将其存储在可以查询的格式中。更新名为“管理信息库”或MIB的数据库。
MIB是一个分层的、预定义的结构,用于存储可以查询或设置的信息。这些信息可以由已经使用正确凭据(即SNMP管理器)进行的良好形式的SNMP请求访问。
代理计算机配置了哪些管理器可以访问其信息。它还可以充当中间人,报告它可以连接到但未配置为SNMP流量的设备的信息。这为使组件在线并且可通过SNMP访问提供了很大的灵活性。
SNMP代理响应协议定义的大多数命令。这些包括GetRequest、GetNextRequest、GetBulkRequest、SetRequest和InformRequest。此外,代理被设计为发送Trap消息。
理解管理信息库
SNMP系统中最难理解的部分可能是MIB,或管理信息库。MIB是一个数据库,遵循管理器和代理遵循的标准。它是一个分层结构,在许多领域是全球标准化的,但也足够灵活,可以允许供应商特定的添加。
MIB结构最好理解为自上而下的分层树。每个分支都带有一个标识号(从1开始)和一个唯一的标识字符串,用于该层次结构的标识。您可以互换使用字符串和数字。
要引用树的特定节点,必须从树的未命名根到所讨论的节点的路径。其父ID(数字或字符串)的血统被串在一起,从最一般的开始,形成一个地址。层次结构中的每个交叉点在此表示中由一个点表示,因此地址最终成为一系列由点分隔的ID字符串或数字。整个地址被称为对象标识符,或OID。
将SNMP代理嵌入其设备的硬件供应商有时会实现具有自己字段和数据点的自定义分支。但是,有一些标准的MIB分支是定义良好的,并且可以被任何设备使用。
我们将讨论的标准分支都将位于相同的父分支结构下。该分支定义符合MIB-2规范的信息。
到达该分支的基本路径是:
1.3.6.1.2.1
这也可以用字符串表示为:
iso.org.dod.internet.mgmt.mib-2
1.3.6.1或iso.org.dod.internet部分是定义互联网资源的OID。接下来的2或mgmt是管理子类。在其下的1或mib-2定义了MIB-2规范。
这是一个熟悉MIB树的好资源。这个特定页面代表了我们一直在谈论的交叉点的连接节点。您可以通过检查“上级”和“下级”引用来查看树的更上层和更下层的内容。
思科提供的SNMP对象导航器是另一个类似的工具。这可以用于深入了解层次结构,以找到您需要的信息。SolarWinds也提供了类似的树。
基本上,如果我们想要查询我们的设备以获取信息,大多数路径将以1.3.6.1.2.1开头。您可以浏览树界面以了解可以查询和设置的信息类型。
SNMP 协议命令
SNMP 被广泛采用的一个原因是其命令的简单性。虽然要实现或记住的操作很少,但它们足够灵活,以满足协议的实用要求。
以下的协议数据单元(PDU)描述了协议允许的确切消息类型:
- Get:管理器向代理发送 Get 消息,以请求特定 OID 的值。这个请求将通过 Response 消息回复给管理器,并携带数据。
- GetNext:GetNext 消息允许管理器请求 MIB 中的下一个顺序对象。这是一种可以遍历 MIB 结构而不必担心要查询哪些 OID 的方法。
- Set:管理器向代理发送 Set 消息,以更改代理上变量的值。这可用于控制配置信息或以其他方式修改远程主机的状态。这是协议定义的唯一写操作。
- GetBulk:这个管理器到代理的请求的功能就好像进行了多个 GetNext 请求。回复给管理器的数据将尽可能多(在请求设置的约束内),以适应数据包的大小。
- Response:代理发送的这个消息用于将任何请求的信息发送回管理器。它既作为请求的数据的传输,也作为对请求接收的确认。如果无法返回请求的数据,响应将包含可以设置进一步信息的错误字段。对于上述任何请求以及 Inform 消息,都必须返回一个响应消息。
- Trap:Trap 消息通常由代理发送给管理器。Trap 是异步通知,即接收到它们的管理器是未经请求的。它们主要用于代理通知管理器其受管设备上正在发生的事件。
- Inform:为了确认接收到一个 Trap,管理器向代理发送 Inform 消息。如果代理没有收到此消息,它可能会继续重新发送 Trap 消息。
有了这七种数据单元类型,SNMP 能够查询并发送关于您网络设备的信息。
协议版本
自首次引入以来,SNMP 协议经历了许多变化。最初的规范是在 1988 年的 RFC 1065、1066 和 1067 中制定的。由于它已经存在了很长时间,因此仍然得到广泛支持。然而,该版本存在许多安全问题,包括以明文进行身份验证,因此在未受保护的网络上使用时,其使用是极不鼓励的。
协议的第二个版本工作始于 1993 年,并对早期标准进行了一些重大改进。这个版本包括一个新的“基于 party”的安全模型,旨在解决先前版本固有的安全问题。然而,这个新模型并不是很受欢迎,因为它难以理解和实现。
因此,版本 2 的一些“分支”被创建,每个分支保留了版本 2 的大部分改进,但替换了安全模型。在 SNMPv2c 中,重新引入了基于社区的认证,这是 v1 中使用的相同模型。这是 v2 协议中最受欢迎的版本。另一个实现称为 SNMPv2u,使用基于用户的安全性,尽管这从未很受欢迎。这允许针对每个用户进行身份验证设置。
1998 年,SNMP 协议的第三个(也是当前的)版本作为规范提案进入。从用户的角度来看,最相关的变化是采用了基于用户的安全系统。它允许您将用户的身份验证要求设置为以下模型之一:
- NoAuthNoPriv:使用此级别连接的用户没有进行身份验证,也没有消息的隐私。
- AuthNoPriv:使用此模型的连接必须进行身份验证,但消息是未加密的。
- AuthPriv:需要身份验证并且消息是加密的。
除了身份验证外,还实施了访问控制机制,以提供对用户可以访问哪些分支的细粒度控制。版本 3 还具有利用传输协议(如 SSH 或 TLS)提供的安全性的能力。
结论
现在您对协议的运作方式有了很好的了解,您已经具备了在自己的基础设施中实施 SNMP 所需的基础。
在下一个指南中,我们将讨论如何安装和配置必要的组件,以利用系统上的 SNMP。
相关文章:
SNMP(简单网络管理协议)介绍
简介 作为系统管理员的重要工作之一是收集关于服务器和基础设施的准确信息。有许多工具和选项可用于收集和处理这种类型的信息。其中许多工具都是建立在一种称为SNMP的技术之上。 SNMP代表简单网络管理协议。这是服务器可以共享有关其当前状态的信息的一种方式,也…...
Spring中常见的设计模式
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性、更具有灵活、优雅,而Spring中共有九种常见的设计模式 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于…...
【MySQL】——数值函数的学习
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-Z1fAnfrxGD7I5gqp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...
LLMs模型选择,LLMs复读机问题,LLMs长文本处理方案
为什么会出现 LLMs 复读机问题? LLMs 复读机问题(LLMs Parroting Problem)是指大型语言模型(LLMs)在生成文本时可能出现的重复或重复先前输入内容的现象。出现LLMs复读机问题可能有以下几个原因: 数据偏差…...
LeetCode.144. 二叉树的前序遍历
题目 144. 二叉树的前序遍历 分析 这道题目是比较基础的题目,我们首先要知道二叉树的前序遍历是什么? 就是【根 左 右】 的顺序,然后利用递归的思想,就可以得到这道题的答案,任何的递归都可以采用 栈 的结构来实现…...
Redis复制
文章目录 1.Redis复制是什么2.Redis能干嘛3.权限细节4.基本操作命令5.常用三招5.1 一主二仆5.2 薪火相传5.3 反客为主 6.复制原理和工作流程7.复制的缺点 1.Redis复制是什么 就是主从复制,master以写为主,Slave以读为主。当master数据变化的时候&#x…...
C++入门学习(二十七)跳转语句—break语句
1、与switch语句联合使用 C入门学习(二十三)选择结构-switch语句-CSDN博客 #include <iostream> #include <string> using namespace std;int main() { int number;cout<<"请为《斗萝大路》打星(1~5※):" &…...
Spark安装(Yarn模式)
一、解压 链接:https://pan.baidu.com/s/1O8u1SEuLOQv2Yietea_Uxg 提取码:mb4h tar -zxvf /opt/software/spark-3.0.3-bin-hadoop3.2.tgz -C /opt/module/spark-yarn mv spark-3.0.3-bin-hadoop3.2/ spark-yarn 二、配置环境变量 vim /etc/profile…...
1.4 Binance_interface API U本位合约行情
Binance_interface API U本位合约行情 Github地址PyTed量化交易研究院 1. API U本位合约行情接口总览 方法解释Pathget_ping测试服务器连通性 PING/fapi/v1/pingget_time获取服务器时间/fapi/v1/timeget_exchangeInfo获取交易规则和交易对/fapi/v1/exchangeInfoget_depth深度…...
单片机学习笔记---AT24C02(I2C总线)
目录 有关储存器的介绍 存储器的简介 存储器简化模型 AT24C02介绍 AT24C02引脚及应用电路 I2C总线介绍 I2C电路规范 开漏输出模式和弱上拉模式 其中一个设备的内部结构 I2C通信是怎么实现的 I2C时序结构 起始条件和终止条件 发送一个字节 接收一个字节 发送应答…...
c++恶魔轮盘制造第1期输赢
小常识,恶魔叫DEALER。 赢了很简单 void sheng() { cout<<"你获胜了!";MessageBox(NULL,TEXT("你的钱~~~~~~给你"),TEXT("DEALER"),MB_OK);system("pause");system("cls"); } 输了我用了个选…...
60-JS-Ajax
ajax取数据的一种手段,局部刷新,例如弹幕 1.ajax的使用,创建ajax对象,发起对服务器请求 2.核心对象XMLHttpRequest对象(简称XHR) CSS:Cascading Style Sheets(层叠样式表) HTML:Hypertext Markup Language(超文本标记语言) 3.发起对服务器的请求 浏览器方式请求:打…...
C# Avalonia 折线图
线图开发在C# Avalonia框架中可以通过多种方式实现。由于Avalonia旨在成为跨平台的UI框架,您可以利用多种库和方法来绘制折线图。以下是一个简单的例子,展示了如何在Avalonia应用程序中创建一个基本的折线图。 首先,您需要在Avalonia项目中包…...
Vue3中Setup概述和使用(三)
一、引入Setup 1、Person.Vue 与Vue3编写简单的App组件(二) 中的区别是:取消data、methods等方法,而是将数据和方法定义全部放进setup中。 <template><div class"person"><h1>姓名:{{name}}</h1><h1>年龄:{{age}}</h…...
hexo 博客搭建以及踩雷总结
搭建时的坑 文章置顶 安装一下这个依赖 npm install hexo-generator-topindex --save然后再文章的上面设置 top: number,数字越大,权重越大,也就是越靠顶部 hexo 每次推送 nginx 都访问不到 宝塔自带的 nginx 的 config 里默认的角色是 …...
WordPress后台编辑个人资料页面直接修改用户名插件Change Username
前面跟大家介绍了『如何修改WordPress后台管理员用户名?推荐2种简单方法』一文,但是对于新站长或者有很多用户的站长来说,操作有点复杂,所以今天向大家推荐一款可以直接在WordPress后台编辑个人(用户)资料页…...
ssm+vue的医药垃圾分类管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。
演示视频: ssmvue的医药垃圾分类管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结…...
LLM大模型基本概念,及其相关问题汇总(1)
什么是涌现?为什么会出现涌现? "大模型的涌现能力"这个概念可能是指大型神经网络模型在某些任务上表现出的出乎意料的能力,超出了人们的预期。出现的原因从结论上来看,是模型不够好,导致的原因主要是&#…...
【已解决】pt文件转onnx后再转rknn时得到推理图片出现大量锚框变花屏
前言 环境介绍: 1.编译环境 Ubuntu 18.04.5 LTS 2.RKNN版本 py3.8-rknn2-1.4.0 3.单板 迅为itop-3568开发板 一、现象 采用yolov5训练并将pt转换为onnx,再将onnx采用py3.8-rknn2-1.4.0推理转换为rknn,rknn模型能正常转换,…...
DevOps文章之 操作手册用户使用说明书
前言 最近主导了几个项目操作手册的编写。有新开发的项目,要重新编写操作手册;有中途接手别的项目,后来功能迭代,需要更新原操作手册;有客户对操作手册有意见,需要调整;零零散散写了数万字的手…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
