External Data Representation
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[1] verbindlich festgeschrieben. Er wurde 1995 aktualisiert durch den RFC 1832,[2] welcher 128-bit-Gleitkommazahlen hinzufügte, und 2006 durch den RFC 4506,[3] 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
Weblinks
- Ein kurzer Abstract zum SUN XDR. (PDF; 15 kB) cdk3.net (englisch).
Einzelnachweise
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.