ASN.1基础-(更新)解析课件.ppt

上传人(卖家):三亚风情 文档编号:3008953 上传时间:2022-06-21 格式:PPT 页数:97 大小:959KB
下载 相关 举报
ASN.1基础-(更新)解析课件.ppt_第1页
第1页 / 共97页
ASN.1基础-(更新)解析课件.ppt_第2页
第2页 / 共97页
ASN.1基础-(更新)解析课件.ppt_第3页
第3页 / 共97页
ASN.1基础-(更新)解析课件.ppt_第4页
第4页 / 共97页
ASN.1基础-(更新)解析课件.ppt_第5页
第5页 / 共97页
点击查看更多>>
资源描述

1、ASN.1语言基础知识 本章目录 n1 ASN.1的基本概念n2 ASN.1语法规范n3 BER的基本概念 1 ASN.1的基本概念表示层的功能是提供统一的网络数据表示。在互相通信的端系统中至少有一个应用实体(例如FTP、TELNET、SNMP等)和一个表示实体(即ASN.1)。表示实体定义了应用数据的抽象语法,这种抽象语法类似于通常程序设计语言定义的抽象数据类型。应用协议按照预先定义的抽象语法构造协议数据单元,用于和对等系统的应用实体交换信息。表示实体则对应用层数据进行编码,将其转换成二进制的比特串,例如把十进制数变成二进制数、把字符变成ASCII码等。比特串由下面的传输实体在网络中传送。把

2、抽象数据变换成比特串的编码规则叫做传输语法。在各个端系统内部,应用数据被映像成本地的特殊形式,存储在磁盘上或显示在用户终端上,如图1所示。 网络数据表示网络数据表示 本地存储端系统A用户本地映像应用实体用户表示映像编码规则表示实体抽象语法ASN.1本地存储本地映像端系统B用户应用实体用户表示映像编码规则表示实体传输语法BER图1 关于信息表示的通信系统模型 特别需要指出的是,这里提到的抽象语法是独立于任何编码技术的,只与应用有关。抽象语法要能满足应用的需要,能够定义应用需要的数据类型和表示这些类型的值。 ASN.1是根据当前网络应用的需求制定的标准(CCITT X.208和ISO 8824),

