第2章 抽象语法表示 ASN.1
- 格式:pdf
- 大小:720.52 KB
- 文档页数:105
第二章抽象语法表示ASN.1抽象愈发表示ASN.1是一种形式语言1.网络数据表示●表示层的功能是提供统一的网络数据表示。
●在互联通信的端系统中至少有一个应用实体(FTP,TELNET,SNMP)和一个表示实体(ASN.1)。
●应用实体:应用实体定义了应用数据的抽象语法;应用协议按照预先定义的抽象语法构造协议数据单元,用于和对等系统的应用实体交换信息(FTP、TELNET,SNMP等)。
●表示实体:表示实体对应用层数据进行编码,变成二进制的比特串(ASN.1)。
2.ASN.1的基本概念⑴抽象数据类型●在ASN.1中,每一个数据类型都有一个标签(tag),标签有类型和值,数据类型是由标签的类型和值唯一决定的。
●各种标签的用法·通用标签:用关键字UNIVERSAL表示,带有这种标签的数据类型是由标准定义的,适用于任何应用。
·应用标签:用关键字APPLICATION表示,是由某个具体应用定义的类型。
·上下文专用标签:这种标签在本文的一定范围(例如,一个结构)中适用。
·私有标签:用关键字PRIVATE表示,这是用户定义的标签。
●数据类型:·简单类型:由单一成分构成的原子类型。
·构造类型:由两种以上成分构成的构造类型。
·标签类型:由已知类型定义的新类型。
·其它类型:包括CHOICE和ANY两种类型。
●ASN.1定义的通用类型图 P25●简单类型:·第一组:BOOLEAN、INTEGER、BIT STRING、OCTET STRING、REAL和EMUNERATED等。
这一组可以叫做基本类型。
·对整数可以进行算数运算,但对枚举类型却不能进行任何算数运算。
·第二种包括各种字符串类型,标签为UNIVERSAL18-22和UNIVERSAL25-27,这些类型都可以看做是OCTET STRING类型的子集,它们都是采纳其它标准的类型。
ASN.1笔记——语法规则与类型概述⼀.简介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(说明基本编码规则)规范。
⼏个概念:(1)实际语法指诸如C、ObjectiveCaml等这样实际编程语⾔;(2)抽象语法(AbstractSyntax)指ASN.1,是协议采⽤ASN.1规范描述的描述⽂本。
描绘了与任何表⽰数据的编码技术⽆关的通⽤数据结构。
抽象语法使得⼈们能够定义数据类型,并指明这些类型的值。
抽象语法只描述数据的结构形式,与具体的编码格式⽆关,同时也不涉及这些数据结构在计算机内如何存放。
(3)传输语法(TransferSyntax)指表⽰层交换数据的表⽰⽅法,是实际通讯系统间的码流。
当数据在两个表⽰层实体之间传输时,这些数据的实际⽐特模式表⽰⽅法就是传送语法。
(4)编码指将抽象语⾔法转换成实际通讯系统间⽐特流;(5)编码规则将抽象语⾔法转换成实际通讯系统间⽐特流所遵循的语法规则;⼆.相关背景知识1.为了顺利完成应⽤⾳的通讯,需使⽤以下概念:(1)抽象语法:定义了数据的常⽤结构(包括不同的数据类型),并且建⽴了和应⽤层对话所⽤的构架。
[填空选择题]P231、(抽象语法表示):一种形式语言,提供统一的网络数据表示,通常用于定义应用数据的抽象语法和应用层协议数据单元的结构。
P232、表示层的功能:提供统一的网络数据表示。
P233、表示实体定义了应用数据的抽象语法。
4、传输语法:把抽象数据变换成比特串的编码规则。
P235、抽象语法用于定义应用数据,它类似程序设计语言定义的抽象数据类型。
P23二、的基本概念P24-311、作为一种形式语言,有严格的BNF定义。
P242、在中,每一个数据类型都有一个标签(tag),标签有类型和值。
P243、标签的类型分为4种,分别是:通用标签、应用标签、上下文专用标签和私有标签。
P24通用标签UNIVERSAL:由标准定义,适用于任何应用;应用标签APPLICATION:是由某个具体应用定义的类型;上下文专用标签CONTEXT SPECIFIC:这种标签在文本的一定范围(例如,一个结构struct)中适用;私有标签PRIVATE:用户定义的标签。
4、定义的数据类型可分为4类:分别为简单类型、构造类型、标签类型、其他类型。
这些数据类型的标签值均为通用标签Universal,有20多种。
P24●简单类型:由单一成分构成的原子类型;定义的数据类型中除了序列SEQUENCE和集合SET两种类型不属于简单类型外,其他10多种均属于简单类型。
P25●构造类型:由两种以上成分构成的构造类型,如序列SEQUENCE、集合SET类型。
●标签类型:由已知类型定义的新类型;●其他类型:包括CHOICE和ANY两种类型。
以下是标签和类型关系图:6、枚举类型ENUMERATED:是一个整数的表,每一个整数有一个名字。
枚举类型与整数类型区别在于整数类型可以进行算术运算而枚举类型不能进行任何算术运算,也即枚举类型的值只是用证书表示的一个符号,而不具有整数的性质。
P267、对象类型OBJECT IDENTIFIER:泛指网络中传输的任何信息对象,其值是一个对象标识符,由一个整数序列组成,它惟一地标识一个对象。
序号主题内容1 引言ASN.1(Abstract Syntax Notation One)是一种用于描述数据结构和编码规则的标准化语言,广泛应用于网络通信、安全认证、电子商务等领域。
本文将介绍ASN.1的基本语法和编码规则,帮助读者更好地理解和应用ASN.1。
2 ASN.1基本语法ASN.1定义了一种抽象语法用于描述数据结构,包括类型定义和值约束。
ASN.1的基本语法包括以下几个关键点:2.1 类型定义ASN.1通过类型定义来描述数据结构,包括基本类型(如整数、字符串等)、复合类型(如结构体、序列等)和引用类型(如引用其他类型)。
每种类型都有自己的标识符和约束条件。
2.2 值约束ASN.1可以通过值约束来限定数据的取值范围,如最小值、最大值、长度等。
这些约束条件可以在类型定义中进行声明,确保数据的合法性和完整性。
2.3 模块化ASN.1支持模块化的数据描述,可以将相关的类型定义和数值约束组织在一个模块中,便于管理和复用。
3 ASN.1编码规则ASN.1定义了一种通用的编码规则将数据结构转换为二进制格式进行传输,包括基本编码规则(BER)、压缩编码规则(CER)、XML编码规则(XER)等。
下面将介绍常用的BER编码规则:3.1 BER编码规则BER是ASN.1最基本的编码规则,它采用TLV (Type Length Value)的格式对数据进行编码,包括标签、长度和数值三个部分。
标签用来标识数据的类型,长度用来表示数值的长度,数值则是具体的数据内容。
3.2 编码过程在进行BER编码时,首先需要根据数据结构的类型定义和值约束来确定每个数据元素的标签和长度,然后将数值部分按照约定的规则进行编码,最后将标签、长度和数值按照TLV格式进行组合得到最终的二进制数据。
3.3 应用实例BER编码规则广泛应用于网络协议中,如SNMP、LDAP等,可以有效地将复杂的数据结构进行编码和解码,实现数据的可靠传输和解析。