第二章抽象语法表示
“China”,“1106”,{320,107,213}, { “Shanghai”, “Beijing” },10
ASN.1的数据类型
构造类型 SEQUENCE OF 单纯序列类型,使包含0个或多个组成元素的有序 列表,列表的各元素属于同一数据类型。 例子: Seats ::= SEQUENCE OF INTEGER
抽象语法与传输语法的对应关系
一个抽象语法可以选择多个传输语法来表示; 一个传输语法也可以用来表示多个抽象语法。
表示上下文
抽象语法/传输语法组合被称为表示上下文 (Presentation Context)。通常,应用实体 间会用多个抽象语法/传输语法的组合关系。
抽象语法标记ASN.1
Abstract 由ISO
第二章 抽象语法表示 ASN.1
主要内容:
2.1 网络数据表示 2.2 ASN.1的基本概念 2.3 基本编码规则 2.4 ASN.1宏定义
数据的表示
数据具有语法和语义两个方面
语法:指数据的表示形式,或者说构成数
据的规则。
语义:指数据的内容及其含义。
同样的语义有不同的语法表示
数据的表示
eight(8),
ten(10) },
cancel BOOLEAN DEFAULT FALSE }
该类型的一个实例是: { airline “China”, flight “1106”, seats {maximum 320, occupied 107, vacant 213}, airport {origin “Shanghai”, destination “Beijing” }, crewsize 10 } 或者 { }
定义了数据的常用结构(包括不同的数据类型),独立 于任何编码技术的,只与应用有关。
传输语法(Transfer Syntax):
提供从抽象语法表示的数据到比特序列,以及其相反操 作的方法。
编码规则(Encoding Rule):
提供法 & 传输语法
抽象语法与传输语法
ASN.1的数据类型
构造类型 SET OF 单纯集合类型,使包含0个或多个组成元素的无序 集合,集合中的各元素属于同一数据类型。 例子: VipSeats ::= SET OF INTEGER vipseatset VipSeats ::={ 330,331,332}
2.2 ASN.1的基本概念
ASN.1的数据类型
构造类型 SEQUENCE 序列类型,使包含0个或多个组成元素的有序列表, 列表的不同元素可以分属于不同的数据类型。每个 元素由元素名称和元素类型组成。
ASN.1的数据类型
构造类型 SEQUENCE 例子1:
一个常见的SEQUENCE声明如: Description ::= SEQUENCE { surname IA5String, first-name IA5String, age INTEGER }
现在不同应用系统之间的信息交换。
● 对于网络中n个异体的节点能互通,我们需要为每个节点编
写(n-1)个编解码程序,即需要总数为n*(n-1)个编解码程序。
表示层的作用
●为了保证同一数据对象在不同计算机中语义的正确性,实现 在不同应用系统之间的信息交换。两个系统在传输数据前需 要协商共用的编码方式。表示层负责在两个应用系统间进行 编码协商和实际信息编码。
ASN.1的数据类型
构造类型 SET 集合类型,使包含0个或多个组成元素的无序集合, 集合中的各元素可以属于不同数据类型。 例子: {“Mike”,4,TRUE} Person ::= SET { {4,“Mike”, TRUE} name IA5String, {TRUE, “Mike”,4} age INTEGER, 它们属于person的 female BOOLEAN 同一个实例。 }
REAL:实型,ASN.1对实数的精度也没有 限制,它可以表示任意的实数。每个实数 均可以表示为M*BE,用三元组(M,B,E)的形 式。
例如:
{3141592653589793238462643383 279,10,-30}
ASN.1的数据类型
ENUMERATED:枚举类型,是一个整数的表, 但它不能进行任何算术运算,因为 ENUMERATED类型的值只是用整数表示的 一个符号,而不具有整数的性质。
该类型的一个值为: johnny Description ::= { surname "Smith", first-name "John", age 40 }
ASN.1的数据类型
构造类型 SEQUENCE
例子2:
AirlineFlight ::= SEQUENCE{ airline IA5String, flight NumericString, seats SEQUENCE { maximum INTEGER, occupied INTEGER, vacant INTEGER },
ASN.1的数据类型
OCTET STRING:由0个或多个八位位组组成的 有序串.
ASN.1的数据类型
简单类型之第二组
NumbericString:包含数字0到9及空格。 PrintableString:包含所有大小字母、数字、标点、 以及空格。 IA5String:由取自IA5(5号国际字母表)的字母组成, 它和ASCII基本相同。 VisibleString:由取自IA5的图形字符组成,不含控制 字符集。
}
C语言的数据类型
基本类型 整型 字符型 实型(浮点型) 单精度型 双精度型 空类型 数组类型 结构体类型 共用体类型 枚举类型
C数据类型
构造类型 指针类型
ASN.1的数据类型
ASN.1定义的数据类型
简单类型:由单一成份构成的原子类型。 构造类型:由两种以上成分构成的构造类 型。 标签类型:由已知类型定义的新类型。 其他类型:包括CHOICE和ANY两种类型。
OSI 应用层 表示层 会话层 传输层 OSI 应用层 表示层 会话层 传输层
网络层
数据链路层 物理层
为应用层提供统一 的网络数据表示。
网络层
数据链路层 物理层
表示层的基本概念
实际语法(Concrete Syntax ):
本地的,并且定义本地系统的数据表示方法。
抽象语法(Abstract Syntax ) :
Syntax Notation One
8824/ITU-T X.208定义
一种数据类型描述语言 有严格的BNF定义 独立于计算机架构和语言 可容易地映射成C或C++或Java的数据结构 与多个标准化编码规则相关
抽象语法标记ASN.1的作用
本地数据表示
实际语法表示
一个抽象类型定义(被其他类型定义所 支持)。这个抽象类型的所有可能值。
确定要表示信息的数据类型。 对于不同类型的数据定义不同的操作。 任何类型的数据最终都将被表示成为比特序列。
比特序列不能说明它自身表示哪一种 类型的数据,它所代表的意义会因计 算机体系结构、程序设计语言等因素 的不同而不同。
不同计算机系统的数据表示
网络中不同类型的计算机交互通信时,采用的 “语法”不同,这种差异决定了同一数据对象在不 同计算机中被表示为不同的比特序列。
ASN.1的数据类型
简单类型 之第三组
对象类型,包括OBJECT IDENTIFIER和 Object Descriptor两种类型。 OBJECT IDENTIFIER类型的值是一个对象标 识符。唯一标识一个对象。
Object Descriptor对象描述符:描述对象的语义。
ASN.1的数据类型
ASN.1的数据类型
简单类型
第一组是基本类型
BOOLEAN,INTEGER, BIT STRING,OCTET STRING REAL和ENUMERATED
ASN.1的数据类型
INTERGER:ASN.1中没有限制整数的位数, 即它可以是任意大小的整数。
例子:
ColorType ::=INTEGER{ red(0),blue(1),green(2)};
ASN.1的数据类型
简单类型 之第四组
NULL是空类型,EXTERNAL是外部类型, UTCTime和GeneralizedTime是两种有关时间的类型, 其区别是表示时间的形式不同。
ASN.1的数据类型
构造类型
构造类型有序列和集合两种:
- 分别用SEQUENCE和SEQUENCE OF表示不同 类型和相同类型元素的序列。 - 分别用SET和SET OF表示不同类型和相同类型元 素的集合。 序列和集合的区别是前者的元素是有序的,而后 者是无序的。
简单类型之第三组
OBJECT IDENTIFIER:对象标识符,从对象树派生 出的一些列点分数字串的形式来标识对象。对象可 以是国际标准,管理对象,甚至可以是抽象语法和 传输语法本身。对象标识符是根节点到对象节点路 径上边标识的顺序连接,它是对象的唯一标识。
例如:
internet OBJECT INDETIFIER ::={iso(1)org(3)dod(6)1}
test.code test.x a 00000001 00000011 test.code a
test.x = 258; test.code=„a‟
test.x
00000011 00000001
host 2 format
host 1 format
需要统一的网络数据表示格式