SNMP:简单网络管理协议

简介:

基于 TCP/IP 的网络管理包括两部分:网络管理站 (manager) 和被管理的网络单元(被管设备)。这些被管设备的共同点就是都运行 TCP/IP 协议。管理进程和代理进程之间的通信有两种方式,一种是管理进程向代理进程发出请求,询问参数值,另一种方式是代理进程主动向管理进程报告某些重要的事件。 
基于 TCP/IP 的网络管理包含 3 个组成部分: 
( 1 ) 一个管理信息库( MIB )。管理信息库包含所有代理进程的所有可被查询和修改的参数。 
( 2 ) 关于 MIB 的公用结构和表示符号,叫做管理信息结构 SMI 。例如: SMI 定义计数器是一个非负整数,它的计数范围是 0-4294967295 ,当达到最大值后,又从 0 开始。 
( 3 ) 管理进程和代理进程之间的通信协议,叫做简单网络管理协议 SNMP 。 SNMP 包括数据交换的格式等,主要采用 UDP 协议。 

1 、协议: SNMP 定义了 5 种报文: 
( 1 ) get-request 操作:从代理进程处提取一个或多个参数值。 
( 2 ) get-next-request 操作:从代理进程处提取一个或多个参数的下一个参数值。 
( 3 ) set-request 操作:设置代理进程的一个或多个参数值。 
( 4 ) get-response 操作:由代理进程发出的一个或多个参数值。它是 3 种的响应操作。 
( 5 ) trap 操作:代理进程主动发出的报文,通知管理进程由事情发生。 
前面 3 个操作是由管理进程向代理进程发出的,后两个是代理进程发给管理进程的。 
说明: ◆ 前 4 种操作是简单的请求-应答方式,由于采用 UDP 协议,因此一定要有超时和重传机制。 
          ◆ 管理进程采用 UDP 的 161 端口,代理进程使用 UDP 的 162 端口,因此一个系统可以同时为管理进程和代理进程。 
         ◆ 下面是 UDP 数据报 5 种操作的 SNMP 报文:

IP 首部

UDP 首部

版本 0

共同体

PDU 类型( 0 - 3 )

请求标识

差错状态( 0 - 5 )

差错索引

名称

名称

...

PDU 类型 4

企业

代理地址

Trap 类型( 0 - 6 )

特定代码

时间戳

名称

...


(1) SNMP 报文的长度取决域变量的类型和值。 
(2) 版本字段为 0 ,表示为 SNMP V1 。 
(3) PDU 为协议数据单元,即分组。

PDU 类型

名称

0

Get-request

1

Get-next-request

2

Get-response

3

Set-request

4

Trap

    (4) 共同体为一个字符串,这是管理进程和代理进程之间的口令,是明文格式,默认为 public 。 
(5) 对于 get 、 get-next 和 set 操作,请求标识由管理进程设置,然后由代理进程在 get-response 中返回。这个字段的作用是使客户进程(目前是管理进程)能够将服务器进程(即代理进程)发出的响应和客户进程发出的查询进行匹配。这个字段允许管理进程对一个或多个代理进程发出多个请求,并且从返回的应答中分类。 
(6) 差错状态字段是一个整数,由代理进程设置,指明有错误发生。 

差错状态

名称

描述

0

NoError

没有错误

1

TooBig

代理进程无法把响应放在一个 SNMP 消息中发送

2

NoSuchName

操作一个不存在的变量

3

BadValue

Set 操作的值或语法有错误

4

ReadOnly

管理进程试图改变一个只读变量

5

genErr

其他错误

    (7) 在 get 、 get-next 和 set 的请求数据报中,包含变量名称和变量值的表,对于 get 和 get-next 操作,变量值部分被忽略。 

2 、 管理信息结构 SMI 
(1) INTEGER :有些整形变量没有范围限制,有些整形变量定义为特殊的数值。 
(2) OCTER STRING : 0 或多个 8 位字节,每个字节值在 0 - 255 之间。 
(3) DisplayString : 0 或多个 8 位字节,每个字节必须是 ASCII 码,所有该类型的变量不能超过 255 个字符。 
(4) OBJECT IDENTIFIER : 
(5) NULL :相关变量还没有值。 
(6) IPAddress : 4 字节的 OCTER STRING ,以网络序表示的 IP 地址,每个字节代表 IP 地址的一个字段。 
(7) PhyAddress : OCTER STRING 类型,代表物理地址。 
(8) Counter :非负整数,范围为 0 - 4294976295 ,达到最大后从 0 开始。 
(9) Gauge :非负整数,范围为 0 - 4294976295 ,或增或减,达到最大值后锁定,直到复位。 
(10) TimeTicks :时间计数器,以 0.01 秒递增,但是不同的变量可以有不同的递增幅度,所以定义该类变量时必须指定递增幅度。 
(11) SEQUENCE :类似于结构,包括 0 个或多个元素。 
(12) SEQUENCE OF :向量,其所有元素具有相同的类型。 

