ASN.1

✍ dations ◷ 2025-07-08 16:20:28 #ASN.1

在电信和计算机网络领域,ASN.1(Abstract Syntax Notation One) 是一套标准,是描述数据的表示、编码、传输、解码的灵活的记法。它提供了一套正式、无歧义和精确的规则以描述独立于特定计算机硬件的对象结构。

ASN.1是ISO和ITU-T的联合标准,最初是1984年的CCITT X.409:1984的一部分。由于其广泛应用,1988年ASN.1移到独立标准X.208,1995年进行全面修订后变成X.680系列标准。

ASN.1本身只定义了表示信息的抽象句法,但是没有限定其编码的方法。各种ASN.1编码规则提供了由ASN.1描述其抽象句法的数据的值的传送语法(具体表达)。标准的ASN.1编码规则有基本编码规则(BER,Basic Encoding Rules)、规范编码规则(CER,Canonical Encoding Rules)、唯一编码规则(DER,Distinguished Encoding Rules)、压缩编码规则(PER,Packed Encoding Rules)和XML编码规则(XER,XML Encoding Rules)。为了使ASN.1能够描述一些原先没有使用ASN.1定义,因此不适用上述任一编码规则的数据传输和表示的应用和协议,另外制订了ECN来扩展ASN.1的编码形式。ECN可以提供非常灵活的表明方法,但还没有得到普遍应用。

ASN.1与特定的ASN.1编码规则一起通过使用独立于计算机架构和编程语言的方法来描述数据结构,为结构化数据的交互提供了手段,特别是在网络环境的应用程序。

应用层协议如X.400(email)、X.500和LDAP(目录服务)、H.323(VoIP)和SNMP使用 ASN.1 描述它们交互的协议数据单元。在UMTS的接入和非接入层也有广泛的应用。ASN.1的其他应用领域参见此处。

这里列举了很多ASN.1的自由或者商业的工具。

FooProtocol 结构的定义系使用 ASN.1 表示法:

FooProtocol DEFINITIONS ::= BEGIN    FooQuestion ::= SEQUENCE {        trackingNumber INTEGER,        question       IA5String    }    FooAnswer ::= SEQUENCE {        questionNumber INTEGER,        answer         BOOLEAN    }END

ASN.1没有定义的谈话流动。 这是协议的文本描述。

假设消息,符合与foo的协议将被发送到接收方。这种特定的消息(PDU):

myQuestion FooQuestion ::= {    trackingNumber     5,    question           "Anybody there?"}

要通过网络发送上述消息,需要编码成位元字串(string of bits)。ASN.1定义了不同的算法来完成这项任务,被称为编码规则。有很多,最简单的一个是DER.

Foo协议规范应明确名称一套编码规则的使用,Foo的协议,使用者 知道他们应该使用哪一个。

下面显示DER编码格式(皆16进制)的数据结构:

30 -- 標籤說明 SEQUENCE13 -- octets長度02 -- 標籤說明 INTEGER01 -- octets長度05 -- value16 -- 標籤說明 IA5String0e -- octets長度41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f -- value ("Anybody there?" in ASCII)

(Note: DER uses a pattern of type-length-value(英语:Type-length-value) triplets)

人们实际上得到的是21个octets:

30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f

ASN.1 的范围与 DER 结束于此. It is possible to transmit the encoded message to the party by any means (utilizing TCP or any other protocol). The party should be able to decode the octets back using DER.

另外,它是可能的编码用XER (ASN.1) 来获取更多人类可读性 "over the wire". 可以产生下列的 108 octets:

<FooQuestion>    <trackingNumber>5</trackingNumber>    <question>Anybody there?</question></FooQuestion>

PER 范例(未对齐)

另外,采用压缩编码规则(Packed Encoding Rules), 会产生下列 122 bits (小于16 octets):

01 05 0e 83 bb ce 2d f9 3c a0 e9 a3 2f 2c af c0

标准下载

(从ITU-T网站免费下载(页面存档备份,存于互联网档案馆))

描述ASN.1记法的标准:

描述ASN.1编码规则的标准

ASN.1标准列表

本条目部分或全部内容出自以GFDL授权发布的《自由线上电脑词典》(FOLDOC)。

相关

  • Nitrospirae硝化螺旋菌门(Nitrospira)是一类革兰氏阴性细菌。其中的硝化螺旋菌属(Nitrospira)作为硝化细菌(Nitrifier),可将亚硝酸盐氧化成硝酸盐。医学导航:病菌细菌(分类)gr+f/gr+a(t)/gr-p(c/gr-o药
  • 自利自利(英语:Self-interest)是一个中性词,指一个个体为自己利益所作出的选择,自利不一定是自私,自私是只顾自己而不顾他人死活,是贬义词;后者则不一定如此,可包括考虑他人后对自己有利
  • 顶点图在几何学中,顶点图是一种用于描述几何图形之顶角特性的方式,大致上是将一个几何图形角被切去时所露出的形状。先从多面体上选一个顶点,将该顶点的连出去的边所连接到的顶点标记
  • 动态链接库动态链接库(英语:Dynamic-link library,缩写为DLL)是微软公司在微软视窗操作系统中实现共享函数库概念的一种实现方式。这些库函数的扩展名是.DLL、.OCX(包含ActiveX控制的库)或者
  • 霍茹夫霍茹夫(波兰语:Chorzów)是波兰西里西亚省的一座城市,位于拉瓦河畔,波兰最大的都市区之内,是波兰重要的工业都市。波兰民主化后许多企业都被私有化,服务业得到了发展。是上西里西亚
  • 瑞利-泰勒不稳定性瑞利-泰勒不稳定性(Rayleigh-Taylor instability,得名于瑞利男爵和杰弗里·泰勒),简称RT不稳定性,在任何时间都会发生在密集的重流体被轻的流体加速时。这是发生在云与激波系统的
  • 莫斯霍斯莫斯霍斯(英语:Moschus),约活动于公元前2世纪前后。叙拉古诗人,萨摩斯拉斯的阿里斯塔尔库斯的门生。现存五首六音步短诗,三首诗见于他的《田园诗》,其中一首以城里人的快乐和渔夫的
  • 加油!桑妮《加油!桑妮》(英语:)是美国迪士尼频道制播的一部美国儿童青少年情境喜剧,由Steve Marmel创作。本剧在美国首播为2009年2月8日,同时也是迪士尼频道首次使用高解析的方式播出。如同
  • 王绪捷王绪捷(1920年-1992年),男,山东德州人,中国林学家,曾任河北省林业厅总工程师,第六、七届全国政协委员。
  • 投资型硬币投资型硬币是由压印工序而制成的,并且保持着价值作为收藏和投资。投资型金银币一般是指那些在1800年后被铸造的硬币、具有不少于.999纯度,而且是该国家的法定货币。常见的投资型硬币都是由纯金或者纯银制成,另外也有铂金、钯金等等。投资型硬币都有特定的重量,通常是以盎司作单位,但也有铸币厂会铸造一公斤甚至更重的“币”。以下是知名度高而且设计精美的银币: