当前位置: 首页 >> 网络协议与安全 >> snmp协议
 

snmp协议

作者:      来源:zz     发表时间:2006-08-04     浏览次数:      字号:    

SNMPv2的管理模型

1.介绍

            一个网络管理系统包含:几个(可能是许多的)节点,每个都有一个名为代理的处理实体。代理有到管理工具的通路;至少一个管理站点和一个管理协议,该协议用于在代理和管理站点间传递管理信息。协议的实施是在一个定义了鉴定和认证策略的管理体系下进行的。

            网络管理站点上运行监视和控制网络元素的管理应用程序。网络元素是诸如主            机,路由器,终端服务器等的设备,通过对它们的管理信息的访问来监视和控制网络元素。

            本文档--<<SNMPv2的管理模型>>--的目的就是定义:在不同的配置和环境下,管理体系是怎样被用来实现实际的网络管理的。

            这里描述的模型使后面的要求成为必要:交换SNMPv2消息的对等实体使用唯一           的表示。所以,这里表现出与先前的SNMP[1]的基于社区的管理模型的不同。通过对每个SNMPv2消息来源和预期的接收者的明白无误的标识,这个新的策略改善了过去的社区方案,它不仅支持一个更加方便的访问控制模型,而且允许在将来对非对称公匙安全协议的有效运用。

            1.1.术语的注解

            为了便于说明,原先的Internet标准网络管理体系(在RFC1155,11571212            有描述)被叫做SNMP版本1体系(SNMPv1)。当前的体系叫做SNMP版本2体系(SNMPv2)

            2.模型的元素

            2.1.SNMPv2参与者

            SNMPv2参与者是一个概念性的,虚拟的执行环境,它的操作被限制在(出于对安全性的考虑)一个特定SNMPv2实体的所有可能的操作的子集中(参考2.2),该子集被管理性地定义。不论一个SNMPv2实体什么时候处理一个SNMPv2消息,它都是以一个SNMPv2参与者的身份进行操作,因而它的操作就被限制在为这个参与者定义的操作集合中。对这个参与者,其特定的可能的操作可能与其他参与者的操作            集合重叠或者不相关,它也可能是那个SNMPv2实体的所有可能操作的一个合适或者不合适的子集。从协议体系上讲,每个SNMPv2参与者包含:

            ? 一个唯一的,与众不同的参与者标识。

            ? 一个逻辑网络位置,参与者执行时所在的逻辑网络位置称为一个传送协议的域,            并且传送寻址信息。

            ? 一个专门的鉴定协议和相关的参数,所有那个参与者产生的协议消息通过他们            被鉴定为初始的和完整的。

            ? 一个专门的私有协议和相关参数,用来保护所有参与者接收的协议消息,防止            泄漏。

            从概念上讲,每个SNMPv2参与者可以用一个ASN.1值表示,符合下面的语法:

SnmpParty::=SEQUENCE{

            partyIdentity

            OBJECTIDENTIFIER,

            partyTDomain

            OBJECTIDENTIFIER,

            partyTAddress

            OCTETSTRING,

            partyMaxMessageSize

            INTEGER,

            partyAuthProtocol

            OBJECTIDENTIFIER,

            partyAuthClock

            INTEGER,

            partyAuthPrivate

            OCTETSTRING,

            partyAuthPublic

            OCTETSTRING,

            partyAuthLifetime

            INTEGER,

            partyPrivProtocol

            OBJECTIDENTIFIER,

            partyPrivPrivate

            OCTETSTRING,

            partyPrivPublic

            OCTETSTRING

            }

            对于每个代表一个SnmpParty参与者的SnmpParty值,下列叙述是成立的:

            o它的partyIdentity组件是参与者的标识

            o它的partyTDomain组件称作传送域,并指明参与者用来接收网络管理通信量的那种传送设备。一个传送域的例子是snmpUDPDomain(UDP上的SNMPv2,使用SNMPv2参与者).

            o它的partyTAddress组件称作传送寻址信息,代表一个参与者用来接收网络管理通信量的传送设备的地址。

            o它的partyMaxMessageSize组件称作最大消息的尺码,代表这个参与者将要接收的最大SNMPv2消息的八位组的长度。

            o它的partyAuthProtocol组件称作鉴定协议,指明了一个协议和鉴定所有该参与者生成的消息是初始和完整的机制。在这种上下文下,值noAuth表明该参与者产生的消息未被鉴定为初始和完整。

            o它的partyAuthClock组件称作鉴定时钟,代表与该参与者关联的当前时间。本组件的重要性是在鉴定协议中体现的。

            o它的partyAuthPrivate组件称作私有鉴定密匙,代表支持鉴定协议所需的任何保密的值。本组件的重要性是在鉴定协议中体现的。

            o它的partyAuthPublic组件称作公有鉴定密匙,代表任何支持鉴定协议所需的公共值。本组件的重要性是在鉴定协议中体现的。

            o它的partyAuthLifetime组件称作生命周期,代表该参与者生成的协议消息的可以接受的传送延时的管理性的上界。本组件的重要性是在鉴定协议中体现的。

            o它的partyPrivProtocol组件称作私有协议,指明了一个协议和一个防止该参与者接收到的所有协议消息泄漏的机制。在这种情况下,值noPriv表明该参与者接收到的消息未被保护以防止泄漏。

            o它的partyPrivPrivate组件称作私有密匙,代表支持私有协议所需的保密值。本组件的重要性是在私有协议中体现的。

            o它的partyPrivPublic组件称作公有密匙,代表支持私有协议所需的任何公共值。本组件的重要性是在私有协议中体现的。

            对于所有的被某个SNMPv2实体实现的SNMPv2参与者,如果它的鉴定协议是            noAuth而且它的私有协议是noPriv,那么那个实体称作不安全的。

            2.2.SNMPv2实体

            一个SNMPv2实体是一个实际的处理者,它通过用[2]中指明的方式产生消息并且/或者对SNMPv2协议消息进行响应来完成网络管理操作。当一个SNMPv2实体以一个特定的SNMPv2参与者的身份进行操作时,这个实体的操作必须限制在管理性地定义在那个参与者上的所有可能的操作的子集中。

            通过定义,一个SNMPv2实体的操作在一个特定SNMPv2参与者生成的任何单个协            议消息的处理和一个潜在的不同的SNMPv2参与者生成的任何其他协议消息的处理之间不需要同时发生。相应地,一个支持超过一个参与者的SNMPv2实体的实现不需要是多线程的。当然,也存在着实现时选用多线程的情况。

            从协议体系上说,每个SNMPv2实体维护一个保存了它所知的所有SNMPv2参与者            的逻辑数据库,这些参与者的操作有的是逻辑地实现的,有的是通过代理与远地实体地交互来实现的,有的是远地实体实现的。另外,每个SNMPv2实体维护一个存有该实体所知的所有被管理对象资源(参照2.8)。最后,每个SNMPv2实体维护一个存有定义了针对已知的SNMPv2参与者的访问权限的访问控制策略信息的逻辑数据库。

            2.3.SNMPv2管理站点

            一个SNMPv2管理站点是一个SNMPv2参与者在通过生成相应的SNMPv2协议消息来            初始化SNMPv2管理操作时,或者在它接收和处理陷阱通告时假定的运作性的角色。有时,术语SNMPv2管理站点也指专注于操作角色的SNMPv2的部分实现(例如图形工作站)。这种SNMPv2的部分实现可能用来提供方便或管理设备的本地革新,但是它们可能对代表远地协议用户的SNMPv2管理操作提供很少甚至没有支持。

            2.4.SNMPv2代理

            一个SNMPv2代理是一个SNMPv2参与者在为响应收到的诸如一个SNMPv2管理站点            (参照2.3)生成的SNMPv2协议消息而进行SNMPv2管理操作时假定的操作性角色。有时,术语SNMPv2代理也指专注于这种操作角色的SNMPv2(例如在嵌入式系统中)的部分实现。这种部分实现对代表管理设备的远地用户的SNMPv2管理操作的实现提供了支持,但是它可能对这些设备的本地革新提供很少甚至没有支持。

            2.5.视图子树

            一个视图子树是所有名字有公共的ASN.1实体标识符前缀的管理信息库对象的            集合。一个视图子树由OBJECTIDENTIFIER的值来标识,该值是该子树中所有(潜在)的类似的管理信息库对象实例中最大的OBJECTIDENTIFIER前缀。

            当标识一个视图子树的OBJECTIDENTIFIER前缀比根据SMI[3]定义的OBJECT            IDENTIFIER长时,用这个视图子树来控制访问就会在对象实例层有梯度。这种梯度在超越作为代理角色的SNMPv2实体的范围之上来考虑。所以,一个作为代理角色的SNMPv2实体的实现不需要支持在标识一个特定叶子对象类型时有多于必要数目的子标识符的视图子树的值。然而,在决定哪一个作为管理者角色的SNMPv2实体应该接收陷阱通知时,也用到了访问控制信息。(4.2.6of[2])所以,为了使一个管理站点能使用合适粒度的陷阱通知配置,代理实现者可能希望提供实例级的梯度。

            2.6.MIB视图

            一个MIB视图是根据SMI[3](那就是,所有MIB对象的所有实例的通用集合)定义的所有对象类型的所有实例的集合的子集:

            o一个MIB视图的每个元素用一个ASN.1OBJECTIDENTIFIER值唯一地标识。所以,一个特定对象类型的完全相同命名的实例(例如在不同的代理中)必须包含在不同的MIB视图中。也就是,在一个特定的MIB视图中,一个特定的对象实例名字解析为最多一个对象实例。

            o每个MIB视图被定义为视图子树的一个集合。

            2.7.代理关系

            一个代理关系在下面情况下存在:为了处理一个接收到的管理请求,一个SNMPv2            实体必须和其他逻辑上远地的实体通讯。一个用代理关系来处理管理请求的SNMPv2实体叫做一个SNMPv2代理机构。

            当一个逻辑上远地的参与者和一个SNMPv2实体间的通讯是通过SNMPv2时(通过            任何传输协议),那个代理参与者称作一个SNMPv2本地代理关系。SNMPv2本地代理关系的部署是一种有利的手段,用它可以分期偿还或轮换构建一个大的管理系统时的管理处理或带宽的代价。

            当一个逻辑上远地的参与者和一个SNMPv2实体间的通讯不是通过SNMPv2时(通            过任何传输协议),那个代理参与者称作一个SNMPv2远地代理关系。远地代理关系的部署是一种使Internet上的从某种意义上讲不可管理的设备或部门可以通过SNMPv2来管理。

            定义一个通常用于一个SNMPv2代理关系的SNMPv2实体的行为的透明原则如下:

            一个SNMPv2实体处理从另一个SNMPv2实体接收而来的SNMPv2协议消息的方式对            于后者是完全透明的。这种透明原则是从历史上分离结构体系与实现的SNMP原则中继承而来。这种            二分法给Internet标准网络管理体系的信息和分配模型都带来了好处,而且它是可能建造的大型管理系统的建筑性基石。与这种原则一致,尽管在某些环境下SNMPv2代理机构的实现可能与传输层的网桥的实现相似,这种特定的实现战略(或其他任何实现战略)不值得在SNMPv2管理体系或代理管理的标准机制中得到认可。很明显,在透明原则里,在任何两个SNMPv2对等体之间需要保持SNMPv2的管理操作的语义。特别地,如果一个操作集合的范围延伸到去管理位于多个网络位置的信息,它的“似乎是同步”的语义将极难保证。正因为如此,允许管理位于多个位置的信息的操作集合的代理配置是不提倡的,尽管这种操作并没有被协议体系明确的禁止,以防在很稀少的情况下,可能需要以一种相容的方法来支持它们。            在这种透明原则下,还很明显的是:与一个代理机构的交互时,不提供给一个管理站点实现它的请求的代理机制的特点和过程的信息。也就是,除了在底层传输地址中的任何明显的区别外,应该使管理站点看起来似乎是在通过SNMPv2与被代理的设备直接通讯。所以,一个在代理机构和它被代理设备间的通讯超时信息应该表现为在管理站点与代理机构间的超时。同样的,一个来自于被代理设备的出错响应应该尽可能的以代理机构和管理站点间的对应出错信息表示。

            2.8.SNMPv2上下文

            一个SNMPv2上下文是指一个可被一个SNMPv2实体访问的被管理对象资源的集合。被一个上下文标识的对象资源可能是本地的或远地的。

            一个涉及本地对象资源的SNMPv2上下文被标识为一个MIB视图。在这种情况下,一个SNMPv2实体用本地机制去访问被SNMPv2上下文标识的管理信息。

            一个涉及远地对象资源的远地SNMPv2上下文被标识为一个代理关系。在这种情            况下,一个SNMPv2实体作为一个代理机构去访问被SNMPv2上下文标识的管理信息。

            2.9.SNMPv2管理通讯

            SNMPv2管理通讯是一个从一个特定的SNMPv2参与者到第二个特定的SNMPv2参与者的,关于包含在相应的SNMPv2实体中可以被访问的SNMPv2上下文中的管理信息的通讯。特别地,一个SNMPv2管理通讯可以是:

            o一个发起通讯的参与者的关于被寻址的参与者可以访问的信息的

            查询(例如getRequest,getNextRequest,或者getBulkRequest)。

            o一个被寻址参与者的,关于发起方可访问的信息的,指示性的断言。(例如Response,InformRequest,或者SNMPv2-Trap

            o一个发起方作出的,发给被寻址的参与者的,关于被寻址的参与者可以访问的信息的命令式的断言(例如setRequest),或者

            o一个发向被寻址的参与者的确认,它是关于发起方接收到的信息的。(例如一个确认InformRequest的响应)一个管理通讯用一个ASN.1值表示,符合下面的语法: SnmpMgmtCom::=[2]IMPLICITSEQUENCE{

            dstParty            OBJECTIDENTIFIER,

            srcParty            OBJECTIDENTIFIER,

            context            OBJECTIDENTIFIER,

            pdu

            PDUs

            }

            对于每个代表一个SNMPv2管理通讯的SnmpMgmtCom,下列叙述成立:

            o它的dstParty组件称作目的点,标识了该通讯发往的SNMPv2参与者。

            o它的srcParty组件称作源点,标识了发起通讯的SNMPv2参与者。

            o它的context组件标识SNMPv2上下文,它含有通讯涉及的管理信息

            o它的pdu组件有在[2]中赋于的形式和含义。

            2.10.SNMPv2鉴定过的管理通讯

            SNMPv2鉴定过的管理通讯是这样的SNMPv2管理通讯:它的发起方SNMPv2参与者            被可信地鉴定过,并且该通讯的传输的完整性受到保护。一个SNMPv2鉴定过的管理通讯用一个ASN.1值表示,符合下面的语法:

SnmpAuthMsg::=[1]IMPLICITSEQUENCE{

            authInfo        ANY,--由鉴定协议定义

            authData

            SnmpMgmtCom

            }

            对于每个代表一个SNMPv2鉴定过的管理通讯的SnmpAuthMsg,下列叙述成立:

            o它的authInfo组件称作鉴定信息,包含支持产生本消息的SNMPv2参与者使用的鉴定协议的信息。鉴定信息的详细含义由使用的鉴定协议指定;除了鉴定协议用它来判断该通讯是否被鉴定过以外,它对通讯的应用语义没有影响。

            o它的authData组件称作鉴定数据,代表一个SNMPv2管理通讯。

            2.11.SNMPv2私有管理通讯

            SNMPv2私有管理通讯是一个SNMPv2鉴定过的管理通讯,它受到可能的保护,防止泄漏。一个私有管理通讯用一个ASN.1值表示,符合下面的语法:

            SnmpPrivMsg::=[1]IMPLICITSEQUENCE{

            privDst            OBJECTIDENTIFIER,

            privData            [1]IMPLICITOCTETSTRING

            }

            对每个代表一个SNMPv2私有管理通讯的SnmpPrivMsg值,下面的叙述成立:

            o它的privDst组件称作私有目的地,表明该通讯发向的SNMPv2参与者。

            o它的privData组件称作私有数据,包含一个SNMPv2鉴定过的管理通讯的(可能已加密)数据序列(根据[5]的约定)。

            2.12.SNMPv2管理通讯类

            一个SNMPv2管理通讯类对应于一个在[2]中定义的特定的SNMPv2PDU类型。SNMPv2管理通讯类用ASN.1INTEGER值表示,需要根据识别PDU的类型而定(表1

            Get1

            GetNext2

            Response4

            Set8

            --unused16

            GetBulk32

            Inform64

            SNMPv2-Trap128

            1:管理通讯类

 

            一个表示通讯类的值被计算为2,增加到ASN.1上下文的值,对应SNMPv2 PDU的特定标签。

            一个管理通讯的类的集合用ASN.1INTEGER值来表示,该值是该集合类表示通讯类的标识的和。空集用0值表示。

            2.13.SNMPv2访问控制策略

            SNMPv2访问控制策略是一个用SNMPv2上下文和在一对SNMPv2参与者间被认证的管理通讯类描述的本地访问策略的标准说明书。在协议体系中,该说明书包含四部分:

            oSNMPv2访问控制的目标-接收其他参与者的管理请求,执行管理操作的SNMPv2参与者。

            oSNMPv2访问控制的主体-通过发送管理通讯给其他参与者而请求管理操作被执行的SNMPv2参与者。

            oSNMPv2访问控制的被管理的对象资源――标识管理信息的SNMPv2上下文,被请求的管理操作在它之上被执行,

            o指定SNMPv2管理通讯类的策略,它属于一个特定的SNMPv2上下文,该上下文由一个被认证的特定的目标从一个特定的主体获得。

            概念性地,一个SNMPv2访问策略用ASN.1值表示,符合下面地语法:

  AclEntry::=SEQUENCE{

            aclTarget            OBJECTIDENTIFIER,

            aclSubject            OBJECTIDENTIFIER,

            aclResources            OBJECTIDENTIFIER,

            aclPrivileges            INTEGER

            }

            对于表示一个SNMPv2访问策略的每个值,下列陈述成立:

            o它的aclTarget组件称作目标,指明该部分策略允许访问的SNMPv2参与者。

            o它的aclSubject组件称作主体,指明被该部分策略赋予权限的SNMPv2参与者。

            o它的aclResources组件称作被管理的对象资源,表明该部分策略涉及的SNMPv2上下文。

            o它的aclPrivileges组件称作权限,代表一个SNMPv2管理通讯类的集合,在指明特定的SNMPv2上下文时,该集合从特定的主体参与者接收,认证后被目标参与者处理。SNMPv2访问控制策略的运用仅发生在管理通讯接收的时候;它不用在管理通讯的传输中。注意:用AclEntry语法的ASN.1值,也被用于决定一个SNMPv2陷阱[2]的目的地。

            3.过程的元素

            本小节描述一个SNMPv2实体在处理SNMPv2消息的程序。这些程序独立于可能用到的特定的鉴定和私有协议。

            3.1.产生一个请求

            本小节描述一个SNMPv2实体发送一个管理请求和者一个陷阱通知的程

            序:

            (1)创建一个SnmpMgmtCom值,其中的srcParty组件表明发起方的参与者,dstParty表明接收的参与者,context标识期望的SNMPv2上下文,pdu指明期望的管理操作。

            (2)查询存有参与者信息的本地数据库,以决定发起方和接收方的SNMPv2的鉴定协议和其他相关信息。

            (3)创建一个SnmpAuthMsg值,含有下面的属性:

            根据发起方的鉴定协议创建它的authInfo组件。特别地,如果发起方的鉴定协            议为noAuth,该属性置为长度为0OCTETSTRING值。它的authData属性是已经创建的SnmpMgmtCom的值

            (4)查询关于参与者信息的本地数据库,以决定接收方的SNMPv2参与者的私有协议和其他相关信息。

            (5)创建一个SnmpPrivMsg值,属性如下:

            它的privDst属性指明接收方的SNMPv2参与者。

            它的privData属性是序列化的SnmpAuthMsg值(可能被加密)。

            特别地,如果接收方SNMPv2参与者地私有协议是noPriv,那么privData属性是未被加密的。否则,privData根据私有协议来处理。

            (6)根据[5]中的约定序列化SnmpPrivMsg的值。

            (7)序列化后地SnmpPrivMsg值用接收方的SNMPv2参与者的传输地址和传输域来传送。

            注意:上述地过程不包含任何SNMPv2访问控制策略地应用。(参照2.13)

            3.2.处理一个收到的通讯

            本节描述一个SNMPv2实体收到一个管理通讯后的处理过程。

            (1)增加snmpStatsPackets计数器[7].如果收到的信息不是一个SnmpPrivMsg的序列化的(根据[5]地约定)值,该消息不作进一步地处理就被抛弃。(如果该数据包的第一个八位组地值为16进制的30,有时在抛弃该消息前增加 snmpStats30Somethingcounter[7]的值;否则增加snmpStatsEncodingErrors          counter[7]的值)

            (2)查询关于参与者信息的本地数据库,根据SnmpPrivMsg中的privDst属性得到接收方SNMPv2参与者的信息。

            (3)如果本地数据库中没有关于接受方SNMPv2参与者的信息,或者表明本地的SNMPv2实体没有实现接收方参与者的操作,那么无需进一步的处理就丢弃接收到的消息,之后增加snmpStatsUnknownDstPartiescounter[7]的值。

            (4)根据SnmpPrivMsg中的privData属性创建一个ASN.1OCTETSTRING值(可能根据使用的私有协议解密) 特别地,如果该参与者的私有协议是noPriv,那么OCTETSTRING 的值与SnmpPrivMsg中的privData的值完全对应。

            (5)如果OCTETSTRING的值未被序列化,(根据[5]的约定),那么无需进一步的处理就丢弃接收到的消息,之后增加snmpStatsEncodingErrors  counter[7]的值。

            (6)如果authData中的dstParty属性与SnmpPrivMsg中的privDst属性不同,那么无需进一步的处理就丢弃接收到的消息,之后增加snmpStatsDstPartyMismatchescounter[7]的值。

            (7)根据SnmpAuthMsgauthData中的srcParty属性得出发起方SNMPv2 参与者,在关于参与者信息的本地数据库中查询它的信息。

            (8)如果本地数据库中没有发起方参与者的信息,那么无需进一步的处理就丢弃接收到的消息,之后增加snmpStatsUnknownSrcPartiescounter[7]的值。

            (9)根据关于参与者信息的本地数据库中发起和接收方的SNMPv2参与者的相关信息和鉴定协议,鉴定得到的SnmpAuthMsg值。特别地,如果鉴定协议指明为noAuth,那么总是鉴定SnmpAuthMsg            的值为真实的。

            (10)如果鉴定SnmpAuthMsg的值为不真实的,那么无需进一步的处理就丢弃接收到的消息,而且,如果snmpV2EnableAuthenTrapsobject[7]正在生效,那么该SNMPv2实体根据它的配置(4.2.6of[2])发送authorizationFailure陷阱[7]

            (11)SnmpAuthMsg中的authData属性提取SnmpMgmtCom的值

            (12)SnmpMgmtComcontext属性得到SNMPv2的上下文,查询关于参与者信息的本地数据库以获得它的信息。

            (13)如果本地数据库中没有该SNMPv2上下文的信息,那么无需进一步的处理就丢弃接收到的消息,之后增加snmpStatsUnknownContextscounter[7]的值。

            (14)查询关于访问处理信息的本地数据库,根据接收方参与者和指明的SNMPv2上下文得到本地访问策略许可给发起方SNMPv2参与者的访问权限。

            (15)根据与SnmpMgmtCom中的PDUs属性值关联的ASN.1tag值决定管理通讯类。如果接收到的消息的管理信息类是32,8,2,1(也就是GetBulk,Set, GetNext或者Get),并且本地SNMPv2实体没有实现SNMPv2上下文,那么无需进一步的处理就丢弃接收到的消息,之后增加snmpStatsUnknownContextscounter[7] 的值。

            (16)如果接收到的消息的管理信息类是128,644(也就是            SNMPv2-Trap,Inform,或者Response),并且该类无访问权限,那么无需进一步的处理就丢弃接收到的消息,之后增加snmpStatsBadOperationscounter[7]的值。

            (17)如果接收到的消息的管理通讯类没有访问权限,那么在生成和传送一个响应消息后无需进一步的处理就丢弃接收到的消息,该响应消息代表接收方SNMPv2参与者,被发往发起方SNMPv2参与者,它的context,var-bind-listrequest-id属性与接收到的请求中的对应属性完全一样。它的error-            index属性是zero并且它的error-status属性是authorizationError[2].

            (18)如果SNMPv2上下文涉及本地对象资源,那么根据在[2]中的程序,用SNMPv2上下文识别MIB视图,根据该视图用接收方SNMPv2实体执行SnmpMgmtCom值代表的管理操作。

            (19)如果SNMPv2上下文涉及远地对象资源,那么通过合适的代理关系执行SnmpMgmtCom值代表的管理操作。

            3.3.生成一个响应

            生成一个针对SNMPv2管理请求的响应的过程和传送一个请求的过程是完全一样的(参考3.1),除了下列的情况例外:

            (1)在第一步,从初始的SnmpMgmtCom中的srcParty属性得到响应SnmpMgmtCom中的dstParty,从初始的SnmpMgmtCom中的dstParty属性得到响应SnmpMgmtCom中的srcParty属性,从初始的SnmpMgmtCom中的context属性得到响应SnmpMgmtCom中的context属性;而且,响应SnmpMgmtCompdu属性的值是那个实施初始SnmpMgmtCom值指定的操作执行后得到的结果。

            (2) 在第七步,用生成自己的相应请求的传送地址和传送域来传送序列化的SnmpPrivMsg值,即使这与关于参与者信息的本地数据库中记录的传送信息不同。

            4.模型应用

            这一部分描写如何设置管理模型,以达到在各种环境和配置中实现有效的网络            管理.定义了几种类型的管理配置,并用各自的几个例子来加以描述.

            4.1无安全的小代理配置

            这段是关于与一个或多个SNMPv2管理站点相互作用的小的、无安全保证的            SNMPv2代理的配置的例子.2是关于小代理和管理者都知道的SNMPv2参与者的信息.3介绍了关于本地访问策略的相似的公共部分的信息.

            在表2中,代理在IP地址为1.2.3.4UDP的断口161使用参与者身份gracie来操作;管理者在IP地址为1.2.3.5UDP的断口的2001上用身份为george来操作的.在小的、无安全保证的SNMPv2代理段执行必须提供关于两个SNMPv2参与者的身份和传输地址的管理配置(和稳定存储):自身和远端的.严格的讲,关于参与者的其他信息(包括访问策略信息)是不必要配置的.

            身份gracie(代理者)george(管理者)

            snmpUDPDomainsnmpUDPDomain

            地址1.2.3.41611.2.3.4.52001

            认证段口noAuthnoAuth

            AuthPort

            认证的私有密钥“”“”

            AuthPrivKey

            认证的公开密钥“”“”

            认证的时钟00

            认证的生命周期00

            私有端口noPrivnoPriv

            私有私人密钥“”“”

            私有的公开密钥“”“”

            2:小代理的参与者信息

            目标主题上下文权限

            graciegeorgelocal35(获取,获取下一个获取一批)

            GetGetNextGetBulk

            georgegracielocal132

            (ResponseSNMPv2-Trap)

            3:关于小代理的访问信息

            假如管理端的参与者george希望通过叫代理者gracie发布一个SNMPv2            GetNext请求消息来的询问关于上下文为“local”的管理信息.该管理者参考他本地的关于参与者的数据库信息.因为对参与者george的鉴定认证协议是记录为“moAuth”的,这个通过管理者生成的GetNext请求消息是作为原始性和完整性是不需要鉴别的.通过管理者的本地数据库中关于参与者的信息,对参与者gracie的私有协议是设置为“noPriv”的,GetNext请求消息是不会得到保护的,可能会暴露.更准确的讲,它是简单的装配的,排序和传输到目的地址的(IP地址为1.2.3.4UDP端口为161),这个目的地址就是参与者gracie在管理者的本地数据库中的信息所记录的.

            GetNext请求消息在代理段被收到后,这个(gracie)参与者的身份信息从消息中取得,并且接收的实体参考参与者信息的本地数据库.因为gracie的私有协议是“noPriv”,其接受消息是不会得到不被暴露的保护的.类似的,当原始参与者(grorge)的身份被取得后,参与者的本地数据库的信息也被取得了.因为对当时人george的鉴别协议记录为“noAuth”,这个接受信息是立即被认证接收.            这个接受消息完全被处理的情况,仅仅发生代理关于访问策略信息的本地数据库对通过参与者george向参与者gracoe关于SNMPv2的上下文为“local”的"GetNext"请求通讯的认证.访问策略的数据库信息在表3中的认证象通讯等(GetGetBulk等操作). 当一个标准的请求被处理时,一个响应消息通过参考SNMPv2上下文“local”和身份来生成,