Zusammenfassung
- XDR übernahm keine native Speicherstruktur, sondern definierte eine externe Big-Endian-Darstellung in Vielfachen von vier Bytes.
- Variable Werte trugen Länge und Inhalt; nachfolgende Nullfüllung stellte die Ausrichtung her, ohne den Wert zu verlängern.
- Deklarationsreihenfolge und Diskriminante steuerten die Struktur, während Nachrichtenrahmen, Sicherheit und Anwendungsbedeutung außerhalb von XDR blieben.
Der freie Platz durfte keine Herkunft verraten
Das Beispiel in RFC 4506 beginnt mit einem Dateinamen von neun Bytes. XDR schreibt zunächst die vier Byte lange Längenangabe, dann den Namen und anschließend drei Nullbytes. Erst danach folgt das nächste Feld. Die drei Bytes stehen in der Darstellung; im Namen werden sie nicht mitgezählt.
Beliebiger Speicherrest wäre dort unzulässig. Sonst könnten zwei Encoder denselben Wert in unterschiedliche Folgen verwandeln. Ein Bytevergleich oder eine Prüfsumme hinge plötzlich von der Ursprungsmaschine ab. Nullfüllung macht auch den bedeutungsfreien Teil kanonisch.
Damit wird das Ziel präzise: Rechner mussten intern nicht gleich werden. Sie mussten nur am Ausgang dieselbe, nachprüfbare Form liefern.
Die Maschine behielt ihr Inneres für sich
RFC 1014 veröffentlichte XDR 1987 als Sprache zur Beschreibung und Codierung von Daten zwischen verschiedenen Architekturen. Sun RPC und NFS wurden bereits als Anwender genannt. Die C-ähnliche Sprache beschrieb Formate; sie war weder Programm noch Zusage, eine C-Struktur unverändert aus dem Speicher zu kopieren.
Ein vorzeichenbehafteter XDR-Integer ist 32 Bit breit, im Zweierkomplement, höchstwertiges Byte zuerst. Arrays folgen der Elementreihenfolge, Strukturen der Deklaration. Endpunkte dürfen intern andere Formen verwenden. Der Encoder übersetzt in das gemeinsame Format, der Decoder zurück in ein lokales Objekt.
Ein Auswahlbit für die Byte-Reihenfolge gibt es nicht. Zwei Ordnungen hätten ein höheres Protokoll benötigt, das die Wahl festhält. Eine Ordnung verteilt Konvertierungskosten ungleich, lässt dafür aber auch gespeicherte XDR-Daten ohne frühere Aushandlung verständlich bleiben.
Vier Byte waren ebenfalls ein Kompromiss. Kleinere Einheiten sparen Füllung, kollidieren aber häufiger mit Ausrichtung; größere richten mehr Architekturen aus und blähen die Darstellung auf. Der Standard beseitigte den Preis nicht, sondern machte ihn einheitlich.
Die Längenangabe begrenzte den Inhalt
Variable opaque-Daten beginnen mit einer vorzeichenlosen 32-Bit-Länge. Danach kommen genau so viele beliebige Bytes und bis zu drei Nullen bis zur Vierergrenze. Strings verwenden dieselbe gezählte Form; variable Arrays nennen zuerst ihre Elementzahl.
Ein Decoder kann die Angabe gegen das Protokollmaximum prüfen, den verbleibenden Record messen und die Position des nächsten Feldes berechnen. Eine Überschreitung einer deklarierten Grenze ist ein Codierfehler. Fehlt eine ausdrückliche Grenze, verpflichtet der theoretische Sprachwert keinen Empfänger zu unbegrenzter Allokation. Lokale Ressourcen bleiben unter lokaler Kontrolle.
Ein gezählter XDR-String darf ein NUL enthalten. Eine native Bibliothek, die NUL als Ende behandelt, kann nach einer Länge reservieren und nach einer anderen vergleichen oder freigeben. Kanonische Außenbytes ersetzen keine sichere Anpassung an den lokalen Typ.
Der Diskriminant öffnete genau einen Zweig
XDR typisiert implizit. Ein gewöhnliches Feld trägt nicht zusätzlich seinen Namen und ein universelles Typetikett. Beide Seiten kennen die Deklaration. Deshalb ist die Reihenfolge einer Struktur Vertragsinhalt; ein stilles Vertauschen ändert die Bedeutung nachfolgender Bytes.
Eine diskriminierte Union stellt zuerst einen Integer, Enum oder booleschen Diskriminanten dar. Sein Wert wählt den folgenden Arm. Fehlt ein Default, besitzt ein unbekannter Wert keine gültige Codierung. Optional-data zeigt das Prinzip knapp: wahr wird von einem Element gefolgt, falsch wählt das null Byte große void. Abwesenheit wird erklärt, nicht aus Leere erraten.
Diese Auswahl besitzt keine weitergehende Autorität. Sie authentifiziert den Sender nicht, erlaubt keinen Fernaufruf und bestätigt nicht die sachliche Richtigkeit des Inhalts.
Darstellung war noch kein Nachrichtenrahmen
RFC 1832 brachte die eingesetzte Form 1995 auf den Standards Track. RFC 4506 wurde 2006 STD 67 und erklärte ausdrücklich, die technische Codierung nicht zu ändern. Neu war die betriebliche Warnung: variable Größen begrenzen, Puffer schützen, eingebettete NULs und rekursive Strukturen beherrschen.
RFC 5531 zieht die Schichtgrenze. ONC-RPC-Nachrichten sind in XDR beschrieben. Über TCP benötigen sie dennoch ein eigenes Record Marking; dessen Fragmentkopf ist ausdrücklich keine XDR-Standardform. Wer einen XDR-Wert decodiert, kennt damit weder das Ende einer beliebigen TCP-Nachricht noch den zugehörigen Aufruf oder dessen Abschluss.
Verschlüsselung, Authentisierung, Autorisierung, Integrität und Replay-Schutz liefert XDR ebenfalls nicht. Es macht eine Grammatik prüfbar. Vertrauen und Handlungsmacht bleiben Aufgaben der tragenden Protokolle und Anwendungen.
Quellen und Grenzen
Die geschlossene Quellenbasis besteht aus RFC 1014, RFC 1832, RFC 4506 und RFC 5531. Sie belegt Format, Kontinuität und RPC-Grenze, nicht heutige Verbreitung, Produktkonformität, Identität, Berechtigung oder tatsächlich ausgeführte Operationen.
Mitgliederbriefing
Detaillierter Profilkontext
Melden Sie sich mit der richtigen Mitgliedschaftsstufe an, um das vollständige Briefing und die Quellennotizen freizuschalten.
Nur für Strategic Circle
Strategic Circle
Offen für alle Leser. Schalten Sie Profil-Briefings nach Beitritt und Anmeldung frei.
Strategic Circle beitretenNur für Leadership Alliance
Leadership Alliance
Für qualifizierte Inhaber von IP-Assets und Management; melden Sie sich an, um Leadership-Alliance-Briefings freizuschalten.
Leadership Alliance beitreten