3、也许随着网络应用的发展,还会开发出新的表示层标准。 另外值得一提的是,对应一种抽象语法可以选择不止一种传输语法。 对传输语法的基本要求是支持对应的抽象语法,另外还可以有其他一些属性,例如支持数据加密或压缩,或者两者都支持。 ASN.1语言的概念n抽象语法表示(ASN,Abstract Syntax Notation)是一种独立于硬件的高级语言nASN.1语法可用来描述各种类型的数据,包括文本、图形、视频与音频等nASN.1编码可用来规范数据传输过程,解决异构网络对数据理解的二义性ASN.1支持的编码规范 n基本编码规范(BER,Basic Encoding Rules)n严格编码规范(CER,

4、Canonical Encoding Rules)n唯一编码规范(DER,Distinguished Encoding Rules)n压缩编码规范(PER,Packed Encoding RulesnXML编码规范(XER,XML Encoding Rules) ASN.1的主要应用nSNMP(简单网络管理协议)nX.400(信息处理服务协议)nX.500(目录访问服务协议)nH.323(基于分组的多媒体通信VoIP结构)nRSA(公钥密码体制)nSET(安全电子商务)2 ASN.1语法规范2.1 ASN.1数据类型n简单类型:直接规定取值集合的类型,其中不会包括任何组件 n结构类型:由多个组

5、件构成的类型,每个组件是一个简单类型或结构类型 n标签类型:主要用于区分不同类型数据,特别是SEQUENCE与SET中相同类型的组件ASN.1简单类型简单类型简单类型类型说明类型说明INTEGER整数型(正、负整数与0的集合)BOOLEAN布尔型(True与False的集合)REAL实数型(正、负实数与0的集合)ENUMERATED枚举型(字符串与值的对应关系)BIT STRING比特流(二进制数组成的比特串)OCTET STRING字节流(十六进制数组成的字节串)NULL空类型(只有一个值null)EXTERNAL自定义类型ASN.1结构类型结构类型结构类型类型说明类型说明SEQUENCE多

6、个类型的有序集合(类似C的结构)SEQUENCE OF 某个类型的有序集合(类似C的数组)SET多个类型的无序集合(类似SEQUENCE)SET OF某个类型的无序集合(类似SEQUENCE OF)CHOICE多个类型的可选集合(取其中一个类型)ANY任意类型SEQUENCE与SEQUENCE OF nSEQUENCE表示多种类型的有序集合 Student := SEQUENCE Name OCTET STRING, Age INTEGER nSEQUENCE OF表示某种类型的有序集合 Students := SEQUENCE OF Student ASN.1标签类型n通用类(Univers

7、al Class)n应用类(Application Class)n私有类(Private Class)n内容指定类(Context-specific Class) 通用类标签(1)通用类标签通用类标签类型说明类型说明UNIVERSAL 1布尔型(BOOLEAN)UNIVERSAL 2整数型(INTEGER)UNIVERSAL 3比特流(BIT STRING)UNIVERSAL 4字节流(OCTET STRING)UNIVERSAL 5空类型(NULL)UNIVERSAL 6对象标识符(OBJECT IDENTIFIER)通用类标签(2)通用类标签通用类标签类型说明类型说明UNIVERSAL 7

8、对象描述符(OBJECT DESCRIPTION)UNIVERSAL 8自定义类型(EXTERNAL)UNIVERSAL 9实数型(REAL)UNIVERSAL 10 枚举型(ENUMERATED)UNIVERSAL 16 有序结构类型(SEQUENCE与SEQUENCE OF)UNIVERSAL 17 无序结构类型(SET与SET OF)标签类型的定义方法 n隐式标签通过改变组件类型的标签生成,隐式标签定义的关键字是IMPLICITn显式标签通过在组件类型的标签之外添加一个外部标签生成,显式标签定义的关键字是EXPLICITnASN.1语法默认使用显式标签 2.2 ASN.1命名方法n关键字

9、:有专用名称,全部字符大写n类型名:数据类型名称,首字符大写n模块名:模块名称,首字符大写n宏名:宏名称,全部字符大写n对象名:数据对象名称,首字符小写主要的ASN.1关键字 关键字名称关键字名称关键字用途关键字用途DEFINITIONS定义模块、类型或对象MACRO定义宏BEGIN定义模块或宏的开始END定义模块或宏的结束IMPORTS从其它模块引用的数据类型EXPORTS可被其它模块引用的数据类型IDENTIFIER零与正整数序列主要的ASN.1符号 符号名称符号名称符号用途符号用途:=模块、类型、宏定义或对象赋值 相关项的开始与结束 可选项的开始与结束|可选项中任选其一( )子类型的开始

10、与结束.子类型的取值范围-注释部分的开始与结束多次重复的内容2.3 ASN.1语法分析 n数据类型定义(Data Type Definition)n宏定义(Macro Definition)n模块定义(Module Definition)ASN.1数据类型定义(1) - - 基本类型定义基本类型定义 := := - - 子类型定义子类型定义 := () := ()- SEQUENCE- SEQUENCE类型定义类型定义:=SEQUENCE , :=SEQUENCE , ,- SEQUENCE OF- SEQUENCE OF类型定义类型定义:=SEQUENCE OF :=SEQUENCE OF

11、ASN.1数据类型定义(2) Counter := INTEGER - Counter := INTEGER - 基本类型定义基本类型定义IpAddressIpAddress := OCTET STRING := OCTET STRINGifEntryifEntry := SEQUENCE - SEQUENCE := SEQUENCE - SEQUENCE类型定义类型定义ifIndexifIndex INTEGER, INTEGER, ifDescrifDescr OCTET STRING, OCTET STRING, ifTypeifType INTEGER, INTEGER, ifMtui

12、fMtu INTEGER, INTEGER, ifSpeedifSpeed Gauge, Gauge, ifPhysAddressifPhysAddress OCTET STRING, OCTET STRING, ifAdminStatusifAdminStatus INTEGER, INTEGER, ifOperStatusifOperStatus INTEGER, INTEGER, ifLastChangeifLastChange TimeTicksTimeTicks, , ifInOctetsifInOctets Counter, Counter, ifInUcastPktsifInUc

13、astPkts Counter, Counter, ifInNUcastPktsifInNUcastPkts Counter, Counter, ifInDiscardsifInDiscards Counter, Counter, ifInErrorsifInErrors Counter, Counter, ifInUnknownProtosifInUnknownProtos Counter, Counter, ifOutOctetsifOutOctets Counter, Counter, ifOutUcastPktsifOutUcastPkts Counter, Counter, ifOu

14、tNUcastPktsifOutNUcastPkts Counter, Counter, ifOutDiscardsifOutDiscards Counter, Counter, ifOutErrorsifOutErrors Counter CounterifTableifTable := SEQUENCE OF := SEQUENCE OF ifEntryifEntry - SEQUENCE OF - SEQUENCE OF类型定义类型定义 ASN.1数据赋值 switchNumberswitchNumber Counter := 24 - Counter := 24 - 基本类型赋值基本类

15、型赋值switchAddressswitchAddress IpAddressIpAddress := 192.168.1.1 := 192.168.1.1switchEntryswitchEntry := SEQUENCE - SEQUENCE := SEQUENCE - SEQUENCE类型赋值类型赋值 ifIndexifIndex 24, 24, ifDescrifDescr ethernet-csmacdethernet-csmacd, , ifTypeifType 6, 6, ifMtuifMtu 1500, 1500, ifSpeedifSpeed 10000000, 100000

16、00, ifPhysAddressifPhysAddress 08-01-00- 08-01-00-2A-10-C3, 2A-10-C3, ifAdminStatusifAdminStatus 1, 1, ifOperStatusifOperStatus 1, 1, ifLastChangeifLastChange 6000, 6000, ifInOctetsifInOctets 60000, 60000, ifInUcastPktsifInUcastPkts 1200, 1200, ifInNUcastPktsifInNUcastPkts 600, 600, ifInDiscardsifIn

17、Discards 10, 10, ifInErrorsifInErrors 6, 6, ifInUnknownProtosifInUnknownProtos 0, 0, ifOutOctetsifOutOctets 120000, 120000, ifOutUcastPktsifOutUcastPkts 2000, 2000, ifOutNUcastPktsifOutNUcastPkts 400, 400, ifOutDiscardsifOutDiscards 6, 6, ifOutErrorsifOutErrors 2 2ASN.1宏定义(1) MACRO := MACRO :=BEGINB

18、EGIN - - 数据类型语法数据类型语法 TYPE NOTATION := TYPE NOTATION := - - 数据赋值语法数据赋值语法 VALUE NOTATION := VALUE NOTATION := - - 辅助语法辅助语法ENDEND ASN.1宏定义(2)OBJECT-TYPE MACRO :=OBJECT-TYPE MACRO :=BEGINBEGIN TYPE NOTATION := SYNTAX TYPE NOTATION := SYNTAX type(TYPEtype(TYPE ObjectSyntaxObjectSyntax) ) ACCESS Access A

19、CCESS Access STATUS Status STATUS Status VALUE NOTATION := VALUE NOTATION := value(VALUEvalue(VALUE ObjectNameObjectName) ) Access := read-only | read-write | write- Access := read-only | read-write | write- only | not-accessible only | not-accessible Status := mandatory | optional | obsolete Status

20、 := mandatory | optional | obsoleteEND END ASN.1宏赋值 sysDescrsysDescr OBJECT-TYPE OBJECT-TYPE SYNTAX OCTET STRING SYNTAX OCTET STRING ACCESS read-only ACCESS read-only STATUS mandatory STATUS mandatory:= system 1 := system 1 宏表示宏表示下面介绍定义宏的方法,为此我们需要区分以下3个不同的概念。 宏表示:ASN.1提供的一种表示机制,用于定义宏; 宏定义:用宏表示定义的一个宏

21、,代表一个宏实例的集合; 宏实例:用具体的值代替宏定义中的变量而产生的实例,代表一种具体的类型。宏定义的一般形式如下: MACRO:= BEGIN TYPE NOTATION:= VALUE NOTATION:= END 其中的macroname后是宏的名字,必须全部大写。宏定义由类型表示(TYPE NOTATION)、值表示(VALUE NOTATION)和Assignment List 3部分组成,而最后一部分是任选的。这3部分都由Backus-Naur范式说明。当用一个具体的值代替宏定义中的变量或参数时就产生了宏实例,它表示一个实际的ASN.1类型(叫做返回的类型),并且规定了该类型可取

22、的值的集合(叫做返回的值)。可见宏定义可以看作是类型的类型,或者说是超类型。另一方面,也可以把宏定义看作是类型的模板,可以用这种模板制造出形式相似、语义相关的许多数据类型,这就是宏定义的主要用处。 下面是取自RFC 1155的关于对象类型的宏定义,其中包含两个支持产生式:OBJECT-TYPE MACRO:= BEGIN TYPE NOTATION:=Syntax type(TYPE ObjectSyntax) ACCESS Access STATUS Status VALUE NOTATION:= value(VALUE ObjectName) Access:= read-only |rea

23、d-write |write-only |not-accessible Status:= mandatory |optional |obsolete END 宏定义示例宏定义示例关于为什么要用宏定义,我们通过一个比较深入的例子来说明。假设我们经常需要使用整数对,于是我们定义一个ASN.1类型:Pair-integers:=SEQUENCE(INTEGER,INTEGER)如果我们还需要使用字节串对,也可以定义相应的类型:Pair-octet-string:=SEQUENCE(OCTET STRING, OCTET STRING) 进一步假设我们可能需要使用各种各样的数对,例如实数-实数对、整数

24、-实数对、整数-字节串对、实数-布尔型对等,甚至数对中的一个成分还可能是另外一个数对或其他具有复杂构造的成分。是否必须定义这许多数对类型呢?答案是否定的。简化类型定义的方法是使用宏定义。我们定义一个宏PAIR,它是一个类型对:PAIR TYPE-X=type TYPE-Y=type 对应的值表示采用下面的形式:(X=value, Y=value)用一个已有的类型代替其中的变量type,可得到宏实例,即新的类型:T1:=PAIR TYPE-X=INTEGER TYPE-Y=BOOLEANT2:=PAIR TYPE-X=VisibleString TYPE-Y=T1则下面的值属于T1类型:(X=3

25、, Y=TRUE) 下面的值是T2类型:(X=Name, Y=(X=4, Y=FALSE)显然,只要用已知的类型代替关键字type,就可以得到需要的数对类型。下图给出了PAIR的宏定义,关于其中的表示方法说明如下:(1) 加引号的字符串在宏实例中保持不变,它的作用是指明类型变量的位置。 (2) 可以用任何ASN.1类型名代替变量Local-type-1和Local-type-2,从而产生一个代表新类型的宏实例。关键字type指明了实施这种替换的位置。 (3) 在任何宏实例中,Local-value-1位置包含一个Local-type-1类型的值,同理Local-value-2位置包含一个Loc

26、al-type-2类型的值,这就是新类型的值。(4) 关键字VALUE用于指明一个位置,其后紧跟的类型就是值的类型,亦即对宏定义产生的任何值必须按照这种类型编码,本例中值的类型是SEQUENCE。 PAIR MACRO:=BEGINTYPE NOTATION:=VALUE NOTATION:=(X =value(Local-value-1 Local-type-1)Y =value(Local-value-2 Local-type-2)TYPE-X =type(Local-type-1)TYPE-Y =type(Local-type-2)ASN.1模块定义(1) DEFINITIONS :=

27、DEFINITIONS :=BEGINBEGIN EXPORTS - EXPORTS - 本模块中可供其它模块引用的定义本模块中可供其它模块引用的定义 IMPORTS - IMPORTS - 本模块使用从其它模块引用的定义本模块使用从其它模块引用的定义 Assignment List - Assignment List - 宏、类型定义与对象赋值宏、类型定义与对象赋值ENDEND ASN.1模块定义(2) RFC1155-SMI DEFINITIONS :=RFC1155-SMI DEFINITIONS :=BEGINBEGIN EXPORTS internet, directory, mgm

28、t, experimental, EXPORTS internet, directory, mgmt, experimental, private, enterprises, OBJECT-TYPE, private, enterprises, OBJECT-TYPE, ObjectNameObjectName, , ObjectSyntaxObjectSyntax, , SimpleSyntaxSimpleSyntax, , ApplicationSyntaxApplicationSyntax, , NetworkAddressNetworkAddress, , IpAddressIpAdd

29、ress, Counter, Gauge, Counter, Gauge, TimeTicksTimeTicks, Opaque;, Opaque; - the path to the root - the path to the root internet OBJECT IDENTIFIER := internet OBJECT IDENTIFIER := isoiso org(3) dod(6) 1 org(3) dod(6) 1 directory OBJECT IDENTIFIER := internet 1 directory OBJECT IDENTIFIER := interne

30、t 1 mgmt OBJECT IDENTIFIER := internet 2 mgmt OBJECT IDENTIFIER := internet 2 experimental OBJECT IDENTIFIER := internet 3 experimental OBJECT IDENTIFIER := internet 3 private OBJECT IDENTIFIER := internet 4 private OBJECT IDENTIFIER := internet 4 enterprises OBJECT IDENTIFIER := private 1 enterpris

31、es OBJECT IDENTIFIER := private 1 ASN.1模块定义(3) - definition of object types - definition of object types OBJECT-TYPE MACRO := OBJECT-TYPE MACRO := BEGIN BEGIN TYPE NOTATION := SYNTAX type (TYPE TYPE NOTATION := SYNTAX type (TYPE ObjectSyntaxObjectSyntax) ) ACCESS Access ACCESS Access STATUS Status S

32、TATUS Status VALUE NOTATION := value (VALUE VALUE NOTATION := value (VALUE ObjectNameObjectName) ) Access := read-only | read-write | write-only Access := read-only | read-write | write-only | not-accessible | not-accessible Status := mandatory | optional | obsolete Status := mandatory | optional |

33、obsolete END ENDASN.1模块定义(4) - names of objects in the MIB - names of objects in the MIB ObjectNameObjectName := OBJECT IDENTIFIER := OBJECT IDENTIFIER - syntax of objects in the MIB - syntax of objects in the MIB ObjectSyntaxObjectSyntax := CHOICE simple := CHOICE simple SimpleSyntaxSimpleSyntax, ,

34、 application-wide application-wide ApplicationSyntaxApplicationSyntax SimpleSyntaxSimpleSyntax := CHOICE number INTEGER, string OCTET := CHOICE number INTEGER, string OCTET STRING, Object STRING, Object OBJECTOBJECT IDENTIFIER, empty NULL IDENTIFIER, empty NULL ApplicationSyntaxApplicationSyntax :=

35、CHOICE address := CHOICE address NetworkAddressNetworkAddress, , counter counter Counter,gaugeCounter,gauge Gauge, ticks Gauge, ticks TimeTicksTimeTicks, , arbitrary Opaque arbitrary Opaque ASN.1模块定义(4) - application-wide types - application-wide types NetworkAddressNetworkAddress := CHOICE internet

36、 := CHOICE internet IpAddressIpAddress IpAddressIpAddress := APPLICATION 0 IMPLICIT OCTET STRING := APPLICATION 0 IMPLICIT OCTET STRING (SIZE (4) (SIZE (4) Counter := APPLICATION 1 IMPLICIT INTEGER Counter := APPLICATION 1 IMPLICIT INTEGER (0.4294967295) (0.4294967295) Gauge := APPLICATION 2 IMPLICI

37、T INTEGER Gauge := APPLICATION 2 IMPLICIT INTEGER (0.4294967295) (0.4294967295) TimeTicksTimeTicks := APPLICATION 3 IMPLICIT INTEGER := APPLICATION 3 IMPLICIT INTEGER (0.4294967295) (0.4294967295) Opaque := APPLICATION 4 IMPLICIT OCTET STRING Opaque := APPLICATION 4 IMPLICIT OCTET STRINGENDEND 模块定义模

38、块定义ASN.1中的模块类似于C语言中的结构,用于定义一个抽象数据类型。可以用名字引用一个已定义的模块,例如模块定义了一个抽象语法,应用实体把模块名传送给表示服务,说明其APDU的格式。模块定义的基本形式为 DEFINITIONS := BEGIN EXPORTS IMPORTS AssignmentList END 其中的modulereference是模块名,可以跟随对应的对象标识符。EXPORTS构造指明该模块可以出口的部分,而IMPORTS构造指明该模块需要引用的其他类型和值。AssignmentList部分包含模块定义的所有类型、值和宏定义。下面是一个模块定义的例子: LanNetw

39、orkModuleiso org dod internet private enterprises Xenterprises 95DEFINITIONS EXPLICIT TAGS:= BEGIN EXPORTS LanNetworkName:=SEQUENCE OF RelativeDistinguishedName -End of EXPORTS IMPORTS RelativeDistinguishedName FROM InformationFrameworkioint-iso-ccitt Ds(5) modules(1) informationFramework(1) -End of

40、 IMPORTS MacAddresses:=OCTET STRING(SIZE(6) LanWorkstationSerialNumbers:=OCTET STRING(SIZE(32) LanSegment:=SET OF LanWorkstationSerialNumbers EthernetNetworks:=SET OF MacAddresses TokenRingNetworks:=SET OF LanSegment LanNetwork:=SET etherNet 0 IMPLICIT EthernetNetworks, tokenNet 1 IMPLICIT TokenRing

41、Networks END 表表1 ASN.1定义的通用类型定义的通用类型 标 签 类 型 值 集 合 UNIVERSAL 1 BOOLEAN TRUE, FALSE UNIVERSAL 2 INTEGER 正数、负数和零 UNIVERSAL 3 BIT STRING 0 个或多个比特组成的序列 UNIVERSAL 4 OCTET STRING 0 个或多个字节组成的序列 UNIVERSAL 5 NULL 空类型 UNIVERSAL 6 OBJECT IDENTIFIER 对象标识符 UNIVERSAL 7 Object Descriptor 对象描述符 UNIVERSAL 8 EXTERNAL

42、 外部文件定义的类型 UNIVERSAL 9 REAL 所有实数 UNIVERSAL 10 ENUMERATED 整数值的表,每个整数有一个名字 UNIVERSAL 1115 保留 为 ISO 8824 保留 UNIVERSAL 16 SEQUENCE, SEQUENCE OF 序列 UNIVERSAL 17 SET, SET OF 集合 UNIVERSAL 18 NumericString 数字 09 和空格 UNIVERSAL 19 PrintableString 可打印字符串 UNIVERSAL 20 TeletexString 由 CCITT T.61 建议定义的字符集 UNIVERS

43、AL 21 VideotexString 由 CCITT T.100 和 T.101 建议定义的字符集 UNIVERSAL 22 IA5String 国际标准字符集 5(相当于 ASCII 码) UNIVERSAL 23 UTCTime 时间 UNIVERSAL 24 GeneralizedTime 时间 UNIVERSAL 25 GraphicString 由 ISO 8824 定义的字符集 UNIVERSAL 26 VisibleString 由 ISO 646 定义的字符集 UNIVERSAL 27 GeneralString 通用字符集 UNIVERSAL 28 以后 保留 为 ISO

44、 8824 保留 表表2 ASN.1定义的通用类型定义的通用类型 1. 1. 简单类型简单类型 表2.1中除了UNIVERSAL 16和UNIVERSAL 17之外都是简单类型。 这些类型的共同特点是可以直接定义它们的值的集合,可以把这些类型作为原子类型构造新的数据类型。简单类型还可以分为4组。第一组包括BOOLEAN、INTEGER、BIT STRING、OCTET STRING、REAL和ENUMERATED等。这一组可以叫做基本类型,它们的值已经在表2.1中列出了。需要说明的是,实数可以表示为科学计数法: M BE 其中尾数M和指数E可以取任何正/负整数值, 基数B可取2或10。 枚举类

45、型ENUMERATED是一个整数的表,每一个整数有一个名字。与此类似的是,对于某些整数类型的值也可以定义一个名字,但这两种类型是有区别的。对整数可以进行算术运算,但对枚举类型却不能进行任何算术运算,也就是说,枚举类型的值只是用整数表示的一个符号,而不具有整数的性质。下面是定义枚举类型和定义整数类型的例子:EthernetAdapterStatus:=ENUMERATEDnormal(0),degraded(1), offline(2),failed(3)EthernetNumberCollisionsRange:=INTEGERminimum(0),maximum(1000) 在ASN.1中,

46、用符号:=表示产生式,读做“定义为”。显然,EthernetNumberCollisions Range类型的变量只能取两个整数值:0和1000。第二组包括各种字符串类型,标签为UNIVERSAL 1822和UNIVERSAL 2527,这些类型都可以看作是OCTET STRING类型的子集,它们都是采纳其他标准的类型。 第三组包括OBJECT IDENTIFIER和Object Descriptor两种类型。我们用对象类型泛指网络中传输的任何信息对象,例如标准文档、抽象语法和传输语法、数据结构和管理对象等都可以归入信息对象范畴。OBJECT IDENTIFIER类型的值是一个对象标识符,由一

47、个整数序列组成,它惟一地标识一个对象。对象描述符(Object Descriptor)则以人工可读的形式描述信息对象的语义。 第四组包含4种类型。NULL是空类型,它没有值,只占用结构中的一个位置,该位置可能出现或不出现数据。EXTERNAL是外部类型,即标准之外的文档定义的类型。UTCTime和GeneralizedTime是两种有关时间的类型,其区别是表示时间的形式不同。前者(世界通用时)分别用两位数字表示年、月和日(即YYMMDD),然后是时、分和秒(即hhmmss),最后可以说明是否为本地时间;而后者用4位数字表示年,用两位数字表示月和日,最后也可以说明是否为本地时间。例如200007

48、21182053.7是GeneralizedTime类型的一个值,表示2000年7月21日,当地时间18点20分53.7秒。而值20000721182053.7Z表示同样的时间,但是加了符号Z,则表示UTC时间。如果写为20000721182053.7+0800则除了表示同样的当地时间外,还说明了加8小时可以得到UTC时间。 2. 2. 构造类型构造类型构造类型有序列和集合两种,分别用SEQUENCE和SEQUENCE OF表示不同类型和相同类型元素的序列,分别用SET和SET OF表示不同类型和相同类型元素的集合。序列和集合的区别是前者的元素是有序的,而后者是无序的。我们可以定义任何已知类型

49、的序列,定义序列的语法是: SequenceType:=SEQUENCEElementTypeList| SEQUENCE ElementTypeList:= ElementType | ElementTypeList, ElementTypeElementType:= NamedType| NamedType OPTIONAL| NamedType DEFAULT Value| COMPONENTS OF Type 在这个表达式中,NamedType是一个类型指针。序列的每一成分类型可能跟随关键字OPTIONAL(表示任选)或DEFAULT(表示默认值)。COMPONENTS OF子句用于指

50、示另外一个被包含的类型。定义SEQUENCE OF类型的语法如下: SequenceOfType:=SEQUENCE OF Type | SEQUENCE下面是定义序列类型的例子:EthernetCollisionsCounter:=SEQUENCE highValue INTRGER, lowValue INTEGER TokenRingTokensLost:=SEQUENCE OF highValueINTRGER, lowValue INTEGER LanSimpleCounterLimits:=SEQUENCE ethernetCounter1 COMPONENTS OF Ethern

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(ASN.1基础-(更新)解析课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|