抽象语法表示ASN.1 填空题_第1页
抽象语法表示ASN.1 填空题_第2页
抽象语法表示ASN.1 填空题_第3页
抽象语法表示ASN.1 填空题_第4页
抽象语法表示ASN.1 填空题_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.第二章抽象语法表示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:是由*个具体应用定义的类型;上下文专用标签CONTE*TSPECIFIC:这种标签在文本的一定围〔例如,一个构造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时间类型格式:如值053.7,表示2007年7月21日,当地时间18点20分53.7秒;2〕UTC时间类型格式:如值053.7Z,表示同样的时间。10、构造类型:有序列和集合两种,序列和集合的区别是:序列是有序的,而集合是无序的。P261〕序列:用SEQUENCE表示不同类型元素的序列,用SEQUENCEOF表示一样类型元素的序列。2〕集合:用SET表示不同类型的集合,用SETOF表示一样类型元素的集合。11、标签类型:指应用或用户加在*个类型上的标签,也即由类型定义的新类型。P2712、在一个构造〔序列或集合〕类型中,可用上下文专用标签如[1]、[2]、[3]类似来区分类型一样的元素。例如,Parentage::=SET{P28SubjectName[1]IMPLICITIA5String,MotherName[2]IMPLICITIA5StringOPTIONAL,FatherName[3]IMLICITIA5StringOPTIONAL}在构造类型Parentage中,为这三个元素SubjectName、MotherName、FatherName使用的标签[1]、[2]、[3]就是上下文专用标签〔简称上下文标签〕。13、关键字IMPLICIT〔隐含〕和E*PLICIT〔明示〕:标签类型可以是隐含的或明示的,两者区别: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编码为010100;TRUE编码为0101FF〔2〕十进制数256的编码为02020100〔3〕NULL类型编码:0500〔4〕字节串ACE可编码为:0402ACE0,比特串10101可编码为030203A8〔5〕序列类型SEQUENCE{madeofwoodBOOLEAN,lengthINTEGER}的值{madeof-woodTRUE,length62}编码为为30060101FF02013E〔6〕Password::=[APPLICATION27]OCTETSTRING的值"Sesame〞编码为7B080406536573616D65〔7〕Password::=[APPLICATION27]IMPLICITOCTETSTRING的值"Sesame〞编码为5B06536573616D65四、ASN.1宏定义P35-381、ASN.1提供了宏定义设施,可用于扩大语法,定义新的类型和值。P352、ASN.1中的模块类似C语言中的构造,用于定义一个抽象数据类型。P353、宏表示:ASN.1提供的一种表示机制,用于定义宏。P364、宏定义:用宏表示定义的一个宏,代表一个宏实例的集合。P365、宏实例:用具体的值代替宏定义中变量而产生的实例,代表一中具体的类型。P366、宏定义由类型表示(TYPENOTATION)、值表示(VALUENOTATION)和支持产生式3局部组成。P377、宏定义的主要作用:宏定义可以看做是类型的类型,或者说是超类型,也可以把宏定看做是类型的模板。P37[简答题:第二章抽象与法表示ASN.1]1、什么是ASN.1?P23抽象语法表示ASN.1是一种形式语言,它提供统一的网络数据表示,通常用于定义应用数据的抽象语法和应用层协议数据单元的构造。在网络管理中,无论是OSI的管理信息构造,或是SNMP管理信息库,都是用ASN.1定义的。表示层的功能是什么?抽象语法和传输语法各有什么作用?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位表示0~30的编码,当标签值大于等于30时,这5位为全1,作为转义符,实际的标签值编码表示在后续字节中,后续字节的左边第一位表示是否为最后一个扩大字节,只有最后一个扩大自己的左边第一位置0,其余扩大字节左边第一位置1。对长度字节的扩大方为:小于127的数用长度字节的右边7位表示,最左边的一位置0,大于等于127的数用后续假设干字节表示,原来的长度字节第一位置1,其余7位知名后续用于求长度的字节数。6、宏定义有哪些局部组成?这些局部都由什么式说明?宏定义的主要用处是什么?P37宏定义由3个局部组成:类型表示(TYPENOTATION)值表示(VALUENOTATION)支持产生式。这三个局部都由Backs-Naur式说明。宏定义的主要作用是:宏定义可以看做是类型的类型,或者说是超类型,也可以把宏定看做是类型的模板,可以用这种模板制造出形式相似,语义相关的多种数据类型。7、为什么要用宏定义?怎样用宏定义得到宏实例?P37语言具有良好的扩大性。当用一个具体的值代替宏定义中的变量或参数时就产生了宏实例,它表示一个实际的ASN.1类型〔称为返回的类型〕,并且规定了该类型可取的值的集合〔称为返回的值〕。可见宏定义可以看做是类型的类型,或者说是超类型。[综合题:第二章抽象语法表示ASN.1]1、用ASN.1的根本编码规则对下面的数据进展编码。P32-34〔2009年1月、2008年1月〕〔1〕布尔类型的两个值FALSE〔0*00〕,TRUE〔0*FF〕;〔2〕比特串10101;〔3〕NULL类型;〔4〕序列类型SEQUENCE{madeofwoodBOOLEAN,lengthINTEGER}的值{madeof-woodTRUE,length62};〔5〕Password::=[APPLICATION27]OCTETSTRING的值"Sesame〞;〔6〕Password::=[APPLICATION48]INTEGER的值为十进制256;相应的类型及标签为:BOOLEAN:UNIVERSAL1;INTEGER:UNIVERSAL2;OCTETSTRING:UNIVERSAL4;NULL:UNIVERSAL5;"Sesame〞的ASCII值〔十六进制〕为:536573616D65。答:1)FALSE编码:010100,TRUE编码为:0101FF2)比特串10101编码为:030203A83〕NULL类型编码:05004)可编码为30060101FF02013E按照序列的构造可展开如下:SeqLenVal3006BoolLenVal0101FFIntLenVal02013E5〕编码为:7B080406536573616D65展开后为:AppLenVal7B08OctLenVal0406536573616D65Sesame6〕可编码为7F30050202010000[分析]对于integer256数值可编码为0202010000〔与此题第二问题〕但[APPLICATION48]是属于应用标签并且标签值为48(因为48>30,需要对标签值需要扩大,所以第一字节类型TYPE编码位7F30),展开后为:AppLenVal7F3005IntLenVal0202010000即对应的二进制表示形式为:01111111001100000000010100000010000000100000000100000000000000002、用根本编码规则对长度字段L编码:L=18,L=180,L=1044。P38[解答]L=18,二进制形式的编码:00010010L=180,二进制形式编码:1000000110110100L=1044,二进制形式编码:100000100000010000010100[解析]对于长度字节的扩大方法是:小于127的数用长度字节的右边7位表示,最左边的一位置0。大于等于127的数用后续假设干字节来表示,原来的长度字节第一位置1,其余7位指明后续用于表示长度的字节数,即采用下面的形式:00000000〔0~126〕…011111111*******(*******指明后续用于表示长度的字节数)如255可表示为1000000111111111。3、用根本编码对数据编码:标签值=1011001010,长度=255。P38[解答]二进制形式的编码:0001111110000101010010101000000111111111[解析]当标签号不大于30时,Tag只在一个八位组中编码;当Tag大于30时,则Tag在多个八位组中编码。在多个八位组中编码时,第一个八位组后5位全部为1,其余的后继八位组最高位为1表示后续还有,最后一个八位组最高位为0表示Tag完毕。采用下面的规则使用不同的类型编码:〔1〕假设编码是简单类型,则使用确定格式。短格式:长度字段仅一个八位位组,最高位为0。长格式:长度字段包含多个八位位组,第1个字节最高位为1,其余7位表示后面有多少字节来表示值字段的长度。例如,25510可表示为1000000111111111。[历年真题题集]一、选择题1、计算机网络管理中提供统一的网络数据表示的形式语言是()P23〔2008年1月、2006年10月〕A.ASN.1 B.Java C.C语言D.ASP2、ASN.1中每一个数据类型都有一个标签,标签的类型有〔〕P24〔2006年10月〕A.性能标签B.简单标签C.构造标签D.私有标签3、在下面集合中有三个元素,一个是本人名字,一个是父亲名字,另一个是母亲名字。Parentage::=SET{SubjectName[1]IMPLICITIA5String,MotherName[2]IMPLICITIA5StringOPTIONAL,FatherName[3]IMLICITIA5StringOPTIONAL}为这三个元素使用的标签[1][2][3]是()P28〔2007年10月〕A.通用标签B.应用标签C.上下文标签D.私有标签4.在ASN.1的数据类型分类中由类型定义的新类型是()P24〔2009年1月、2008年1月〕A.简单类型B.构造类型C.标签类型D.其它类型5、以下对ASN.1的数据类型描述正确的选项是〔〕P24-28〔2010年1月、2008年10月〕A.每个数据类型〔包括CHOICE和ANY〕都有标签B.分别用SEQUENCE和SEQUENCEOF表示一样类型和不同类型元素的序列C.分别用SET和SETOF表示不同类型和一样类型元素的集合D.隐含标签的语义是在一个根本类型上加上新标签,从而导出一个新类型。以下对ASN.1的简单数据类型的描述正确的选项是〔〕P24-28〔2008年1月〕A.简单类型就是BOOLEAN、INTEGER、BITSTRING、OCTETSTRING、REAL和ENUMERATED这些根本类型。B.枚举类型ENUMERATED也能进展任何算术运算。是UTCTime类型的一个值,表示2000年7月21日,当地时间18点20分53.7秒。是GeneralizedTime类型的一个值,表示2000年7月21日,当地时间18点20分53.7秒。7、假设"2007年8月15日,当地时间21点57分43.5秒〞用GeneralizedTime类型可表示为〔〕,用UTC时间类型可表示为〔〕P26〔2009年10月〕,"2006年8月1日,当地时间21点57分43.5秒〞用GeneralizedTime类型可表示为〔〕P26〔2007年1月〕8、在ASN.1子类型的描述中,值区间这种方法只能应用于〔〕,可用字符这种方法只能应用于〔〕,部子类型可用于〔〕P29〔2008年1月〕A.整数和实数类型B.布尔类型C.字符串类型D.CHOICE类型9、根本编码规则中的第一个字节表示ASN.1标签类型或用户定义的数据类型,用于表示用户定义的数据类型的二进制位是〔〕P32〔2006年10月〕A.第1位B.第2位C.第3位D.第4、5、6、7、8位10、十进制数256的编码为〔〕P32〔2010年1月〕A.02020100 B.02010100C.01020100 D.02021111补:在ASN.1宏定义中,ASN.1中的模块类似C语言中的()P35〔2007年10月〕A.变量B.数据类型C.构造D.关键字二、填空题1、表示实体定义了应用数据的语法。P23〔2010年1月〕2、把抽象数据变换成比特串的编码规则叫做。P23〔2008年1月〕3、ASN.1标签的类型分为4种,分别是:通用标签、应用标签、和私有标签。P24〔2010年1月、2008年10月〕4、ASN.1定义的数据类型包括:简单类型、、标签类型、其他类型。P245、在ASN.1的定义里,构造类型有和两种,SEQUENCE是。P266、在ASN.1种,每个数据类型都有一个。P247、根本编码规则把ASN.1表示的抽象类型值编码为字节串,这种字节串的构造为。P32〔2006年10月〕8、根本编码规则可将字节串值ACE编码为。P32〔2007年1月〕三、简答题1、在ASN.1中产生子类型的方法有哪些?P28-30〔2010年1月〕产生子类型的方法有以下几种:1〕单个值:这种方法就是列出子类型可取的各个值。2〕包含子类型:关键字INCLUDES:说明被定义的类型包含了已有类型的所有的值。3〕值区间:这种方法只能应用于整数和实数类型,指出子类型可取值的区间。4〕可用字符:这种方法只能用于字符串类型,限制可使用的字符集。5〕限制大小:可以对5种类型限制其规模大小,例如限制比特串、字节串或字符串的长度,限制构成序列或集合的元素(同类型)个数等。6〕部子类型:这种方法可用于序列、集合和CHOICE类型。这是一种很复杂的子类型关系2、表示层的功能是什么?抽象语法和传输语法各有什么作用?P23表示层的功能:提供统一的网络数据表示。抽象语法是一种形式语言,提供统一的网络数据表示,通常用于定义应用数据的抽象语法和应用层协议数据单元的构造。传输语法是一种编码规则,作用是把抽象数据变换成比特串在网络中传送。3、根本编码规则中哪两种字段需要扩大?其扩大的方法是什么?P34〔2007年1月〕答:一是当标签值大于30时类型字节需要扩大,二是当值局部大于一个字节的表示围时长度字节需要扩大。对标签值的扩大方法为:用5位表示0~30的编码,当标签值大于等于30时,这5位为全1,作为转义符,实际的标签值编码表示在后续字节中,后续字节的左边第一位表示是否为最后一个扩大字节,只有最后一个扩大自己的左边第一位置0,其余扩大字节左边第一位置1。对长度字节的扩大方为:小于127的数用长度字节的右边7位表示,最左边的一位置0,大于等于127的数用后续假设干字节表示,原来的长度字节第一位置1,其余7位知名后续用于求长度的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论