抽象语法表示ASN.1 填空题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章抽象语法表示ASN.1
[填空选择题]
1:一种形式语言,提供统一的网络数据表示,通常用于定义应用数据的抽象语法和应用层协议数据单元的结构。P23
2、表示层的功能:提供统一的网络数据表示。P23
5、抽象语法用于定义应用数据,它类似程序设计语言定义的抽象数据类型。P23
二、ASN.1的基本概念P24-31
1、作为一种形式语言,ASN.1有严格的BNF定义。P24
P24
●通用标签UNIVERSAL:由标准定义,适用于任何应用;
●应用标签APPLICATION:是由某个具体应用定义的类型;
●上下文专用标签CONTEXT SPECIFIC:这种标签在文本的一定范围(例如,一个结构
struct)中适用;
●私有标签PRIVATE:用户定义的标签。
4
型。这些数据类型的标签值均为通用标签Universal,有20多种。P24
●由单一成分构成的原子类型;ASN.1定义的数据类型中除了序列
SEQUENCE和集合SET两种类型不属于简单类型外,其他10多种均属
于简单类型。P25
●
标签类型:由已知类型定义的新类型;
包括CHOICE和ANY两种类型。
以下是ASN.1标签和类型关系图:
6、枚举类型ENUMERATED:是一个整数的表,每一个整数有一个名字。枚举类型与整数类型区别在于整数类型可以进行算术运算而枚举类型不能进行任何算术运算,也即枚举类型的值只是用证书表示的一个符号,而不具有整数的性质。P26
7、对象类型OBJECT IDENTIFIER:泛指网络中传输的任何信息对象,其值是一个对象标识符,由一个整数序列组成,它惟一地标识一个对象。P26
8、NULL类型:是空类型、没有值、只占用结构的一个位置。P26
9、时间类型:有GeneralizedTime类型和UTC类型两种:P26
1)GeneralizedTime时间类型格式:如值20000721182053.7,表示2007年7月21日,当地时间18点20分53.7秒;
2)UTC时间类型格式:如值20000721182053.7Z,表示同样的时间。
10
11指应用或用户加在某个类型上的标签,也即由已知类型定义的新类型。P27 12、在一个结构(序列或集合)类型中,可用上下文专用标签如[1]、[2]、[3]类似来区分类型相同的元素。例如,Parentage::=SET{ P28
SubjectName[1]IMPLICIT IA5String,
MotherName[2]IMPLICIT IA5String OPTIONAL,
FatherName[3]IMLICIT IA5String OPTIONAL }
在结构类型Parentage中,为这三个元素SubjectName、MotherName、FatherName
13、关键字IMPLICIT(隐含)和EXPLICIT(明示):标签类型可以是隐含的或明示的,两者区别:P28
1)隐含标签的语义是用新标签替换老标签,编码时只编码新标签。
2)明示标签类型是把基类型作为惟一元素的构造类型,在编码时,新老标签都要编码。
14、其他类型
而且类型也是未定的。(从而得知在ASN.1中,并不是每个数据类型(包括CHOICE和ANY)都有标签)当这种类型的变量被赋值时,它们的类型和标签才确定,可以说标签是运行时间确定的。P28
1)CHOICE是可选类型的一个表,仅其中一个类型可以被采用,产生一个值,这些成分类型是已知的,但是在定义时尚未确定。
2)ANY类型:表示任意类型的任意值,与CHOICE类型不同之处在于实际出现的类型也是未知的,
15、子类型:是由限制父类型的值集合而导出的类型,所以子类型的值集合是父类型的子集。产生子类型的方法有单个值、包含子类型、值区间、可用字符、限制大小和内部子类型6种方法。其中P28-30
。
2。
3)限制大小方法可对5种类型(比特串类型、字节串类型、字符串类型、序列和集合类型)限制其规模大小(如限制比特串、字节串、字符串的长度,限制序列或集合的元素个数)。4)内部子类型方法可用于序列、集合和CHOICE类型。
三、基本编码规则P32-34
value可递归地再编码为TLV 结构,如图所示:P32
1)第一个字节(8位)为类型TYPE,用来表示ASN.1类型或用户定义的类型。这个字节的前两位用来区分4种标签(00为通用标签、01为应用标签,10位上下文专用标签、11
5位用来表示标签值,
2)第二个字节(8位)为长度length,是指描述值部分value所占用的字节个数。
3) 第三个字节(8位)为值value,表示该数据本身大小,也即数据大小的二进制表示。
2、编码实例:P32-34
(1)布尔类型有两个值FALSE和TRUE,FALSE编码为01 01 00;TRUE编码为01 01 FF
(2)十进制数256的编码为02 02 01 00
(3)NULL类型编码:05 00
(4,比特串10101可编码为03 02 03 A8(5)序列类型SEQUENCE{madeofwood BOOLEAN,length INTEGER}的值{ madeof-wood TRUE,length 62}编码为为30 06 01 01 FF 02 01 3E
(6)Password::=[APPLICATION 27]OCTET STRING的值“Sesame”编码为7B 08 04 06 53 65 73 61 6D 65
(7)Password::=[APPLICATION 27]IMPLICIT OCTET STRING的值“Sesame”编码为5B 06 53 65 73 61 6D 65
四、ASN.1宏定义P35-38
1、ASN.1提供了宏定义设施,可用于扩充语法,定义新的类型和值。P35
2、ASN.1中的模块类似C语言中的结构,用于定义一个抽象数据类型。P35
3、宏表示:ASN.1提供的一种表示机制,用于定义宏。P36