ASN.1(Abstract Syntax Notation dotone),抽象语法标记1。是定义抽象数据类型形式的标准,是用于描述数据表示、表示、传输、编码的记法。
ASN.1只包含信息结构,不处理具体业务数据,它不是一个编程语言。
ASN.1没有限定编码方法,各种ASN.1编码规则提供了由ASN.1描述其抽象句法的数据的值的传送语法(具体表达),常见的编码规则有:基本编码规则(BER),规范编码规则(CER,CanonicalEncoding Rules)、唯一编码规则(DER,DistinguishedEncoding Rules)、压缩编码规则(PER,PackedEncoding Rules)和XML编码规则(XER,XMLEncoding Rules)。这些编码规则描述了如何将定义在ASN.1中的值译成适合传输的电码。
ASN.1在OSI的ISO8824/ITU X.208(说明语法)和ISO8825/ITU X.209(说明基本编码规则)规范。
几个概念:
类型是一个非空的值的集合,可以被编码后传输。相比与高级语言中复杂的数据结构,ASN.1中的类型主要是为了数据的传输。
ASN.1中的类型分为基本类型(内建数据类型)和组合类型,组合类型由一个或多个基本类型构成。
类型 | 含义 |
---|---|
BIT STRING | 比特串 |
BOOLEAN | 布尔型 |
INTEGER | 整数 |
NULL | 空值 |
OBJECT IDENTIFIER | 对象标识符 |
OCTET STRING | 字节串 |
PrintableString | 可打印字符串 |
UTCTime | “协调世界时” |
GeneralizedTime | 通用时间 |
表示1个或多个字段组成的有序序列,例如:
ReportEntry ::= SEQUENCE {
author OCTET STRING,
title OCTET STRING,
body OCTET STRING,
biblioBook Bibliography
}
表示0个或多个特定类型字段的有序序列,例如:
Report ::= SEQUENCE SIZE (100) OF ReportEntry
Report ::= SEQUENCE SIZE (MAX) OF ReportEntry
表示1个或多个字段组成的无序集合,例如:
Menu ::=SET{
sandwich Food,
coke Beverage
}
表示0个或多个特定类型字段的无序集合,例如:
Class ::= SET SIZE (50) OF Student
基于各种构造方式,将基本数据类型经过层次嵌套,最终构造出能描述任何抽象事物的数据结构。
例如:
Bibliography ::= SEQUENCE {
author OCTET STRING
title OCTET STRING
publisher OCTET STRING
year OCTET STRING
}
原文:https://www.cnblogs.com/Brass/p/12711196.html