RFC 1122 · · Internet Standard

Zehn Jahre TCP/IP-Fehlerberichte, aufgeschrieben.

Der offizielle Titel lautet "Requirements for Internet Hosts, Communication Layers." Was er wirklich ist: ein Korrekturblatt für alles unterhalb der Anwendung, 1989 zusammengetragen aus einem Jahrzehnt, in dem TCP/IP-Implementierungen einander still widersprachen.

Status
✓ Weiterhin gültig
Auch bekannt als
STD 3
Aktualisiert
RFC 793

Geschrieben von Noel Lang · IT-Trainer

Kurzfassung

RFC 1122 sagt einem Internet-Host, was er unterhalb der Anwendungsschicht tun muss. Er definiert kein Protokoll. Stattdessen geht er IP, ICMP, UDP und RFC 793 durch und nagelt Klausel für Klausel das Verhalten fest, über das ein Jahrzehnt unabhängiger Implementierungen still uneins gewesen war. Er ist die Hälfte von STD 3 (die andere ist RFC 1123 ), er ist die Heimat des Robustheitsprinzips, und er ist bis heute Internet Standard.

Das Problem, das er löst

Ende der 1980er war TCP/IP dutzendfach von Leuten implementiert worden, die einander nie begegnet waren, nach Spezifikationen, die ein Jahrzehnt zuvor geschrieben worden waren. Diese Spezifikationen waren klar beim Format auf der Leitung und vage beim Verhalten. Was soll ein Host mit einer ICMP-Nachricht tun, die er nicht versteht? Wie lange darf er warten, bevor er bestätigt? Was ist eine gültige IP-Option?

Jeder antwortete leicht anders, und die Antworten prallten erst aufeinander, wenn sich zwei Stacks im echten Netz begegneten. Das Internet hatte kein Protokollproblem, es hatte ein Auslegungsproblem.

RFC 1122 ist die Antwort. Er geht jede Schicht durch und schreibt zu jeder offenen Frage eine Regel mit exakter Verbindlichkeit: Das musst du tun, das solltest du, das darfst du. Er brauchte diese Wörter so dringend, dass er sie in Abschnitt 1.3.2 selbst definierte, acht Jahre bevor RFC 2119 dieses Vokabular für jeden folgenden RFC verbindlich machte.

Die Bauordnung

Eine Spezifikation ist eine Architektenzeichnung. Sie sagt dir, was das Gebäude ist: die Form, die Maße, wo die tragenden Wände stehen. Alles kann sie nicht sagen, denn sie wurde gezeichnet, bevor irgendjemand darin gewohnt hatte.

RFC 1122 ist die Bauordnung, und Bauordnungen werden nach den Einstürzen geschrieben. Jede Regel darin ist eine Narbe. Irgendwessen Host ignorierte einmal einen ICMP-Redirect und versenkte seinen eigenen Verkehr, also gibt es jetzt eine Klausel. Irgendwessen Stack fragmentierte einmal ein Paket, das er hätte verwerfen müssen, also gibt es auch dazu eine. Das Dokument liest sich trocken, weil eine Liste von Narben das immer tut.

Genau deshalb ersetzt es die Zeichnungen nicht. Du liest weiterhin RFC 793 , um zu lernen, was TCP ist. Du liest RFC 1122, um zu lernen, was ein TCP, das den Kontakt mit Fremden überlebt, tatsächlich tun muss. Der berühmte Satz in Abschnitt 1.2.2, sei konservativ beim Senden und großzügig beim Annehmen, ist kein Slogan. Er ist die Philosophie eines Dokuments, das von Leuten geschrieben wurde, die sich durch Trümmer arbeiteten.

Was der RFC wirklich sagt

Lang, und aufgebaut als Gang die Schichten hinunter. Niemand liest ihn von vorn bis hinten; man schlägt die Klausel nach, über die man gerade streitet:

Abschnitt In einfachen Worten
1 · Einleitung Warum das Dokument existiert, und der berühmte Abschnitt 1.2.2: sei konservativ in dem, was du sendest, und großzügig in dem, was du annimmst.
1.3.2 · Anforderungswörter Definiert MUST, SHOULD und MAY, acht Jahre bevor RFC 2119 dieses Vokabular allgemeingültig machte.
2 · Sicherungsschicht Der kurze Teil. Hauptsächlich über ARP, und darüber, nicht anzunehmen, jedes Netz sähe aus wie Ethernet.
3 · Internetschicht IP und ICMP, Klausel für Klausel: Fragmentierung, die Time-to-live, und welche ICMP-Nachrichten ein Host beantworten statt ignorieren muss.
4 · Transportschicht Der Kern. Vier Seiten über UDP, dreißig über TCP: Wiederholungs-Timer, Urgent-Daten, Keep-alives und die Regeln für ein sauberes Verbindungsende.

