Zum Hauptinhalt springen

Appendix A. HTTP Version History (HTTP-Versionshistorie)

Die HTTP-Versionierungspolitik hat sich nicht geändert, seit sie erstmals 1990 als Teil der World-Wide Web Global Information Initiative eingeführt wurde. Diese Versionspolitik zielt darauf ab, dem Absender zu ermöglichen, das Format einer Nachricht und seine Fähigkeit anzuzeigen, weitere Kommunikation zu verstehen und daran teilzunehmen.

Die Entwicklung von HTTP/1.1 dauerte über 10 Jahre, einschließlich zweier verschiedener Standards-Track-Spezifikationen ([RFC2068] und [RFC2616]) sowie Jahrzehnten an Implementierungs- und Bereitstellungserfahrung.

A.1. HTTP/0.9

HTTP/0.9 war die erste Implementierung des HTTP-Protokolls im World-Wide Web. Es war ein einfaches Protokoll, bei dem eine Anfrage aus einer einzigen Zeile bestand, die nur die Methode und die Ziel-URI enthielt.

GET /hello.txt

A.1.1. HTTP/1.0

HTTP/1.0 dokumentierte das gemeinsame HTTP-Nachrichtenformat. Es fügte eine Protokollversionsnummer, einen Statuscode und einen Header-Abschnitt für sowohl Anfragen als auch Antworten hinzu.

Die HTTP/1.0-Spezifikation ist in [RFC1945] definiert.

A.1.2. HTTP/1.1

HTTP/1.1 ist eine Verfeinerung von HTTP/1.0, einschließlich detaillierter Beschreibungen von Anfragemethoden, Antwortstatuscodes und Header-Feldern.

Die Hauptverbesserungen umfassen:

  • Persistente Verbindungen: Verbindungen sind standardmäßig persistent
  • Chunked-Übertragungskodierung: Ermöglicht dynamisches Senden des Nachrichtenkörpers
  • Host-Header: Unterstützung für virtuelles Hosting
  • Pipelining: Ermöglicht paralleles Senden mehrerer Anfragen
  • Cache-Steuerung: Ausgeklügeltere Caching-Mechanismen

HTTP/1.1 wurde zuerst in [RFC2068] (Januar 1997) definiert und dann in [RFC2616] (Juni 1999) aktualisiert.

A.2. Changes from RFC 2616 (Änderungen gegenüber RFC 2616)

Dieses Dokument ([RFC7230]) ersetzt das vorherige [RFC2616] und führt viele Klarstellungen und Verbesserungen ein:

A.2.1. Architecture (Architektur)

  • Klarstellung der Rollen von Vermittlern (Proxys, Gateways, Tunnels)
  • Verbesserung der Definitionen von User Agents und Ursprungsservern

A.2.2. Message Syntax and Routing (Nachrichtensyntax und Routing)

  • Klarstellung des Nachrichtenframings
  • Klarstellung der Interaktion zwischen Transfer-Encoding und Content-Length
  • Detaillierte Beschreibung der Chunked-Übertragungskodierung

A.2.3. Connection Management (Verbindungsmanagement)

  • Klarstellung des Verhaltens persistenter Verbindungen
  • Dokumentation der Einschränkungen des Pipelining
  • Detaillierte Beschreibung der Verbindungswiederverwendung und -schließung

A.2.4. Security Considerations (Sicherheitsbetrachtungen)

  • Dokumentation von Request-Smuggling-Angriffen
  • Dokumentation von Response-Splitting-Angriffen
  • Hinzufügung von Sicherheitshinweisen zur Protokollelementlänge