3 、 对象标识符 
对象标识是一种数据类型,它指明一种授权命名的对象。对象标识是一个整数序列,以点分隔。这些整数构成一个树型结构,类似于 DNS 和文件系统。对象标识从顶部开始,顶部没有标识,以 root 表示。所有的 MIB 变量都从 1.3.6.1.2.1 这个标识开始。树上的每个节点还有文字名,例如 1.3.6.1.2.1 就和 iso.org.dod.internet.memt.mib 对应。 

4 、 管理信息库 MIB 
管理信息库就是所有代理进程包含的,并且能够被管理进程进行查询和设置的信息的集合。 UDP 组中包含几个变量和一个表格。变量为: udpInDatagram(1) 、 udpNoPorts(2) 、 udpInErrors(3) 、 udpOutDatagram(4) ,表格为 udpTable(5) 。 

名称

数据类型

R/W

描述

udpInDatagram

Counter

R

UDP 数据报输入数

udpNoPorts

Counter

R

没有发送到有效端口的 UDP 数据报个数

udpInErrors

Counter

R

接收到的有错误的 UDP 数据报个数

udpOutDatagram

Counter

R

UDP 数据报输出数

    在 udpTable 中有 2 个变量: 

UDP 监听表,索引= <udpLocalAddress>.<udpLocalPort>

名称

数据类型

R/W

描述

udpLocalAddress

IpAddress

R

监听进程的本地 IP 地址, 0.0.0.0 代表接收任何接口的数据报

udpLocalPort

[0..65535]

R

监听进程的本地端口号

    5 、 实例标识 
对 MIB 变量进行操作,必须对 MIB 的每个变量进行标识。只有叶子节点是可操作的 SNMP 没法处理表格的一整行或一整列。 
( 1 ) 简单变量: 
对于简单变量的处理是通过在其对象标识后面添加 ".0" 处理。例如对象标识是         1.3.6.1.2.1.7.1 ,则实例标识是 1.3.6.1.2.1.7.1.0 。 
( 2 ) 表格 
每个 MIB 中的索引都包含一个以上的索引。对于 UDP 监听表来说, MIB 定义了包含两个变量的联合索引。假定 UDP 监听表中有 3 行具体成员: 
0 . 0 . 0 . 0 67 
0 . 0 . 0 . 0 161 
0 . 0 . 0 . 0 520 
这表明系统将从端口 67 、 161 和 520 接收来自任何接口的 UDP 数据报。这三行数据处理后为: 

对象标识

简称

1

1.3.6.1.2.1.7.5.1.1.0.0.0.0.67 
1.3.6.1.2.1.7.5.1.2.0.0.0.0.67

UdpLocalAddress.0.0.0.0.67 
UdpLocalPort.0.0.0.67

0.0.0.0 
67

2

1.3.6.1.2.1.7.5.1.1.0.0.0.0. 161 
1.3.6.1.2.1.7.5.1.2.0.0.0.0. 161

UdpLocalAddress.0.0.0.0. 161
UdpLocalPort.0.0.0. 161

0.0.0.0 
161

3

1.3.6.1.2.1.7.5.1.1.0.0.0.0. 520 
1.3.6.1.2.1.7.5.1.2.0.0.0.0. 520

UdpLocalAddress.0.0.0.0. 520
UdpLocalPort.0.0.0. 520

0.0.0.0 
520

    ( 3 ) 字典式排序 
MIB 中按照对象标识进行排序有一个隐含规则, MIB 表格是根据其对象标识按照字典的顺序进行排序的。上面表格排序后如下所示: 

对象标识

简称

1

1.3.6.1.2.1.7.5.1.1.0.0.0.0.67 
1.3.6.1.2.1.7.5.1.1.0.0.0.0.161 
1.3.6.1.2.1.7.5.1.1.0.0.0.0.520

UdpLocalAddress.0.0.0.0.67 
UdpLocalAddress.0.0.0.0.161 
UdpLocalAddress.0.0.0.0.520

0.0.0.0 
0.0.0.0 
0.0.0.0

2

1.3.6.1.2.1.7.5.1.2.0.0.0.0. 67 
1.3.6.1.2.1.7.5.1.2.0.0.0.0. 161
1.3.6.1.2.1.7.5.1.2.0.0.0.0. 520

