资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
第二章 抽象语法表示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种,分别是:通用标签、应用标签、上下文专用标签和私有标签。P24l 通用标签UNIVERSAL:由标准定义,适用于任何应用;l 应用标签APPLICATION:是由某个具体应用定义的类型;l 上下文专用标签CONTEXT SPECIFIC:这种标签在文本的一定范围(例如,一个结构struct)中适用;l 私有标签PRIVATE:用户定义的标签。4、ASN.1定义的数据类型可分为4类:分别为简单类型、构造类型、标签类型、其他类型。这些数据类型的标签值均为通用标签Universal,有20多种。P24 简单类型:由单一成分构成的原子类型;ASN.1定义的数据类型中除了序列SEQUENCE和集合SET两种类型不属于简单类型外,其他10多种均属于简单类型。P25 构造类型:由两种以上成分构成的构造类型,如序列SEQUENCE、集合SET类型。 标签类型:由已知类型定义的新类型; 其他类型:包括CHOICE和ANY两种类型。 以下是ASN.1标签和类型关系图:6、枚举类型ENUMERATED:是一个整数的表,每一个整数有一个名字。枚举类型与整数类型区别在于整数类型可以进行算术运算而枚举类型不能进行任何算术运算,也即枚举类型的值只是用证书表示的一个符号,而不具有整数的性质。P267、对象类型OBJECT IDENTIFIER:泛指网络中传输的任何信息对象,其值是一个对象标识符,由一个整数序列组成,它惟一地标识一个对象。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 P28SubjectName1 IMPLICIT IA5String,MotherName2 IMPLICIT IA5String OPTIONAL,FatherName3 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 01 FF(2)十进制数256的编码为 02 02 01 00(3)NULL类型编码:05 00(4)字节串ACE可编码为 :04 02 AC E0 ,比特串10101可编码为03 02 03 A8(5)序列类型SEQUENCEmadeofwood BOOLEAN,length INTEGER的值 madeof-wood TRUE,length 62编码为为 30 06 01 01 FF 02 01 3E(6)Password:=APPLICATION 27OCTET STRING的值“Sesame”编码为7B 08 04 06 53 65 73 61 6D 65(7)Password:=APPLICATION 27IMPLICIT OCTET STRING的值“Sesame”编码为5B 06 53 65 73 61 6D 65 四、ASN.1宏定义P35-381、ASN.1提供了宏定义设施,可用于扩充语法,定义新的类型和值。P352、ASN.1中的模块类似C语言中的结构,用于定义一个抽象数据类型。P353、宏表示:ASN.1提供的一种表示机制,用于定义宏。P364、宏定义:用宏表示定义的一个宏,代表一个宏实例的集合。P365、宏实例:用具体的值代替宏定义中变量而产生的实例,代表一中具体的类型。P366、宏定义由类型表示(TYPE NOTATION)、值表示(VALUE NOTATION)和支持产生式3部分组成。P377、宏定义的主要作用:宏定义可以看做是类型的类型,或者说是超类型,也可以把宏定看做是类型的模板。P37简答题:第二章抽象与法表示ASN.11、什么是ASN.1?P23抽象语法表示ASN.1是一种形式语言,它提供统一的网络数据表示,通常用于定义应用数据的抽象语法和应用层协议数据单元的结构。在网络管理中,无论是OSI的管理信息结构,或是SNMP管理信息库,都是用ASN.1定义的。2、 表示层的功能是什么?抽象语法和传输语法各有什么作用?P23答:表示层的功能:提供统一的网络数据表示。抽象语法是一种形式语言,提供统一的网络数据表示,通常用于定义应用数据的抽象语法和应用层协议数据单元的结构。传输语法是一种编码规则,作用是把抽象数据变换成比特串在网络中传送。3、产生子类型的方法P28-301) 单个值:这种方法就是列出子类型可取的各个值。2)包含子类型:使用关键字INCLUDES说明被定义的类型包含已有类型的所有值。3)值区间:这种方法只能应用于整数和实数类型,指出子类型可取值的区间。4)可用字符:这种方法只能用于字符串类型,限制可使用的字符集。5)限制大小:可以对5种类型限制其规模大小,例如限制比特串、字节串或字符串的长度,限制构成序列或集合的元素(同类型)个数等。6)内部子类型:这种方法可用于序列、集合和CHOICE类型。这是一种很复杂的子类型关系4、简述ASN.1的基本编码规则P32基本编码规则BER:把ASN.1表示的抽象类型值编码为字节串。这种字节串的结构为类型长度值,简称TLV(Type-Length-Value)。编成的第一个字节(8位)为类型TYPE,用来表示ASN.1类型或用户定义的类型。这个字节的前两位用来区分4种标签;第三位区分简单类型还是构造类型;剩余5位用来表示标签值,如果标签的值大于30,则这5位为全1,标签值表示在后续字节中。5、基本编码规则中哪两种字段需要扩充?其扩充的方法是什么?P34(2007年1月)答:一是当标签值大于30时类型字节需要扩充,二是当值部分大于一个字节的表示范围时长度字节需要扩充。对标签值的扩充方法为:用5位表示030的编码,当标签值大于等于30时,这5位为全1,作为转义符,实际的标签值编码表示在后续字节中,后续字节的左边第一位表示是否为最后一个扩充字节,只有最后一个扩充自己的左边第一位置0,其余扩充字节左边第一位置1。对长度字节的扩充方为:小于127的数用长度字节的右边7位表示,最左边的一位置0,大于等于127的数用后续若干字节表示,原来的长度字节第一位置1,其余7位知名后续用于求长度的字节数。6、宏定义有哪些部分组成?这些部分都由什么范式说明?宏定义的主要用处是什么?P37宏定义由3个部分组成:(2) 类型表示(TYPE NOTATION) (3) 值表示(VALUE NOTATION)(4) 支持产生式。这三个部分都由Backs-Naur范式说明。宏定义的主要作用是:宏定义可以看做是类型的类型,或者说是超类型,也可以把宏定看做是类型的模板,可以用这种模板制造出形式相似,语义相关的多种数据类型。 7、为什么要用宏定义?怎样用宏定义得到宏实例?P37ASN.1宏提供了创建“模板”的功能,这也是引入ASN.1宏的原因。ASN.1宏使得ASN.1语言具有良好的扩充性。 当用一个具体的值代替宏定义中的变量或参数时就产生了宏实例,它表示一个实际的ASN.1类型(称为返回的类型),并且规定了该类型可取的值的集合(称为返回的值)。可见宏定义可以看做是类型的类型,或者说是超类型。综合题:第二章抽象语法表示ASN.11、用ASN.1
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号