External Data Representation: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>Kvng
 
imported>Jerryobject
Small WP:COPYEDITs WP:EoS clarify. WP:LINKs: needless-WP:PIPEs > WP:NOPIPEs, adds, update-standardizes. WP:REFerence WP:CITation parameters: update-standardize, respace, reorder. Cut needless carriage return in paragraph. MOS:FIRSTABBReviations define-clarify before parenthetic WP:ABBRs. Nonlead-word nonproper noun MOS:CAPS > WP:LOWERCASE sentence case.
 
Line 1: Line 1:
{{Short description|Data serialization format}}
{{Short description|Data serialization format}}
{{Multiple issues|
{{Multiple issues|
{{more footnotes|date=February 2017}}
{{More footnotes|date=February 2017}}
{{more citations needed|date=February 2017}}
{{More citations needed|date=February 2017}}
}}
}}


{{OSIModel}}
{{OSIModel}}
'''External Data Representation''' ('''XDR''') is a [[technical standard|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]].
'''External Data Representation''' ('''XDR''') is a [[technical standard]] format  for [[data serialization]], 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 (computing)|library]] of functions which is [[Software portability|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 such as string and opaque are padded to a total divisible by four bytes. [[Floating-point number]]s are represented in [[IEEE 754]] format.
XDR uses a base unit of 4 bytes, [[32-bit computing|32 bits]], [[Serialization|serialized]] in [[Endianness|big-endian]] order; smaller [[data type]]s still occupy four bytes each after encoding. Variable-length types such as [[String (computer science)|string]] and [[Opaque data type|opaque]] are padded to a total divisible by four bytes. [[Floating-point arithmetic|Floating-point numbers]] are represented in [[IEEE 754]] format.


==History==
==History==
XDR was developed in the mid 1980s at [[Sun Microsystems]], and first widely published in 1987.<ref>{{cite journal |title= XDR: External Data Representation Standard |author= Sun Microsystems |journal= RFC 1014 |year= 1987 |publisher=Network Working Group |doi= 10.17487/RFC1014 |url= http://tools.ietf.org/html/rfc1014 |access-date= July 11, 2011 |doi-access= free }}</ref>
XDR was developed in the mid 1980s at [[Sun Microsystems]], and first widely published in 1987.<ref>{{cite journal |author=Sun Microsystems |date=1 June 1987 |title=XDR: External Data Representation Standard |journal=RFC 1014 |publisher=Network Working Group |doi=10.17487/RFC1014 |url=http://tools.ietf.org/html/rfc1014 |doi-access=free |access-date=20 June 2025}}</ref> XDR became an [[Internet Engineering Task Force]] (IETF) [[Internet Standard]] in 1995.
XDR became an [[IETF]] [[Internet standard|standard]] in 1995.


The XDR data format is in use by many systems, including:
The XDR data format is in use by many systems, including:
* [[Network File System (protocol)]]
* [[Network File System]] protocol
* [[ZFS]] File System
* [[ZFS]], former Zettabyte File System
* [[NDMP]] Network Data Management Protocol
* Network Data Management Protocol ([[NDMP]])
* [[Open Network Computing Remote Procedure Call]]
* Open Network Computing Remote Procedure Call ([[Sun RPC]])
* [[EMC NetWorker|Legato NetWorker]] backup software (later sold by EMC)
* [[EMC NetWorker]], former Legato NetWorker, backup software, sold later by EMC
* [[NetCDF]] (a scientific data format)
* [[NetCDF]], a scientific data format
* The [[R programming language|R language and environment for statistical computing]]
* The [[R (programming language)|R language]] and environment for statistical computing
* The [http://www.w3.org/Protocols/HTTP-NG/http-ng-status.html HTTP-NG] [[Binary Wire Protocol]]
* The [http://www.w3.org/Protocols/HTTP-NG/http-ng-status.html HTTP-NG] binary [[wire protocol]]
* The [[SpiderMonkey (Javascript engine)|SpiderMonkey]] JavaScript engine, to serialize/deserialize compiled JavaScript code
* The [[SpiderMonkey]] [[List of JavaScript engines|JavaScript engine]], to [[SerDes|serialize/deserialize]] compiled [[JavaScript]] code
* The [[Ganglia (software)|Ganglia]] distributed monitoring system
* The [[Ganglia (software)|Ganglia]] distributed monitoring system
* The [[sFlow]] network monitoring standard
* The [[sFlow]] network monitoring standard
* The [[libvirt]] virtualization library, [[Application Programming Interface|API]] and [[User Interface|UI]]
* The [[libvirt]] [[virtualization]] library, application programming interface ([[API]]) and [[user interface]] (UI)
*The [[Firebird (database server)]] for Remote Binary Wire Protocol
*The [[Firebird (database server)]] for remote binary wire protocol
* [[Stellar (payment network)|Stellar Payment Network]]
* [[Stellar (payment network)|Stellar]] payment network


== XDR data types ==
== XDR data types ==
* [[Boolean data type|boolean]]
* [[Boolean data type|boolean]]
* int – 32-bit [[Integer (computer science)|integer]]
* int – [[32-bit computing|32-bit]] [[Integer (computer science)|integer]]
* unsigned int – unsigned 32-bit [[Integer (computer science)|integer]]
* unsigned int – unsigned 32-bit [[Integer (computer science)|integer]]
* hyper – 64-bit [[Integer (computer science)|integer]]
* hyper – [[64-bit computing|64-bit]] [[Integer (computer science)|integer]]
* unsigned hyper – unsigned 64-bit [[Integer (computer science)|integer]]
* unsigned hyper – unsigned 64-bit [[Integer (computer science)|integer]]
* [[IEEE 754|IEEE]] [[floating point|float]]
* [[IEEE 754|IEEE]] [[floating point|float]]
* IEEE [[double precision|double]]
* IEEE [[double precision|double]]
* [[quadruple precision|quadruple]] (new in RFC1832)
* [[Quadruple-precision floating-point format|quadruple]] new in RFC1832
* [[Enumerated type|enumeration]]
* [[Enumerated type|enumeration]]
* [[Record (computer science)|structure]]
* [[Record (computer science)|structure]]
Line 48: Line 47:
* variable length [[Opaque data type|opaque]] data
* variable length [[Opaque data type|opaque]] data
* [[Void type|void]] – zero byte quantity
* [[Void type|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]].
* optional – optional data is notated similarly to [[C (programming language)|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==
==See also==
* Structured Data eXchange Format ([[SDXF]])
* Structured Data eXchange Format ([[SDXF]])
* [[Remote Procedure Call]]
* [[Remote procedure call]]
* [[Abstract Syntax Notation One]]
* Abstract Syntax Notation One ([[ASN.1]])
* [[Data Format Description Language]]
* [[Data Format Description Language]]
* [[Comparison of data serialization formats]]
* [[Comparison of data-serialization formats]]


==References==
==References==
Line 63: Line 62:
The XDR standard exists in three different versions in the following RFCs:
The XDR standard exists in three different versions in the following RFCs:
* {{IETF RFC|4506|link=no}} 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.
* {{IETF RFC|4506|link=no}} 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.
* {{IETF RFC|1832|link=no}} 1995 version. Added Quadruple precision floating point to RFC 1014.
* {{IETF RFC|1832|link=no}} 1995 version. Added quadruple precision floating point to RFC 1014.
* {{IETF RFC|1014|link=no}} 1987 version.
* {{IETF RFC|1014|link=no}} 1987 version.
* [http://www.cisco.com/en/US/docs/ios/sw_upgrades/interlink/r2_0/rpc_pr/rpxdesc.html Cisco's XDR: Technical Notes]
* [http://www.cisco.com/en/US/docs/ios/sw_upgrades/interlink/r2_0/rpc_pr/rpxdesc.html Cisco's XDR: Technical Notes]
Line 72: Line 71:
* [http://ivmaiasn.sourceforge.net/ IvmaiAsn ASN1/ECN/XDR Tools] (a collection of tools containing an XDR/RPC-to-ASN.1 converter)
* [http://ivmaiasn.sourceforge.net/ IvmaiAsn ASN1/ECN/XDR Tools] (a collection of tools containing an XDR/RPC-to-ASN.1 converter)


{{Data Exchange}}
{{Data exchange}}


[[Category:Networking standards]]
[[Category:Networking standards]]

Latest revision as of 09:49, 20 June 2025

Template:Short description Template:Multiple issues

Template:OSIModel External Data Representation (XDR) is a technical standard format for data serialization, 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, 32 bits, 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.[1] XDR became an Internet Engineering Task Force (IETF) Internet Standard in 1995.

The XDR data format is in use by many systems, including:

XDR data types

See also

References

Template:Reflist

External links

The XDR standard exists in three different versions in the following RFCs:

Template:Data exchange

  1. Script error: No such module "Citation/CS1".