ASN.1

✍ dations ◷ 2025-07-07 07:33:20 #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)。

相关

  • 鸟类传统分类系统鸟类传统分类系统是相对于1980年代鸟类DNA分类系统和2014年的鸟类全基因组测序分类系统而言的经典分类系统。主要依据J. L. Peter的分类系统,这个系统综合了形态学、生物地理
  • 依地酸钙钠乙二胺四乙酸(英语:Ethylenediaminetetraacetic acid),常缩写为EDTA,是一种有机化合物。它是一个六齿配体,可以螯著多种金属离子。它的4个酸和2个胺的部分都可作为配体的齿,与锰(II)
  • 校尉校尉是古代中国的武官官职,在历史上具重要影响力。该职位于汉朝时达到鼎盛,其地位仅次于各将军,但是其手下必有亲自统领的部队,而将军却不一定有自己的军队,所以其实际影响力有时
  • 东官郡东官郡,中国古代的郡。辖区包括今广东省东部和福建省部分地区。东晋咸和六年(331年),晋成帝将南海郡一分为二,分出东官郡,郡治在目前深圳市南山区南头古城,管辖八县:宝安县、安怀县
  • EC-121击落事件1969年4月15日,美国海军一架洛克希德EC-121预警机在朝鲜咸镜北道的清津市东南方向的日本海上空,侦察飞行过程中被朝鲜两架米格-17战斗机击落,31名机组人员全部丧生,一度造成美国
  • 庆元县庆元县是中国浙江省丽水市下辖的一个县,位于浙江省西南部,邻接福建省。域跨东经118°50′-119°30′北纬27°25′-27°51′。庆元县始置于南宋庆元三年(1197年),南宋政府以处州
  • 安娜·德·阿玛斯安娜·西利亚·德·阿玛斯·卡索(西班牙语:Ana Celia de Armas Caso,1988年4月30日-)是一位古巴女演员。2015年,她演出首部美国电影《敲敲門》,之后又出演《恶夜杀机(英语:Exposed (2
  • 环球资源控股环球资源控股有限公司,环球资源控股(英语:Global Palm Resources Holdings Limited,SGX:K6J)是一家印度尼西亚农业公司。在1991年由陈洪杰博士(董事长)创立。业务在印尼种植棕榈销售
  • 龚廷献龚廷献(?-?),号鉴惺,江西抚州府金谿县人。天启元年(1621年)辛酉科江西乡试举人,天启五年(1625年)乙丑科进士,授行人,崇祯元年七月奉使册封益世子,四年十一月往蜀王府主行丧礼。考选御史。珰败,廷臣多毛举细过,互相弹击。廷献疏言借题报复,徒损国体,亦坏心术,宜一切禁止。出按时,理枉辩冤,尤以矜恤为事,人称长者。崇祯七年疏救刑科给事中李世祺,帝不听。京师饥,绘《饥民图》以进。自免归。
  • NightmareNightmare可指: