ASN.1

✍ dations ◷ 2025-07-19 06:39:03 #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)。

相关

  • 石油化学石油化学(Petrochemistry)是研究石油及其产品的组成和性质、石化过程的一门学科。其中最常见的两大类产物分别为:烯烃和芳香烃。炼油厂借由流化催化裂化提炼生产烯烃和芳香烃。
  • 牛津拼写牛津拼写(英语:Oxford spelling),也称为牛津英语词典拼写(Oxford English Dictionary spelling)、牛津式(Oxford style)或牛津英语拼写(Oxford English spelling),是英语的一种拼写方式
  • 提普苏丹蒂普苏丹(Tipu Sultan,1750年11月20日-1799年5月4日),一译提普苏丹,本名Sultan Fateh Ali Tippu,南印度迈索尔王国苏丹海达尔·阿里(英语:Hyder Ali)之子。其父阿里去世后成为迈索尔苏
  • 卡社群卡社群(Takibakha)是台湾原住民民族布农族之五大社群中的一支。卡社群布农族分布于台湾南投县信义乡地利村、双龙村与潭南村一带。目前卡社群人口有1200到1500人,能完全可以流
  • 月神蟹属月神蟹属(学名:),又名纹腕蟹属,是馒头蟹总科黎明蟹科的一个属,其学名源于近东的女性神祇阿斯塔尔塔(和合本圣经译作阿斯她禄)。本属包括有原来黎明蟹属的大多数物种。这些物种一来都
  • 意识障碍意识障碍(英语:Disorders of consciousness)是抑制意识的医学疾病。有些人将意识障碍定义为从完全的自我意识到抑制或缺乏自我意识和唤醒的任何变化。
  • 玛丽莲·贝克玛丽莲·贝克(1928年12月17日-2014年5月31日,英语:Marilyn Beck),是一名美国的专栏作家,她开始于1961年事业。她撰写过大量的文章包括小道消息。她曾经供职于《人物周刊》和《US》。她出生于美国芝加哥,之后随家人迁居洛杉矶。2014年,她因肺癌去世于加州,享年85岁。
  • 阳光小美女《阳光小美女》(英语:)是2006年美国喜剧剧情公路片,夫妻档导演乔纳森·戴顿和维莱莉·法瑞斯的电影处女作,也是迈克尔·阿恩特的编剧处女作。视频由格雷戈·金尼尔、斯蒂弗·卡瑞尔、托妮·克莱特、保罗·达诺、阿比盖尔·布蕾斯琳和艾伦·阿金主演,大海滩影业制作,拍摄成本约为800万美元。电影于2005年6月6日开拍,共计在亚利桑那州和南加州拍摄30天。视频于2006年1月20日在圣丹斯电影节首映,福克斯探照灯影业以高价买下发行权,数额在该电影节历史上也属最高之列。电影于2006年7月26日在美国进行限量放映,8
  • 圣厄斯塔什之役圣厄斯塔什之役发生在1837年12月14日,是1837年起义的一场战事,当时200名加拿大民兵企图攻击及掠夺圣厄斯塔什(Saint-Eustache),但被拥有1,400人和6门大炮的英军击败。而加拿大民兵的领袖Jean-Olivier Chénier与其20名部下在战事中被杀,余下的百多人被补。
  • 阿列克谢·维塔利耶维奇·布里利切夫阿列克谢·维塔利耶维奇·布里利切夫(俄语:Алексей Витальевич Буриличев,1958年8月13日-2020年11月25日),俄罗斯海军中将,俄罗斯联邦英雄。1958年生于列宁格勒。1975年中学毕业后进入苏联海军服役,1980年毕业于伏龙芝高等海军学校,在北方舰队服役。1987年9月至1992年7月,担任K-317“豹”号核潜艇副艇长。1992年7月至1996年7月,担任K-461“狼”号核潜艇艇长。1996年夏,曾在美国大西洋反潜部队所在区域执行秘密任务,被授予俄罗斯联邦英雄称号