外部数据表示法
在1995年制定的IETF标准协定
外部数据表示法(External Data Representation,缩写为XDR)是一个在1995年制定的IETF标准协定。
介绍
外部数据表示法(External Data Representation,缩写为XDR)是一个在1995年制定的IETF标准协定。在OSI模型表示层presentation layer中实现。XDR允许把数据包装在独立于介质的结构中使得数据可以在异构的计算机系统中传输。从局部表示转换到XDR称为编码,从XDR转换到局部表示称为译码。XDR使用软件来完成变换,所以在不同的操作系统中可以灵活的运用,同样的,XDR独立于传输层Sun的远端程序呼叫RPC就是使用XDR。
表示格式化
因为计算机用不同的方法表示数据,使得编码问题复杂。另外,不同应用程序使用不同的语言编码,而且即使使用同一种编程语言,也可能有不止一个编译程序,因此数据格式不统一。
分类方法
第一个问题是系统打算支持什么样的数据类型。通常,我们可以将由参数排列机制支持的类型分为三级。每一级都使参数排列系统面对更复杂的任务。
在最低一级,参数排列系统对基本类型(base type)的某个集合进行操作。通常,基本类型包括整型,浮点数和字符。系统还可以支持序数类型和布尔型。如上所述,基本类型集合的含义是指,编码进程必须能将每一基本类型从一种表示法转换为另一种表示法,如,把整形从大字节序转换为小字节序表示。
再上一级是扁平类型(flat type):结构和数组。为了按字的边界对齐字段,编译程序在编译应用程序时习惯于在组成结构的字段之间加入填充。参数排列系统通常将结构压缩使得他们不含填充。
在最高一级,参数排列系统必须处理复杂类型(complex type):使用指针建立的类型。也就是说,一个程序要发送给另一个程序的数据结构可以不包括在某个单一的结构中,而可能包含从一个结构指向另一结构的指针。树就是包含指针的复杂类型的一个很好的例子。显然,数据编码器必须为网上传输准备好数据结构,因为指针是通过内存寻址实现的,而且驻留在一台机器上某个内存地址的结构并不意味着在另一机器上有相同的驻留地址。换句话说,参数排列系统必须串行化(serialize)复杂数据结构。
转换策略
一般有两个选择:标准中间形式和接收方调整。
标准中间形式的概念就是要确定每一种类型的所有外部表示法;在发送数据前,发送主机将数据由其内部表示转换成这种数据的外部表示,而在接收数据的过程中,接收主机又把这种数据的外部表示转换成本地表示。
接收方调整允许发送方用其内部格式传输数据;发送方不进行基本类型的转换,但通常要压缩和展开较复杂的数据结构。然后接收方负责把数据从发送方的格式翻译成其本地的格式。用这种策略的问题是,每个主机必须准备好转换来自所有其他机器体系结构的数据。
标记
参数排列中的第三个问题是接收方如何知道它接收的消息中包含什么类型的数据。有两种常用的方法:带标记(tagged)数据和不带标记(untagged)数据。
标记是指包含在一个消息中的任何附加消息,它有助于接收方解码消息。如类型标记,长度标记,体系结构标记。不带标记,则需要在应用程序中指定数据信息。
桩是实现参数排列的一段代码。在客户端,桩把过程参数排列成可以通过网络协议传输的消息。在服务器端,桩反过来把消息转换成一组用来调用远程过程的参数。
例子
XDR
外部数据表示法(External Data Representation)是用在SunRPC上的网络格式。
ASN.1
抽象语法表示法1(Abstract Syntax Notation One)是一个ISO标准,他定义网上发送数据的一种表示方法。ASN.1用三元组形式表示每个数据项
NDR
网络数据表示法(Network Data Representation)是用于分布式计算环境的数据编码标准。NDR使用的是接收方调整方式。NDR会在每个消息前插入一个体系结构标记,而对单个数据项是不带标记的。
XDR 数据类型
XDR定义了以下数据类型:
参考资料
最新修订时间:2024-04-16 12:03
目录
概述
介绍
表示格式化
参考资料