前两天项目要求一个附加功能,远程监视服务器的运行状况,要定期监视指定端口,指定业务,还包括服务器的磁盘空间,内存,CPU使用率等等。这头俩事还好说,ping和telnet也就搞定了,实在不行就开个socket连一下,关键后边的事有点抓瞎,要是在本地,可以通过API得到系统信息,分析磁盘空间,内存啥的,可是远程得到别的机子的信息,那不成木马了么。到网上一查,原来有SNMP可以帮着做这件事情。于是就了解了一下,发现这个东西挺有意思。简单地做个笔记。
SNMP简单网络管理协议,是一个用来进行网络管理的协议,之所以称其简单,是因为它是另一个网管协议的简化版。并不是说简化版就不顶用。相反,那个不简化的网管协议号称因为太复杂,几乎不可能实现并推广。不过说实在的,SNMP我都没觉得它多简单,它至今经过十多年的演进,广泛用于各种网络设备及工业控制中,我个人感觉,随着网络进一步发展,电器都会有IP地址的时候,SNMP或它的替代品的作用,应该是会更加重要的。
 
SNMP简单说,包括了被管的设备,代理和网管系统三个部分。被管的设备指的就是我们要获取信息的设备,这个任务里我需要获取它的磁盘空间。但是被管理设备只是产生这些数据,真正将数据报告回来的工作是由代理完成的。代理说白了就是一个运行在被管设备上的程序。网络编程的角度讲它就是一个小的socket服务程序,监听着好像是161端口。通过在被管设备上,需要启动snmp服务。比如在linux上,就需要执行service snmpd start来启动snmp服务,也就是把代理跑起来。实际过程中,代理包含在各种网络设备上,包括交换机,路由器甚至打印机,手机,调制解调器上。网管系统就是我们要从被管设备获取数据并进行分析处理的这个程序。可以想像它运行在本地。只要我将一个合格的请求发往正在运行的代理处,代理从请求中,理解请求的内容,并从被管设备上用它自己的方式搜集到所需的信息,并发送回来,这样一个网管的简单过程就完成了。
这样的管理方式,还是很灵活的,只要请求包符合协议标准,用哪种语言开发网管系统无所谓;从代理角度讲,只要能正常监听并处理请求,代理可以任意实现。我不太清楚国际上有没有一个统一的标准,比如让我写代理,有请求要查询网络端口的数量,我非把显示器尺寸返回去,不知道警察抓不抓我,至少客户会要求退货吧。也正是因为这种灵活,SNMP也可以支持大规模的集中管理,我同样一个查询存储空间的请求,可以发给我的PC,也可以发给我的诺基亚手机,可能得到的会是存储卡的容量吧,就看代理怎么实现了。
 
此篇文章为转载,个人感觉原作者讲解比较贴切、形象,通俗易懂,故装载与大家分享。
原作者链接:  https://blog.csdn.net/chenchenlin0811/article/details/51838882

SNMP理解的更多相关文章

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

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

  2. linux下自定义pid实现任意数据采集

    当你需要采集特殊的数据,而不满足于现有的你所知的数据模版时,自定义oid将是你必须而且非常好的解决方式. oid是snmp服务器为每条系统信息提供的唯一标识符,如果不能很好理解snmp服务的话,可以将 ...

  3. SNMP 和 NetBios协议理解

      一.简单网络管理协议(SNMP,Simple Network Management Protocol)构成了互联网工程工作小组(IETF,Internet Engineering Task For ...

  4. SNMP简单网络管理协议

    声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...

  5. Neutron 理解 (7): Neutron 是如何实现负载均衡器虚拟化的 [LBaaS V1 in Juno]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  6. 简单理解Socket

    题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人:但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有 ...

  7. [转]简单理解Socket

    简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html  题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...

  8. telnetlib/SNMP

    telnetlib telnetlib 总体来讲还是很好理解的,因为已经耍过paramiko 关于 .read_very_eager(), 简单理解就是就是读尽量多,读到没有反馈了为止 关键功能 1) ...

  9. SNMP进阶

    管理信息库:MIB 我们要扩展mib首先必须清楚mib是如何定义的,用的什么语言,有哪些约定,遵循哪些规则等等.这些基本东西掌握过后,我们就可以很轻松的来写自己的mib文件了. 所谓管理信息库,或者M ...

随机推荐

  1. 10.1jihe

    两种操作,1是加入数字,二是找最接近的 用set或者平衡二叉树就好了 只写了二叉树的,套版子就好 #include<bits/stdc++.h> #define sf scanf #def ...

  2. Windows系统JDK安装配置

    JDK和JRE的安装 打开java的官方网站,下载安装程序,版本根据自己情况选择: 双击安装程序: 点击"下一步": 此处推荐默认路径安装,如果自定义安装目录,则需记住自定义的安装 ...

  3. HTTP &RFC

    HTTP 1,HTTP所表达的控制以及描述性相关的信息都包含在了HTTP的起始行和首部之中.BNF的使用使得自己能够清晰的梳理出起始行和首部中所有类别的元信息.对于每一类的元信息具体包含哪些内容也能够 ...

  4. 黑盒测试实践——day06

    一.任务进展情况 通过小组成员的共同努力,终于完成了此次“黑盒测试实践”任务.目前的主要任务将之前的文件汇总,整理出来.                             二.存在的问题 由于此 ...

  5. uc/os iii移植到STM32F4---IAR开发环境

    也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...

  6. EL表达式JSTL

    EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据. 语法:${隐式对象名称}:获得对象的引用 序号 隐含对象名称 描       ...

  7. 基础作业 本周没上课,但是请大家不要忘记学习。 本周请大家完成上周挑战作业的第一部分:给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组的和。 例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子数组为[3, 10, -4, 7, 2] 输入: 请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。 输出 在不删除原有文件内容

    1丶 实验代码 #include<stdio.h> int main(void) { int tt,nn,i,j,c[11][11]; int flag=1; scanf("%d ...

  8. Windows bat批处理使用

    mkdir commonmkdir datamkdir savemkdir data\tsushima_m_mapmkdir save\tsushima_m_map msxsl ..\common\r ...

  9. eclemma怎么安装 eclemma的安装与简单使用图文教程(附下载)

    来自于:https://www.jb51.net/softjc/628026.html 一. 安装 有两种安装方法 1. 下载安装(推荐) 地址: http://sourceforge.net/pro ...

  10. 基于binlog恢复工具mysqlbinlog_flashback

    基于binlog恢复工具mysqlbinlog_flashback简介 mysqlbinlog_back.py 是在线读取row格式的mysqld的binlog,然后生成反向的sql语句的工具.一般用 ...