安工大网管技术第二章

上传人:san****019 文档编号:70210492 上传时间:2019-01-16 格式:PPT 页数:86 大小:766.51KB
返回 下载 相关 举报
安工大网管技术第二章_第1页
第1页 / 共86页
安工大网管技术第二章_第2页
第2页 / 共86页
安工大网管技术第二章_第3页
第3页 / 共86页
安工大网管技术第二章_第4页
第4页 / 共86页
安工大网管技术第二章_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《安工大网管技术第二章》由会员分享,可在线阅读,更多相关《安工大网管技术第二章(86页珍藏版)》请在金锄头文库上搜索。

1、第二章 抽象语法表示ASN.1,2.1 网络 数据表示 ? 2.2 ASN.1的基本概念 2.3 基本编码规则 2.4 ASN.1宏定义,1.网络系统的发展,怎么进行 异种 (异构)?信息间的通信? 2.为什么用ASN.1?现有的数据结构表达方式不可以吗? 3.传输语法与BER.,2.1 网络数据表示,_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 体现什么思想? 和SNMP协议、数据类型是什么关系?,ASN.1描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的

2、应用程序。,ASN.1是什么?,在任何需要以数字方式发送信息的地方,ASN.1 都可以发送各种形式的信息(声频、视频、数据等等)。 ASN.1 和特定的 ASN.1 编码规则推进了结构化数据的传输,尤其是网络中应用程序之间的结构化数据传输,它以一种独立于计算机架构和语言的方式来描述数据结构。,ASN.1 取得成功的一个主要原因是它与几个标准化编码规则相关,如基本编码规则(BER) -X.209 、规范编码规则(CER)、识别名编码规则(DER)、压缩编码规则(PER)和 XER 编码规则(XER)。 这些编码规则描述了如何对 ASN.1 中定义的数值进行编码,以便用于传输,而不管计算机、编程语

3、言或它在应用程序中如何表示等因素。,1.在互相通信的端系统中至少有一个应用实体和一个表示实体。 2.把抽象数据变换成比特串的编码规则叫做传输语法。 如图2.1所示。,网络数据表示,图2.1 关于信息表示的通信系统模型,name value,Get-request 报文?协议? ASN.1 编码?,V 01 03 06 01 02 01 01 01 00,L 09,T OBJECT IDENTIFIER,T NULL,L 00,L 01,T SEQUENCE?,L 0C,L 0E,L 04,T INTEGER,L 01,request-id,error-status,error-index,va

4、riable-bindings,T INTEGER,V 05 AE 56 02,V 00,T SEQUENCE OF?,T INTEGER,V 00,VarBind,T A0,L 1D,GetRequest -PDU,request-ID,1. 3. 6. 1. 2. 1. 7. 1. 0,GetRequest-PDU,和七层协议的关系?,ASN.1表示数据例子,例如:数据类型特点? Report := SEQUENCE author OCTET STRING, title OCTET STRING, body OCTET STRING, biblio Bibliography ,在这个例子中

5、,“Report“是由名字类型的信息组成的,而SEQUENCE表示消息是许多数据单元构成的,前三个数据单元的类型是OCTET STRING,而最后一个数据类型则下面的ASN.1语法表示它的意义: Bibliography := SEQUENCE author OCTET STRING title OCTET STRING publisher OCTET STRING year OCTET STRING ,2.2 ASN.1的基本概念,ASN.1文本的书写规则,这些规则叫做文本约定: (1)书写的布局是无效的,多个空格和空行等效于一个空格; (2) 用于表示值和字段的标识符、类型指针(类型名)和

6、模块名由大小写字母、数字和短线组成;,(3) 标识符以小写字母开头; (4) 类型指针和模块名以大写字母开头; (5) ASN.1定义的内部类型全部用大写字母表示; (6) 关键字全部用大写字母表示; (7) 注释以一对短线(- -)开始,以一对短线或行尾结束。 ASN.1的特点?,2.2.1 抽象数据类型 在ASN.1中,每一个数据类型都有一个标签(Tag)?,标签有类型和值(见表2.1),数据类型是由标签的类型和值惟一决定的,这种机制在数据编码时有用。标签的类型分为以下4种: 通用标签 应用标签 上下文专用标签 私有标签,ASN.1定义的数据类型有20多种,标签类型都是UNIVERSAL,

7、如表2.1所示。这些数据类型可分为4大类。 简单类型(?) 构造类型 标签类型 其他类型 (CHOICE、ANY),表2.1 ASN.1定义的通用类型,?,表2.1 ASN.1定义的通用类型,?,第一组BOOLEAN、INTEGER、BIT STRING、OCTET STRING、REAL、ENUMERATED. 枚举类型的值只是用整数表示的一个符号,而不具有整数的性质。下面是定义枚举类型的例子: EthernetAdapterStatus:=ENUMERATEDnormal(0),degraded(1), offline(2),failed(3),1. 简单类型,第二组包括各种字符串类型,标

