ASN.1 编码规则详解
1 简介
注释:
本章的内容主要翻译自《ASN.1 Communication between Heterogeneous Systems》和
《ASN.1 Complete》。
1.1 ASN.1 简介
ASN.1 (Abstract Syntax Notation dot one),抽象记法 1。数字 1 被 ISO 加在 ASN 的后边,
是为了保持 ASN 的开放性,可以让以后功能更加强大的 ASN 被命名为 ASN.2 等,但至今
也没有出现。
ASN.1 是定义抽象数据类型规格形式的标准。是用于描述数据的表示、编码、传输、解
码的灵活的记法。它提供了一套正式、无歧义和精确的规则,以描述独立于特定计算机硬件
的对象结构。
ASN.1 是通信协议中描述数据传输的正式标记(notation),它与语言实现和物理表示无
关,与应用的复杂度无关。ASN.1 特别适合表示现代通信应用中那些复杂的、变化的及可扩
展的数据结构。
ASN.1 发送任何形式(音频、视频、数据等等)的信息都必须用数字传送。ASN.1 只能
包含信息的结构方面(没有已经定义的或考虑到的处理数据值的操作)。它不是一个编程语
言。
ASN.1 本身只定义了表示信息的抽象句法,但是没有限定其编码的方法。各种 ASN.1
编码规则提供了由 ASN.1 描述其抽象句法的数据的值的传送语法(具体表达)。标准的 ASN.1
编码规则有基本编码规则(BER,Basic Encoding Rules)、规范编码规则(CER,Canonical
Encoding Rules)、唯一编码规则(DER,Distinguished Encoding Rules)、压缩编码规则(PER,
Packed Encoding Rules)和 XML 编码规则(XER,XML Encoding Rules)。
ASN.1 成功的一个主要理由是它采用了一些如 BER(Basic Encoding Rules)或新制定的
PER(Packed Encoding Rules)这样的标准化的编码规则,它对受带宽限制的应用程序很有用。
这些编码规则描述了如何将定义在 ASN.1 中的值译成适合传输的电码(例如:他们可以被转
e7code