版本:
1.SNMPv1
时间:1990年
作用:定义描述和命名管理对象的基本体制(即管理信息结构)、SNMP协议本身。
优点:
(1)设计简单、容易实现。
(2)可扩展性好。
缺点:
(1)SNMPv1的SNMP报文中的共同体采用了明文方式,非法用户可以获得在网络上传送的网络管理信息,非法用户可对网络设备进行非法操作。
(2)没有提供身份验证和加密机制
(3)只在IP协议上运行,不支持其他网络协议。
(4)对大块数据获取操作的效率很低,一次操作只能获取一个MIB数据。
(5)MIB库只支持简单类型的管理对象,不支持复杂类型的管理对象。
(6)不支持分布式网络管理体系结构,只能用于集中式管理,只能在SNMP管理站和SNMP代理之间通信,不支持SNMP管理站之间的通信。
2.SNMPv2
时间:20世纪90年代
作用:包含之前对SNMPv1所做的各项改进内容,并在保持SNMPv1清晰性和易于实现的基础上,增强了管理功能,提高了安全性。
特点:
(1)增加了一些安全机制,安全性包括以下几个方面:
访问控制:降低误操作引起的网络故障的可能性。
设定操作权限:防止用户越权操作。
数据加密:加强数据在网上传输的安全性,防止非法用户获取在网上传输的网络管理信息。
(2)支持MIB库的表数据结构,增加了get-bulk操作,实现大量数据的同时传输,改进SNMP的效率和性能。
(3)支持分布式网络管理体系结构,增加SNMp管理站和SNMP管理站之间的信息交换机制。
(4)扩展了数据类型,支持64位计数器。
(5)提供包括errors和exceptions在内的更丰富的差错处理。
(6)增加了inforM操作,使得一个SNMP管理站能够发送Trap给另一个SNMP管理站,并能收到回复。
(7)提供更精确的数据定义语言。
(8)可以在多个网络协议上运行,适用于多协议的网络环境。
3.SNMPv3
时间:1998年
特点:
(1)具有强大的安全性
(2)具有良好的可扩展性
(3)具有很强的适应性
组成模块:
1)用户安全模块:主要提供SNMPv3新增的三个安全机制中的身份验证、数据加密。
(1)身份验证:SNMP代理(SNMP管理站)在收到SNMp报文的时候首先确认SNMP报文是否来自具有权限的SNMP管理站(SNMP代理),同时还要确认SNMP报文在传输过程中没有发生改变。
过程:SNMp管理站和SNMP代理必须共享相同的密钥,SNMP管理站在发送SNMP报文之前,使用该密钥来计算验证码,接着将验证码加到SNMP报文之中,再发送SNMP报文,SNMP代理在收到SNMP报文后,使用相同的密钥从SNMP报文中提取出验证码,得到SNMP报文。
指导思想:尽可能简单,以便缩短基于SNMP的网络管理系统的研发周期。
作用:定义计算机网络中管理设备和被管理设备之间的通信规则,包括一系列交互消息和方法,用来实现对被管设备的管理,使得网络管理员能够进行包括规划网络、发现并解决网络问题等在内的网络管理工作。
基于TCP/IP协议。
管理模型:管理者-被管代理模式,基于SNMP的管理系统采用典型的客户-服务器体系结构。
SNMP网络管理系统基本组成部分:
(1)SNMP管理站
(2)SNMP代理
(3)SNMP
(4)SNMP管理信息库(SNMP-MIB)
SNMP基本命令:
1.GetRequest命令
用于SNMP网络管理系统(客户端)向SNMP代理(服务器)请求指定的MIB对象值(如系统名字、系统自启动后正常运行的时间、系统中的网络接口数等),所请求的MIB变量的对象标识符作为该命令的参数。SNMP代理以Response响应GetRequest。
SNMP代理收到GetRequest命令后的处理情况:
(1)指定的MIB对象名在本地MIB中不存在,SNMP代理想SNMP管理返回一个Response,将其中的ERROR-STATUS置为noSuchName,并在ERROR-INDEX中指出该MIB对象名在LIST中的位置。
(2)SNMP代理将要产生的Response长度大于本地长度限制,将向SNMP代理发送的Response中的ERROR-STATUS置为tooBig、ERROR-INDEX置为0。
(3)SNMP代理因其他原因不能产生正确的Response命令,将向SNMP代理返回的Response中的ERROR-STATUS置为genErr、ERROR-INDEX置为出错变量在变量LIST中的位置。
(4)若以上情况都无,则SNMP代理向SNMP管理发送一个Response,其中将包含变量名和相应值得对偶表,ERROR-STATUS置为noError,ERROR-INDEX置为0,request-id域的值与收到GetRequest中的request-id相同。
2.GetNextRequest命令
使用SNMP代理查询并提取MIB中紧跟当前参数中的对象标识符的下一个对象的值。SNMP代理以Response响应GetNextRequest。
GetRequest与GetNextRequest结合使用的场景:
(1)适合于遍历被管资源MIB的各个表。
(2)快速地查询连续对象。
(3)对于不了解的对象,可以采用GetRequest获取前一个对象,再采用GetNextRequest。
3.GetBulkRequest命令
查询并提取SNMp代理中的大量数据。
与GetNextRequest相比:效率更高,通过网络发送的SNMP报文更少,基本重复操作仅局限于SNMP代理中。SNMP代理以Response响应GetBulkRequest。
4.SetRequest命令
使SNMP管理站可以初始化或重新设置SNMP代理上指定对象的值(如设置设备的名字、关掉一个端口或清除一个地址解析表中的项),需要修改的对象的对象标识符作为参数法相SNMP代理。
若SNMP代理修改成功,就向SNMP管理返回确认操作有效的Response;若出错,则向SNMP管理返回包相关出错消息的Response。
SNMP代理收到SetRequest命令后的处理情况:
(1)若SetRequest对SNMP代理的MIB中的只读变量提出设置请求,则SNMP代理返回一个Response,并设置error status为noSuchName、error index的值是错误变量在变量list中的位置。
(2)若SNMP代理收到的SetRequest中的变量对偶中的值、类型、长度不符合要求,则SNMP处理返回一个Response,并置error status为badValue、error index的值是错误变量在list中的位置。
(3)若SNMP代理将要产生的Response长度超过了本地限制,则SNMP代理返回一个Response,并置error status为tooBig、error index的值是0.
(4)若其他原因导致SET失败,则SNMP代理返回一个Response,并置error status为genErr、error index的值是错误变量在变量list中的位置。
(5)一切正常,SNMP代理将按SetRequest命令设置MIB中相应对象的值,并在返回的Response中,置error status为noError、error index的值是0。
5.Response命令
Response中填写了被请求对象的值。
6.Trap命令
即SNMP陷阱,由SNMP代理主动产生并发送给SNMP管理站的非请求消息,SNMP代理使用Trap命令想SNMP管理站异步地通报所在的网络资源发生了特定的事件(如端口失败,链路状态发生变化,热启动,掉电重新启动等),SNMP管理收到后,做出相应的处理。
通常SNMP代理进程默认的监听端口为161,用来接收SNMP管理发来的命令;SNMP管理进程用端口162接收来自SNMP代理的命令。
SNMP工作机制:
目标:保证网络管理信息可以在网络中任意两点之间传送。
从网络被管资源中手机网络管理信息的方法:
1.轮询方式
采用轮询方式原因:
(1)为了能够获取实时的被管网络资源的管理数据。
(2)SNMP不要求消息的可靠性,也不保证SNMP报文正确到达。
缺陷:无法保证网络管理信息获取的实时性,尤其是无法保证获取错误信息的实时性。
原因:轮询方式涉及无法优化的轮询周期以及网络设备轮训顺序。
应用范围:适合小型的、快速的、低价格的网络环境中使用。
2.基于中断的方法
当网络设备出现异常事件的时候,如设备冷启动等,设备的SNMP代理主动向SNMP管理站发送陷阱消息,报告所发生的异常情况。
优势:实时性很强。
不足:被管设备在产生错误或自陷是需要消耗本身的系统资源。若自陷过程必须向SNMP管理站发送大量信息,被管设备就不得不消耗更多的系统资源来产生自陷,对被管设备的正常运行造成影响,也会影响到接收Trap消息的SNMP管理站的其他网络管理操作。