《ASN.1编码规则详解(全部精彩).pdf》由会员分享,可在线阅读,更多相关《ASN.1编码规则详解(全部精彩).pdf(108页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ASN.1ASN.1 编码规则编码规则详解详解 1 1 简介简介 注释:注释: 本章的内容主要翻译自ASN.1 Communication between Heterogeneous Systems和 ASN.1 Complete。 1.1.1 1 ASN.1ASN.1 简介简介 ASN.1 (Abstract Syntax Notation dot one),抽象记法 1。数字 1 被 ISO 加在 ASN 的后边, 是为了保持 ASN 的开放性,可以让以后功能更加强大的 ASN 被命名为 ASN.2 等,但至今 也没有出现。 ASN.1 是定义抽象数据类型规格形式的标准。是用于描述数据的表
2、示、编码、传输、解 码的灵活的记法。它提供了一套正式、无歧义和精确的规则,以描述独立于特定计算机硬件 的对象结构。 ASN.1 是通信协议中描述数据传输的正式标记(notation) ,它与语言实现和物理表示无 关,与应用的复杂度无关。ASN.1 特别适合表示现代通信应用中那些复杂的、变化的及可扩 展的数据结构。 ASN.1 发送任何形式(音频、视频、数据等等)的信息都必须用数字传送。ASN.1 只能 包含信息的结构方面(没有已经定义的或考虑到的处理数据值的操作) 。它不是一个编程语 言。 ASN.1 本身只定义了表示信息的抽象句法,但是没有限定其编码的方法。各种 ASN.1 编码规则提供了由
3、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 成功的一个主要理由是它采用了一些如 BER(Basic Encoding Rules)或新制定的 PER(Packe
4、d Encoding Rules)这样的标准化的编码规则,它对受带宽限制的应用程序很有用。 这些编码规则描述了如何将定义在 ASN.1 中的值译成适合传输的电码(例如:他们可以被转 化为可传输的字节,或反向转化),其与机器、编程语言或者在应用程序中的表示无关。 ASN.1 的编码方式比很多竞争者更先进, 能够快速并可靠的传输可扩展信息这是无线带 宽的一个优势。由于从 1982 年以后 ASN.1 已经成为一个国际标准,所以它的编码规则是成 熟的并且它有长期的可靠性和互用性的跟踪记录。 一个的 ASN.1 源文件可以非常容易地 (由 预处理器)映射为 C 或 C+或 Java 数据结构,可用于通
5、过应用程序代码,和支持的运行时 库提供的编码和解码的申述或者一个 XML 或限值的格式,或非常紧凑的压缩编码格式。 几乎所有操作系统上的工具都支持 ASN.1,ASN.1 支持如 java,c 和 c+这样流行的编 程语言,和包括 COBOL 这样的较老的编程语言。ASN.1 的广泛性的一个例子是,有很多工 具已经支持超过 150 种不同的计算机平台。 有大量经过检验的 ASN.1 工具已经被长期使用。 ASN.1 是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数 据格式。 它提供了一整套正规的格式用于描述对象的结构, 而不管语言上如何执行及这些数 据的具体指代
6、, 也不用去管到底是什么样的应用程序 不论是非常复杂的, 还是非常简单 的。 在任何需要以数字方式发送信息的地方,ASN.1 都可以发送各种形式的信息(声频、 视频、数据等等) 。ASN.1 和特定的 ASN.1 编码规则推进了结构化数据的传输,尤其是网 络中应用程序之间的结构化数据传输, 它以一种独立于计算机架构和语言的方式来描述数据 结构。 ISO 协议套中的应用层协议使用了 ASN.1 来描述它们所传输的 PDU, 这些协议包括: 用于传输电子邮件的 X.400、用于目录服务的 X.500、用于 VoIP 的 H.323 和 SNMP。它 的应用还可以扩展到通用移动通信系统(UMTS)中
7、的接入和非接入层。 简洁的二进制编码规则 (BER、 CER、 DER、 PER, 但不包括 XER) 可当作更现代 XML 的替代。然而,ASN.1 支持对数据的语义进行描述,所以它是比 XML 更为高级的语言。 ASN.1 的描述可以容易地映被射成 C 或 C+ 或 Java 的数据结构,并可以被应用程序代 码使用,并得到运行时程序库的支持,进而能够对编码和解码 XML 或 TLV 格式的,或一 种非常紧凑的压缩编码格式的描述。 同时,ASN.1 是一种用于描述结构化客体的结构和内容的语言。 抽象语法定义: ASN.1 是描述在网络上传输信息格式的标准方法。 它有两部分: 一部分描述信息内
8、数据, 数据类型及序列格式; 另一部分描述如何将各部分组成消息。 它原来是作为 X.409 的一部分 而开发的, 后来才自己独立成为一个标准。 ASN.1 在 OSI 的 ISO 8824/ITU X.208 (说明语法) 和 ISO 8825/ITU X.209(说明基本编码规则)规范。 例如: Report := SEQUENCE author OCTET STRING, title OCTET STRING, body OCTET STRING, biblio Bibliography 在这个例子中,Report是由名字类型的信息组成的,而 SEQUENCE 表示消息是许多 数据单元构成
9、的,前三个数据单元的类型是 OCTET STRING,而最后一个数据类型则下面 的 ASN.1 语法表示它的意义: Bibliography := SEQUENCE author OCTET STRING title OCTET STRING publisher OCTET STRING year OCTET STRING ASN.1 提供了一些基本的预定义数据类型: UNIVERSAL 0 保留给编码规则使用 UNIVERSAL 1 布尔类型 UNIVERSAL 2 整型 UNIVERSAL 3 二进制字符串类型 UNIVERSAL 4 八进制字符串类型 UNIVERSAL 5 空类型 UN
10、IVERSAL 6 对象标识符类型 UNIVERSAL 7 对象描述符类型 UNIVERSAL 8 外部类型和类型实例 UNIVERSAL 9 实数类型 UNIVERSAL 10 枚举类型 UNIVERSAL 11 嵌入的 pdv 类型 UNIVERSAL 12 UTF8 字符串类型 UNIVERSAL 13 相关对象标识符 类型 UNIVERSAL 14-15 保留给本建议的以后版本和国际标准使用 UNIVERSAL 16 序列和类型序列 UNIVERSAL 17 集合和类型的集合 UNIVERSAL 18-22, 25-30 字符串 类型 UNIVERSAL 23-24 时间 类型 UNI
11、VERSAL 31-. 保留给本建议以外的类型和国际标准使用 ASN.1 还能够定义如下的数据结构类型: 结构 ( SEQUENCE ), 列表 ( SEQUENCE OF ), 类型选择 ( CHOICE ), 等等 不同体系的系统,不同编程语言之间,都存在通讯障碍。如 Figure 1-1 a)所示极端情 况下, 为了保证网络中 n 个异体的节点能互通, 我们需要为每个节点编写(n-1)个编解码程序, 即需要总数为 n*(n-1)个编解码程序。在 b)所示极端情况下,为了保证互通,需要为每个节 点编写 1 个编码和 1 个解码程序,即总数为 2n 个编解码程序。 Figure 1-1 两种
12、类型的通讯方式 对于给定的记法描述,ASN.1 编译器能执行并产生如 Figure 1-2 图中虚线部分,这样我 们以有限的代价就能完成相当多数量系统之间的互连。 Figure 1-2 语法三元组:实际语法、抽象语法和传输语法 (1)实际语法(Concrete Syntax) 指诸如 C、Objective Caml 等这样实际编程语言; (2)抽象语法(Abstract Syntax) 指 ASN.1,是协议采用 ASN.1 规范描述的描述文本。描绘了与任何表示数据的编码技术无关 的通用数据结构。抽象语法使得人们能够定义数据类型,并指明这些类型的值。抽象语法只描述 数据的结构形式,与具体的编
13、码格式无关,同时也不涉及这些数据结构在计算机内如何存放。 (3)传输语法(Transfer Syntax) 指表示层交换数据的表示方法, 是实际通讯系统间的码流。 当数据在两个表示层实体之间传 输时,这些数据的实际比特模式表示方法就是传送语法。 (4)编码 指用来表示数据值的完整的八位组序列。 (5)编码规则 从一个语法到另一个语法的映射规约。具体地说,编码规则从算法上定义了任何一组由抽 象语法定义的数据值在传送语法中的表示。 下图以两个端系统通过网络交换数据为例来说明上述的一些概念。 运输实体所看到的数据是应用实体交下来的、根据一定的编码规则进行编码的二进制代码。 应用实体看到的则是一个用户
14、观点的数据, 通常是结构化的信息, 如文本文档或可显示的图 象信息。用户主要关心的是数据的语义。因此应用实体必须提供数据的表示方法,使得这些数据 能够转换为二进制值。也就是说,应用实体必须考虑到数据的语法。 从抽象语法到传输语法,由 ASN.1 编译器按照编解码规则实现。 Figure 1-3 抽象语法与传输语法 其实早期的一些标准,如 ASCII,它们既定义了抽象语法(比如字母 A),又定义了传输语 法(0 x41)。ASN.1 分离了这两种概念,以便可以选择一种适合要求的编解码方法。系统可以选 择编码方法以使信息传送时效率很高,或者具有很高的可靠性等等。另一方面,定义好的编码规 则也会很大
15、地节约应用协议开发人员的时间, 特别是当牵涉到的数据结构很复杂的时候。 当使用 ASN.1 的项目较多时,这种节约更加明显,因为编解码程序可以只开发一次但很多应用程序都可 以用它。 我们可以看出,能将通信编解码设计与开发工作转嫁给 ASN.1 编译器完成。从而不必手工 编写编解码器。一方面大量减少了缺陷引入,另一方面更是大大加快了系统开发速度(不用编写 编解码器,也不用详细调试,维护代价也很小)。 Figure 1-4 转嫁编解码器工作给 ASN.1 编译器 讨论 ASN.1 就不得不先提到标准组织 ISO 和 ITU。 1.2 1.2 ISOISO 简介简介 国际标准组织(ISO Inter
16、national Organization for Standardization)于 1946 年 在美国成立,其负责制定众多领域的国际标准;但除电气、电子和电子工艺领域外,这些主要是 IEC(International Electrotechnical Commission)负责。 ISO 汇集了一百多个代表其自己国家的标准委员会(称之为 NB National Body),ANSI (American National Standard Institute)代表美国,AFNOR (Association Francaise de NORmalisation)代表法国,BSI(Britis
17、h Standard Institute)代表英联邦,等等。其它一 些组织可以参加讨论,提出议案,但不能参加投票。 Figure 1-5 ISO 组织结构 如 Figure 1-5 所示,ISO 共分为 172 个技术委员会 Technical Committee (TC)负责相应 标准化领域。 所有议题都在子委员会 SubCommittees 中共享,Subcommittee 又分为工作组 Working Groups(WG)。 到1987年, 著名的OSI标准就是TC97的成果, 称之为 “Telecommunications and Information Exchange Betwee
18、n Systems”。在 1987 年,ISO 和 IEC 两个标准化组织一致认为都应当关注信 息技术 Information Technology,因此成立了一个联合技术委员会称为 JTC1。JTC1 的秘书处由 ANSI 负责。 Figure 1-6 JTC1 组织结构示意图 在 ASN.1 标准刚刚受到关注时,基于历史原因,ASN.1 主要来自于 CCITT 的成果,有很多提 案来自 CCITT。在 80 年代,ISO 在 1990 年左右成为主角前,两个委员会的确有过合作。 1.3 1.3 ITUITU 简介简介 国际电信联盟 ITU(International Telecommuni
19、cation Union)总部位于日内瓦,于 1947 年成为联合国的专设机构,其前身为成立于 1865 年的国际电报联盟(International Telegraph Union) 。 ITU 汇集了 188 个代表其国家的公共电信运营商和大约 450 个来自私有部门称之为 RPOA (Registered Private Operating Authorities)的成员(如 AT H: Audiovisual and Multimedia Systems; Q: Switching and Signalling; T: Terminals for Telematic Services;
20、 V: Data Communications Over the Telephone Network; X: Data Networks and Open System Communications; Z: Programming Languages. 到 1992 年,所有 CCITT 已经通过其委员会多次论证后的建议每四年发布一次(即使某些部 分还未完成) , 其封面用不同的颜色 (即黄皮书、 红皮书、 兰皮书和白皮书) : 黄色代表 1976-1980, 红色代表 1980-1984,蓝色代表 1984-1988,白色代表 1988-1992。 ITU-T 现在是当某个标准稳定后单独发布
21、。此外,自 1994 年开始,为了防止出现不一致, ISO/IEC 和 ITU-T 都是联合发布标准文本(各用不同的参考号)。 不一致的情况在 ASN.1 中出 现过。 ITU-T 分为研究组 SG(Study Group),其中: SG VII,“Data Networks and Open System Communications”,课题 广泛,包括互连(比如 ASN.1),X.25 网络标准,X.400 Email 姓名地址录标准,网络 安全和网络管理等。 SG VIII,“Terminals for Telematic Services”负责 Teletex,Videotex 和字符
22、集等。 每个 SG 的工作又被划分为问题问题 Question: 其中一些相当有名, 比如涉及 OSI 模型的 Q24/7; 另外一些则是对以发布标准的更为精确的更新。 每个问题最终结束于一个新标准或者一个现有标 准的补充。 1.4 1.4 ASN.1ASN.1 历史历史 开始于 1982 年夏天,许多开发应用层标准的人意识到他们面临同一个问题:数据结构变得 越来越复杂,难以用预定的规程来编解码 bit 或者 Byte(在 1978 年,OSI 中术语 Open 是至关重 要的)。如同编译器取代了汇编器,通常认为编码器应当从描述 Specification 自动产生,这样 使得描述也等效为一种
23、计算机程序。 1.4.11.4.1 诞生诞生 James White 和 Douglas Steedman 分别提出一个基本的记法和算法,这套记法能定义 Email 消息控制系统协议 MHS(Message Handling System)的编码比特格式。这种记法和编码规则是 与机器无关的,能表述复杂的数据结构。 James White 当时是 CCITT X.400 (MHS)建议系列的起草人,并且为施乐公司(Xerox Corporation)设计了 Courier 记法,这种记法能翻译 XNS(Xerox Network Services)的 RPC (Remote Procedure
24、Call)传送的数据。Courier 作为第一种外部的数据记法而闻名。同时它 对后来的 XDR(来自 Sun Microsystems Inc.)和 NDR(来自 Apollo Computer Inc.)都产生了 积极的影响。 1984 年,CCITT 将这种记法标准化,参考号为 X.409(红皮书)。X.409 建议成为:Message Handing Systems: Presentation Transfer Syntax And Notation。它的目标和范围为:“the presentation transfer syntax used by application layer
25、protocols in message handling systems and by the document interchange protocol for the telematic services. In the architecture of open systems interconnection (OSI), a presentation transfer syntax is used to represent information exchanged between application entities” X.409 记法和 MHS 系统是完全独立的,部分原因是 E
26、mail 协议处理的对象是十分复杂的,没 有大小限制,多种字符串类型,链接的结构,为数众多的选项等。结果,许多 OSI 应用标准化工 作组发现这种记法对他们也有用。 1.4.2 1.4.2 19891989 和和 19901990 版本版本 如前所述,1987 年 ISO 和 IEC 成立了 JTC 1。 1989 年 CCITT 发布了两个文档 X.208(ASN.1)和 X.209(BER)来替代 X.409 建议。其中 很多新特性是由 JTC 1 引入的: subtypes, floats (REAL type), pointers (ANY DEFINED BY type) and t
27、he default tagging modes (IMPLICIT TAGS and EXPLICIT TAGS)。他们这套 X.200 系列 称为“General OSI Infrastructure”,表示 ASN.1 成为应用层一种独立的描述语言。 1990 年 ISO 发布了新的 ISO 8824 和 ISO8825 标准,和 X.208 相比,有三处地方相悖。具体 问题请参考 1.6.1 CCITT 1989 版本和 ISO 1990 版本的冲突。 自 1998 年开始,ISO 和 ITU-T 联合发布他们的标准文本,避免再次出现标准间的冲突。 1.4.3 1.4.3 199419
28、94 版本版本 新的版本 (实际是 1994 年完成草案) ASN.1 :1994 于 1995 年被 ISO 通过, 成为正式标准。 为了阐述数目众多的条件和介绍新概念,该标准分为四个部分: 1) ITU-T Rec. X.680 (1994) | ISO/IEC 8824-1:199518: Specification of Basic Notation, 2) ITU-T Rec. X.681 (1994) | ISO/IEC 8824-2:1995: Information Object Specification, 3) ITU-T Rec. X.682 (1994) | ISO/I
29、EC 8824-3:1995: Constraint Specification, 4) ITU-T Rec. X.683 (1994) | ISO/IEC 8824-4:1995: Parameterization of ASN.1 Specifications, 几个月之后,发布了两个补充和一个技术勘误表: ITU-T Rec. X.680/Amd.1 (1995) | ISO/IEC 8824-1:1995/Amd.1: Rules of Extensibility, ITU-T Rec. X.680/Corr.1 (1995) | ISO/IEC 8824-1:1995/Corr.1:
30、 Technical Corrigendum 1, ITU-T Rec. X.681/Amd.1 (1995) | ISO/IEC 8824-2:1995/Amd.1: Rules of Extensibility. 编码规则部分被分成了两个部分(和一个技术勘误表): ITU-T Rec. X.690 (1994) | ISO/IEC 8825-1:1995: ASN.1 Encoding Rules: Specification of Basic Encoding Rules, Canonical Encoding Rules, and Distinguished Encoding Rule
31、s, ITU-T Rec. X.690/Corr.1 (1995) | ISO/IEC 8825-1:1995: Technical Corrigendum 1, ITU-T Rec. X.691 (1995) | ISO/IEC 8825-2:1995: ASN.1 Encoding Rules: Specification of Packed Encoding Rules 这些标准给出了官方正式编码规则,这对诸如传输加密数据情况来说是必需的。 1994 版本和以前版本相比的差异和新特性,请参考 1.6.2 错误错误! !未找到引用源。未找到引用源。 1.4.4 1.4.4 19971997
32、 版本版本 语义模型分为三个补充文件: ITU-T Rec. X.680 (1997)/Amd.2 (1999) | ISO/IEC 8824-1:1998/Amd.2 ITU-T Rec. X.681 (1997)/Amd.1 (1999) | ISO/IEC 8824-2:1998/Amd.1 ITU-T Rec. X.683 (1997)/Amd.1 (1999) | ISO/IEC 8824-4:1998/Amd.1 相关对象标识符新的 RELATIVE-OID 类型说明在三个补充文件: ITU-T Rec. X.680 (1997)/Amd.1 (1999) | ISO/IEC 88
33、24-1:1998/Amd.1 ITU-T Rec. X.690 (1997)/Amd.1 (1999) | ISO/IEC 8825-1:1998/Amd.1 ITU-T Rec. X.691 (1997)/Amd.1 (1999) | ISO/IEC 8825-2:1998/Amd.1 新增四个技术勘误表: ITU-T Rec. X.680 (1997)/Corr.1 (1999) | ISO/IEC 8824-1:1998/Corr.1 ITU-T Rec. X.681 (1997)/Corr.1 (1999) | ISO/IEC 8824-2:1998/Corr.1 ITU-T Rec
34、. X.690 (1997)/Corr.1 (1999) | ISO/IEC 8825-1:1998/Corr.1 ITU-T Rec. X.691 (1997)/Corr.1 (1999) | ISO/IEC 8825-2:1998/Corr.1 1994 版本和以前版本相比的差异和新特性,请参考 1.6.3 1997 版本新特性和 1.6.4 错误错误! !未找到引用源。未找到引用源。 1.4.51.4.5 最新版本最新版本 目前最新版本的协议为: ITU-T X.680 (ISO/IEC 8824-1) - Abstract Syntax Notation One (ASN.1): Sp
35、ecification of Basic Notation ITU-T X.681 (ISO/IEC 8824-2) - Abstract Syntax Notation One (ASN.1): Information Object Specification ITU-T X.682 (ISO/IEC 8824-3) - Abstract Syntax Notation One (ASN.1): Constraint Specification ITU-T X.683 (ISO/IEC 8824-4) - Abstract Syntax Notation One (ASN.1): Param
36、eterization of ASN.1 Specifications ITU-T X.690 (ISO/IEC 8825-1) - ASN.1 Encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER) ITU-T X.691 (ISO/IEC 8825-2) - ASN.1 Encoding Rules: Specification of Packed Encoding Rules (PER
37、) ITU-T X.692 (ISO/IEC 8825-3) - ASN.1 Encoding Rules: Specification of Encoding Control Notation (ECN) ITU-T X.693 (ISO/IEC 8825-4) - ASN.1 Encoding Rules: Specification of XML Encoding Rules (XER). ITU-T X.694 (ISO/IEC 8825-5) - ASN.1 Encoding Rules: Mapping W3C XML schema definitions into ASN.1.
38、1.5 1.5 ASN.1ASN.1 应用情况应用情况 Accredited Standards Committee X9 - Financial Services Manufacturing Message Specification (MMS) Molecular Biology Standards Request For Comments (RFC) RSA Public-Key Cryptography Standards Standard Security Label for Information Transfer Secure Electronic Transaction (SE
39、T) ASN.1 T.120 Series Standards Telecommunications Management Network (TMN) Unicode Worldwide Character Standard X.400 Standards - Message Handling Systems X.500 Standards - The Directory H.323 H.248 3G on UMTS 等等。 现在一些协议,标准组织在给出协议文本时往往也同时给出了 ASN.1 的描述。 2 2 基础知识基础知识 注释:注释: 本章的内容主要翻译自ASN.1 Communicat
40、ion between Heterogeneous Systems。 2.1 2.1 相关背景知识相关背景知识 2.1.2.1.1 1 OSIOSI 参考模型参考模型 ApplicationApplication PresentationPresentation SessionSession TransportTransport NetworkNetwork Data linkData link PhysicalPhysical PhysicalPhysical ApplicationApplication PresentationPresentation SessionSession Tra
41、nsportTransport NetworkNetwork Data linkData link PhysicalPhysical1st layer 2nd layer 3rd layer 4th layer 5th layer 6th layer 7th layer Bit Frame Packets TPDV SPDV PPDV APDV7th layer protocol 6th layer protocol Interface between the 6th and 7th layers Figure 2-1 OSI 七层参考模型 虽然 ASN.1 和 OSI 密切相关,但实际上它也
42、应用在很多非 OSI 模型的情况下。 1)表示层表示层 Presentation Layer 两个系统在传输数据前需要协商共用的编码方式。 表示层表示层负责在两个应用系统间进行编码方 式协商和实际信息的编码。 为了达到这个目的,表示层需使用以下概念: (1)抽象语法:定义了数据的常用结构(包括不同的数据类型) ,并且建立了和应用层对 话所依赖的框架。 (2)实际语法:本地的,并且定义本地系统的数据表示方法。 (3)传输语法:定义两个系统间的表示层间交换数据的表示方法。 (4)编码规则:提供从本地实际语法到传输语法和其相反操作的方法。(第 1 章中说过: 从抽象语法到传输语法,由 ASN.1 编
43、译器按照编解码规则实现。) 应用这些记法,表示层能够提供应用层这些服务: (1)传输语法的协商(在会话开始前挑选一种传输语法的方法,改变传输语法的方法) ; (2)确定传输语法的集合(抽象语法的多种表示方式) ; (3)用实际语法(内部表示方式)的编码/解码规则来翻译为传输语法(外部表示方式) 或者做相反操作; (4)把一个协商后的传输语法和应用内部采用的抽象语法进行关联; (5)访问会话层服务。 Application AApplication AApplication Application B B Presentation APresentation APresentation Pres
44、entation B B 1 1 P P- -CONNECTCONNECT . .request request ( (ASAS1 1, ,ASAS2 2) ) 2 2. . PPDV PPDV = = ASAS1 1( (TSTS1 1) ), , ASAS2 2( (TSTS2 2, ,TSTS3 3) ) 3 3. . P P- -CONNECTCONNECT . .indication indication ( (ASAS1 1, ,ASAS2 2) ) 4 4. . P P- -CONNECTCONNECT . .response response ( (ASAS2 2) ) 5 5
45、. . PPDV PPDV = = ASAS2 2( (TSTS2 2) ) 6 6. .P P- -CONNECTCONNECT . .conrm conrm ( (ASAS2 2) ) Figure 2-2 表示层上下文协商 在 Figure 2-2 表示层上下文协商表示层上下文协商中,详细描述 了这样一个过程: (1)应用 A 发送一个 P-CONNECT.request 原语给自己的表示层,并且声明操作这个传输 的相关抽象语法名字为(AS1, AS2)。 每个抽象语法的名字实际是一串成为对象标识符 (Object Identifier,在 ASN.1 中是 OBJECT IDENTIF
46、IER 类型的值)的数字,它能唯一的标识抽象语 法。的确,我们应当注意到这是一个开放式的架构,能适应各种机器,各种抽象语法,各种 传输语法。 (2)表示层为每个抽象语法关联传输语法,并且为会话层编码“表示(层)协议数据值” PPDV(Presentation Protocol Data Value) ,这些数据会被送往对方系统的表示层。PPDV 中 包含着可用的抽象语法。 (3)表示层 B 收到这个 PPDV 数据后, 向自己的应用层回送 P-CONNECT.indication 原语, 指示应用 A 的抽象语法可用。 (4)应用 B 以 P-CONNECT.response 原语应答,指示在
47、这个传输中可用的抽象语法的名 字(这里只指示 AS2) 。 (5)会话层 B 接收到原语后,发送 PPDV 指明传输语法,这个语法应当是已经协商中的 一个(如上图中是 T2、T3 中的 T2) 。 (6)最后,表示层 A 收到 PPDV 后,检查对方推荐的传输语法,如果接受它则发送 P-CONNECT.confirm 原语给应用 A。 应当注意,表示层没有参与到应用间可用抽象语法的确定过程中。通常,会用多个抽象 语法/传输语法的组合关系。一个抽象语法可以用多个传输语法来表示;一个传输语法也可 以用来表示多个抽象语法。抽象语法/传输语法组合的协商结果被称为“表示上下文” (Presentation Context) 。上下文用整数来标识,为了防止重新分配时出现覆盖,一般让一个 实体采用偶数而另一个实体采用奇数。其它上下文可以在通讯过程中动态协商。 在初始协商的最后,系统在它的配置中有了一套“表示上下文” ,在任何时候,系统都 能从中