第2章抽象语法表示ASN1
第二章 抽象语法表示ASN

第二章抽象语法表示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编码规则详解最

国际标准组织(ISO – International Organization for Standardization)于 1946 年 在美国成立,其负责制定众多领域的国际标准;但除电气、电子和电子工艺领域外,这些主要是 IEC(International Electrotechnical Commission)负责。
些组织可以参加讨论,提出议案,但不能参加投票。
Figure 1-5 ISO 组织结构 如 Figure 1-5 所示,ISO 共分为 172 个技术委员会 Technical Committee (TC)负责相应 标准化领域。 所有议题都在子委员会 SubCommittees 中共享,Subcommittee 又分为工作组 Working Groups(WG)。 到 1987 年,著名的 OSI 标准就是 TC97 的成果,称之为“Telecommunications and Information Exchange Between Systems”。在 1987 年,ISO 和 IEC 两个标准化组织一致认为都应当关注信 息技术 Information Technology,因此成立了一个联合技术委员会称为 JTC1。JTC1 的秘书处由 ANSI 负责。
UNIVERSAL 8 外部类型和类型实例 UNIVERSAL 9 实数类型 UNIVERSAL 10 枚举类型 UNIVERSAL 11 嵌入的 pdv 类型 UNIVERSAL 12 UTF8 字符串类型 UNIVERSAL 13 相关对象标识符 类型 UNIVERSAL 14-15 保留给本建议的以后版本和国际标准使用 UNIVERSAL 16 序列和类型序列 UNIVERSAL 17 集合和类型的集合 UNIVERSAL 18-22, 25-30 字符串 类型 UNIVERSAL 23-24 时间 类型 UNIVERSAL 31-... 保留给本建议以外的类型和国际标准使用 ASN.1 还能够定义如下的数据结构类型: 结构 ( SEQUENCE ), 列表 ( SEQUENCE OF ), 类型选择 ( CHOICE ), 等等
ASN.1笔记——语法规则与类型概述

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)抽象语法:定义了数据的常⽤结构(包括不同的数据类型),并且建⽴了和应⽤层对话所⽤的构架。
ASN1讲解ppt课件

DERInputStream dis = new DERInputStream(new FileInputStream(“xxx”)); DERObject derObj = dis.readObject();
DEROutputStream dos = new DEROputStream(new FileOutputStream(“xxx”)); dos.writeObject(derObject);
30
82 02 51 30 82 01 BA A0 03 02 01...
13
ASN.1基本概念和语法
► OID = Object Identifier
▪ 表示一个诸如算法,属性类型或注册机构对象定义的一 个整数序列
▪ OID的值由注册机构来赋予,每个注册机构负责定义一 个特定的序列开头的所属序列
▪ 提示 ... 02 01 02 ...
►DERInteger
DERInteger version = new DERInteger(new BigInteger(2));
16
ASN.1编码介绍
► OID编码示例
pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) 1 }
▪ 提示 如果选择certificate项,则Identifier octet项为30 ▪ 提示 如果选择extendedCertificate项,则identifier octet项是A0
24
ASN.1编码介绍
►其他常用对象
▪ DERObject implements DEREncodable ▪ DERInputStream / ASN1InputStream ▪ DEROutputStream / ASN1OutputStream
抽象语法表示asn.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:泛指网络中传输的任何信息对象,其值是一个对象标识符,由一个整数序列组成,它惟一地标识一个对象。
asn1语法 list

asn1语法listASN.1(Abstract Syntax Notation One)是一种用于描述数据结构和编码规则的标准化语法,通常用于网络通信和数据交换领域。
ASN.1语法中有一些常见的数据类型,其中包括列表(List)。
ASN.1中的列表可以用来表示一组相同或不同类型的数据元素。
以下是ASN.1语法中列表的一些示例:1.SEQUENCE OF:表示一个序列,其中包含一系列数据元素。
每个数据元素可以是相同类型或不同类型的。
```asn1StudentList::=SEQUENCE OF Student```上述示例中,StudentList表示一个学生对象的列表,其中每个学生是一个Student类型的数据元素。
2.SET OF:类似于SEQUENCE OF,但是不要求数据元素的顺序。
它表示一个集合,其中包含一系列数据元素。
```asn1EmployeeSet::=SET OF Employee```EmployeeSet表示一个雇员对象的集合,其中每个雇员是一个Employee类型的数据元素。
3.CHOICE:CHOICE数据类型表示在列表中选择一个特定类型的数据元素。
```asn1PaymentMethod::=CHOICE{creditCard[0]CreditCard,bankTransfer[1]BankTransfer,cash[2]NULL}```PaymentMethod表示支付方式,可以是CreditCard、BankTransfer、或Cash中的一个。
ASN.1语法允许你根据需要定义不同类型的列表,以便在通信中有效地传输和解释数据。
这只是ASN.1语法中列表的一些示例,你可以根据具体需求定义更多的列表类型。
2备用抽象语法表示ASN.1

