SNMP定义了在客户和服务器之间交换的SNMP报文的语法和语义。它使用ASN.1(抽象语言 Abstract Syntax Notation One)来定义SNMP报文格式和MIB变量的名称。因此与绝大多数UDP协议不同,SNMP报文不含固定字段,也不能用固定的结构来定义。
抽象语法记法ASN.1
在ISO/OSI参考模型中,应用层要求标识各种简单、复合的数据形式以及取自各种字符集的字符串等比较复杂的用户数据。这就需要定义一个抽象语法记法,该记法规定类型的实例在传送中的标识规则(通过8bit位组序列)。
通过定义若干个简单类型和由简单类型复合而成的结构类型,在表示层用一致的形式来标识应用层的复杂多样的数据,便于异构系统间的通信,这种记法就叫作抽象语法记法(ASN.1)。ASN.1是一种描述数据和数据特征的正式语言,它和数据的存储及编码无关。
根据ASN.1标准定义,数据类型分为:
①简单数据类型:boolean、null、integer、real、octer、string、object identifier、ip address、time ticks等
②构造数据类型:sequence、sequence of set、set of choice等。
③构造数据类型提供一种或多种简单数据类型进行复合的方法。
基本编码规则BER
在具体系统中,需要用具体的编码规则将ASN.1语法标识的抽象数据转换成具体的比特流。SNMP使用的编码方法是BER(Basic Encoding Rule)。
BER的数据都由三个域构成:标识域(tag)+长度域(length)+值域&#