简单网络管理协议(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. 计算机程序的思维逻辑 (49) - 剖析LinkedHashMap

    之前我们介绍了Map接口的两个实现类HashMap和TreeMap,本节来介绍另一个实现类LinkedHashMap.它是HashMap的子类,但可以保持元素按插入或访问有序,这与TreeMap按键排 ...

  2. Cesium原理篇:Property

    之前主要是Entity的一个大概流程,本文主要介绍Cesium的属性,比如defineProperties,Property(ConstantProperty,CallbackProperty,Con ...

  3. 你真的会玩SQL吗?冷落的Top和Apply

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  4. 网络爬虫:使用Scrapy框架编写一个抓取书籍信息的爬虫服务

      上周学习了BeautifulSoup的基础知识并用它完成了一个网络爬虫( 使用Beautiful Soup编写一个爬虫 系列随笔汇总 ), BeautifulSoup是一个非常流行的Python网 ...

  5. “NOSQL” 杂谈

    引言: nosql 的兴起和革命,在我看来已经开始逐渐影响到了传统的sql的地位,但是仅仅是影响而已,取代是不太可能的. 正文: 两年前,一个偶然的机会开始接触到 nosql ( mongodb ). ...

  6. oracle函数案例以及分页案例

    --日期函数select sysdate from dual--返回两个日期select months_between(to_date('2017-1-7','yyyy-mm-dd'),to_date ...

  7. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 2

    我们的目标: 需求 Screen 1: 联系人列表 - 查看所有联系人 1.1 这个 screen 将显示数据库中的所有联系人. 1.2 用户可以删除任何联系人.1.3 用户可以编辑任何联系人的详细信 ...

  8. Asp.NET MVC 使用 SignalR 实现推送功能二(Hubs 在线聊天室 获取保存用户信息)

    简单介绍 关于SignalR的简单实用 请参考 Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室) 在上一篇中,我们只是介绍了简单的消息推送,今天我们来修改一下,实现 ...

  9. VMware12下安装Debian8.5

    参考:  Debian 8.2.0 (Jessie) 快速纯净安装教程    Debian 7 安装配置总结    Debian 7.8 系统安装配置过程 软件包管理命令    包命令    从源代码 ...

  10. 9.1.3 .net framework通过业务逻辑层自动生成WebApi的做法

    首先需要说明的是这是.net framework的一个组件,而不是针对.net core的.目前工作比较忙,因此.net core的转换正在编写过程中,有了实现会第一时间贴出来. 接下来进入正题.对于 ...