《抽象语法表示》PPT课件.ppt
《《抽象语法表示》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《抽象语法表示》PPT课件.ppt(73页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第章 抽象语法表示ASN.1第章 抽象语法表示ASN.12.1 网络数据表示网络数据表示 2.2 ASN.1的基本概念的基本概念 2.3 基本编码规则基本编码规则 2.4 ASN.1宏定义宏定义 习题习题 第章 抽象语法表示ASN.1表示层的功能是提供统一的网络数据表示。在互相通信的端系统中至少有一个应用实体(例如FTP、TELNET、SNMP等)和一个表示实体(即ASN.1)。表示实体定义了应用数据的抽象语法,这种抽象语法类似于通常程序设计语言定义的抽象数据类型。应用协议按照预先定义的抽象语法构造协议数据单元,用于和对等系统的应用实体交换信息。表示实体则对应用层数据进行编码,将其转换成二进制
2、的比特串,例如把十进制数变成二进制数、把字符变成ASCII码等。比特串由下面的传输实体在网络中传送。把抽象数据变换成比特串的编码规则叫做传输语法。在各个端系统内部,应用数据被映像成本地的特殊形式,存储在磁盘上或显示在用户终端上,如图2.1所示。2.1 网络数据表示网络数据表示 第章 抽象语法表示ASN.1图2.1 关于信息表示的通信系统模型 第章 抽象语法表示ASN.1特别需要指出的是,这里提到的抽象语法是独立于任何编码技术的,只与应用有关。抽象语法要能满足应用的需要,能够定义应用需要的数据类型和表示这些类型的值。ASN.1是根据当前网络应用的需求制定的标准(CCITT X.208和ISO 8
3、824),也许随着网络应用的发展,还会开发出新的表示层标准。另外值得一提的是,对应一种抽象语法可以选择不止一种传输语法。对传输语法的基本要求是支持对应的抽象语法,另外还可以有其他一些属性,例如支持数据加密或压缩,或者两者都支持。第章 抽象语法表示ASN.12.2 ASN.1的基本概念的基本概念 作为一种形式语言,ASN.1有严格的BNF定义。我们不想全面研究它的BNF定义,而是自底向上地解释ASN.1基本概念,然后给出一个抽象数据类型的例子。下面列出ASN.1文本的书写规则,这些规则叫做文本约定(Lexical Conventions):(1)书写的布局是无效的,多个空格和空行等效于一个空格;
4、(2)用于表示值和字段的标识符、类型指针(类型名)和模块名由大小写字母、数字和短线(Hyphen)组成;第章 抽象语法表示ASN.1(3)标识符以小写字母开头;(4)类型指针和模块名以大写字母开头;(5)ASN.1定义的内部类型全部用大写字母表示;(6)关键字全部用大写字母表示;(7)注释以一对短线(-)开始,以一对短线或行尾结束。第章 抽象语法表示ASN.12.2.1 2.2.1 抽象数据类型抽象数据类型在ASN.1中,每一个数据类型都有一个标签(Tag),标签有类型和值(见表2.1),数据类型是由标签的类型和值惟一决定的,这种机制在数据编码时有用。标签的类型分为以下4种:通用标签:用关键字
5、UNIVERSAL表示,带有这种标签的数据类型是由标准定义的,适用于任何应用;应用标签:用关键字APPLICATION表示,是由某个具体应用定义的类型;上下文专用标签:这种标签在文本的一定范围(例如一个结构)中适用;第章 抽象语法表示ASN.1 私有标签:用关键字PRIVATE表示,这是用户定义的标签。ASN.1定义的数据类型有20多种,标签类型都是UNIVERSAL,如表2.1所示。这些数据类型可分为4大类。简单类型:由单一成分构成的原子类型;构造类型:由两种以上成分构成的构造类型;标签类型:由已知类型定义的新类型;其他类型:包括CHOICE和ANY两种类型。第章 抽象语法表示ASN.1表表
6、2.1 ASN.1定义的通用类型定义的通用类型 第章 抽象语法表示ASN.1表表2.1 ASN.1定义的通用类型定义的通用类型 第章 抽象语法表示ASN.11.1.简单类型简单类型 表2.1中除了UNIVERSAL 16和UNIVERSAL 17之外都是简单类型。这些类型的共同特点是可以直接定义它们的值的集合,可以把这些类型作为原子类型构造新的数据类型。简单类型还可以分为4组。第一组包括BOOLEAN、INTEGER、BIT STRING、OCTET STRING、REAL和ENUMERATED等。这一组可以叫做基本类型,它们的值已经在表2.1中列出了。需要说明的是,实数可以表示为科学计数法:
7、M BE 第章 抽象语法表示ASN.1其中尾数M和指数E可以取任何正/负整数值,基数B可取2或10。枚举类型ENUMERATED是一个整数的表,每一个整数有一个名字。与此类似的是,对于某些整数类型的值也可以定义一个名字,但这两种类型是有区别的。对整数可以进行算术运算,但对枚举类型却不能进行任何算术运算,也就是说,枚举类型的值只是用整数表示的一个符号,而不具有整数的性质。下面是定义枚举类型和定义整数类型的例子:EthernetAdapterStatus:=ENUMERATEDnormal(0),degraded(1),offline(2),failed(3)EthernetNumberColli
8、sionsRange:=INTEGERminimum(0),maximum(1000)第章 抽象语法表示ASN.1在ASN.1中,用符号:=表示产生式,读做“定义为”。显然,EthernetNumberCollisions Range类型的变量只能取两个整数值:0和1000。第二组包括各种字符串类型,标签为UNIVERSAL 1822和UNIVERSAL 2527,这些类型都可以看作是OCTET STRING类型的子集,它们都是采纳其他标准的类型。第章 抽象语法表示ASN.1第三组包括OBJECT IDENTIFIER和Object Descriptor两种类型。我们用对象类型泛指网络中传输的
9、任何信息对象,例如标准文档、抽象语法和传输语法、数据结构和管理对象等都可以归入信息对象范畴。OBJECT IDENTIFIER类型的值是一个对象标识符,由一个整数序列组成,它惟一地标识一个对象。对象描述符(Object Descriptor)则以人工可读的形式描述信息对象的语义。第章 抽象语法表示ASN.1第四组包含4种类型。NULL是空类型,它没有值,只占用结构中的一个位置,该位置可能出现或不出现数据。EXTERNAL是外部类型,即标准之外的文档定义的类型。UTCTime和GeneralizedTime是两种有关时间的类型,其区别是表示时间的形式不同。前者(世界通用时)分别用两位数字表示年、
10、月和日(即YYMMDD),然后是时、分和秒(即hhmmss),最后可以说明是否为本地时间;而后者用4位数字表示年,用两位数字表示月和日,最后也可以说明是否为本地时间。例如20000721182053.7是GeneralizedTime类型的一个值,表示2000年7月21日,当地时间18点20分53.7秒。而值20000721182053.7Z表示同样的时间,但是加了符号Z,则表示UTC时间。如果写为20000721182053.7+0800则除了表示同样的当地时间外,还说明了加8小时可以得到UTC时间。第章 抽象语法表示ASN.12.2.构造类型构造类型构造类型有序列和集合两种,分别用SEQU
11、ENCE和SEQUENCE OF表示不同类型和相同类型元素的序列,分别用SET和SET OF表示不同类型和相同类型元素的集合。序列和集合的区别是前者的元素是有序的,而后者是无序的。我们可以定义任何已知类型的序列,定义序列的语法是:第章 抽象语法表示ASN.1SequenceType:=SEQUENCEElementTypeList|SEQUENCE ElementTypeList:=ElementType|ElementTypeList,ElementTypeElementType:=NamedType|NamedType OPTIONAL|NamedType DEFAULT Value|CO
12、MPONENTS OF Type 第章 抽象语法表示ASN.1在这个表达式中,NamedType是一个类型指针。序列的每一成分类型可能跟随关键字OPTIONAL(表示任选)或DEFAULT(表示默认值)。COMPONENTS OF子句用于指示另外一个被包含的类型。定义SEQUENCE OF类型的语法如下:SequenceOfType:=SEQUENCE OF Type|SEQUENCE第章 抽象语法表示ASN.1下面是定义序列类型的例子:EthernetCollisionsCounter:=SEQUENCE highValue INTRGER,lowValue INTEGER TokenRin
13、gTokensLost:=SEQUENCE OF highValueINTRGER,lowValue INTEGER LanSimpleCounterLimits:=SEQUENCE ethernetCounter1 COMPONENTS OF EthernetCollisionsCounter,tokenRingCounter1COMPONENTS OF TokenRingTokensLost 第章 抽象语法表示ASN.1定义SET和SET OF的语法是类似的:SetType:=SET ElementTypeList|SET SetOfType:=SET OF Type|SET 第章 抽象语
14、法表示ASN.1下面是定义集合类型的例子:LanWorkstationSerialNumbers:=OCTET STRING(SIZE(32)LanSegment:=SET OF LanWorkstationSerialNumbersMacAddresses:=OCTET STRING(SIZE(6)EthernetNetworks:=SET OF MacAddressesTokenRingNetworks:=SET OF LanSegmentLanNetwork:=SET etherNet 0 IMPLICIT EthernetNetworks,tokenNet 1 IMPLICIT Tok
15、enRingNetworks 第章 抽象语法表示ASN.13.3.标签类型标签类型虽然ASN.1的所有类型都带有标签,但这里所谓的标签类型,是指应用或用户加在某个类型上的标签。起码有两种情况需要给一个现有的类型加上标签:首先是一个类型可以有多个类型名,例如为了使语义更丰富,可能用Employee-name和Customer-name表示同一类型,这样可以给两者指定同一应用标签APPLICATION 0。另外,在一个结构类型(序列或集合)中,可以用上下文专用标签区分类型相同的元素。例如集合中有3个同样类型的元素,一个指本人的名字,一个指父亲的名字,另一个指母亲的名字,分别为其指定不同的上下文专用
16、标签1、2和3以示区别,参见下例:第章 抽象语法表示ASN.1Parentage:=SETSubjectName1 IMPLICIT IA5String,MotherName 2 IMPLICIT IA5String OPTIONAL,FatherName 3 IMPLICIT IA5String OPTIONAL 第章 抽象语法表示ASN.1标签类型可以是隐含的或明示的,分别用关键字IMPLICIT和EXPLICIT(可省略)表示。隐含标签的语义是用新标签替换老标签,因此编码时只编码新标签。上例中,3个集合元素的上下文标签都是隐含的,因此编码时只编码上下文专用标签。明示标签的语义是在一个基类
17、型上加上新标签,从而导出一个新类型。事实上,明示标签类型是把基类型作为惟一元素的构造类型,在编码时,新老标签都要编码,可见隐含标签可以产生较短的编码。但明示标签也是有用的,特别用于基类型未定时,例如基类型为CHOICE或ANY类型。第章 抽象语法表示ASN.14.4.其他类型其他类型CHOICE和ANY是两个没有标签的类型,因为它们的值是未定的,而且类型也是未定的。当这种类型的变量被赋值时,它们的类型和标签才确定,可以说标签是运行时间确定的。CHOICE是可选类型的一个表,仅其中一个类型可以被采用,产生一个值。事实上CHOICE类型是所有成分类型的联合,这些成分类型是已知的,但是在定义时尚未确
18、定。CHOICE类型定义为ChoiceType:=CHOICEAlternativeTypeListAlternativeTypeList:=NamedType|AlternativeTypeList,NamedType 第章 抽象语法表示ASN.1下面是定义CHOICE类型的例子:EthernetAdapterNumber:=CHOICENULL,OCTET STRINGANY类型表示任意类型的任意值,与CHOICE类型不同之处在于实际出现的类型也是未知的,通常记为AnyType:=ANY|ANY DEFINED BY identifier例如,我们可以定义SoftwareVersion:=
19、ANY或SoftwareVersion:=ANY DEFINED BY INTEGER 第章 抽象语法表示ASN.12.2.2 2.2.2 子类型子类型子类型是由限制父类型的值集合而导出的类型,因此子类型的值集合是父类型的子集。子类型还可以再产生子类型。产生子类型的方法有6种,如表2.2所示。第章 抽象语法表示ASN.1表表2.2 产生子类型的方法产生子类型的方法 第章 抽象语法表示ASN.11.1.单个值单个值这种方法就是列出子类型可取的各个值。例如,我们可以定义小素数为整数类型的子集:SmallPrime:=INTEGER(2|3|5|7|11|13|15|17|19|23|29)另外,如
20、果定义Months为枚举类型:Months:=ENUMERATEDjanuary(1),february(2),march(3),april(4),may(5),june(6),july(7),august(8),september(9),october(10),november(11),december(12)第章 抽象语法表示ASN.1则可以定义First-quarter和Second-quarter为Months的子类型:First-quarter:=Months(january,february,march)Second-quarter:=Months(april,may,june)第
21、章 抽象语法表示ASN.12.2.包含子类型包含子类型这里要用到关键字INCLUDES,说明被定义的类型包含了已有类型的所有的值。例如下面的定义:First-half:=Months(INCLUDES First-quarter|I NCLUDES Second-quarter)另外,也可以直接列出被包含的值,例如First-third:=Months(INCLUDES First-quarter|april)第章 抽象语法表示ASN.13.3.值区间值区间这种方法只能应用于整数和实数类型,指出子类型可取值的区间。在下面的定义中PLUS-INFINITY和MINUS-INFINITY分别表示正
22、、负最大值,MAX和MIN分别表示父类型可允许的最大值和最小值,区间可以是闭区间或开区间。如果是开区间,则加上符号“”。因此下面4个定义是等价的:PositiveInteger:=INTEGER(0.PLUS-INFINITY)PositiveInteger:=INTEGER(1.PLUS-INFINITY)PositiveInteger:=INTEGER(0.MAX)PositiveInteger:=INTEGER(1.MAX)第章 抽象语法表示ASN.1同理,下面4个定义也是等价的:NegativeInteger:=INTEGER(MINUS-INFINITY.0)NegativeInte
23、ger:=INTEGER(MINUS-INFINITY.-1)NegativeInteger:=INTEGER(MIN.0)NegativeInteger:=INTEGER(MIN.-1)第章 抽象语法表示ASN.14.4.可用字符可用字符这种方法只能用于字符串类型,限制可使用的字符集。下面是两个限制可用字符的例子:TouchToneButtons:=IA5String(FROM(0|1|2|3|4|5|6|8|9|*|#)DigitString:=IA5String(FROM(0|1|2|3|4|5|6|8|9)第章 抽象语法表示ASN.15.5.限制大小限制大小可以对5种类型限制其规模大小
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 抽象语法表示 抽象 语法 表示 PPT 课件
限制150内