ASN.1编码规则详解(最全最经典)(1) (4)

凌霜傲雪 分享 2020-06-28 下载文档

1)表示层 Presentation Layer

两个系统在传输数据前需要协商共用的编码方式。表示层负责在两个应用系统间进行编码方式协商和实际信息的编码。

为了达到这个目的,表示层需使用以下概念:

(1)抽象语法:定义了数据的常用结构(包括不同的数据类型),并且建立了和应用层对话所依赖的框架。

(2)实际语法:本地的,并且定义本地系统的数据表示方法。 (3)传输语法:定义两个系统间的表示层间交换数据的表示方法。

(4)编码规则:提供从本地实际语法到传输语法和其相反操作的方法。(第1章中说过:

从抽象语法到传输语法,由ASN.1编译器按照编解码规则实现。)

应用这些记法,表示层能够提供应用层这些服务:

(1)传输语法的协商(在会话开始前挑选一种传输语法的方法,改变传输语法的方法); (2)确定传输语法的集合(抽象语法的多种表示方式);

(3)用实际语法(内部表示方式)的编码/解码规则来翻译为传输语法(外部表示方式)或者做相反操作;

(4)把一个协商后的传输语法和应用内部采用的抽象语法进行关联; (5)访问会话层服务。

Application AApplication B1 P-CONNECT.request (AS1,AS2)6.P-CONNECT.conˉrm (AS2)3. P-CONNECT.indication (AS1,AS2)4. P-CONNECT .response (AS2)2. PPDV = AS1(TS1),AS2(TS2,TS3)Presentation A5. PPDV = AS2(TS2)Presentation B Figure 2-2 表示层上下文协商 在 Figure 2-2 表示层上下文协商表示层上下文协商中,详细描述了这样一个过程:

(1)应用A发送一个P-CONNECT.request原语给自己的表示层,并且声明操作这个传输的相关抽象语法名字为(AS1,AS2)。每个抽象语法的名字实际是一串成为对象标识符(Object Identifier,在ASN.1中是OBJECT IDENTIFIER类型的值)的数字,它能唯一的标识抽象语法。的确,我们应当注意到这是一个开放式的架构,能适应各种机器,各种抽象语法,各种传输语法。

(2)表示层为每个抽象语法关联传输语法,并且为会话层编码“表示(层)协议数据值”PPDV(Presentation Protocol Data Value),这些数据会被送往对方系统的表示层。PPDV中包含着可用的抽象语法。

(3)表示层B收到这个PPDV数据后,向自己的应用层回送P-CONNECT.indication原语,指示应用A的抽象语法可用。

(4)应用B以P-CONNECT.response原语应答,指示在这个传输中可用的抽象语法的名字(这里只指示AS2)。

(5)会话层B接收到原语后,发送PPDV指明传输语法,这个语法应当是已经协商中的一个(如上图中是T2、T3中的T2)。

(6)最后,表示层A收到PPDV后,检查对方推荐的传输语法,如果接受它则发送P-CONNECT.confirm原语给应用A。

应当注意,表示层没有参与到应用间可用抽象语法的确定过程中。通常,会用多个抽象语法/传输语法的组合关系。一个抽象语法可以用多个传输语法来表示;一个传输语法也可以用来表示多个抽象语法。抽象语法/传输语法组合的协商结果被称为“表示上下文”(Presentation Context)。上下文用整数来标识,为了防止重新分配时出现覆盖,一般让一个实体采用偶数而另一个实体采用奇数。其它上下文可以在通讯过程中动态协商。

在初始协商的最后,系统在它的配置中有了一套“表示上下文”,在任何时候,系统都能从中选出合适的上下文进行交换操作。

来自应用层的数据会被根据相关的“表示上下文”进行编码。当只有一个上下文被指定时,他们将被直接编码(简单编码 Simple Encoding);否则应用数据包括嵌入数据(embedded data)都要在前面加上正确的上下文标识符(完整编码 Complete Encoding)。 2)应用层 Application Layer

采用OSI模型时,我们称一个应用的一个通讯方面为一个应用实体。通讯实体用通讯

协议和表示业务来共享信息。

在ASN.1中,各个应用的数据结构作为“应用(层)协议数据值”APDV(Application Protocol Data Value)发送。每当要传输数据时,应用实体都会在给出APDV的同时,告知表示层自己的ASN.1名字。通过参考ASN.1的定义,表示层可以得知数据单元的类型和长度,以及传输时应当采用的编码方法。在连接的另一端,表示层分析收到数据结构中的ASN.1标识符,就能得知第一个数据单元有多少比特,第二个有多少,等等。有了这些信息,表示层按照接收方内部格式对数据做必要的转换。

