
(完整版)抽象语法表示ASN.1填空题.doc
17页第二章 抽象语法表示 ASN.1[ 填空选择题 ]一、网络数据表示 P231 、 ASN.1( 抽象语法表示 ) :一种形式语言,提供统一的网络数据表示 ,通常用于定义 应用数据的抽象语法 和应用层协议数据单元 的结构 P232 、表示层 的功能 :提供统一的网络数据表示 P233 、表示实体 定义了应用数据的 抽象语法 4、传输语法 :把抽象数据变换成比特串的编码规则 P235 、抽象语法 用于定义 应用数据 ,它类似程序设计语言定义的抽象数据类型 P23二、 ASN.1 的基本概念 P24-311 、作为一种形式语言, ASN.1 有严格的BNF 定义 P242、在 ASN.1 中,每一个数据类型都有一个标签( tag ),标签有 类型 和值 P243、ASN.1 标签的类型 分为 4 种,分别是: 通用标签、应用标签、上下文专用标签和私有标签 P24通用标签 UNIVERSAL :由标准定义,适用于任何应用;应用标签 APPLICATION :是由某个具体应用定义的类型;上下文专用标签 CONTEXT SPECIFIC :这种标签在文本的一定范围(例如,一个结构struct )中适用;私有标签 PRIVATE :用户定义的标签。
4 、 ASN.1 定义的数据类型可分为 4 类:分别为 简单类型、构造类型、标签类型、其他类型这些数据类型的标签值均为通用标签 Universal ,有 20 多种 P24● 简单类型: 由单一成分构成的原子类型 ; ASN.1 定义的数据类型中除了序列SEQUENCE 和集合 SET 两种类型不属于简单类型外, 其他 10 多种均属于简单类型 P25● 构造类型 :由两种以上成分构成 的构造类型, 如序列 SEQUENCE 、集合 SET 类型 ● 标签类型:由已知类型定义的新类型;● 其他类型: 包括 CHOICE 和 ANY 两种类型 以下是 ASN.1 标签和类型关系图:6、枚举类型 ENUMERATED :是一个整数的表,每一个整数有一个名字枚举类型与整数类型区别在于 整数 类型可以进行算术运算而枚举类型不能进行任何算术运算,也即枚举类型的值只是用证书表示的一个符号,而不具有整数的性质P267、对象类型 OBJECTIDENTIFIER :泛指网络中传输的任何信息对象,其值是一个对象标识符,由一个整数序列组成,它惟一地标识一个对象P268、 NULL 类型:是空类型、没有值、只占用结构的一个位置。
P269、时间类型 :有 GeneralizedTime 类型和 UTC 类型两种: P261) GeneralizedTime时间类型格式:如值20000721182053.7,表示 2007年7月 21日,当地时间 18 点 20分 53.7 秒;2) UTC 时间类型格式:如值 20000721182053.7Z ,表示同样的时间10 、构造类型:有 序列 和集合 两种, 序列和集合的区别是:序列是有序的,而集合是无序的 P261)序列: 用 SEQUENCE 表示 不同类型元素 的序列 ,用 SEQUENCE OF 表示相同类型元素 的序列 2)集合: 用 SET 表示 不同类型 的集合 ,用 SET OF 表示 相同类型元素 的集合 11 、标签类型 :指应用或用户加在某个类型上的标签, 也即 由已知类型定义的新类型 P2712 、在一个结构(序列或集合)类型中,可用上下文专用标签如 [1] 、[2] 、[3] 类似来区分类型相同的元素例如, Parentage::=SET{ P28SubjectName [ 1 ] IMPLICIT IA5String,MotherName [ 2 ] IMPLICIT IA5String OPTIONAL,FatherName [ 3 ] IMLICIT IA5String OPTIONAL }在结构类型 Parentage 中,为这三个元素 SubjectName 、MotherName 、FatherName使用的标签[ 1 ]、[2 ]、[ 3 ]就是 上下文专用标签(简称上下文标签) 。
13 、关键字 IMPLICIT (隐含)和 EXPLICIT (明示):标签类型可以是隐含的或明示的,两者区别: P281 )隐含标签 的语义是用新标签替换老标签, 编码时只编码新标签 2 )明示标签类型 是把基类型作为惟一元素的构造类型, 在编码时,新老标签都要编码 14 、其他类型 : CHOICE 和 ANY 类型是两个没有标签 的类型 ,因为它们的值是未定的,而且类型也是未定的从而得知在 ASN.1 中,并不是每个数据类型 (包括 CHOICE 和 ANY )都有标签 )当这种类型的变量被赋值时, 它们的类型和标签才确定, 可以说标签是运行时间确定的 P281 )CHOICE 是可选类型的一个表,仅其中一个类型可以被采用,产生一个值,这些成分类型是已知的,但是在定义时尚未确定2 ) ANY 类型:表示任意类型的任意值,与 CHOICE 类型不同之处在于实际出现的类型也是未知的,15 、子类型 :是由限制父类型的值集合而导出的类型,所以子类型的值集合是父类型的子集产生子类型的方法 有单个值、包含子类型、值区间、可用字符、限制大小和内部子类型6种方法其中P28-301)值区间方法只能 应用于 整数和实数类型 ,指出子类型可取值的区间 。
2)可用字符方法只 能用于 字符串类型 ,限制可使用的字符集3)限制大小方法 可对 5 种类型(比特串类型、 字节串类型、 字符串类型、 序列和集合类型)限制其规模大小(如限制比特串、字节串、字符串的长度,限制序列或集合的元素个数)4)内部子类型方法可用于序列、集合和CHOICE类型简答、论述题集三、基本编码规则 P32-341、基本编码规则BER:把 ASN.1 表示的抽象类型值 编码为 字节串 这种 字节串的结构 为类型—长度—值 ,简称 TLV (Type-Length-Value),而值部分 value 可递归地再编码为TLV结构 ,如图所示: P321)第一个字节(8 位)为类型 TYPE ,用来表示 ASN.1 类型或用户定义的类型这个字节的前两位用来区分4 种标签 (00 为通用标签、 01为应用标签, 10 位上下文专用标签、 11为私有标签);第三位用 0 或 1 来区分简单类型还是构造类型;剩余 5 位用来表示标签值,如果 标签的值大于30,则这 5 位为全1,标签值表示在后续字节中2)第二个字节(8 位)为长度 length,是指描述值部分 value 所占用的字节个数。
3) 第三个字节( 8 位)为值 value ,表示该数据本身大小,也即数据大小的二进制表示2 、编码实例: P32-34(1 )布尔类型有两个值 FALSE 和 TRUE , FALSE 编码为 01 01 00 ;TRUE 编码为 01 01FF( 2 )十进制数 256 的编码为 02 02 01 00( 3 )NULL 类型编码 : 05 00(4 )字节串 ACE 可编码为 :04 02 AC E0,比特串 10101 可编码为 03 02 03 A8( 5 ) 序 列 类 型 SEQUENCE{madeofwoodBOOLEAN,lengthINTEGER}的 值{ madeof-wood TRUE,length 62}编码为 为 30 06 01 01 FF 02 01 3E(6 )Password::=[APPLICATION 27]OCTET STRING 的值“Sesame ”编码为 7B08 040653 65 73 61 6D65(7) Password::= [ APPLICATION 27] IMPLICIT OCTET STRING 的值“ Sesame ”编码为5B 06 53 65 7361 6D 65四、 ASN.1 宏定义 P35-381 、 ASN.1 提供了 宏定义 设施,可用于扩充语法,定义 新的类型和值 。
P352 、 ASN.1 中的模块 类似 C 语言中的 结构 ,用于定义 一个抽象数据类型 P353 、宏表示: ASN.1 提供的一种表示机制,用于定义宏 P364、宏定义 :用宏表示定义的一个宏 ,代表一个宏实例的集合P365、宏实例 :用具体的值 代替 宏定义中变量 而产生的实例 ,代表一中具体的类型 P366、宏定义 由类型表示 (TYPE NOTATION) 、值表示 (VALUENOTATION) 和支持产生式 3部分组成 P377、宏定义的主要作用 :宏定义可以看做是类型的类型 ,或者说是超类型, 也可以把宏定看做是 类型的模板 P37[ 简答题:第二章抽象与法表示 ASN.1]1 、什么是 ASN.1 ? P23抽象语法表示 ASN.1 是一种形式语言,它提供统一的网络数据表示 ,通常用于定义 应用数据的抽象语法 和应用层协议数据单元 的结构在网络管理中, 无论是 OSI 的管理信息结构,或是 SNMP 管理信息库,都是用 ASN.1 定义的2 、 表示层的功能是什么?抽象语法和传输语法各有什么作用?P23答:表示层的功能 :提供统一的网络数据表示。