2024年7月2日4时45分
8
第二章 抽象语法表示ASN.1
ASN.1数据类型-简单类型
▪ 基本类型包括BOOL、INTEGER、REAL、BIT STRING、OCTET STRING、ENUMERATED、 OBJECT IDENTIFIER、NULL等。
➢ BIT STRING 是以比特为单位的二进制字符串; ➢ OCTET STRING是以字节为单位的字符串。 ➢ ENUMERATED是一个定义变量值的集合,变量的值
age
INTEGER
} 赋值:
johnny Description ::=
{
surname
"Smith",
first-name
"John",
age
40
}
2024年7月2日4时45分
17
第二章 抽象语法表示ASN.1
SEQUENCE OF
▪ SEQUENCE OF所有成员都是一个类型, 数目不定。相当于C语言中的数组。
➢ 应用标签:用关键字APPLICATION表示,是应用程序 组织自定义由某个具体应用定义的类型其;
➢ 如:
Name ::= [APPLICATION 0] SEQUENCE
{
initialname IA5String;
familyName IA5String;
} ➢ 上下文专用标签:这种标签在文本的一定范围(例如一
▪ CHOICE是可选类型的一个表,仅其中一个类型 可以被采用,产生一个值。CHOICE类型定义为
➢ ChoiceType::= CHOICE{AlternativeTypeList}
➢ AlternativeTypeList::= NamedType | AlternativeTypeList, NamedType
asn.1基本语法和编码规则

序号主题内容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等,可以有效地将复杂的数据结构进行编码和解码,实现数据的可靠传输和解析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这些编码规则描述了如何对 ASN.1 中定义的数值进行编码,以便用于传输,而不
管计算机、编程语言或它在应用程序中如何表示等因素。
第2章抽象语法表示ASN1
4
第二章 抽象语法表示ASN.1
2.1
网络数据表示
端系统A 用户
端系统B 用户
用户表示映像
用户表示映像
本地存储 本地映像 应用实体
抽象语法 ASN.1
名/字段名
第2章抽象语法表示ASN1
7
第二章 抽象语法表示ASN.1
2.2
ASN.1的基本概念
ASN.1术语归纳(做好笔记)
1.抽象语法(Abstract Syntax)——描述通用数据结构;允许定义数据类型和值
2.数据类型(Data Type)——值的集合,可以是简单类型或结构类型;可以对数据类型命名
(5) ASN.1定义的内部类型全部用大写字母表示;
(6) 关键字全部用大写开始,以一对短线或行尾结束。
ASN.1的特点? 表达简单和复杂类型的能力、可对类型根据大小及(或)数值进行约束
、也可以施加更强的约束、字段可标记为 OPTIONAL、大写开头表示类型名、小写开头的表示变量
(6) 关键字全部用大写字母表示;
(7) 注释以一对短线(- -)开始,以一对短线或行尾结束。
ASN.1的特点? 表达简单和复杂类型的能力、可对类型根据大小及(或)数值进行约束
、也可以施加更强的约束、字段可标记为 OPTIONAL、大写开头表示类型名、小写开头的表示变量
名/字段名
第2章抽象语法表示ASN1
这些数据类型可分为4第大2类章抽:象简语单法类表示型A、SN构1 造类型、标签类型、其它类型
10
第二章 抽象语法表示ASN.1
2.2.1 抽象数据类型
表2.1 ASN.1定义的通用类型 (部分)
UNIVERSAL 16
SEQUENCE, SEQUENCE OF 序 列
应用实体
本地存储 本地映像
编码规则
编码规则
表示实体
传输语法 BER
表示实体
1.在互相通信的端 系统中至少有一个 应用实体和一个表 示实体。
2.把抽象数据变换 成比特串的编码规 则叫做传输语法。 如图2.1所示。
图2.1 关于信息表示的通信系统模型
第2章抽象语法表示ASN1
5
第二章 抽象语法表示ASN.1
ASN.1和特定的 ASN.1编码规则推进了结构化数据的传输,尤其是网络中应用程 序之间的结构化数据传输,它以一种独立于计算机架构和语言的方式来描述数据结 构。
ASN.1 取得成功的一个主要原因是它与几个标准化编码规则相关,如基本编码规 则(BER) -X.209 、规范编码规则(CER)、识别名编码规则(DER)、压缩编码规 则(PER)和 XER 编码规则(XER)。
3.编码(Encoding)
用于表示数据值的字节序列
4.编码规则(Encoding Rules)
给出从一种语法到另一种的映射方法
5.传输语法(Transfer Syntax)
位模式(Bits pattern)
描述数据是在传输时是如何表示的
第2章抽象语法表示ASN1
8
第二章 抽象语法表示ASN.1
2.2.1 抽象数据类型
在ASN.1中,每一个数据类型都有一个标签(Tag),标签有类型和值(见p25表2.1),数据 类型是由标签的类型和值惟一决定的,这种机制在数据编码时有用。标签的类型分为以下4种 :
● 通用标签-UNIVERSAL ● 应用标签-APPLICATION ● 上下文专用标签 ● 私有标签-PRIVATE
2.2
ASN.1的基本概念
ASN.1文本的书写规则,这些规则叫做文本约定:
(1)书写的布局是无效的,多个空格和空行等效于一个空格;
(2)用于表示值和字段的标识符、类型指针(类型名)和模块名由大小写字母、数字和短线组成;
(3) 标识符以小写字母开头;
(4) 类型指针和模块名以大写字母开头;
(5) ASN.1定义的内部类型全部用大写字母表示;
3.传输语法与BER.
第2章抽象语法表示ASN1
2
第二章 抽象语法表示ASN.1
体现什么思想?
和第S2章N抽M象P语协法议表示、A数SN据1 类型是什么关系?
3
第二章 抽象语法表示ASN.1
2.1
网络数据表示
在任何需要以数字方式发送信息的地方,ASN.1都可以发送各种形式的信息(声频 、视频、数据等等)。
6
第二章 抽象语法表示ASN.1
2.2
ASN.1的基本概念
ASN.1文本的书写规则,这些规则叫做文本约定:
(1)书写的布局是无效的,多个空格和空行等效于一个空格;
(2)用于表示值和字段的标识符、类型指针(类型名)和模块名由大小写字母、数字和短线组成;
(3) 标识符以小写字母开头;
(4) 类型指针和模块名以大写字母开头;
表2.1 ASN.1定义的通用类型 (部分)
类型 BOOLEAN IN T EG ER BIT ST RING OCT ET ST RING NULL OBJECT IDENTIFIER Object Descrip tor EX T ERN A L REAL ENUM ERATED 保留
值集合 T RUE, FALSE 正数、负数和零 0 个或多个比特组成的序列 0 个或多个字节组成的序列 空类型 对象标识符 对象描述符 外部文件定义的类型 所有实数 整数值的表,每个整数有一个名字 为 ISO 8824 保留
第2章抽象语法表示ASN1
9
第二章 抽象语法表示ASN.1
2.2.1 抽象数据类型
标签 UNIVERSAL 1 UNIVERSAL 2 UNIVERSAL 3 UNIVERSAL 4 UNIVERSAL 5 UNIVERSAL 6 UNIVERSAL 7 UNIVERSAL 8 UNIVERSAL 9 UNIVERSAL 10 UNIVERSAL 11~15
第2章抽象语法表示ASN1
第二章 抽象语法表示ASN.1
2.1 网络 数据表示 ? 2.2 ASN.1的基本概念 2.3 基本编码规则 2.4 ASN.1宏定义
第2章抽象语法表示ASN1
1
第二章 抽象语法表示ASN.1
1.网络系统的发展,怎么进行异种 (异构)信 息间的通信?
2.为什么用ASN.1?现有的数据结构表达方式 不可以吗?