ASN.1协议介绍
一、ASN.1 协议是什么?
在不同设备节点进行通信的时候,通常要定义一个数据协议,用来定义要传输数据的信息结构。而ASN.1就是定义数据协议的一种方法。即写一个文件,后缀名为 .asn
例如:写一个文件,文件名叫 data.asn
文件内容为:
People ::= SEQUENCE{
name OCTET STRING,
age INTEGER
}
即定义一个数据结构People,包含两个成员,一个为字节串 name, 一个为整数age。
那么不同节点就可以根据这个文件,得到要传输数据的信息结构。如果要传输这样的数据,那么还需要将这样类型的数据转化为二进制流,即编码。ASN.1提供一下几种编码方式:
BER、CER、DER、XER、OER、PER
可使用不同编程语言,根据编码方式将数据填入比特流中,比如C语言可定义一个char数组,存储比特流。
二、ASN.1数据类型及语法
- 数据类型
1. INTERER
2. BOOLEAN
3. REAL
4. ENUMERATED
5. BIT STRING
6. OCTET STRING
7. NULL
8. SEQUENCE
9. SEQUENCE-OF
10. SET
11. SET-OF
12. CHOICE
- 语法
<新类型的名字>::= <类型描述>
三、编码方式介绍
- BER编码:基础方案(类型+长度+内容),额外数据过多
- CER编码:安全性高
- DER编码:安全性高
- OER编码:安全性高
- PER编码:压缩能力强