Was oft falsch verstanden wird

  • "RFC 1122 definiert TCP."

    Er definiert gar nichts. definiert TCP; RFC 1122 ist das Dokument, das nach zehn Jahren zurückging und Klausel für Klausel benannte, was Implementierer falsch gemacht hatten. Denk an Spezifikation gegenüber Errata. Ein Stack, der nur 793 umsetzt, funktioniert meistens und überrascht dich an den Rändern. Genau deshalb wurde 1122 geschrieben.

  • "STD 3 ist ein Dokument."

    STD 3 ist ein Paar. RFC 1122 deckt die Kommunikationsschichten ab und die Anwendungen, und die Standardnummer meint beide zusammen. Standardnummern benennen eine Anforderung, RFC-Nummern ein Dokument, und eine Anforderung kann sich über mehrere Dokumente erstrecken. Dasselbe gilt für STD 6, das schlicht allein ist.

  • "Großzügig annehmen ist zeitloser Rat."

    Er entstand, als die Gefahr darin bestand, dass zwei Universitäts-Stacks nicht miteinander sprachen. Dreißig Jahre Erfahrung haben die Kehrseite gezeigt: Jede Implementierung, die fehlerhafte Eingaben stillschweigend akzeptiert, lehrt die Sender, dass der Fehler in Ordnung ist, bis die Toleranz zum faktischen Protokoll wird und der strenge Parser als der kaputte dasteht. Die IETF hat das Prinzip seither erneut geprüft. Großzügigkeit ist eine Freundlichkeit mit langer Rechnung.

Wo dir RFC 1122 begegnet

Selten beim Namen, oft in seinen Folgen. Wo er auftaucht:

Du siehst Was es bedeutet
"Postels Gesetz" in einem Code-Review Jemand zitiert Abschnitt 1.2.2, meist um zu rechtfertigen, dass Eingaben akzeptiert werden, die ein strengerer Parser abgelehnt hätte.
MUST und SHOULD in einem RFC der 1990er Das Vokabular, das RFC 1122 für sich selbst definierte, bevor RFC 2119 es zur allgemeinen Konvention machte.
"Kompatibel mit STD 3" in einem Datenblatt Die Behauptung, das Gerät folge sowohl RFC 1122 als auch RFC 1123. Ob das jemand geprüft hat, steht auf einem anderen Blatt.
Ein TCP-Stack mit zwei Minuten TIME-WAIT Eine der vielen Betriebskonstanten, die RFC 1122 festnagelte, wo RFC 793 noch Raum für Diskussion gelassen hatte.

Fragen, die wirklich gestellt werden

Was ist RFC 1122? +

RFC 1122 ist ein Anforderungsdokument von 1989, das festlegt, was ein Internet-Host auf der Sicherungs-, IP- und Transportschicht tun muss, sollte und darf. Es definiert kein Protokoll, sondern korrigiert und präzisiert die bestehenden, auf Basis von zehn Jahren Implementierungserfahrung. Zusammen mit RFC 1123 bildet es STD 3, und beide sind bis heute Internet Standard.

Was ist der Unterschied zwischen RFC 1122 und RFC 1123? +

Es sind zwei Hälften eines Dokuments, am selben Tag vom selben Herausgeber veröffentlicht. RFC 1122 deckt die Kommunikationsschichten ab: Sicherungsschicht, IP, ICMP, UDP und TCP. RFC 1123 deckt die Anwendungsschicht ab: Telnet, FTP, SMTP und DNS. Zusammen sind sie STD 3, die Anforderungen, an denen jeder Internet-Host gemessen wird.

Was ist das Robustheitsprinzip? +

"Sei konservativ in dem, was du sendest, und großzügig in dem, was du annimmst." RFC 1122 formuliert es als Entwurfsregel für Hosts: Gib nur strikt korrekte Ausgabe aus, aber toleriere Eingaben, die technisch fehlerhaft sind, solange ihre Bedeutung klar ist. Es heißt oft Postels Gesetz, nach Jon Postel, der es zuerst formulierte. Die heutige Praxis begegnet ihm mit mehr Misstrauen als 1989.

Ist RFC 1122 noch aktuell? +

Ja. Er ist Internet Standard und Teil von STD 3 und wurde nie abgelöst. Einzelne Klauseln wurden von späteren RFCs aktualisiert, etwa die TCP-Regeln durch RFC 9293, aber das Dokument selbst gilt weiter. Wenn eine Spezifikation verlangt, ein Host müsse STD 3 folgen, ist dies die eine Hälfte davon.

Verweise hierher

Andere Erklärseiten auf dieser Website, die auf diesen RFC zurückverweisen:

Wie RFC 1122 zusammenhängt

Teil eines geführten Clusters: Die Netzwerk-Grundlagen, erklärt