UdpLocalPort.0.0.0. 67 
UdpLocalPort.0.0.0. 161 
UdpLocalPort.0.0.0. 520

67 
161 
520

  在表格中,一个给定变量的所有实例都在下个变量的所有实例之前显示。这意味表格的操作顺序是先行后列的。 
表格中对行的排序和表格中索引的值有关。 

6 、 管理信息库 MIB ( 2 ) 
( 1 ) system 组: 
system 组包含 7 个变量,没有表格,分别是: sysDescr 、 sysObjectID 、 sysUpTime 、 sysContact 、 sysName 、 sysLocation 、 sysServices 。 
( 2 ) interface 组 
interface 组只定义了一个简单变量,是系统的接口数量。该组还有一个表格变量,有 22 列。 
( 3 ) at 组 
at 组是地址转换组,在该组中仅有一个由 3 列组成的表格变量。 
( 4 ) ip 组 
ip 组定义了很多简单变量和 3 个表格变量(地址表、路由表、地址转换表)。 
( 5 ) icmp 组 
icmp 组包含 4 个普通计数器变量( ICMP 报文的输出和输入数量以及 ICMP 差错报文的输入和输出数量)和 22 个其他 ICMP 报文数量的计数器, 11 个输出计数器, 11 个输入计数器。 
( 6 ) tcp 组 
tcp 组包含 14 个简单变量,主要为 TCP 状态。还包含 1 个表格变量,即 TCP 连接表。 

7 、 Trap : 
一共有 6 中 trap PDU 的格式,第 7 中类型是供应商自己定义的特殊类型。

目录
相关文章
|
3月前
|
数据采集 算法 数据挖掘
模块化控制协议(MCP)在网络中增强智能体执行效率的研究
随着Web3技术的迅速发展,去中心化应用和智能体在各种领域的应用逐渐增多。MCP(Modularized Control Protocol,模块化控制协议)作为一种增强智能体执行能力的关键技术,为Web3场景中的智能体提供了更强的灵活性和可扩展性。本文将探讨如何利用MCP技术提升智能体在Web3场景中的执行能力,并通过实例代码展示其实现路径。
313 22
|
27天前
|
监控 负载均衡 安全
WebSocket网络编程深度实践:从协议原理到生产级应用
蒋星熠Jaxonic,技术宇宙中的星际旅人,以代码为舟、算法为帆,探索实时通信的无限可能。本文深入解析WebSocket协议原理、工程实践与架构设计,涵盖握手机制、心跳保活、集群部署、安全防护等核心内容,结合代码示例与架构图,助你构建稳定高效的实时应用,在二进制星河中谱写极客诗篇。
WebSocket网络编程深度实践:从协议原理到生产级应用
|
1月前
|
运维 架构师 安全
二层协议透明传输:让跨域二层协议“无感穿越”多服务商网络
简介:本文详解二层协议透明传输技术,适用于企业网工、运营商及架构师,解决LLDP/LACP/BPDU跨运营商传输难题,实现端到端协议透传,提升网络韧性与运维效率。
|
5月前
|
人工智能 监控 安全
优雅草星云智控系统产品发布会前瞻:SNMP协议全设备开启指南-优雅草卓伊凡
优雅草星云智控系统产品发布会前瞻:SNMP协议全设备开启指南-优雅草卓伊凡
115 12
优雅草星云智控系统产品发布会前瞻:SNMP协议全设备开启指南-优雅草卓伊凡
|
5月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
169 18
|
6月前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
220 22
|
6月前
|
网络协议 数据安全/隐私保护 网络架构
|
7月前
|
缓存 网络协议 API
掌握网络通信协议和技术:开发者指南
本文探讨了常见的网络通信协议和技术,如HTTP、SSE、GraphQL、TCP、WebSocket和Socket.IO,分析了它们的功能、优劣势及适用场景。开发者需根据应用需求选择合适的协议,以构建高效、可扩展的应用程序。同时,测试与调试工具(如Apipost)能助力开发者在不同网络环境下优化性能,提升用户体验。掌握这些协议是现代软件开发者的必备技能,对项目成功至关重要。
|
8月前
|
人工智能 自然语言处理 决策智能
智能体竟能自行组建通信网络,还能自创协议提升通信效率
《一种适用于大型语言模型网络的可扩展通信协议》提出创新协议Agora,解决多智能体系统中的“通信三难困境”,即异构性、通用性和成本问题。Agora通过标准协议、结构化数据和自然语言三种通信格式,实现高效协作,支持复杂任务自动化。演示场景显示其在预订服务和天气预报等应用中的优越性能。论文地址:https://arxiv.org/pdf/2410.11905。
271 6
|
10月前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法

热门文章

最新文章