ASN.1抽象语法标记和ber编码规则

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/q623702748/article/details/52274543


        ASN.1抽象语法标记(Abstract Syntax NotationOne) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序。

        ASN.1是描述在网络上传输信息格式的标准方法。它有两部分:一部分描述信息内数据,数据类型及序列格式;另一部分描述如何将各部分组成消息。它原来是作为X.409的一部分而开发的,后来才自己独立成为一个标准。ASN.1在OSI的ISO 8824/ITU X.208(说明语法)和ISO 8825/ITU X.209(说明基本编码规则)规范。

例如:

Report ::= SEQUENCE {

author OCTET STRING,

title OCTET STRING,

body OCTET STRING,

biblio Bibliography

}

       在这个例子中,"Report"是由名字类型的信息组成的,而SEQUENCE表示消息是许多数据单元构成的,前三个数据单元的类型是OCTET STRING,而最后一个数据类型见下面的ASN.1语法表示它的意义:

Bibliography ::= SEQUENCE{

author OCTET STRING

title OCTET STRING

publisher OCTET STRING

year OCTET STRING

}

ASN.1中定义的数据类型既有简单的基本数据类型,也有复杂的结构类型。

  1. 基本类型是不可再再分的,包括:
    • 布尔型(BOOLEAN)
    • 整型(INTEGER)
    • 实型(REAL)
    • 位串类型(BITSTRING)
    • 8位位组类型(OCTET STRING)
    • 枚举类型(ENUMERATED)
    • 空类型(NULL)
    • 对象标识符(OBJECT IDENTIFIER)
  2. 除基本类型,ASN.1还定义了多种复杂的结构类型,例如:
    • SEQUENCE:有序的数据集合(序列),由不同类型的数据组成。SEQUENCE结构强调内部成员的排序
    • SEQUENCE OF:有序的数据集合,类似于C语言的数组,由同一类型的数据组成。
    • SET:由不同类型的数据组成的集合,用来描述复杂的信息对象,对内部成员的顺序不作要求,类似于C语言的结构体类型
    • CHOICE:选择结构,在列出的内部成员中,只能选择其中之一,类似于C语言中的共用体类型


猜你喜欢

转载自blog.csdn.net/q623702748/article/details/52274543