对于SNMP协议来说,在它的报文结构中,SNMP协议数据单元域是我们本文重点为大家强调的内容。首先还是让我们具体来了解一下它的报文结构。一条SNMP报文由三个部分组成:版本域(version field),分区域(community field)和SNMP协议数据单元域(SNMP protocol data unit field),数据包的长度不是固定的。
SNMP协议也定义了执行以上三个SNMP命令时的SNMP报文流, 但它没有定义其它的设备管理代理SNMP命令,可应用于MIB数据对象的操作只有Set和Get命令,这两个命令的目标是数据对象的值。
比如说,SNMP协议中没有定义reboot(重启)SNMP命令;然而,管理代理软件把MIB数据对象和设备的内部SNMP命令联系起来,这样就可以实现某些特殊的命令操作。如果现在想要重启某个设备,管理系统就把某个与重启有关的MIB数据对象的值设为1(我们的假定)。
这样就会触发管理代理执行重新启动设备的SNMP命令,同时还把这个MIB数据对象重新设置为原来的状态。
版本域:这个域用于说明现在使用的是哪个版本的SNMP协议。目前,version 1是使用最广泛的SNMP协议。
分区域:分区(community)是基本的安全机制,用于实现SNMP网络管理员访问SNMP管理代理时的身份验证。
分区名(Community name)是管理代理的口令,管理员被允许访问数据对象的前提就是网络管理员知道网络代理的口令。如果把配置管理代理成可以执行Trap命令,当网络管理员用一个错误的分区名查询管理代理时,系统就发送一个autenticationFailure trap SNMP报文。
SNMP协议数据单元域:SNMPv1的PDU有五种类型,有些是SNMP报文请求(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代理发送给管理站的非请求消息。SNMP协议数据单元域和报文的知识,我们就讲解到这里。