第三,SNMP协议有很多详细的文档资料(例如RFC,以及其它的一些文章、说明书等),网络业界对这个协议也有着较深入的理解,这些都是SNMP协议近一步发展和改进的基础�€?
最后,SNMP协议可用于控制各种设备。比如说电话系统、环境控制设备,以及其它可接入网络且需要控制的设备等,这些非传统装备都可以使用SNMP协议�€?
正是由于有了上述这些特点,SNMP协议已经被认为是网络设备厂商、应用软件开发者及终端用户的首选管理协议�€?
SNMP是一种无连接协议,无连接的意思是它不支持象TELNET或FTP这种专门的连接。通过使用请求报文和返回响应的方式,SNMP在管理代理和管理员之间传送信息。这种机制减轻了管理代理的负担,它不必要非得支持其它协议及基于连接模式的处理过程。因此,SNMP协议提供了一种独有的机制来处理可靠性和故障检测方面的问题�€?
另外,网络管理系统通常安装在一个比较大的网络环境中,其中包括大量的不同种类的网络和网络设备。因此,为划分管理职责,应该把整个网络分成若干个用户分区,可以把满足以下条件的网络设备归为同一个SNMP分区:它们可以提供用于实现分区所需要的安全性方面的分界线。SNMP协议支持这种基于分区名(community string)信息的安全模型,可以通过物理方式把它添加到选定的分区内的每个网络设备上。目前SNMP协议中基于分区的身份验证模型被认是为很不牢靠的,它存在一个严重的安全问题。主要原因是SNMP协议并不提供加密功能,也不保证在SNMP数据包交换过程中不能从网络中直接拷贝分区信息。只需使用一个数据包捕获工具就可把整个SNMP数据包解密,这样分区名就暴露无遗。因为这个原因,大多数站点禁止管理代理设备的设置操作。但这样做有一个副作用,这样一来只能监控数据对象的值而不能改动它们,限制了SNMP协议的可用性�€?
SNMP的命令和报文
SNMP协议定义了数据包的格式,及网络管理员和管理代理之间的信息交换,它还控制着管理代理的MIB数据对象。因此,可用于处理管理代理定义的各种任务。SNMP协议之所以易于使用,这是因为它对外提供了三种用于控制MIB对象的基本操作命令。它们是:Set 、Get �’?Trap �¼?
Set:它是一个特权命令,因为可以通过它来改动设备的配置或控制设备的运转状态�€?
Get:它是SNMP协议中使用率最高的一个命令,因为该命令是从网络设备中获得管理信息的基本方式�€?
Trap:它的功能就是在网络管理系统没有明确要求的前提下,由管理代理通知网络管理系统有一些特别的情况或问题发生了�€?
SNMP协议也定义了执行以上三个命令时的报文流, 但它没有定义其它的设备管理代理命令,可应用于MIB数据对象的操作只有Set和Get命令,这两个命令的目标是数据对象的值。比如说,SNMP协议中没有定义reboot(重启)命令;然而,管理代理软件把MIB数据对象和设备的内部命令联系起来,这样就可以实现某些特殊的命令操作。如果现在想要重启某个设备,管理系统就把某个与重启有关的MIB数据对象的值设�¸?(我们的假定)。这样就会触发管理代理执行重新启动设备的命令,同时还把这个MIB数据对象重新设置为原来的状态�€?
一条SNMP报文由三个部分组成:版本域(version field),分区域(community field)和SNMP协议数据单元域(SNMP protocol data unit field),数据包的长度不是固定的�€?
版本域:这个域用于说明现在使用的是哪个版本的SNMP协议。目前,version 1是使用最广泛的SNMP协议�€?
分区域:分区(community)是基本的安全机制,用于实现SNMP网络管理员访问SNMP管理代理时的身份验证。分区名(Community name)是管理代理的口令,管理员被允许访问数据对象的前提就是网络管理员知道网络代理的口令。如果把配置管理代理成可以执行Trap命令,当网络管理员用一个错误的分区名查询管理代理时,系统就发送一个autenticationFailure trap报文�€?
协议数据单元域:SNMPv1的PDU有五种类型,有些是报文请求(Request),有些则是响应(Response)。它们包括:GetRequest、GetNextRequest、SetRequest、GetResponse、Trap 。SNMPv2又增加了两种PDU:GetBulkRequest和InformRequest �€?
SNMP管理员使用GetRequest从拥有SNMP代理的网络设备中检索信息,SNMP代理以GetResponse消息响应GetRequest。可以交换的信息很多,如系统的名字,系统自启动后正常运行的时间,系统中的网络接口数等等。GetRequest和GetNextRequest结合起来使用可以获得一个表中的对象。GetRequest取回一个特定对象;而使用GetNextRequest则是请求表中的下一个对象。使用SetRequest可以对一个设备中的参数进行远程配置。Set-Request可以设置设备的名字,关掉一个端口或清除一个地址解析表中的项。Trap即SNMP陷阱,是SNMP代理发送给管理站的非请求消息。这些消息告知管理站本设备发生了一个特定事件,如端口失败,掉电重起等,管理站可相应的作出处理�€?