smi是
简单网络管理协议(SNMP)的一部分,指定了在 SNMP 的 MIB 中用于定义管理目标的规则。
术语介绍
SMI管理信息结构(SNMP领域)
SMI 是一种语言,是为了确保网络管理数据的语法和语义明确和无二义性而定义的语言。
它是定义被管理网络实体中特定数据的语言。
它定义了数据类型、对象模型,以及写入和修改管理信息的规则。
SNMP中,数据类型并不多。这里我们就讨论这些数据类型,而不关心这些数据类型在实际中是如何编码的。
INTEGER
一个变量虽然定义为整型,但也有多种形式。有些
整型变量没有范围限制,有些整型变量定义为特定的数值(例如,IP的转发标志就只有允许转发时的或者不允许转发时的这两种),有些整型变量定义一个特定的范围(例如,UDP和TCP的
端口号就从0到65535)。
OCTER STRING
0或多个8 bit
字节,每个字节值在0~255之间。对于这种数据类型和下一种数据类型的BER编码,字符串的字节个数要超过字符串本身的长度。这些字符串不是以NULL结尾的字符串。
DisplayString
0或多个8bit字节,但是每个字节必须是ASCII码。在MIB-II中,所有该类型的变量不能超过255个字符(0个字符是可以的)。
OBJECT IDENTIFIER
对象识别符,由一列整数组件组成,用于识别一个对象,如算法、属性类型、或定义了其他对象识别符的
注册机构。
NULL
代表相关的变量没有值。例如,在get或get-next操作中,变量的值就是NULL,因为这些值还有待到代理进程处去取。
IpAddress
4字节长度的OCTER STRING,以
网络序表示的IP地址。每个字节代表IP地址的一个字段。
PhysAddress
OCTER STRING类型,代表
物理地址(例如以太网物理地址为6个字节长度)。
Counter
非负的整数,可从0递增到232—1( )。达到最大值后归0。
Gauge
非负的整数,取值范围为从0到(或增或减)。达到最大值后锁定直到复位。例如,MIB中的tcpCurrEstab就是这种类型的变量的一个例子,它代表目前在ESTABLISHED或CLOSE_WAIT状态的TCP连接数。
TimeTicks
时间计数器,以0.01秒为单位递增,但是不同的变量可以有不同的递增幅度。所以在定义这种类型的变量的时候,必须指定递增幅度。例如,MIB中的sysUpTime变量就是这种类型的变量,代表代理进程从启动开始的时间长度,以多少个百分之一秒的数目来表示。
SEQUENCE
这一数据类型与C程序设计语言中的“structure”类似。一个SEQUENCE包括0个或多个元素,每一个元素又是另一个ASN.1数据类型。例如,MIB中的UdpEntry就是这种类型的变量。它代表在代理进程侧“激活”的UDP数量(“激活”表示2013年被应用程序所用)。在这个变量中 包含两个元素:
IpAddress类型中的udpLocalAddress,表示IP地址。
INTEGER类型中的udpLocalPort,从0到65535,表示
端口号。
SEQUENDEOF
这是一个向量的定义,其所有元素具有相同的类型。如果每一个元素都具有简单 的数据类型,例如是整数类型,那么我们就得到一个简单的向量(一个一维向量)。但是我们将 看到,SNMP在使用这个数据类型时,其向量中的每一个元素是一个SEQUENCE(结构)。因而可以将它看成为一个二维数组或表。