8、签为UNIVERSAL 1822和UNIVERSAL 2527(表示字符类型 为何如此多的类型?),第三组包括OBJECT IDENTIFIER和Object Descriptor两种类型。,第四组包含4种类型。NULL是空类型,EXTERNAL是外部类型,UTCTime和GeneralizedTime是两种有关时间的类型,其区别是表示时间的形式不同。,例如 20000721182053.7是GeneralizedTime类型的一个值,表示2000年7月21日,当地时间18点20分53.7秒。20000721182053.7Z表示同样的时间,但是加了符号Z,则表示UTC时间。,2. 构造类型

9、构造类型有序列和集合两种,分别用SEQUENCE和SEQUENCE OF表示不同类型和相同类型元素的序列,分别用SET和SET OF表示不同类型和相同类型元素的集合。 他们的区别是什么?,下面是定义序列类型的例子: EthernetCollisionsCounter:=SEQUENCE highValue INTEGER, lowValue INTEGER TokenRingTokensLost:=SEQUENCE highValue INTRGER, lowValue INTEGER LanSimpleCounterLimits:=SEQUENCE ethernetCounter1 COMP

10、ONENTS OF EthernetCollisionsCounter, tokenRingCounter1 COMPONENTS OF TokenRingTokensLost,下面是定义集合类型的例子: LanWorkstationSerialNumbers:=OCTET STRING(SIZE(32) LanSegment:=SET OF LanWorkstationSerialNumbers MacAddresses:=OCTET STRING(SIZE(6) EthernetNetworks:=SET OF MacAddresses TokenRingNetworks:=SET OF

11、LanSegment LanNetwork:=SET etherNet 0 IMPLICIT EthernetNetworks, tokenNet 1 IMPLICIT TokenRingNetworks ,3. 标签类型 Exuniv:=UNIVERSAL 2 INTEGER Exappl:=APPLICATION 0 INTEGER Expriv:=PRIVATE 1 INTEGER 标签由一个 标签类 和 一个 标签号 组成。 指应用或用户加在某个类型上的标签。加上一个标签后就是一个新的类型。标签类型作用? 例如集合中有3个同样类型的元素,一个指本人的名字,一个指父亲的名字,另一个指母亲

12、的名字,分别为其指定不同的上下文专用标签1、2和3以示区别,参见下例:,Parentage:=SET SubjectName1 IMPLICIT IA5String, MotherName 2 IMPLICIT IA5String OPTIONAL, FatherName 3 IMPLICIT IA5String OPTIONAL 在编码中注意: Expriv:=PRIVATE 1 IMPLICIT INTEGER Expriv:=PRIVATE 1 (EXPLICIT) INTEGER 新老标签编码?,4. 其他类型(他们类型的作用?) CHOICE和ANY是两个没有标签的类型, 下面是定义

13、CHOICE类型的例子: EthernetAdapterNumber:=CHOICENULL, OCTET STRING,ANY类型表示任意类型的任意值 例1,我们可以定义 SoftwareVersion:=ANY 例2,TextBook:=SEQUENCE author IA5String, reference ANY ,实例, author “sfssfs”, reference IA5String “42342sf” author “sfssfs”, reference INTEGER 1988 ,2.2.2 子类型 子类型是由限制父类型的值集合而导出的类型,因此子类型的值集合是父类型的

14、子集。子类型还可以再产生子类型。(面向对象),1. 单个值 这种方法就是列出子类型可取的各个值。例如,我们可以定义小素数为整数类型的子集: SmallPrime:=INTEGER(2|3|5|7|11|13|15|17|19|23|29) 另外,如果定义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),则可以定义First-quar

15、ter和Second-quarter为Months的子类型: First-quarter:=Months(january,february,march) Second-quarter:=Months(april,may,june),2. 包含子类型(与前者的区别?) 这里要用到关键字INCLUDES,说明被定义的类型包含了已有类型的所有的值。例如下面的定义: First-half:=Months(INCLUDES First-quarter | I NCLUDES Second-quarter),3. 值区间( ?) 这种方法只能应用于整数和类型,指出子类型可取值实数的区间。在下面的定义中PL

16、US-INFINITY和MINUS-INFINITY分别表示正、负最大值,MAX和MIN分别表示父类型可允许的最大值和最小值,区间可以是闭区间或开区间。如果是开区间,则加上符号“”。因此下面4个定义是等价的: PositiveInteger:=INTEGER(0PLUS-INFINITY) PositiveInteger:=INTEGER(1PLUS-INFINITY) PositiveInteger:=INTEGER(0MAX) PositiveInteger:=INTEGER(1MAX),同理,下面4个定义也是等价的: NegativeInteger:=INTEGER(MINUS-INFINITY0) Neg

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号