SNMP协议
简单网络管理协议(SNMP,Simple Network Management Protocol)构成了互联网工程工作小组定义的Internet协议簇的一部分。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。它由一组网络管理的标准组成,包含一个应用层协议、数据库模式和一组数据对象。
【概论和基础观念】
在典型的SNMP用法中,有许多系统被管理,而且是有一或多个系统在管理它们。每一个被管理的系统上有运行一个叫做代理者(agent)的软件组件,且透过SNMP对管理系统报告信息。
基本上,SNMP代理者以变量呈现管理数据。管理系统透过GET,GETNEXT和GETBULK协议指令取回信息,或是代理者在没有被询问的情况下,使用TRAP或INFORM发送数据。管理系统也可以发送配置更新或控制的请求,透过SET协议指令达到主动管理系统的目的。配置和控制指令只有当网络基本结构需要改变的时候使用,而监控指令则通常是常态性的工作。
可透过SNMP访问的变量以层次结构的方式结合。这些分层和其他元数据(例如变量的类型和描述)以管理信息库(MIBs)的方式描述。
【SNMP基本组件】
一个SNMP管理的网络由下列三个关键组件组成:
- 网络管理系统(NMSs,Network-management systems)
- 被管理的设备(managed device)
- 代理者(agent)
一个网络管理系统运行应用程序,以该应用程序监视并控制被管理的设备。也称为管理实体(managing entity),网络管理员在这儿与网络设备进行交互。网络管理系统提供网络管理需要的大量运算和记忆资源。一个被管理的网络可能存在一个以上的网络管理系统。
一个被管理的设备是一个网络节点,它包含一个存在于被管理的网络中的SNMP代理者。被管理的设备透过管理信息库(MIB)收集并存储管理信息,并且让网络管理系统能够透过SNMP代理者获取这项信息。
代理者是一种存在于被管理的设备中的网络管理软件模块。代理者控制本地机器的管理信息,以和SNMP兼容的格式发送这项信息。
【SNMP架构】
从体系结构上来讲,SNMP框架由主代理、子代理和管理站组成。
主代理
主代理是一个在可执行SNMP的网络组件上运作的软件,可回应从管理站发出的SNMP要求。它的角色类似客户端/服务器结构(Client/Server)术语中的服务器。主代理依赖子代理提供有关特定功能的管理信息。
如果系统当前拥有多个可管理的子系统,主代理就会传递它从一个或多个子代理处收到的请求。这些子代理在一个子系统以及对那个子系统进行监测和管理操作的接口内为关心的对象建模。主代理和子代理的角色可以合并,在这种情况下我们可以简单的称之为代理(agent)。
子代理
子代理是一个在可执行SNMP的网络组件上运作的软件,运行在特定子系统的特定管理信息库(MIB,Management Information Base)中定义的信息和管理功能。子代理的一些能力有:
- 搜集主代理的信息
- 配置主代理的参数
- 回应管理者的要求
- 产生警告或陷阱
对协议和管理信息结构的良好分离使得使用SNMP来监测和管理同一网络内上百的不同子系统非常简单。MIB模型运行管理OSI参考模型的所有层,并可以扩展至诸如数据库,电子邮件以及J2EE参考模型之类的应用。
管理站
管理者或者管理站提供第三个组件。它和一个客户端/服务器结构下的客户端一样工作。它根据一个管理员或应用程序的行为发出管理操作的请求,也接收从代理处获得的TRAP。
【开发和使用】
SNMP协议工作在OSI模型的应用层(第七层)。它(在第一版中)指定了四种核心协议数据单元(PDU):
- GET,用来得到一条管理信息
- GETNEXT,用来反复得到管理信息的序列
- SET,用来给一个被管理的子系统制造一个变化
- TRAP,用来报告一个关于被管理子系统的警告或其他异步事件
典型的,SNMP为代理使用UDP端口161,为管理站使用UDP端口162。
第一版因为其脆弱的安全性而备受争议。客户端的认证使用明码发送。在80年代,SNMP第一版被设计出来的时期,互联网标准的认证/安全并不被主要的协议设计团体所重视。
之后,又相继推出了第二版和第三版。其中,第二版引入了GETBULK以取代反复的GETNEXT,从而在单个请求中获取大量的管理数据。然而,SNMP第二版的新安全系统被认为过于复杂,而不被广泛接受。SNMP第三版提供三项重要的服务:认证、隐私和访问控制。
下面是来自百度知道的SNMP相关的一个问题,感觉比较经典,记录下来:
请问snmp到底是干啥的。
首先,复制粘贴的请不要来了,百度能搜到的网页我都看了,一头雾水,都说些概念性的东西。
其实我就想知道,这个功能到底有什么用,怎么用,是在电脑上装一个软件就可以远程跨网段控制其它的路由器吗?如果是这个,有的路由器本身就有开放远程WEB管理功能。有什么区别。谢谢
这个事情分两方面来说:
首先是路由器这部分。路由器开启SNMP功能之后,它能够对自己的每个接口上的流量有一个统计,当然统计的不单单只有流量。然后路由器把统计到的内容按一定的格式保存起来。这个格式是大家都商量好的。比如上学的时候出分数。大家约定,第一个成绩是数学、第二个是语文、第三个是英语。老师录入成绩就按照这个约定来。
另外一方面就是刚才你说到的电脑上的软件。这个软件干什么用的呢? 用来向路由器发送一个请求,获取数据的。首先你得让路由器知道你想要什么数据吧? 这个就用到了前面说的那个规则,约定。接着上面的例子,老师就相当于路由器,你就是电脑上的软件。你想问老师数学成绩,按照约定,你就要跟老师说:老师,我需要第一个成绩。 因为第一个成绩是什么,大家都是清楚的,这样老师就把数学成绩给你了。
总体来说,SNMP就是为了让别人能够获得路由器上的统计数据而约定好的数据交流的规则。