外部数据表示法
外观
外部数据表示法(External Data Representation,缩写为XDR)是一种标准数据序列化格式,主要用于计算机网络协议。在OSI模型的表示层中实现。XDR允许把数据包装在独立于介质的结构中,使得数据可以在异构的计算机系统之间传输。从本地表示转换到XDR称为编码,从XDR转换到本地表示称为解码。XDR使用软件来完成变换,所以在不同的操作系统中可以灵活的运用,同样的,XDR独立于传输层。
XDR使用4字节为基本单位,以大端字节序序列化;更小的数据类型在编码后仍占据4字节。变长类型比如字符串和不透明类型被填充为整体上可被4字节整除。浮点数用IEEE 754格式表示。
历史和应用
[编辑]XDR在1980年代中期由Sun Microsystems开发,并在1987年首次广泛发表[1],在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指针,但是表示为“指向”布尔“存在与否”标记的数据类型。语义上这是可选类型。
参见
[编辑]引用
[编辑]- ^ Sun Microsystems. XDR: External Data Representation Standard. RFC 1014. Network Working Group. 1987 [July 11, 2011]. (原始内容存档于2019-03-21).
外部链接
[编辑]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)