External Data Representation. 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 systems 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 such as 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 Microsystems, and first widely published in 1987.
XDR became an IETF standard in 1995.

The XDR data format is in use by many systems, including:
 Network File System (protocol)
 ZFS File System
 NDMP Network Data Management Protocol
 Open Network Computing Remote Procedure Call
 Legato NetWorker backup software (later sold by EMC)
 NetCDF (a scientific data format)
 The R language and environment for statistical computing
 The HTTP-NG Binary Wire Protocol
 The SpiderMonkey JavaScript engine, to serialize/deserialize compiled JavaScript code
 The Ganglia distributed monitoring system
 The sFlow network monitoring standard
 The libvirt virtualization library, API and UI
The Firebird (database server) for Remote Binary Wire Protocol
 Stellar Payment Network

XDR data types 
 boolean
 int – 32-bit integer
 unsigned int – unsigned 32-bit integer
 hyper – 64-bit integer
 unsigned hyper – unsigned 64-bit integer
 IEEE float
 IEEE double
 quadruple (new in RFC1832)
 enumeration
 structure
 string
 fixed length array
 variable length array
 union – discriminated union
 fixed length opaque data
 variable length 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. Semantically this is option type.

See also
 Structured Data eXchange Format (SDXF)
 Remote Procedure Call
 Abstract Syntax Notation One
 Data Format Description Language
 Comparison of data serialization formats

References

External links
The XDR standard exists in three different versions in the following RFCs:
  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.
  1995 version. Added Quadruple precision floating point to RFC 1014.
  1987 version.
 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)

Networking standards
Internet Standards
Internet protocols
Data modeling languages
Data serialization formats
Data transmission
Sun Microsystems software