在一个由不同厂家生产的计算机构成的环境中,由于机器硬件和软件配置的不同,在数据表示(诸如安符编码、数值表示、字长)方面往往存在差异。为使厂家各产品之间互通互连,我们必须消除这些差异,应具有一套独立于计算机硬件和软件环境的外部数据表示格式,并通过对其编解码实现。抽象语法表示ASN.1(ITU - T rec.X.680|ISO/IEC8824-1)及它的基本编码规则BER(ITU-T Rec. X.690|ISO/IEC8825-1)和紧缩编码规则PER(ITU-T Rec.X.691|ISO/ IEC8825-2)即充当了这一角色,被许多应用层协议所使用,使不同系统之间的互连、互通成为可能。
在开发IP电话的H.323协议时,由于网关之间的视频、音频数据和控制消息要通过互联网进行传输,而网关产品可能是不同厂家生产的,软、硬件环境各不相同。因此采用了ASN.1语法表示,传送的格式是基于ASN.1的PER(packed encoding rules)编码格式的比特流。
ASN编译器的实现原理:
ASN1-C编译器的实现方法
(1)实现编译器要做的准备工作在实现编译器之前,我们要做以下的工作:
a.进行数据结构的映射,实现ASN.1类型到C类型的翻译工作,并存在头文件中。遵循规则如前所述,ASN.1基本类型见协议X.680。
b.编制运行时函数库(Run-time Library Function),包括BER运行时库函数、PER运行时库函数以及运行时公用库函数。BER运行时函数库包括X.680中规定的基本的数据类型的 BER编码函数,PER运行时函数库包括其PER编码函数,公用函数库包括跟踪、诊断、打印、出错信息处理以及其它为前两个库函数所用的函数等。这一步设计的库函数留出API接口供程序调用,用户当然可以自己调用这些函数进行数据的编码。在这里,对这些函数的调用可自动由编译器生成的.c文件调用。
OPAL中的文件结构是 ASN文件对应一个.h文件,然后对应一个自动生成的cxx文件。
关于应用和更深入的研究和了解有待再学习。
分享到:
相关推荐
3. **RTP/RTCP**:H.323中的媒体传输通常使用RTP(Real-time Transport Protocol)和RTCP(Real-time Transport Control Protocol),开发者需要实现这些协议来传输音频和视频数据。 4. **多线程编程**:为了实现...
在"asn1.rar_V2 _asn_asn1"这个压缩包中,包含两个关键文件:asn1.c 和 asn1.h,这通常意味着它们是C语言编写的源代码文件,用于处理ASN.1 DER编码的解析功能。asn1.c可能包含了实现ASN.1 DER编码解析的具体函数和...
ASN.1的应用广泛,涉及到电子邮件(X.400)、目录服务(X.500)、VoIP(H.323)、SNMP等众多网络协议,甚至在UMTS的接入和非接入层中也有其身影。 ASN.1的成功之处在于它与多种编码规则相结合,如基本编码规则(BER...
通过学习和理解这两个文件,开发者可以了解如何在实际项目中处理和操作ASN.1编码的数据,从而实现不同系统间的通信。对于理解和实现基于ASN.1的通信协议,或者处理涉及ASN.1编码的数据(如X.509证书)的开发工作,这...
asn.1(抽象语法标记一号)是一种用于定义数据结构的标准语法,广泛应用于通信协议、数据库、软件工程等领域,尤其在电信和网络安全中占有重要地位。它允许开发者用一种标准化的方式来描述复杂的数据结构,使得不同...
这确保了对ASN.1标准中所有描述的数据类型的正确处理。 通过这种方法,发明提供了一种统一的、不针对特定结构数据的编解码方案,简化了过程,提高了灵活性和可读性,并且具有良好的扩展性。同时,由于asn1编解码是...
### ASN基础知识详解 #### 一、概述 ...通过以上步骤,可以在C++程序中轻松地处理 **ASN.1** 定义的数据类型,实现数据的编码、解码以及其他操作。这不仅简化了开发过程,还确保了数据格式的一致性和准确性。
通常,DB2 的开发包应该包含这些头文件,但根据描述,似乎用户只找到了 asn.h 这一个头文件,这是不完整的。为了正确地开发和编译 DB2 相关的代码,你需要获取完整的 DB2 SDK(软件开发工具包),它会包含所有必要的...
MIB是一种结构化的数据库,使用ASN.1(Abstract Syntax Notation One)编码,存储在网络设备上,描述了设备的硬件、软件、配置参数以及性能数据。网络管理系统(NMS)通过SNMP(Simple Network Management Protocol...
本篇将详细介绍H3C提供的三种MIB库文件:H3C Compatible Style Private MIB、H3C New Style Private MIB和H3C Public MIB,以及它们在SNMP(Simple Network Management Protocol)和SMI(Structure of Management ...
"asn1库文件" 通常包含头文件(.h)和实现文件(.c),头文件提供API接口供其他程序调用,实现文件则包含具体的函数实现。开发者可以将这个库链接到他们的项目中,以便在他们的代码中使用这些功能。 "相关介绍" ...
描述中提到,该研究来自华中农业大学植物科学技术学院和农业微生物学国家重点实验室,研究人员吴高兵和詹滔通过构建一个包含7000个克隆的随机突变体库,筛选出了一个变异体N336K,并用定位诱变技术(site-directed ...
### 系统盘中各种dll文件的含义 在计算机领域,了解系统盘中的各种dll文件不仅对于维护系统稳定性和安全性至关重要,还能够帮助用户更好地理解操作系统的工作原理。本篇文章将详细解析部分重要的dll文件及其功能。 ...
不过,由于我在工作中只接触到Ericsson的某些版本的CDR,而且,用于解析CDR文件的描述文件来源于供应商,我的程序也只能识别来自于这个供应商的描述文件,所以,移植到其它厂商的环境下可能会产生一些问题。...
在压缩包文件列表中,"ec.c"和"ec.h"可能是C语言编写的源代码文件和头文件。这些文件很可能包含了处理EC(Elliptic Curve,椭圆曲线)相关的函数和数据结构,椭圆曲线是现代密码学中常用的一种算法,特别适用于生成...
- **会议业务**:本标准描述了如何在基于分组的网络上管理音频、视频、数据和控制信息,以提供H.323设备中的会议业务。 #### 标准更新要点 - **H.225.0 Alias Address的扩展**:支持数字码10至14,以增强地址的...
通过阅读和分析这些源代码,开发者可以了解如何在C++环境中处理这种编码方式,以及如何创建自己的解析器或生成器。 总的来说,这个压缩包文件包含了一个用C++实现的BER-TLV编码和解码的示例,适用于那些需要处理TLV...
不过,由于我在工作中只接触到Ericsson的某些版本的CDR,而且,用于解析CDR文件的描述文件来源于供应商,我的程序也只能识别来自于这个供应商的描述文件,所以,移植到其它厂商的环境下可能会产生一些问题。...
不过,由于我在工作中只接触到Ericsson的某些版本的CDR,而且,用于解析CDR文件的描述文件来源于供应商,我的程序也只能识别来自于这个供应商的描述文件,所以,移植到其它厂商的环境下可能会产生一些问题。...