ASN1_BER_DER_编码子集入门指南
。BER 说明了如何把每种 ASN.1 类型的值编码为8bit的 octet流。通常每个值有不止一种的 BER编码方法。一般使用 另外一套编码规则DER,它是 BER的一个子集,对每个 ASN.1值只有唯一一种编码方法。 ### ASN1_BER_DER 编码子集入门指南 #### 概述 本文旨在深入探讨OSI中的**抽象语法标记**(Abstract Syntax Notation One,简称ASN.1)、**基本编码规则**(Basic Encoding Rules,简称BER)以及**可辨别编码规则**(Distinguished Encoding Rules,简称DER)的基础概念与应用。 ### 一、引言 随着信息技术的发展,**抽象**成为了软件工程领域中最关键的设计理念之一。通过抽象化,设计人员能够定义系统组成部分而不必关注其实现细节。这不仅简化了定义过程,也使得系统更加开放灵活。在开放系统互联(OSI)模型中,这一理念得到了充分的体现。OSI是一个国际标准体系,定义了从物理层到应用层的通信协议,实现了计算机间的互联互通。 ### 二、抽象语法标记 (ASN.1) **ASN.1**是一种标准化的数据表示方法,用于定义数据结构。它提供了一种通用的方式来描述数据类型和值,使得这些数据可以在不同的平台上进行交换。ASN.1的核心价值在于它的灵活性和可扩展性,它可以定义各种简单的数据类型,如整数、位串等,也可以定义更复杂的结构化类型,如序列(Sequence)和集合(Set)。 #### 2.1 类型定义 在ASN.1中,类型定义使用特定的语法来进行表述。例如,定义一个整数类型: ```asn1 Integer ::= INTEGER ``` 这行代码定义了一个名为`Integer`的类型,它是整数类型的一个别名。 #### 2.2 结构类型 结构类型允许组合不同的简单类型或结构类型来创建新的复合类型。例如,定义一个包含整数和字符串的序列: ```asn1 Person ::= SEQUENCE { age INTEGER, name UTF8String } ``` 这里定义了一个名为`Person`的序列类型,其中包含了两个成员:`age`和`name`。 ### 三、基本编码规则 (BER) **BER**是一组规定如何将ASN.1类型的数据编码成八位字节流的规则。BER的灵活性很高,对于同一个ASN.1值,可能会有多种不同的BER编码方式。 #### 3.1 编码过程 BER编码过程中涉及以下几个步骤: 1. **确定类型标签**:每个ASN.1类型都有一个唯一的标签,该标签由类和标签号组成。 2. **构造编码**:BER编码由类型标签、长度标识和值本身组成。 3. **处理嵌套结构**:如果编码的对象是复合类型,则需要递归地对其中的每个成员进行BER编码。 ### 四、可辨别编码规则 (DER) **DER**是BER的一个子集,它为每个ASN.1值提供了唯一的一种编码方式。相比于BER,DER更加严格,减少了编码的模糊性。 #### 4.1 DER规则 DER定义了一些额外的规则来确保编码的唯一性: 1. **编码顺序**:对于集合类型,DER要求按照标签的升序进行编码。 2. **紧凑性**:DER要求编码尽可能紧凑,避免冗余。 3. **明确性**:DER编码必须能够准确地表示出原始ASN.1数据。 ### 五、示例 为了更好地理解BER和DER的工作原理,下面给出一个具体的例子: 假设我们有一个简单的ASN.1定义: ```asn1 Example ::= SEQUENCE { id INTEGER, name UTF8String } ``` 使用BER编码,同样的数据可以有不同的编码方式。例如,`id`为123,`name`为"John Doe"`可以编码为不同的字节序列。然而,使用DER编码,对于同样的数据,总是会得到相同的字节序列。 ### 六、结论 **ASN.1**、**BER**和**DER**是OSI模型中不可或缺的部分,它们为数据交换提供了标准化的框架。通过对这些概念的理解,开发者可以更好地设计和实现跨平台的通信协议。在未来的信息技术发展中,这些标准将会继续发挥重要作用。
- xinyanghjs2014-07-31相当不错,谢谢!!
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术资料分享TF卡资料很好的技术资料.zip
- 技术资料分享TF介绍很好的技术资料.zip
- 10、安徽省大学生学科和技能竞赛A、B类项目列表(2019年版).xlsx
- 9、教育主管部门公布学科竞赛(2015版)-方喻飞
- C语言-leetcode题解之83-remove-duplicates-from-sorted-list.c
- C语言-leetcode题解之79-word-search.c
- C语言-leetcode题解之78-subsets.c
- C语言-leetcode题解之75-sort-colors.c
- C语言-leetcode题解之74-search-a-2d-matrix.c
- C语言-leetcode题解之73-set-matrix-zeroes.c