ASN.1

✍ dations ◷ 2025-10-27 12:05:44 #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)。

相关

  • 花萼花萼是一朵花中所有萼片的总称,位于花的最外层,一般是绿色,样子类似小叶,但也有少数花的花萼样子类似花瓣,有颜色。花萼在花还是芽时包围着花,有保护花瓣作用,花开放后花萼托在最外
  • 台湾机械公司船舶厂关厂抗争运动台湾机械公司船舶厂抗争事件,是约自1996年底起发生的长期抗争事件。1990年代后期,在中华民国公营事业民营化浪潮中,台湾机械公司因连年亏损而成为民营化的主要对象。台机钢品厂
  • 埃德·马基爱德华·约翰·“埃德”·马基(英语:Edward John "Ed" Markey、1946年7月11日-),是一位美国民主党政治人物,自2005年成为马萨诸塞州联邦参议院议员。他在美国参议院的2013年特别选
  • 2015年迈杜古里自杀炸弹攻击事件2015年迈杜古里自杀炸弹攻击事件可能是指:
  • 克莱儿·德尼克莱儿·德尼(法语:Claire Denis;1946年4月21日-)是法国电影导演与编剧。克莱儿·德尼出生于法国巴黎,但她在法属非洲成长,跟随担任公务员的父亲,他们一家住过布基纳法索、喀麦隆、
  • 乌拉盖尔河乌拉盖尔河是中华人民共和国内蒙古自治区的一条河流,该河全长371千米,集水面积约8817平方千米,年均径流量约为1.2亿立方米。根据奴奶庙水文站测定,该河夏季富水期径流量占全年的
  • 泉州公交K801路泉州公交K801路是中华人民共和国泉州市境内的一条公共交通线路,原名泉港K1路,全程35公里。起讫点为奇美广场至聚龙小镇,运营时间为奇美广场 06:30-18:10;聚龙小镇 07:00-18:00K8
  • 舒楠舒楠(1971年-),男,安徽淮南人,中国作曲家,中国电影家协会会员。现为中国人民解放军空军政治工作部文工团作曲家。滁州师专(现滁州学院)音乐系毕业。舒楠的父亲汪东升曾任舒城县人民法院院长、舒城县人民代表大会副主任等职。舒楠年幼时,汪东升和妻子被下放到舒城县晓天镇黄河村,舒楠与父母在村里住了14年。1992年,舒楠从滁州师范专科学校音乐系毕业,同年到淮南少年宫担任音乐教师。后来,他辞职南下,到广州工作,1995年签约广州太平洋影音公司,1997年成为公司音乐监制,为公司旗下歌手金学峰创作《笨鸟先飞》。其配
  • 暴风雨 (超人前传)见《超人前传》角色列表《暴风雨》(英语:Tempest)是WB电视台的原创电视剧《超人前传》第1季的第21集,同时也是季终集,于2002年5月21日首播;该集由阿尔弗雷德·高夫(英语:Alfred Gough)与麦尔斯·米勒(英语:Miles Millar)编剧,并由格雷格·毕曼(英语:Greg Beeman)执导。在该集中,莱克斯·卢瑟(英语:Lex Luthor (Smallville))试图脱离路德公司来开拓自己的人生;惠特尼·福特曼(Whitney Fordman)离开斯莫维尔镇(英语:Small
  • 赫米拉·加林多赫米拉·加林多·阿科斯塔(西班牙语:Hermila Galindo Acosta,或称赫米拉·加林多·德·托皮特,1896年6月2日-1954年8月18日),墨西哥女性主义者、作家。她是不少激进女性主义争议(英语:Feminism in Mexico)(主要是学校的性教育、妇女投票权和离婚)的早期支持者。她是第一个声称天主教在墨西哥阻碍女性主义努力的女性主义者之一,亦是墨西哥首名竞选公职的女性。赫米拉·加林多·阿科斯塔于1886年6月2日,在杜兰戈州莱尔多墨西哥(Lerdo Mexico)出生,是罗萨里奥