几个基本概念:
1.管理信息库(MIB):包含所有代理进程的所有可被查询和修改的参数。
2.关于MIB的一套公用的结构和表示符号,叫做管理信息结构(SMI):SMI定义计数器是一个非负整数,当达到最大值时,从0开始计数。
3.管理进程和代理进程之间的通信协议,叫做简单网络管理协议SNMP,虽然在传输层可以采用多种协议,不过目前用的最多的是UDP。
SNMP定义了以下5中报文:
1.get-request操作:从代理进程中取一个或多个参数值。
2.get-next-request操作:从代理进程处取一个或多个参数的下一个参数值。
3.set-request操作:设置代理进程的一个或多个参数值。
4.get-response操作:返回的一个或多个参数值。这个参数是对前面3中操作的响应操作。
5.trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。(比如设备后端某个端口down掉了)
管理进程发出前3个操作采用UDP的161端口,代理程序发出的trap操作采用UDP的162端口。由于收发采用不同的端口号,所以一个系统可以同时为管理进程和代理进程。
SNMP的5中操作如下图所示:
由于上层采用UDP协议,所以一定要有超时和重传机制。SNMP报文的编码采用了ASN.1和BER,这就使得报文的长度取决于变量的类型和值。
SNMP报文的格式如下图:
PDU类型:
差错状态字段是一个整数,它是由代理进程标注的,指明差错发生,下图是SNMP差错状态的值:
错误索引字段是一个整数偏移量,指明当有错误发生时,差错发生在哪一个参数。并且只有在发生noSuchName、readOnly、badValue差错时才进行标注。
在MIB中定义了以下数据类型:参见卷一:协议
对象标识符OID
对象标识是一种数据类型,它指明一种“授权”命令的对象。“授权”的意思就是这些标识不是随便分配的,它是由一些权威机构进行管理和分配的,IOD是一个整数序列,以点“.”分割。这些整数构成一个树形结构,类似DNS或Linux中文件系统。在SNMP中所有的MIB都从1.3.6.1.2.1这个标识开始,同时树上的每个结点同时还有一个文件名。