SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。因为SNMP协议简单可靠 ,受到了众多厂商的欢迎,成为了目前最为普遍的网管协议。node
SNMP协议主要由两大部分构成:SNMP管理站和SNMP代理。SNMP管理站是一个中心节点,负责收集维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员;而SNMP代理是运行在各个被管理的网络节点之上,负责统计该节点的各项信息,而且负责与SNMP管理站交互,接收并执行管理站的命令,上传各类本地的网络信息。数据库
SNMP管理站和SNMP代理之间是松散耦合。他们之间的通讯是经过UDP协议完成的。通常状况下,SNMP管理站经过UDP协议向SNMP代理发送各类命令,当SNMP代理收到命令后,返回SNMP管理站须要的参数。可是当SNMP代理检测到网络元素异常的时候,也能够主动向SNMP管理站发送消息,通告当前异常情况。数组
SNMP的基本思想:为不一样种类的设备、不一样厂家生产的设备、不一样型号的设备,定义为一个统一的接口和协议,使得管理员能够是使用统一的外观面对这些须要管理的网络设备进行管理。经过网络,管理员能够管理位于不一样物理空间的设备,从而大大提升网络管理的效率,简化网络管理员的工做。浏览器
SNMP的工做方式:管理员须要向设备获取数据,因此SNMP提供了【读】操做;管理员须要向设备执行设置操做,因此SNMP提供了【写】操做;设备须要在重要情况改变的时候,向管理员通报事件的发生,因此SNMP提供了【Trap】操做。安全
SNMP采用UDP协议在管理端和agent之间传输信息。 SNMP采用UDP 161端口接收和发送请求,162端口接收trap,执行SNMP的设备缺省都必须采用这些端口。SNMP消息所有经过UDP端口161接收,只有Trap信息采用UDP端口162。服务器
SNMP目前共有v1,v2,v3这三个版本: 网络
在具体实现上,SNMP为管理员提供了一个网管平台(NMS),又称为【管理站】,负责网管命令的发出、数据存储、及数据分析。【被】监管的设备上运行一个SNMP代理(Agent)),代理实现设备与管理站的SNMP通讯。ide
管理站与代理端经过MIB进行接口统一,MIB定义了设备中的被管理对象。管理站和代理都实现了相应的MIB对象,使得双方能够识别对方的数据,实现通讯。管理站向代理申请MIB中定义的数据,代理识别后,将管理设备提供的相关状态或参数等数据转换为MIB定义的格式,应答给管理站,完成一次管理操做。工具
Snmp分2种角色:SNMP管理站(manager,咱们的本机127.0.0.1)和SNMP代理(agent, 咱们要操做的机器,好比 192.168.1.144)。管理站指的是运行了能够执行网络管理任务软件的服务器,一般被称做为网络管理工做站(NMS),NMS负责采样网络中agent的信息,并接受agent的trap。代理是实际网络设备中用来实现SNMP功能的部分。代理在UDP的161端口接收NMS的读写请求消息,管理站在UDP的162端口接收代理的事件通告消息。因此,一旦获取设备的访问权限(community,默认为public),就能够访问设备信息、改写和配置设备参数。因为采用UDP协议,不须要在代理和管理站之间保持链接。spa
SNMP协议之因此易于使用,这是由于它对外提供了三种用于控制MIB对象的基本操做命令。它们是:Get、Set 和 Trap。
SNMP协议定义了数据包的格式,及网络管理员和管理代理之间的信息交换,它还控制着管理代理的MIB数据对象。所以,可用于处理管理代理定义的各类任务。
一条SNMP消息由"版本号"、"SNMP共同体名"和"协议数据单元(PDU)"构成,数据包的长度不是固定的。
PDU (协议数据单元)是SNMP消息中的数据区, 即Snmp通讯时报文数据的载体。
管理信息(MIB)库能够理解成为agent维护的管理对象数据库,MIB中定义的大部分管理对象的状态和统计信息均可以被NMS访问。MIB是一个按照层次结构组织的树状结构,每一个被管对象对应树形结构的一个叶子节点,称为一个object,拥有惟一的数字标识符
MIB数据对象以一种树状分层结构进行组织,这个树状结构中的每一个分枝都有一个专用的名字和一个数字形式的标识符。结构树的分枝实际表示的是数据对象的逻 辑分组。而树叶,有时候也叫节点(node),表明了各个数据对象。在结构树中使用子树表示增长的中间分枝和增长的树叶。
使用这个树状分层结构,MIB浏览器可以以一种方便并且简洁的方式访问整个MIB数据库。MIB浏览器是这样一种工具,它能够遍历整棵MIB结构树,一般 以图形显示的形式来表示各个分枝和树叶对象。能够经过其数字标识符来查找MIB中的数据对象,这个数字标识符号从结构树的顶部(或根部)开始,直到各个叶 子节点(即数据对象)为止。这种访问方式和文件系统的组织方式一致。二者的主要区别在于文件系统中的路径名能够以绝对也能够以相对方式表示,而MIB数据 对象只能以绝对方式表示,不能使用相对方式。
每个节点都有一个对象标识符(OID)来惟一的标识,每一个节点用数字和字符两种方式显示,其中对象标识符OID是由句点隔开的一组整数,也就是从根节点 通向它的路径。一个带标号节点能够拥有包含其它带标号节点为它的子树,若是没有子树它就是叶子节点,它包含一个值并被称为对象。好比网络设备名的oid 是.1.3.6.1.2.1.1.5.0,其值为设备名称的字符串。
网络资源被抽象为对象进行管理。但SNMP中的对象是表示被管资源某一方面的数据变量。对象被标准化为跨系统的类,对象的集合被组织为管理信息库 (MIB)。MIB做为设在代理者处的管理站访问点的集合,管理站经过读取MIB中对象的值来进行网络监控。管理站能够在代理者处产生动做,也能够经过修改变量值改变代理者处的配置。
每一个管理对象都有本身的OID(Object Identifier),管理对象经过树状结构进行组织,OID由树上的一系列整数组成,整数之间用点( . )分隔开,树的叶子节点才是真正可以被管理的对象。
咱们来作一个最简单的Snmp操做:获取一台IP为192.168.1.144的电脑的名称。
首先要给为192.168.1.144的电脑安装Snmp环境。Window组件的管理监视工具里包含Snmp,只须要安装一下就能够了。具体的安装步骤后面的博文会有详细的介绍,Snmp默认的通讯端口是161/162
接下来须要一个可以进行Snmp通讯的工具,比较简单的有snmputil,snmputil下载地址:http://download.csdn.net/detail/aliang0708/4180259
将下载下来的【snmputil.zip】压缩包解压后就能够获得以下图所示的两个工具了,其中snmputil是咱们要用来进行Snmp通讯的工具。
snmputil工具的命令规则是:snmputil [get|getnext|walk] agent community oid [oid ...]
[get|getnext|walk]:为消息类型,咱们这次进行的操做是get
agent:指Snmp代理即你想进行操做的网络设备的ip或名称,即192.168.1.144
community:分区域,即密码,默认是public
oid:想要操做的MIB数据对象号,设备名称对应的MIB对象号是.1.3.6.1.2.1.1.5.0
打开命令行窗口,进入snmputil所在路径,键入:snmputil get 192.168.1.144 public .1.3.6.1.2.1.1.5.0
若是参数都正确,控制台就会显示出192.168.1.144的机器名。以下图所示:
以上就是一些Snmp基本概念介绍和SNMP的初步体验,从下一篇博文开始,将重点介绍Window和Linux下Snmp协议的安装