BER编码规则和传输语法..doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
BER编码规则和传输语法.

3 编码规则和传输语法 3.1 BER 3.1.1 基本规则 BER(Basic Encoding Rules)是ASN.1中最早定义的编码规则,在讨论详细编码规则时,我们是基于正确的抽象描述上。BER传输语法的格式一直是TLV三元组Type, Length, Value也可以认为是Tag, Length, Value,见Figure 3-1。TLV每个域都是一系列八位组,对于组合结构,其中V还可以是TLV三元组,见Figure 3-2。BER传输语法是基于八位组(为了避免不同系统上的混淆,没有采用Byte为单位)的,自定界的编码,因为其中L明确界定了八位组的长度。BER是大端编码的,其八位组的高位比特在左手边,见Figure 3-3。 Figure 3-1 TLV三元组 Figure 3-2 传输语法示例 Figure 3-3 大端编码 BER编码中的Tag(通常是一个八位组),指明了值的类型,其中一个比特表征是基本类型还是组合类型。Tag有如下两种形式: Figure 3-4 Tag的两种形式 当Tag不大于30时,Tag只在一个八位组中编码;当Tag大于30时,则Tag在多个八位组中编码。在多个八位组中编码时,第一个八位组后五位全部为1,其余的八位组最高位为1表示后续还有,为0表示Tag结束。Tag的值需要将上图中黄色部分拼接后才能得到。? BER编码中Length表示Value部分所占八位组的个数,有两大类:定长方式(Definite Form)和不定长方式(Indefinite Form);在确定方式中,按照Length所占的八位组个数又分为短、长两种形式。具体如下: Figure 3-5 Length的三种形式 采用定长方式,当长度不大于127个八位组时,Length只在一个八位组中编码;当长度大于127时,在多个八位组中编码,此时第一个八位组低七位表示的是Length所占的长度,后续八位组表示Value的长度。 采用不定长方式时,Length所在八位组固定编码为0x80,但在Value编码结束后以两个0x00结尾。这种方式使得可以在编码没有完全结束的情况下,可以先发送部分消息给对方。? BER编码规则的Object Identifier注册为{joint-iso-itu-t(2) asn1(1) base-encoding(1)},其Object Description为“Basic Encoding of a single ASN.1 type”。 3.1.2 各类型的编码 本小节中以UNIVERSAL Tag和短型Value为例,讨论各种类型的BER编码,重点关注Value部分。在举例中,n10表示数字n是十进制数。 I. BOOLEAN 只能以primitive方式编码。 FALSE的编码为: TRUE的编码(任何不是全0都可以)为: 或者: II. NULL,只能以primitive方式编码,且只有一个值: III. INTEGER 只能以primitive方式编码。 我们分编、解码两个过程,正数、负数两种情况来讨论。 1)???????? 编码过程: Figure 3-9 INTEGER编码过程 ??????????? 对于正数,如果最高比特位为0则直接编码;如果为1,则在最高比特位之前增加一个全0的八位组。 ??????????? 对于负数,先取绝对值,再取反,最后加1。 2)???????? 解码过程: Figure 3-10 INTEGER解码过程 基于前面所述的规则,整数-27,066的编码为: IV. ENUMERATED ENUMERATED的值按照前面整数值的规则编码。 V. REAL Figure 3-12 REAL类型编码 VI. BIT STRING 可以primitive方式编码或者constructed方式编码。 采用primitive方式,对1011011101011B的编码规则如下: 注意在1011011101011B前增加了一个八位组,取值为0到7,表征这个值最后补位的个数。由发送方决定补位采用0还是1。 如果BIT STRING的值为空,则编码时,长度为1,补充的八位组为全0。 constructed方式是在发送时,有部分编码还不能确定时采用的,前一个值的编码如下: Figure 3-15 BIT STRING: 1011011101011B的constructed form编码 注意Length部分采用的是不定长编码。 VII. OCTET STRING 与BIT STRING类似,但是不需要增加表征补充位个数的八位组。 VIII. OBJECT IDENTIFIER 只能以primitive方式编码。 编码时,第一个八位组采用公式:fi

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档