简单网络管理协议(SNMP:Simple Network Management Protocol)是一套网络管理协议,注意,SNMP是一个强大的网络管理协议,而不是"简单"的。利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。

  TCP/IP网络管理由3部分组成:

  • 一个管理信息库M I B( Management Information Base)。管理信息库包含所有代理进程的所有可被查询和修改的参数。
  • 关于 M I B的一套公用的结构和表示符号。叫做管理信息结构 S M I( Structure ofManagement Information)。这个在RFC 1155 [Rose and McCloghrie 1990] 中定义。例如: S M I定义计数器是一个非负整数,它的计数范围是 0~4 294 967 295,当达到最大值时,又从 0开始计数。
  • 管理进程和代理进程之间的通信协议,叫做简单网络管理协议 S N M P( Simple NetworkManagement Protocol)。在RFC 1157 [Case et al. 1990]中定义。 S N M P包括数据报交换的格式等。尽管可以在运输层采用各种各样的协议,但是在 S N M P中,用得最多的协议还是 U D P。

  SNMP版本到目前为止有3个版本,分别是v1、v2、v3。

SNMP协议

  SNMP管理进程与代理进程之前为了交互信息,定义了5种报文:

  • g e t - r e q u e s t操作:从代理进程处提取一个或多个参数值。
  • g e t - n e x t - r e q u e s t操作:从代理进程处提取一个或多个参数的下一个参数值。
  • s e t - r e q u e s t操作:设置代理进程的一个或多个参数值。
  • g e t - r e s p o n s e操作:返回的一个或多个参数值。这个操作是由代理进程发出的。
  • t r a p 操作:代理进程主动发出的报文,通知管理进程有某些事情发生。

  以上3个操作是由管理进程向代理进程发出的,后面2个是由代理进程发给管理进程的。管理进程发出的前面 3种操作采用 U D P的1 6 1端口。代理进程发出的 Tr a p操作采用 U D P的1 6 2端口。由于收发采用了不同的端口号,所以一个系统可以同时为管理进程和代理进程。

SNMP报文格式

  PDU类型的取值范围是0-4,正好表示5种SNMP消息。差错状态字段是一个整数,它是由代理进程标注的,指明有差错发生。

MIB-管理信息库

  所谓管理信息库,或者M I B,就是所有代理进程包含的、并且能够被管理进程进行查询和设置的信息的集合。MIB是基于对象标识树的,对象标识是一个整数序列,中间以"."分割,这些整数构成一个树型结构,类似于 D N S或U n i x的文件系统。

  M I B被划分为若干个组,如s y s t e m、 i n t e r f a c e s、 a t(地址转换)和i p组等。i s o . o r g . d o d . i n t e r n e t .p r i v a t e . e n t e r p r i s e s( 1 . 3 . 6 . 1 . 4 . 1)这个标识,是给厂家自定义而预留的,比如华为的为1.3.6.1.4.1.2011,华三的为1.3.6.1.4.1.25506。

  当对MIB变量进行操作,如查询和设置变量的值时,必须对M I B的每个变量进行标识。注意,只有叶子结点是可操作的,上图中的m i b、 u d p等节点就不是叶子节点。

  MIB表格都至少有一个索引,对于UDP监听表来说,M I B定义了包含两个变量的联合索引,这两个变量是: u d p L o c a l A d d r e s s,它是一个I P地址; u d p L o c a l P o r t,它是一个整数。下图是一个UDP监听表的索引示例:

  M I B表格是根据其对象标识按照字典的顺序进行排序的。如果表格有2个索引的话,首先根据第一索引来进行排序,如果第一索引相同,则根据第二索引来排序。下图是一个UDP监听表的字典序排列:

  在上面的表格中,如果对udpLocalAddress.0.0.0.100进行get操作,则直接返回为空;如果对udpLocalAddress.0.0.0.100进行get next操作,因为udpLocalAddress.0.0.0.100是介于udpLocalAddress.0.0.0.67和udpLocalAddress.0.0.0.161之间,所以应该返回udpLocalAddress.0.0.0.161对应的数据值。

  在表格中,一个给定变量(在这里指 u d p L o c a l A d d r e s s)的所有实例都在下个变量(这里指 u d p L o c a l P o r t)的所有实例之前显示。这暗示表格的操作顺序是“先列后行”的次序。这是由于对对象标识进行字典式排序所得到的,而不是按照人们的阅读习惯而排列的。

  用MIB浏览器可以与网络设备进行通信,比如我们以sysDescr的最后一项数据为输入条件进行get next操作,则会返回sysUpTime的第一项数据。

MIB浏览器与设备通信完整流程

  SNMP(或者说MIB)开发中,使用MIB浏览器进行测试是必不可少的,它可以直观的显示和配置设备相关的数据。比如在MIB浏览器对UDP监听表进行walk操作(walk操作其实是get next操作,直到遍历完UDP监听表中全部数据为止),第一次进行get next操作,因为没有输入任何数据,所以一级索引和二级索引都为默认值,也就是非法值。然后设置SNMP协议类型为get next,通过网络将数据包发送到设备。

  设备首先要运行SNMP程序,这里就暂时称为snmpd守护进程,当守护进程接收到数据包时,进行解析,发现是get next操作,并且一级索引和二级索引都是默认值,则表示需要获取UDP监听表中的第一项数据,在守护进程获取第一项数据完毕后,就把该数据封装到SNMP的get response数据包中,通过网络返回给MIB浏览器,这里注意数据的字节序问题。

  在MIB浏览器中收到返回的数据包时,进行解析并显示出来。然后记录下返回的两个索引值,接着将这两个索引值作为数据数据进行下一次的get next操作,此时一级索引和二级索引都是有效值了。那什么时候结束呢,当守护进程返回END_OF_TABLE标志时表示整个UDP表数据都遍历完了。

参考:

  1、《TCP/IP详解 卷一》

SNMP与MIB的更多相关文章

  1. 关于SNMP的MIB文件的语法简述

    源地址:https://blog.csdn.net/carechere/article/details/51236184 SNMP协议的MIB文件的常见宏定义的描述: 对MIB文件中一些常见的宏定义的 ...

  2. SNMP 原理与实战详解

    原文地址:http://freeloda.blog.51cto.com/2033581/1306743 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法 ...

  3. Centos7 Cacti-0.8.8g安装及SNMP简介

    在官网可以看到关于cacti的下载说明http://www.cacti.net/download_cacti.php Download Cacti The latest stable version ...

  4. 浅议SNMP安全、SNMP协议、网络管理学习

    相关学习资料 tcp-ip详解卷1:协议.pdf(重点看25章SNMP部分) http://www.rfc-editor.org/rfc/rfc1213.txt http://www.rfc-edit ...

  5. 基于W5500的嵌入式SNMP代理端实现

     一 实验背景 近期一个做焊接设备的朋友想在焊机上加入监控的新功能,实时获取焊机的温度.功耗等參数,还可简单控制,实现对集群焊接设备的网络化管理.而这个朋友不想在开发管理系统上花太多精力,想找一个 ...

  6. SNMP概述–运维必知的协议基础

    一.什么是SNMP?   SNMP是  “Simple Network Management Protocol” 的缩写,中文意思是简单网络管理协议,它是由互联网工作小组在RFC1157中定义的应用层 ...

  7. H3C交换机SNMP配置

    1.启动/关闭SNMP Agent服务 在系统视图模式下: 启用:snmp-agent 关闭:undo snmp-agent 注:缺省情况下snmp agent是关闭的 2. 使能或禁止SNMP相应版 ...

  8. SNMP学习笔记之SNMP 原理与实战详解

    原文地址:http://freeloda.blog.51cto.com/2033581/1306743 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法 ...

  9. 通过snmp监控linux

    一.linux snmpd安装 yum install -y net-snmp net-snmp-utils 二.snmp的配置(vim /etc/snmp/snmpd.conf) com2sec n ...

随机推荐

  1. 【Win 10应用开发】延迟加载图片的另一种方法

    上一篇文章中老周给大伙介绍了x:Phase和x:Bind的用法,并演示了一个延迟加载的示例.不过,那个例子会遗留一个问题,就是UI线程被阻塞,所以启动应用较慢. 如果希望图片可以延迟加载,或许我们可以 ...

  2. 高性能JavaScript--数据存储(简要学习笔记二)

    1.JavaScript中四种基本数据存取位置:字面量,本地变量,数组元素,对象成员. 一般来说:[字面量,局部变量]运行速度>[数组,对象成员]   2.内部属性包含了一个函数被创建的作用域中 ...

  3. ORA 各种oraclesql错误

    ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...

  4. .Net语言 APP开发平台——Smobiler学习日志:如何快速实现地图定位时的地点微调功能

    Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.目标样式 我们要实现上图中的效果,需要如下的操作: 二.地点微调代码 VB: Dim ...

  5. Entity Framework 教程——模型浏览器

    模型浏览器: 在之前的章节中,我们创建了第一个关于学校的实体数据模型.但是EDM设计器并没有将他所创建的所有对象完全显示出来.它只将数据库中的被选择的表与视图显示出来了. 模型浏览器可以将EDM所创建 ...

  6. C#向sql server数据表添加数据源代码

    HoverTree解决方案 学习C#.NET,Sql Server,WinForm等的解决方案. 本文链接http://hovertree.com/h/bjaf/0jteg8cv.htm 使用的技术. ...

  7. 02 button的练习

    private void button1_Click(object sender, EventArgs e) { MessageBox.Show("我也喜欢你!"); //if ( ...

  8. 如何在虚拟机安装桌面Ubuntu

    本篇仅为作业... 实验课程:Linux 实验机器:联想y410p 指导老师:刘臣奇 实验时间:2016年10月12日 学生学号:140815 姓名:杨文乾 一.新建一个虚拟机,按照之前建立虚拟机的步 ...

  9. wampserver服务器无法启动(图标颜色不对)

    1.服务器一直无法启动,图标颜色一直显示黄色,并且不可用. 2.解决办法: (1) C:\wamp\bin\apache\apache2.4.9\bin ->httpd.exe  找到该文件 ( ...

  10. Springl利用Aspectj的扩展实现Aop

    1. Spring为什么要使用Aspectj Spring Aop:Spring自己原生的Aop,只能用一个词来形容:难用. 你需要实现大量的接口,继承大量的类,所以spring aop一度被千夫所指 ...