2-抽象语法表示ASN1.pptVIP

  • 12
  • 0
  • 约9.18千字
  • 约 56页
  • 2016-12-12 发布于重庆
  • 举报
模块定义的示例 2015/3/16 * ASN.1宏表示 宏的相关概念 宏表示:ASN.1提供的一种表示机制,用于定义宏 宏定义:用宏表示定义的一个宏,代表一个宏实例的集合 用于扩充语法,定义新的类型和值 宏实例:用具体的值代替宏定义中的变量而产生的实例,代表一个具体的类型 2015/3/16 * 宏定义 宏定义的一般形式 2015/3/16 * macroname:宏名字,必须全部大写 宏定义组成:- 类型表示:TYPE NOTATION- 值表示:VALUE NOTATION- 支持产生式:允许任选 宏定义 (2) 2015/3/16 * 宏定义的主要用处 宏定义可视为类型的类型,即超类型 用一个具体的值代替宏定义中的变量或参数就产生了一个宏实例,表示一个实际的ASN.1类型,并规定了该类型可取的值集合 宏定义视为类型模板,制造出形式相似、语义相关的许多数据类型 宏定义实例 利用宏定义简化类型定义 定义不同的数对 整数对:Pair-integers::=SEQUENCE(INTEGER,INTEGER) 字节串对:Pair-octet-string::=SEQUENCE(OCTET STRING,OCTET STRING) 实数对/整数-实数对等等 使用宏定义 定义类型对的宏:PAIR TYPE-X=type TYPE-Y=type 对应的值表示:(X=value, Y=value) 用已有类型替换宏定义中的变量type,则得到宏实例,即新类型 2015/3/16 * 宏定义实例 表示方法说明 加引号的字符串用于指明类型变量的位置,在宏实例中保持不变 可用任何类型名代替类型表示中的Local-type-1和Local-type-2,以产生新类型 2015/3/16 * 在宏实例中,值表示部分的Local-type-1位置和Local-type-2包含一个相应类型的值,这就是新类型的值 关键字VALUE指明一个位置,其后紧跟的类型就是值类型,也就是对宏定义产生的任何值必须按照这种类型编码,本例的值类型为序列 宏于1994年在ASN.1中被Information Object Class取代(2002年在标准中使用),但SNMP v1和v2中仍是使用宏定义管理对象 CS258 S99 * CS258 S99 * 序列示例 2015/3/16 * COMPONENTS OF 子句用于指示另外一个被包含的类型 构造类型(2) 2015/3/16 * 集合 SET,零个或多个元素的集合,可以是不同类型 SET OF,相同类型的集合 可以定义任何已知类型的集合 集合中的元素是无序的 SetType ::= SET{ElementTypeList}|SET{} SetOfType ::= SET OF Type | SET 标签类型 标签 用于区分不同的类型,由一个类别和一个非负的标签数组成 除了CHOICE和ANY类型外,每种ASN.1类型都有一个标签 标签值可唯一区分ASN.1类型,ASN.1类型的名字并不影响它的抽象含义,只有标签才有这个作用 数据类型由标签类型和值唯一决定(在数据编码时有用) 标签的分类 通用标签:关键字UNIVERSAL 由ISO和ITU标准定义的类型,适用于任何应用 应用标签:关键字APPLICATION 由某个具体应用程序自定义的类型 此标识可唯一标识自定义类型 2015/3/16 * 标签类型(2) 私有标签:关键字PRIVATE 用户定义的标签,类型含义根据给定的用户而不同 此标识一般不会用在国际规范中,特殊情况下,企业用户的技术规范想扩展一个国际规范时,可使用PRIVATE标识,能够在企业规范成为国际规范的过程中较好地保护企业规范 2015/3/16 * 上下文标签 专用于构造类型中。对于SET和SEQUENCE,为避免内部组成组件混淆,一般给予不同的上下文标签 SET和CHOICE类型中的组成元素是无序的,如果不指定一个上下文标签,那么对于其中同类型的组成元素,在赋值时会存在二义性 标签类型(3) 标签类型属性 隐式标签类型:IMPLICIT 用新标签替换老标签,编码时只编码新标签 显示标签类型:EXPLICIT(可省略) 在一个基类型上加新标签,从而导出一个新类型 可理解为把基类型作为唯一元素的构造类型 新老标签都要编码 2015/3/16 * 隐式标签产生较短的编码,但在基类型未确定时,显示标签也是有用的 其他类型 其他类型 CHOICE 和 ANY 两种没有标签的类型 值未定,类型也未定;类型变量被赋值时才确定其类型和标签 运行中确定标签与类型 2015/3/16 * CHOICE 类型 可选类型的一个表,仅其中一个类型被采用 所有已知的成分类型的联合,但在定义时未确定 定义示例

文档评论(0)

1亿VIP精品文档

相关文档