表-BER码(Basic Encoding Rule) |
BER编码原理 | BER编码依据ASN.1标准。ASN(Abstract Syntax Notation,即抽象语法记法)只描述数据的结构形式且与具体的编码格式无关,同时也不涉及这些数据结构在计算机内如何存放。ASN.1的记法很严格,它使得数据的含义不存在任何可能的二义性。BER是对ASN.1的一种具体实现,指明了每种数据的类型和值。在发送端用BER编码,可把用ASN.1所表述的报文(ASN.1也定义报文的结构)转换成唯一的比特序列;在接收端用BER解码,就可得到该比特序列所表示的报文。 |
BER编码方式 | 编码格式 | BER编码格式如下: 2b | 1b | 5b | 可变(MB) | 可变(NB) | 类别 | 格式 | 编号 | | | 标记T(1B) | 长度L | 值V |
ASN.1将所有的数据元素都表示为T-L-V三个字段组成的序列。 |
字段说明 | 标记T | T字段一般占1个字节,用于定义数据的类型。T字段又分为3个子字段:类别、格式和编号 |
类别 | 类别占2位,共有四种,指出数据类型的范畴:通用类(00),即ASN.1定义的类型;应用类(01),即具体应用定义的类型;上下文类(10),即上下文所定义的类型;专用类(11),保留为特定厂商定义的类型; |
格式 | 格式占1位,共有两种,指出数据类型的种类:简单数据类型(0)和结构化数据类型(1) |
编号 | 编号占5位,用于标志不同的数据类型。编号的范围一般为0-30,当编号大于30时,T字段就要扩展为多个字节(该情况很少用到) |
长度L | L字段可为单字节或多字节,用于定义V字段的长度(单位为字节)。当L字段为单字节时,其最高位为0,后面的7位定义V字段的长度;当L字段为多个字节时,其最高位为1,而后面的7位定义后续字节的字节数(用二进制整数表示),所有的后续字节并置起来的二进制整数定义V字段的长度 |
值V | V字段的长度由L字段定义,用于定义数据元素的值。V字段还可以嵌套其他数据元素的TLV字段,并可多重嵌套 |
BER编码应用 | 简单网络管理协议SNMP中的管理信息结构SMI (Structure of Management Information)采用BER编码对对象和对象的值进行编码 |