External Data Representation (kurz: XDR) ist ein abstrakter technischer Kommunikationsstandard, der von Sun Microsystems und anderen Unternehmen definiert wurde, um den Datenaustausch zwischen Servern und Clients hardwareunabhängig zu standardisieren. XDR ist eine Implementierung der Darstellungsschicht des OSI-Modell zur Netzwerkkommunikation und ist im RFC 1014 verbindlich festgeschrieben. Er wurde 1995 aktualisiert durch den RFC 1832, welcher 128-bit-Gleitkommazahlen hinzufügte, und 2006 durch den RFC 4506, welcher nur strukturelle, aber keine inhaltlichen Änderungen beinhaltet.
Seine Hauptanwendung findet dieser Standard in der Kommunikation im SUN Network File System. Eine Reihe von Programmiersprachen unterstützen das Lesen und Schreiben von XDR-Daten durch Bibliotheksfunktionen (siehe z. B. xdr_*-Funktionen in der libc unter Unix für C, XDR-Modul für Perl, xdrlib-Modul für Python).
XDR definiert eine Repräsentation für die gebräuchlichsten Datentypen wie z. B. Integer, Strings oder Arrays, ist jedoch selbst untypisiert. Die XDR-Byte-Reihenfolge wird in den aktuellen Standards auf Big Endian festgelegt, was der Network Byte Order von TCP/IP entspricht. Einer XDR-Einheit entsprechen 4 Bytes. Gleitkommazahlen werden in einfacher und doppelter Genauigkeit nach dem Standard IEEE 754 kodiert.
Datentypen
Basisdatentypen Name Repräsentation Erläuterungen integer 32 bit Zweierkomplement unsigned integer 32-Bit-Ganzzahl hyper 64 bit Zweierkomplement unsigned hyper 64-Bit-Ganzzahl enumeration 32 Bit Ganzzahl bool 32 Bit Ganzzahl 0=false, 1=true float 32 Bit IEEE Gleitkommazahl double 64 Bit IEEE Gleitkommazahl quadruple 128 Bit IEEE Gleitkommazahl opaque[n] Binärdaten der Länge n Oktette ggf. mit Padding, falls Länge kein Vielfaches von 4 Byte opaque<n> 32-bit Längenfeld, gefolgt von Binärdaten mit angegebener Länge ggf. mit Padding, falls Länge kein Vielfaches von 4 Byte string<n> 32 Bit Längenfeld, gefolgt von einem ASCII-String ggf. mit Padding, falls Länge kein Vielfaches von 4 Byte. Wenn die Längenangabe weggelassen wird, gilt eine Maximallänge von 232−1 void – Leerer Datentyp, der keinen Speicherplatz beansprucht
Zusammengesetzte Datentypen Name Syntax Repräsentation Erläuterungen fixed-length array datatype identifier[n] n Elemente von datatype hintereinander variable-length array datatype identifier<n> 32-Bit Längenfeld, gefolgt von max. n Elementen Wenn n fehlt, gilt n=232-1 structure struct{ type1 identifier1; … } Die Komponenten der Datenstruktur in der Reihenfolge ihrer Deklaration discriminated union
Sonstige Datentypen
Name Syntax Repräsentation Erläuterungen optional-data datatype *identifier Wird gespeichert wie eine discriminated union mit einem boolean, gefolgt von dem Datenfeld, falls der Boole’sche Wert true ist.
Siehe auch Remote Procedure Call
Weblinks Ein kurzer Abstract zum SUN XDR. (PDF; 15 kB) cdk3.net (englisch).
Einzelnachweise
Kategorie:Netzwerkprotokoll