《抽象语法表示幻灯片》由会员分享,可在线阅读,更多相关《抽象语法表示幻灯片(70页珍藏版)》请在金锄头文库上搜索。
1、第二章 抽象语法表示,抽象语法表示ASN.1Abstract Syntax Notation(ASN.1)是一种形式语言提供统一的网络数据表示,用于定义应用数据的抽象语法和应用协议数据单元的结构。OSI或SNMP管理信息库,都是用ASN.1定义的。基本编码规则BERBasic Encoding Rule(BER)是一种编码规则用ASN.1定义的应用数据在传送过程中按照BER变换成比特串。,本章内容,表示层的功能是提供统一的网络数据表示在互相通信的端系统中至少有一个应用实体(如SNMP、TELNET、FTP等)和一个表示实体(即ASN.1)。表示实体定义了应用数据的抽象语法。应用协议按照预先定义
2、的抽象语法构造协议数据单元,用于交换信息。表示实体则对应用层数据进行编码,将其转换成二进制的比特串进行传送。,2.1网络数据表示,2.1网络数据表示,图2-1 关于信息表示的通信系统模型,抽象语法独立于任何编码技术。抽象语法要满足应用的需要,能够定义应用需要的数据类型和表示这些类型的值。ASN.1是根据当前网络应用的需求制定的标准。同等表示实体之间通信时对用户信息的描述和编码规则称为传输语法。传输语法与抽象语法之间是多-多对应关系。对传输语法的要求是支持对应的抽象语法。,2.1网络数据表示,ASN.1是由原CCITT和ISO共同开发的标准语言,可在系统间进行数据的传输。在ASN.1中定义所需的
3、数据结构类型,并将它们组成库。表示层可以实现从通信线路上所用的外部数据格式到接收计算机所用的内部数据格式的转换。,2.2ASN.1语法,当一个应用想发送一个数据结构时,可以将数据结构与其对应的ASN.1标识一起传给表示层。以ASN.1定义作为索引,表示层便知道数据结构的域的类型及大小,从而对它们编码传输。在另一端,接收表示层查看此数据结构的ASN.1 标识,从而了解数据结构的域的类型及大小。抽象语法与一个能对其进行编码的传输语法的组合,就构成一个表示上下文。表示上下文可以在连接建立时协商确定,也可以在通信过程中重新定义。,2.2ASN.1语法,ASN.1的文本约定(1)多个空格和空行等效于一个
4、空格。(2)用于表示值和字段的标识符、类型指针和模块名由大小写字母、数字和短线组成。(3)标识符以小写字母开头。(4)类型指针和模块名以大写字母开头。(5)ASN.1定义的内部类型全部用大写字母表示。(6)关键字全部用大写字母表示。(7)注释以一对短线(-)开始,以一对短线或行尾结束。,2.2ASN.1语法,2.2ASN.1语法,2.2ASN.1语法,2.2.1抽象数据类型,在ASN.1中,每一个数据类型都有一个标签(tag)标签有类型和值,数据类型由标签的类型和值唯一确定。标签的类型分为以下4种:通用标签:UNIVERSAL表示,由标准定义的。应用标签:APPLICATION表示,是由某个具
5、体应用定义的类型。上下文专用标签:Context-Specific表示,这种标签在一定范围)中适用。私有标签:PRIVATE表示,用户定义的标签。,2.2.1抽象数据类型,ANSI.1定义的数据类型有20多种,标签类型都是UNIVERSAL,如表2-3所示。可分为4大类。简单类型:由单一成分构成的原子类型,包括INTEGER,BOOLEAN,.构造类型:由两种以上成分构成的构造类型,包括SEQUENCE,SEQUENCE OF,.标签类型:由已知类型定义的新类型。其他类型:包括CHOICE和ANY两种类型。,2.2.1抽象数据类型,2.2.1抽象数据类型,2.2.1抽象数据类型,1简单类型(1
6、)INTEGER。例2.1Number :=INTEGER(2)BOOLEAN。例2.2 Married :=BOOLEAN(3)REAL,实数类型,对精度没有限制,可以表示为科学计数法:MBE,其中尾数M和指数E可以取任何正或负整数值,基数B可以取2或10。(4)ENUMERATED,枚举类型,实际上是一组个数有限的整数值。可以给每个整型值赋予不同的意义。,2.2.1抽象数据类型,例2.3Week :=ENUMERATED Monday (1), Tuesday (2), Wednesday (3), Thursday (4), Friday (5), Saturday (6), Sunda
7、y (7) ,2.2.1抽象数据类型,例2.4 对于SNMP的MIB中,在获取响应信息中的错误状态如下所示。ErrorStatus:= ENUMERATED noError (0), tooBig (1), noSuchname (2), badValues (3), readOnly (4), genError (5) ,2.2.1抽象数据类型,(5)BIT STRING,位串类型,由0个或多个比特组成的有序位串。位串的值可以由对应的二进制或十六进制串表示。例如,10100010B或A2H都是位串类型的有效数值。(6)OCTET STRING,八位位组串,由0个或多个8位位组组成的有序串。和
8、位串类型一样,八位位组串也可以用对应的二进制或十六进制串表示。,2.2.1抽象数据类型,(7)OBJECT IDENTIFIER,对象标识符,从对象树派生出的一系列点分数字串的形式,用来标识对象。在ASN.1中对象集合按照树形结构组织,树的每个分支被赋予一个整数标识。对象标识符是从根节点开始到对象节点路径上边标识的顺序连接,它是对象的唯一标识。根节点以下有3个节点,分别是ccitt(0),iso(1),joint-iso-ccitt(2),它们向下又可细分,如iso的子节点包括standard(0),registration-authority(1),member-body(2),org(3)
9、。其中org(3)下面的子节点internet就定义了最常使用的管理对象。,2.2.1抽象数据类型,例2.5 internet OBJECT IDENTIFIER := iso(1) org(3) dod(6) 1 对象标识符的值是1.3.6.1iso.org.dod.1,2.2.1抽象数据类型,(8)NULL,空值类型,它仅包含一个值NULL,主要用于位置的填充。如果某个时刻无法得知数据的准确值,简单的方法就是将这一数据定义为NULL类型。还可以用NULL表示序列中可能缺省的某个元素。(9)CHARACTER STRING,字符串类型。ASN.1中定义了一些字符集不完全相同的CHARACTE
10、R STRING类型,不同类型包含的字符集不同。标准ASCII字符可以分为G集(图形符号集,ASCII字符编号范围是33126)和C集(控制符号集,ASCII字符编号范围是031)。空格符(编号32)和删除符(编号127)同时属于两个符号集。,2.2.1抽象数据类型,2构造类型(1)SEQUENCE,序列类型,是包含0个或多个组成元素的有序列表。列表的不同元素可以分属于不同的数据类型。每个元素由元素名和元素类型组成,元素类型可以是简单类型,也可以是定义的其他构造类型。元素类型标识符后可以跟OPTIONAL或DEFAULT。OPTIONAL示在序列类型的实例中该元素项可选。DEFAULT表示序列
11、类型的实例中该元素具有事先指定的默认值。COMPONENTS OF表示它包含了给定序列中的所有组成元素。,2.2.1抽象数据类型,例2.6 AirlineFlight :=SEQUENCE airline IA5STRING, flight IA5STRING, seats SEQUENCE maximum INTEGER, occupied INTEGER, vacant INTEGER, , airport SEQUENCE origin IA5STRING, stop0 IA5STRING OPTIONAL, stop1 IA5STRING OPTIONAL, destination I
12、A5STRING , crewsize ENUMERTAED six (6), eight (8), ten (10), cancel BOOLEAN DEFAULT FALSE ,2.2.1抽象数据类型,它的一个实例是airplane1 AirlineFlight := airline china, flight C3416, seats 320 ,280,40, airport original Qingdao,stop0 TaiYuan,destination WuLuMuQi, crewsize 10 或airplane1 :=china, C3416, 320 ,280,40, original Qingdao,stop0 TaiYuan,destination WuLuMuQi,10,