自从ISO要求所有的应用层和表示层数据交换都要用ASN.1抽象语法描述后,ASN.1在OSI中只作为表示方法用。随着OSI模型的广泛应用,ASN.1主要用在高层中(部分因为在ASN.1出现前,许多低层已经存在了),但这不是一种限制。如果ASN.1能广泛应用在低层中,就能充分影响编码过程,阻止数据在不同层上反复出现。 2.1.2 边界对齐

对于同样一条消息,在计算机内存中是以Byte为单位存储的,在链路上则是以bit为单位传送的。对于其中每个信元IE,当从bit流映射到Byte流时,就涉及到边界对齐的问题:

如果一个信元的第一个bit也恰好是Byte流中某Byte的开始bit时,我们称之为开始于边界对齐的;

如果信元的最后一个bit也恰好是Byte流中某Byte的最后一个bit时,则可以称之为结束于边界对齐的。

对于不是结束于边界对齐的情况,一般要进行补位。有两种方式:

(1)对每个信元的结束立即进行补位,保证下一个信元是开始于边界对齐的;

(2)从信元结束的位置开始新的信元,到消息结束时再进行一次补位操作。(用于无线空口中)

通常第一种方式用在对消息大小要求不苛刻的编码过程中和通常的解码过程中;第二种方式用在对消息大小要求苛刻的编码过程中(如无线通讯系统的空中接口消息编码中)。

当把边界对齐问题和大小端问题放在一起时,常常会造成理解上的困难。某些协议中为了明确表示位域跨字节情况下的排列,用MSB、LSB标识最高、最低bit的位置所在。

2.1.3 大小端(Big Endian vs Little Endian)

? <1>大端方式(MSDN中说的网络序):Motorola的PPC系列、IP协议中;(该方式和书写方式一致)

? <2>小端方式(MSDN中说的主机序):VAX计算机、Intel的x86系列;

字节内部的bit高低次序相同(左高右低),而字节之间的高低次序相反。 在32位系统中我们分以下这些情况来一一说明: 1)Byte类型(8bits)

在只有一个Byte的情况下,大端方式和小端方式没有分别。如:0x34

Big Endian Little Endian bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0x34 0x34 2)Short类型(16bits)

大小端方式之间有差别。如:0x1234

Big Endian (0) Big Endian (1) Little Endian (0) Little Endian (1) 0 0 0 1 0 0 1 0 0x12 0 0 1 1 0 1 0 0 0x34 0 0 1 1 0 1 0 0 0x34 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0 0 0 1 0 0 1 0 0x12 3)Long类型(32bits)

大小端方式之间有差别。如:0x12345678 Big Endian (0) Big Endian (1) Big Endian 0 1 0 1 0 1 1 0 0x56 0 0 1 1 0 1 0 0 0x34 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0 0 0 1 0 0 1 0 0x12 (2) Big Endian (3) Little Endian (0) Little Endian (1) Little Endian (2) Little Endian (3) 0 0 0 1 0 0 1 0 0x12 0 0 1 1 0 1 0 0 0x34 0 1 0 1 0 1 1 0 0x56 0 1 1 1 1 0 0 0 0x78 0 1 1 1 1 0 0 0 0x78 4)位域的情况(边界对齐问题+大小端问题):

大小端方式之间有明显的差别。

在一个字节内,如3-4-1结构下的{4, 15, 0} Big Endian Little Endian 跨字节,边界不对齐,如5-4-7结构下的{2, 15, 0} Big Endian (0) Big Endian (1) Little Endian (0) Little Endian (1) 1 1 1 0 0 0 1 0 0xE2 0 0 0 0 0 0 0 1 0x01 1 0 0 0 0 0 0 0 0x80 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0 0 0 1 0 1 1 1 0x17 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 1 0 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0x9E 0x7C 2.2 基本语法规则

到目前为止,ASN.1记法仍然主要是BNF(Backus-Naur Form)形式的。

1)在ASN.1中,符号的定义没有先后次序:只要能够找到该符号的定义即可,而不必关


ASN.1编码规则详解(最全最经典)(1) (4).doc 将本文的Word文档下载到电脑

下一篇:创建星级供电所PPT汇报框架课件 doc - 图文

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx