Die Requests for Comments (RFC; englisch für „Bitte um Kommentare“) sind eine Reihe technischer und organisatorischer Dokumente zum Internet (ursprünglich Arpanet), die seit dem 7. April 1969 vom RFC-Editor herausgegeben werden. Handelte es sich ursprünglich um im Wortsinne zur Diskussion gestellte Dokumente, so findet die Diskussion heute während der Erstellung der Entwürfe statt, sodass ein veröffentlichtes RFC in der Regel eine begutachtete technische Spezifikation darstellt.[1]
Einige RFCs, jedoch nicht alle, stellen Internetstandards dar.[2] RFCs standardisieren die Internetprotokollfamilie, beispielsweise IPv6 (RFC 8200[3]), TCP (RFC 793[4]), UDP (RFC 768[5]), SMTP (RFC 5321[6]) und HTTP/2 (RFC 7540[7]), und bilden damit die technische Grundlage von Internetanwendungen wie E-Mail oder dem World Wide Web.
Alle RFCs werden vor der Veröffentlichung einer Begutachtung unterzogen. Der Veröffentlichungsprozess und die darin vorgegebenen Anforderungen unterscheiden sich, je nachdem, ob ein Internetstandard angestrebt wird oder nicht. Werdende Internetstandards müssen hohe Anforderungen erfüllen und einen Gemeinschaftskonsens der Internet Engineering Task Force (IETF) darstellen.
Alle eingereichten Entwürfe werden von der IETF unter der Bezeichnung „Internet-Draft“ (I-D) im Internet veröffentlicht. Internet-Drafts gelten als unfertig und sollen nicht als Referenz verwendet werden. Sie verfallen nach Ablauf von sechs Monaten (bleiben jedoch weiterhin online archiviert), es sei denn es wird eine neue Entwurfsversion eingereicht oder der Publikationsprozess angestoßen.
Neue RFCs gibt der RFC-Editor mit einer fortlaufenden Nummerierung als ASCII-Textdatei sowie in weiteren Dokumentenformaten heraus. Sobald ein RFC veröffentlicht ist, wird der Inhalt nie mehr verändert. Korrekturen von editoriellen oder technischen Fehlern werden als Errata veröffentlicht; das fehlerhafte RFC bleibt jedoch unverändert bestehen. Soll eine veraltete Spezifikation abgelöst werden, so durchläuft die neue Spezifikation den üblichen Prozess und wird unter einer neuen RFC-Nummer veröffentlicht. Das neue Dokument referenziert das alte RFC und erklärt es für obsolet. Ein neues RFC kann auch nur einen Teilaspekt eines bestehenden RFCs aktualisieren oder ergänzen, ohne dabei das gesamte Dokument zu invalidieren.
Dokumentenreihen
Ausgewählte RFCs werden zugleich in weiteren Dokumentenreihen mit jeweils eigenen Nummerierungen veröffentlicht.
- Internet Standard (STD)
- Internetstandards mit dem höchsten Reifegrad werden zusätzlich in der Dokumentenreihe STD veröffentlicht.
- Best Current Practice (BCP)
- Die Reihe BCP wurde 1995 für RFCs eingeführt, die technische Informationen oder administrative Vorgaben enthalten, die von der IETF gebilligt werden. Damit unterscheiden sich BCPs von rein informativen RFCs, zu denen die IETF keine Position bezieht. Die Veröffentlichung als Internetstandard scheidet hierbei aus, da es sich bei BCPs nicht um Netzwerkprotokolle handelt.[8]
- For Your Information (FYI)
- Die Reihe FYI wurde 1990 eingeführt, um informative RFCs einem breiten Publikum bekannt zu machen, das ausdrücklich auch Anfänger umfasst.[9] Die Reihe wurde 2011 eingestellt.[10]
Einzelne RARE Technical Reports (RTR) wurden auch als RFC veröffentlicht.[11]
Genehmigungsverfahren
Es gibt unterschiedliche Genehmigungsverfahren für RFCs, je nachdem woher das Dokument stammt. Ein solches Verfahren wird als Stream bezeichnet. RFC 4844 definiert die folgenden Streams:[12]
- IETF
- Das Dokument stammt entweder von einer Arbeitsgruppe der IETF oder von einem Bereichsleiter (Area Director) der Internet Engineering Steering Group. Dieser Stream ist der einzige, der werdende Internetstandards und Best Current Practices einreichen darf. RFC 2026[13] und weitere beschreiben das Verfahren.
- IAB
- Das Dokument stammt vom Internet Architecture Board. RFC 4845[14] beschreibt das Verfahren.
- IRTF
- Das Dokument stammt von der Internet Research Task Force. RFC 5743[15] beschreibt das Verfahren.
- Independent Submission
- Das Dokument stammt von einem unabhängigen Beitragenden, der es direkt beim RFC-Editor einreicht. Es wird kein technischer Konsens innerhalb der IETF benötigt, wodurch eine Veröffentlichung als Internetstandard ausgeschlossen ist. RFC 4846[16] beschreibt das Verfahren.
Jedes RFC besitzt einen Dokumentenstatus, der im Gegensatz zum Inhalt nachträglich verändert werden kann.
- Unknown (unbekannt)
- Dem RFC ist kein Status zugeordnet. Dies trifft auf einige frühe RFCs zu.
- Draft (Entwurf)
- Kein RFC, da noch im Entwurfsstadium.
- Informational (informativ)
- Informatives Dokument jeglicher Art, beispielsweise Terminologie-Erklärungen, Nutzungshinweise, Problemstellungen oder neue Ideen. Vereinzelt kommen auch Antworten auf allgemeine Fragen oder Nachrufe vor.
- Experimental (experimentell)
- Protokollspezifikation, die als Teil eines Forschungs- oder Entwicklungsvorhaben entstand. Der Zweck ist es, innerhalb der Netzgemeinde weitere Erfahrung zu sammeln, um auf dieser Basis in der Zukunft ggf. einen Internetstandard zu entwerfen. Beispielsweise begann das Sender Policy Framework als experimentelles RFC 4408[17] und kam mit RFC 7208[18] in das Standardisierungsverfahren.
- Best Current Practice (beste gegenwärtige Praxis)
- Ein technisches Dokument, das durch Veröffentlichung in der Dokumentenreihe BCP einen verbindlichen Charakter erhält.
- Proposed Standard (vorgeschlagener Standard), Draft Standard (Standardisierungsentwurf) und Internet Standard
- Verschiedene Reifegrade eines Internetstandards. Proposed Standards sind Spezifikationen, die eine rigorose Begutachtung und Konsensfindung der entsprechenden IETF-Arbeitsgruppe durchlaufen haben. Draft Standard wird nicht länger als Status verwendet.[19] Internet Standards haben die höchste Reife und werden zusätzlich in der Dokumentenreihe STD veröffentlicht.
- Historic (historisch) und Obsolete (überholt)
- Veraltete Spezifikationen werden von der IESG als Historic gekennzeichnet, wenn ihre Verwendung nicht mehr empfohlen ist. Wird eine Spezifikation durch ein neues RFC abgelöst, wird hingegen der Status Obsolete verwendet. Letzteres hat den Zweck überholte Spezifikationen zu kennzeichnen, die aber weiterhin relevant sind, etwa weil sie noch verbreitet sind.
Die IETF und der RFC-Editor legen einen hohen Wert auf Formalismus:
- Vorschläge für neue oder geänderte RFCs werden in allen Änderungen vor der formellen Veröffentlichung nachvollziehbar dokumentiert.
- Ein einmal abschließend veröffentlichter RFC ist für immer öffentlich und fest. Er kann auch nicht korrigiert, sondern nur durch neuere RFCs abgelöst werden.
- Die Struktur und der Stil eines RFCs sind durch RFC 7322 vorgegeben.[20]
- RFC 2119[21] (BCP 14) legt die Terminologie von Anforderungen fest, die in ihrer Bedeutung klar definiert sind, um Missverständnisse in deren Interpretation zu vermeiden.
- MUST und MUST NOT (äquivalent: SHALL und SHALL NOT) geben an, dass eine Anforderung zwingend eingehalten werden muss.
- SHOULD und SHOULD NOT (äquivalent: RECOMMENDED und NOT RECOMMENDED) geben an, dass eine Anforderung empfohlen ist, aber in begründeten Fällen davon abgewichen werden kann.
- MAY (äquivalent: OPTIONAL) gibt eine Option an, die im eigenen Ermessen des Herstellers umgesetzt werden kann.
- Zeichenketten und ihre Zusammensetzung werden formalistisch mittels der Backus-Naur-Form (BNF) dargestellt. Dies sorgt für eine eindeutige Interpretation, hilfreich zum Beispiel beim Aufbau von URLs und URIs.
All diese Formalismen sorgen für die Vermeidung von Missverständnissen in der Interpretation und Implementierung und somit für den Erfolg beim Betrieb des Internets. Als Beispiele hierfür und gleichermaßen für ihren Erfolg seien RFC 2822[22] (E-Mail) sowie RFC 2616[23] (HTTP) genannt.
Zwischen den RFCs, die Internetstandards oder Best Current Practices beschreiben, finden sich auch immer wieder scherzhafte RFCs, die nicht buchstabengetreu genommen werden sollten, oft aus Anlass des 1. April.
- Das am 1. April 1996 veröffentlichte RFC 1925[24] listet The Twelve Networking Truths auf, die mit dem fundamentalen Grundsatz It Has To Work beginnen.
- Als Parodie auf das Routing-Protokoll MPLS findet sich in RFC 3251[25] das Mostly Pointless Lamp Switching.
- RFC 2795[26] beschäftigt sich mit dem Infinite-Monkey-Theorem und beschreibt, wie eine unendliche Anzahl von Affen koordiniert werden kann, die die Werke von Shakespeare produzieren sollen.
- Aber auch echte Kunstwerke lassen sich ausmachen, so zum Beispiel eine Lobeshymne auf das Arpanet (RFC 527[27]), Wissenschaftsgeschichte in Versform (RFC 1121[28]) oder The Twelve Days of Christmas aus der Sicht eines gestressten Netzwerk-Admins (RFC 1882[29]).
- Am 1. April 2001 wurden im RFC 3092[30] die Kombinationen von „foo“ und „bar“ bzw. deren Abarten etymologisch bestimmt.
- Am 1. April 2003 wurde ein RFC (RFC 3514[31]) veröffentlicht, das dazu aufruft, bei IP-Paketen, die in irgendeiner Form „evil“ (böse) sind, ein entsprechendes Bit im Header zu setzen, um diese Pakete an Firewalls leichter ausfiltern zu können. Dies rührt daher, dass in IPv4-Headern ein Bit, das den „Type of Service“ angibt, normalerweise mit 0 gesetzt ist, von einigen modernen Anwendungen jedoch mit 1 gesetzt wird. Einige Firewalls verlassen sich darauf, dass dieses 0 ist, und stufen das Paket eben als böse ein, da es einen nicht-unterstützten Service-Typ darstellt.
- Am 1. April 2004 wurde ein Allwissenheitsprotokoll entwickelt, das es der amerikanischen Regierung ermöglichen sollte, alle Formen der Computerkriminalität zu erkennen und zu verhindern (RFC 3751[32]). Nachdem sich die Anforderungen an dieses Protokoll als nicht durchführbar erwiesen hatten, endet der Text mit den Worten: „Good luck.“
- Am 1. April 2005 wurde ein neuer Standard vorgestellt, welcher moralisch einwandfreies Routing ermöglicht (RFC 4041[33]). Des Weiteren wurde das schon sehr in die Jahre gekommene UTF-8, das 8 Bit breite Einheiten verwendet, durch UTF-9 ersetzt, das 9 Bits (3 × 3) pro Byte erlaubt (RFC 4042[34]).
- Am 1. April 2007 wurde eine Methode für die Übertragung von IP über das Winkeralphabet vorgestellt (RFC 4824[35]).
- Am 1. April 2010 wurde das Transmission Control Protocol erweitert: Die Laune des übertragenen Segments kann durch Emoticons im Header festgelegt werden. So kann ein Segment beispielsweise fröhlich oder frustriert sein (RFC 5841[36]).
Realisierte Aprilscherze
Nicht immer jedoch bleibt es bei RFC zum 1. April bei der Theorie.
So wurde am 6. März 2001 eine Implementierung des RFC 1149 A Standard for the Transmission of IP Datagrams on Avian Carriers (die Übertragung von IP-Datagrammen per Brieftaube)[37] vorgestellt. Die durchschnittliche Antwortzeit eines Pings betrug jedoch 45 Minuten, sodass nicht mit einer regelmäßigen Nutzung im Echteinsatz zu rechnen sein wird. Allerdings führte dies zu einer Weiterentwicklung RFC 2549 IP over Avian Carriers with Quality of Service,[38] aber auch dieser Einsatz ist unwahrscheinlich.
Der Editor Emacs enthält schon seit Jahren eine vollständige Implementierung von RFC 2324:[39] Das Hyper Text Coffee Pot Control Protocol (HTCPCP) dient der Fernsteuerung und -überwachung von Kaffeemaschinen. Am 1. April 2014 wurde das Protokoll mit dem RFC 7168[40] um die Nutzung von Tee erweitert.
Auch für das Pi Digit Generation Protocol gibt es mit gpigen eine freie Implementierung für mehrere Plattformen.