SNMP协议介绍

概述#

snmp全称Simple Network Management Protocol,中文名为简单网络管理协议,属于应用层协议。

版本#

SNMP目前共有v1、v2、v3三个版本

  • v1

    SNMP的最初版本

  • v2c

    在v1的基础上增加 ·共同体· 字段(community,实质上是密码)

  • v3

    增加认证和对密文传输的支持

架构#

SNMP协议主要由两个部分组成:SNMP管理站(NMS)SNMP代理(Agent)

SNMP管理站:这是一个中心节点,负责手记维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员,相当于大脑的角色。

SNMP代理:代理运行在各个被管理的网络节点上,负责统计该节点的各项信息,并且负责与SNMP管理站交互,接收并执行管理站的命令上传各种本地的网络信息。

Untitled Diagram-2

传输层协议#

SNMP传输层协议选用udp。 SNMP采用UDP 161端口接收和发送请求,162端口接收trap,执行SNMP的设备缺省都必须采用这些端口。SNMP消息全部通过UDP端口161接收,只有Trap信息采用UDP端口162。

操作方式#

SNMP提供了三种操作方式:

  • Get操作

    管理员读取设备数据

  • Set操作

    管理员设置设备数据

  • Trap操作

    设备在重要状况改变时主动向管理员通报事件的发生

协议数据单元PDU#

SNMP定义了5中PDU对应上述3种操作,

  • get-request

    从代理(本质上是设备)获取一个或多个参数值

  • get-next-request

    从代理紧接着取出下一个参数值

  • set-request

    设置代理一个或多个参数值

  • get-response

    对上述三种请求的响应

  • trap

    设备主动上报的数据

  • get-bulk(v2c)

    GetBulk操作所对应的基本操作是GetNext,通过对Non repeaters和Max repetitions参数的设定,高效率地从Agent获取大量管理对象数据,如果get-request中的参数有一个不存在,请求照样会被正常执行;而在SNMPv1种将收到一个错误消息

  • inform(v2c)

    相当于Trap的升级版,但是Trap消息发出去之后不会收到响应消息,而inform消息在发出之后能收到响应消息

img

SNMP报文结构#

报文结构如下

Untitled Diagram-3

  • 版本号

    表明当前使用的版本,管理站和代理之间的版本号必须相同才能通信

  • 团体名

    团体(community)是基本的安全机制,用于实现SNMP网络管理员访问SNMP管理代理时的身份验证。类似于密码,默认值为 public。团体名(Community name)是管理代理的口令,管理员被允许访问数据对象的前提就是网络管理员知道网络代理的口令。

  • PDU

    数据载体

    详细的报文结构如下:

snmp报文格式PDU

表1: pdu类型

PDU类型 名称
0 get-request
1 get-next-request
2 get-response
3 set-request
4 trap

表2: 差错状态

差错状态 名字 描述
0 noError 无错误
1 tooBig 代理无法将回答装入到一个SNMP报文中
2 noSuchName 操作指明了一个不存在的变量
3 badValue 一个set操作指明了一个无效值或无效语法
4 readOnly 管理进程试图修改一个只读变量
5 genErr 某些其他差错

表3: trap类型

trap类型 名字 说明
0 coldStart 代理进行了初始化
1 warmStart 代理进行了重新初始化
2 linkDown 一个接口从工作状态变为故障状态
3 linkUp 一个接口从故障状态变为工作状态
4 authenticationFailure 从SNMP管理进程接收到具有一个无效共同体的报文
5 egpNeighborLoss 一个EGP相邻路由器变为故障状态
6 enterpriseSpecific 代理自定义事件,需要用后面的“特定代码”来指明

MIB管理信息库#

管理信息(MIB)库可以理解成为agent维护的管理对象数据库,MIB中定义的大部分管理对象的状态和统计信息都可以被NMS访问。MIB是一个按照层次结构组织的树状结构,每个被管对象对应树形结构的一个叶子节点,称为一个object,拥有唯一的对象标识符(oid),OID由树上的一系列整数组成,整数之间用点( . )分隔开

img

M I B被划分为若干个组,如system、interfaces、 at(地址转换)和ip组等。iso.org.dod.internet.private.enterprise( 1 . 3 . 6 . 1 . 4 . 1)这个标识,是给厂家自定义而预留的,比如华为的为1.3.6.1.4.1.2011,华三的为1.3.6.1.4.1.25506。

mib树有点类似linux文件系统各个snmp设备中的mib前缀都是一样的

注意⚠️:当网络管理协议在报文中使用MIB变量时,每个变量名后还要加一个后缀,以作为该变量的一个实例。如ipInReceives的实例数字表示为:1.3.6.1.2.1.4.3.0

snmp开发

windows和mac都内置snmp服务,默认都是不开启的

posted @   KainHuck  阅读(2475)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示
CONTENTS