External Data Representation
Encyclopedia
External Data Representation (XDR) is a standard data serialization format, for uses such as computer network
protocols. It allows data to be transferred between different kinds of computer systems. Converting from the local representation to XDR is called encoding. Converting from XDR to the local representation is called decoding. XDR is implemented as a software library of functions which is portable between different operating system
s and is also independent of the transport layer
.
XDR uses a base unit of 4 bytes, serialized in big-endian order; smaller data types still occupy four bytes each after encoding. Variable-length types like string and opaque are padded to a total divisible by four bytes. Floating-point numbers are represented in IEEE 754 format.
, and first widely published in 1987.
XDR became an IETF standard
in 1995.
The XDR data format is in use by many systems, including:
Computer network
A computer network, often simply referred to as a network, is a collection of hardware components and computers interconnected by communication channels that allow sharing of resources and information....
protocols. It allows data to be transferred between different kinds of computer systems. Converting from the local representation to XDR is called encoding. Converting from XDR to the local representation is called decoding. XDR is implemented as a software library of functions which is portable between different operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
s and is also independent of the transport layer
Transport layer
In computer networking, the transport layer or layer 4 provides end-to-end communication services for applications within a layered architecture of network components and protocols...
.
XDR uses a base unit of 4 bytes, serialized in big-endian order; smaller data types still occupy four bytes each after encoding. Variable-length types like string and opaque are padded to a total divisible by four bytes. Floating-point numbers are represented in IEEE 754 format.
History
XDR was developed in the mid 1980s at Sun MicrosystemsSun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
, and first widely published in 1987.
XDR became an IETF standard
Internet standard
In computer network engineering, an Internet Standard is a normative specification of a technology or methodology applicable to the Internet. Internet Standards are created and published by the Internet Engineering Task Force .-Overview:...
in 1995.
The XDR data format is in use by many systems, including:
- Network File System (protocol)
- NDMPNDMPNDMP, or Network Data Management Protocol, is a protocol invented by the NetApp and Legato companies, meant to transport data between NAS devices and backup devices...
Network Data Managerment Protocol - Open Network Computing Remote Procedure CallOpen Network Computing Remote Procedure CallOpen Network Computing Remote Procedure Call is a widely deployed remote procedure call system. ONC was originally developed by Sun Microsystems as part of their Network File System project, and is sometimes referred to as Sun ONC or Sun RPC...
- Legato NetWorker backup software (later sold by EMC)
- NetCDFNetCDFNetCDF is a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data. The project homepage is hosted by the Unidata program at the University Corporation for Atmospheric Research...
(a scientific data format) - The R language and environment for statistical computing
- High Level Architecture (simulation)
- The HTTP-NG Binary Wire Protocol
- The SpiderMonkey JavaScript engine, to serialize/deserialize compiled JavaScript code
- The GangliaGanglia (software)Ganglia is a scalable distributed system monitor tool for high-performance computing systems such as clusters and grids. It allows the user to remotely view live or historical statistics for all machines that are being monitored.-Ganglia:It is based on a hierarchical design targeted at...
distributed monitoring system - The sFlowSFlowsFlow is a technology for monitoring network, wireless andhost devices.The sFlow.org consortium is the authoritative source for the sFlow protocol specifications: previous version of sFlow, including RFC 3176, have been deprecated.- Operation :...
network monitoring standard - The libvirtLibvirtlibvirt is an open source API, daemon and management tool for managing platform virtualization. It can be used to manage Linux KVM, Xen, VMware ESX and other virtualization technologies...
virtualization library, APIApplication programming interfaceAn application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...
and UIUser interfaceThe user interface, in the industrial design field of human–machine interaction, is the space where interaction between humans and machines occurs. The goal of interaction between a human and a machine at the user interface is effective operation and control of the machine, and feedback from the... - The Firebird (database server)Firebird (database server)Firebird is an open source SQL relational database management system that runs on Linux, Windows, and a variety of Unix. The database forked from Borland's open source edition of InterBase in 2000, but since Firebird 1.5 the code has been largely rewritten ....
for Remote Binary Wire Protocol
XDR data types
- booleanBoolean datatypeIn computer science, the Boolean or logical data type is a data type, having two values , intended to represent the truth values of logic and Boolean algebra...
- int – 32-bit integerInteger (computer science)In computer science, an integer is a datum of integral data type, a data type which represents some finite subset of the mathematical integers. Integral data types may be of different sizes and may or may not be allowed to contain negative values....
- unsigned int – unsigned 32-bit integerInteger (computer science)In computer science, an integer is a datum of integral data type, a data type which represents some finite subset of the mathematical integers. Integral data types may be of different sizes and may or may not be allowed to contain negative values....
- hyper – 64-bit integerInteger (computer science)In computer science, an integer is a datum of integral data type, a data type which represents some finite subset of the mathematical integers. Integral data types may be of different sizes and may or may not be allowed to contain negative values....
- unsigned hyper – unsigned 64-bit integerInteger (computer science)In computer science, an integer is a datum of integral data type, a data type which represents some finite subset of the mathematical integers. Integral data types may be of different sizes and may or may not be allowed to contain negative values....
- IEEE floatFloating pointIn computing, floating point describes a method of representing real numbers in a way that can support a wide range of values. Numbers are, in general, represented approximately to a fixed number of significant digits and scaled using an exponent. The base for the scaling is normally 2, 10 or 16...
- IEEE doubleDouble precisionIn computing, double precision is a computer number format that occupies two adjacent storage locations in computer memory. A double-precision number, sometimes simply called a double, may be defined to be an integer, fixed point, or floating point .Modern computers with 32-bit storage locations...
- quadruple (new in RFC1832)
- enumerationEnumerated typeIn computer programming, an enumerated type is a data type consisting of a set of named values called elements, members or enumerators of the type. The enumerator names are usually identifiers that behave as constants in the language...
- structureStructstruct is a computer science term for a record that is used to store more than one value.struct is used in the following programming languages:* struct * struct vs. C++ classes...
- stringString (computer science)In formal languages, which are used in mathematical logic and theoretical computer science, a string is a finite sequence of symbols that are chosen from a set or alphabet....
- fixed length array
- variable length array
- unionTagged unionIn computer science, a tagged union, also called a variant, variant record, discriminated union, or disjoint union, is a data structure used to hold a value that could take on several different, but fixed types. Only one of the types can be in use at any one time, and a tag field explicitly...
– discriminated union - fixed length opaqueOpaque data typeIn computer science, an opaque data type is a user defined data type used like built-in data type. It is incompletely defined in an interface, so that ordinary client programs can only manipulate data of that type by calling procedures that have access to the missing information.-Overview:Opaque...
data - variable length opaqueOpaque data typeIn computer science, an opaque data type is a user defined data type used like built-in data type. It is incompletely defined in an interface, so that ordinary client programs can only manipulate data of that type by calling procedures that have access to the missing information.-Overview:Opaque...
data - void – zero byte quantity
- optional – optional data is notated similarly to C pointers, but is represented as the data type "pointed to" with a boolean "present or not" flag.
See also
- Structured Data eXchange Format (SDXFSDXFSDXF is a data serialization format defined by RFC 3072.It allows arbitrary structured data of different types to be assembled together for exchanging between computers of different architectures....
) - Remote Procedure CallRemote procedure callIn computer science, a remote procedure call is an inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space without the programmer explicitly coding the details for this remote interaction...
- Abstract Syntax Notation OneAbstract Syntax Notation OneData generated at various sources of observation need to be transmitted to one or more locations that process it to generate useful results. For example, voluminous signal data collected by a radio telescope from outer space. The system recording the data and the system processing it later may be...
- Comparison of data serialization formatsComparison of data serialization formatsThis is a comparison of data serialization formats, different ways to convert complex objects to sequences of bits. It does not include markup languages used exclusively as document file formats.-Overview:*a. The current default format is binary....
External links
The XDR standard exists in three different versions in the following RFC's:- RFC 4506 2006 This document makes no technical changes to RFC 1832 and is published for the purposes of noting IANA considerations, augmenting security considerations, and distinguishing normative from informative references.
- RFC 1832 1995 version. Added Quadruple precision floating point to RFC 1014.
- Cisco's XDR: Technical Notes
- jsxdrapi.c, the main source file of SpiderMonkey that uses XDR
- xdr.cpp main xdr source file used in Firebird remote protocol
- http://www.cs.rpi.edu/~hollingd/netprog/notes/xdr/xdr.pdf
- 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)