(备用)抽象语法表示ASN课件.ppt
《(备用)抽象语法表示ASN课件.ppt》由会员分享,可在线阅读,更多相关《(备用)抽象语法表示ASN课件.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2.1ASN.1引入引入背景在分布式/网络通信应用中,通信设备需要相互传输数据。但是设备可能是由不同厂家生产的,其硬件体系结构、程序语言的语法定义和程序功能实现一般是不相同的。例如,在一台设备中,整形数据类型是16位表示,而在另一台则可能用32位表示。这些差异导致了同一数据对象在不同的设备上被表示为不同的符号串。为了解决以上问题,ISO组织推出了抽象语法表符号(ASN.1(AbstractSyntaxNotationOne),X.208)。ASN.1通过定义若干简单类型和复合类型,使得各个设备对其间交换消息的数据类型有了一致的认识。位于ISO规定的表示层,定义了应用数据的抽象语法,类似于通常程
2、序设计语言定义的抽象数据类型。2/9/20231把这些对象转换成“0”和“1”的比特流的一套规则称为BER(BasicEncodingRules,X.209),说明了如何把每种ASN.1类型的值编码为8bit的octet流。这样,经过ASN.1处理的消息独立于应用环境,就不会因为系统终端的区别而产生歧义。可以将通信编解码设计与开发工作转嫁给ASN.1编译器完成。从而不必在手工编写编解码器。一方面大量减少了缺陷引入,另一方面更是大大加快了系统开发速度2/9/20232关于信息表示的通信系统模型 2/9/20233局部语法、传送语法与抽象语法“语法”实际上就是“符号串解释方法”。局部语法用于数据在
3、端系统中的存储。传送语法位模式(Bitspattern)描述数据是在传输时是如何表示的用于数据在线路上的传输。抽象语法是协议设计者所使用的工具,用于将设计者的思想记录下来,便于交流和讨论。描述通用数据结构允许定义数据类型和值计算机通信的最终目的是传递数据的语义。因此一个数据无论采用何种表示方式,其语义不应改变。2/9/202342.2 ASN.1的基本概念的基本概念ASN.1有严格的BNF定义,便于程序解析ASN.1是描述在网络上传输信息格式的标准方法。每一个数据类型都有一个标签(Tag),标签有类型和值,数据类型是由标签的类型和值惟一决定的,这种机制在数据编码时有用。2/9/202352.2
4、.1 抽象数据类型抽象数据类型标签的类型分为以下4种通用标签:应用标签:上下文专用标签:私有标签:通用标签:用关键字UNIVERSAL表示,带有这种标签的数据类型是由标准定义的,适用于任何应用;2/9/20236一2/9/20237应用标签:用关键字APPLICATION表示,是应用程序组织自定义由某个具体应用定义的类型其;如:Name:=APPLICATION0SEQUENCEinitialnameIA5String;familyNameIA5String;上下文专用标签:这种标签在文本的一定范围(例如一个结构)中适用;私有标签:用关键字PRIVATE表示,这是用户定义的标签,企业自己定义的
5、。2/9/20238数据类型分类ASN.1定义的数据类型有20多种,标签类型都是UNIVERSAL。这些数据类型可分为4大类简单类型:由单一成分构成的原子类型;构造类型:由两种以上成分构成的构造类型;标签类型:由已知类型定义的新类型;其他类型:包括CHOICE和ANY两种类型。2/9/20239ASN.1数据类型-简单类型基本类型包括BOOL、INTEGER、REAL、BITSTRING、OCTETSTRING、ENUMERATED、OBJECTIDENTIFIER、NULL等。BITSTRING是以比特为单位的二进制字符串;OCTETSTRING是以字节为单位的字符串。ENUMERATED是
6、一个定义变量值的集合,变量的值只在列举出来的范围内。OBJECTIDENTIFIER则用来唯一标识ISO/ITU-T定义的对象;NULL是位置符,一般出现CHOICE、SEQUNECE和SET等复合类型中作为一项,其本身没有意义,不需要编码。2/9/202310简单类型-特别提示UTCTime和GeneralizedTime是两种有关时间的类型,其区别是表示时间的形式不同和范围不同,精度不同。UTCTime格式Z表示本地时间是GMT,+表示本地时间落后于GMT,-表示本地时间提前于GMT时间范围19502049,如0007211820532/9/202311GeneralizedTime 本地
7、时间 “YYYYMMDDHHMMSS.fff”格林威治标准时间“YYMMDDHHMMSS.fffZ”和标准时间的差值.“YYYYMMDDHHMMSS.fff+-HHMM”20001231235959.99920001231205959.999Z20001231235959.999+03002/9/202312ASN.1文本的书写规则书写的布局是无效的,多个空格和空行等效于一个空格;用于表示值和字段的标识符、类型指针(类型名)和模块名由大小写字母、数字和短线(Hyphen)组成;2/9/202313ASN.1文本的书写规则标识符以小写字母开头;类型指针和模块名以大写字母开头;ASN.1定义的内部
8、类型全部用大写字母表示;关键字全部用大写字母表示;注释以一对短线(-)开始,以一对短线或行尾结束。2/9/202314重要补充类型定义:=其中:是一个以大写字母开头的标识符;是基于内建类型或在其它地方定义的类型。如:Married:=BOOLEANAge:=INTEGERPicture:=BITSTRING2/9/202315值定义值定义:=其中:是以小写字母开头的标识符;可以是一个类型的名字,也可以是类型描述;值描述,是基于整数、字符串、标识符的组合。如:myageAge:=45sextupleLottery-draw:=7,12,23,31,33,41pairCoordinates:=x5
9、,y-32/9/202316ASN.1数据类型-结构类型复合类型有SEQENCE,SET,CHOICE,SEQUENCEOF,SETOF等。其中SEQUENCE和SET类型可表示一组不同数据类型的集合,相当于C语言中的struct结构体;CHOICE类型是表示选择一组数据类型中的一个,相当于C语言中的union联合体;SEQUENCEOF和SETOF类型定义了同一数据类型元素的集合,相当于C语言中的数组。两者的差别是:SEQUENCEOF内各项元素是有序的,而SETOF结构中各项元素的顺序是任意的。2/9/202317SEQUENCESEQUENCE和SET类型可表示一组不同数据类型的集合,相
10、当于C语言中的struct结构体,可以嵌套SEQUENCE声明如:Description:=SEQUENCEsurnameIA5String,first-nameIA5String,ageINTEGER赋值:johnnyDescription:=surnameSmith,first-nameJohn,age402/9/202318SEQUENCEOFSEQUENCEOF所有成员都是一个类型,数目不定。相当于C语言中的数组。声明:MemberCountries:=SEQUENCEOFPrintableString赋值:eastAsiaMemberCountries:=“China”,“Japan
11、”,“Korean”,“DPR”2/9/202319SET和SETOF定义SET和SETOF的语法是类似的:SetType:=SETElementTypeList|SETSetOfType:=SETOFType|SET和SEQUENCE相比,SET的成员是没有顺序的。2/9/202320标签类型ASN.1的所有类型都带有标签,但这里所谓的标签类型,是指应用或用户加在某个类型上的标签。起码有两种情况需要给一个现有的类型加上标签一个类型可以有多个类型名,如为了使语义更丰富,可能用Employee-name和Customer-name表示同一类型,这样可以给两者指定同一应用标签APPLICATION
12、0。另外,在一个结构类型(序列或集合)中,可以用上下文专用标签区分类型相同的元素。例如集合中有3个同样类型的元素,一个指本人的名字,一个指父亲的名字,另一个指母亲的名字,2/9/202321标签类型-实例Parentage:=SETSubjectName1IMPLICITIA5String,MotherName2IMPLICITIA5StringOPTIONAL,FatherName3IMPLICITIA5StringOPTIONAL2/9/202322标签类型可以是隐含的或明示的,分别用关键字IMPLICIT和EXPLICIT(可省略)表示。隐含标签的语义是用新标签替换老标签,因此编码时只编
13、码新标签。上例中,3个集合元素的上下文标签都是隐含的,因此编码时只编码上下文专用标签。明示标签的语义是在一个基类型上加上新标签,从而导出一个新类型。明示标签类型是把基类型作为惟一元素的构造类型,在编码时,新老标签都要编码2/9/202323其他类型CHOICE和ANY是两个没有标签的类型,因为它们的值是未定的,而且类型也是未定的。当这种类型的变量被赋值时,它们的类型和标签才确定,可以说标签是运行时间确定的。CHOICE是可选类型的一个表,仅其中一个类型可以被采用,产生一个值。CHOICE类型定义为ChoiceType:=CHOICEAlternativeTypeListAlternativeT
14、ypeList:=NamedType|AlternativeTypeList,NamedType2/9/202324定义CHOICE类型的例子:EthernetAdapterNumber:=CHOICENULL,OCTETSTRINGANY类型表示任意类型的任意值,与CHOICE类型不同之处在于实际出现的类型也是未知的。如定义SoftwareVersion:=ANY或SoftwareVersion:=ANYDEFINEDBYINTEGER2/9/202325子类型子类型子类型是由限制父类型的值集合而导出的类型,因此子类型的值集合是父类型的子集。子类型还可以再产生子类型。产生子类型的方法有6种2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 备用 抽象 语法 表示 ASN 课件
限制150内