外部数据表示法

外部数据表示法（，縮寫為XDR）是一种标准数据序列化格式，主要用于计算机网络协议。在OSI模型的表示层中实现。XDR允许把数据包装在独立于介质的结构中，使得数据可以在异构的计算机系统之间传输。从本地表示转换到XDR称为编码，从XDR转换到本地表示称为解码。XDR使用软件来完成变换，所以在不同的操作系统中可以灵活的运用，同样的，XDR独立于传输层。

XDR使用4字节为基本单位，以大端字节序序列化；更小的数据类型在编码后仍占据4字节。变长类型比如字符串和不透明类型被填充为整体上可被4字节整除。浮点数用IEEE 754格式表示。

历史和应用
XDR在1980年代中期由Sun Microsystems开发，并在1987年首次广泛发表，在1995年成为IETF標準協定。

XDR数据格式用于了很多系统，包括：
 网络文件系统
 ZFS文件系统
 NDMP网络数据管理协议
 开放网络计算远程过程调用
 Legato NetWorker备份软件
 NetCDF (一种科学数据格式)
 R语言
 HTTP-NG二进制线路协议
 SpiderMonkey JavaScript引擎，用来序列化/解序列化编译的JavaScript代码
 Ganglia分布式监控系统
 sFlow网络监控标准
 libvirt虚拟化库，API和UI
 Firebird (数据库)用作远程二进制线路协议
 Stellar支付网络

 XDR 数据类型 
XDR定义了以下数据类型:
 布尔
 int – 32-bit整数，unsigned int – 无符号32-bit整数 
 hyper – 64-bit整数，unsigned hyper – 无符号64-bit整数
 IEEE浮点数，IEEE 双精度浮点数，四精度浮点数 (新出现在RFC1832)
 枚举，结构，字符串
 定长数组，变长数组
 联合 – 可辨别的联合
 定长不透明数据，变长不透明数据
 void – 零字节量
 optional – 可选数据的记号类似于C指针，但是表示为“指向”布尔“存在与否”标记的数据类型。语义上这是可选类型。

参见
 结构化数据交换格式(SDXF)
 远程过程调用
 抽象语法记号一
 数据格式描述语言
 数据序列化格式比较

引用

外部链接
XDR标准存在三个不同版本的RFC中：
 RFC 4506 2006版本，这个文档对RFC 1832没有技术变更，出版目的是提示IANA的关注，补充安全考虑，并区分规范的和非正式的引用。
 RFC 1832 1995版本。向RFC 1014增加四倍精度浮点数。
 Cisco's XDR: Technical Notes
 jsxdrapi.c, the main source file of SpiderMonkey that uses XDR
 protocol.cpp main xdr source file used in Firebird remote protocol
 The GNU Libc implementation of rpcgen, the XDR parser.
 Mu Dynamics Research Labs racc grammar for XDR
 IvmaiAsn ASN1/ECN/XDR Tools (a collection of tools containing an XDR/RPC-to-ASN.1 converter)

Category:互联网标准
Category:网际协议
Category:数据序列化格式