Zum Hauptinhalt springen

RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Nachrichtensyntax und Routing

  • Status: Proposed Standard
  • Veröffentlicht: June 2014
  • Stream: IETF
  • Aktualisiert: RFC2817, RFC2818
  • Ersetzt: RFC2145, RFC2616
  • Ersetzt durch: RFC9110, RFC9112
  • Errata: Keine Errata

Dokumentinformationen

  • RFC-Nummer: 7230
  • Titel: HTTP/1.1: Message Syntax and Routing (Nachrichtensyntax und Routing)
  • Veröffentlicht: Juni 2014
  • Autoren: R. Fielding (Adobe), J. Reschke (greenbytes)
  • Status: Standards Track
  • Ersetzt: RFC 2616, RFC 2145
  • Aktualisiert: RFC 2817, RFC 2818

Zusammenfassung (Abstract)

Das Hypertext Transfer Protocol (HTTP) ist ein zustandsloses Anwendungsschichtprotokoll für verteilte, kollaborative Hypertext-Informationssysteme. Dieses Dokument gibt einen Überblick über die HTTP-Architektur und die zugehörige Terminologie, definiert die URI-Schemata (Uniform Resource Identifier) „http" und „https", legt die HTTP/1.1-Nachrichtensyntax und Parsing-Anforderungen fest und beschreibt damit verbundene Sicherheitsüberlegungen für Implementierungen.

Dokumentstruktur (Inhaltsverzeichnis)

Hauptabschnitte

  1. Introduction (Einführung)

    • 1.1 Requirements Notation (Anforderungsnotation)
    • 1.2 Syntax Notation (Syntaxnotation)
  2. Architecture (Architektur)

    • 2.1 Client/Server Messaging (Client/Server-Nachrichtenübermittlung)
    • 2.2 Implementation Diversity (Implementierungsvielfalt)
    • 2.3 Intermediaries (Vermittler)
    • 2.4 Caches (Zwischenspeicher)
    • 2.5 Conformance and Error Handling (Konformität und Fehlerbehandlung)
    • 2.6 Protocol Versioning (Protokollversionierung)
    • 2.7 Uniform Resource Identifiers (Einheitliche Ressourcenbezeichner)
  3. Message Format (Nachrichtenformat)

    • 3.1 Start Line (Startzeile)
    • 3.2 Header Fields (Header-Felder)
    • 3.3 Message Body (Nachrichtenrumpf)
  4. Transfer Codings (Übertragungscodierungen)

    • 4.1 Chunked Transfer Coding (Chunked-Übertragungscodierung)
    • 4.2 Compression Codings (Kompressionscodierungen)
    • 4.3 TE Header Field
    • 4.4 Trailer Header Field
  5. Message Routing (Nachrichtenrouting)

    • 5.1 Identifying a Target Resource (Identifizierung einer Zielressource)
    • 5.2 Connecting Inbound (Eingehende Verbindung)
    • 5.3 Request Target (Anforderungsziel)
    • 5.4 Host Header Field
    • 5.5 Effective Request URI
    • 5.6 Associating a Response to a Request (Zuordnung einer Antwort zu einer Anforderung)
    • 5.7 Message Forwarding (Nachrichtenweiterleitung)
  6. Connection Management (Verbindungsverwaltung)

    • 6.1 Connection Header Field
    • 6.2 Establishment (Verbindungsaufbau)
    • 6.3 Persistence (Persistente Verbindungen)
    • 6.4 Concurrency (Parallelität)
    • 6.5 Failures and Timeouts (Fehler und Zeitüberschreitungen)
    • 6.6 Tear-down (Verbindungsabbau)
    • 6.7 Upgrade Header Field
  7. ABNF List Extension (ABNF-Listenerweiterung)

  8. IANA Considerations (IANA-Überlegungen)

  9. Security Considerations (Sicherheitsüberlegungen)

Anhänge

HTTP/1.1-Spezifikationsreihe

RFC 7230 ist der erste Teil der HTTP/1.1-Spezifikationsreihe. Die vollständige Reihe umfasst:

  1. RFC 7230 - Message Syntax and Routing (dieses Dokument)
  2. RFC 7231 - Semantics and Content (Semantik und Inhalt)
  3. RFC 7232 - Conditional Requests (Bedingte Anforderungen)
  4. RFC 7233 - Range Requests (Bereichsanforderungen)
  5. RFC 7234 - Caching (Zwischenspeicherung)
  6. RFC 7235 - Authentication (Authentifizierung)

Schlüsselkonzepte

Kernbegriffe

  • Client (Client): Ein Programm, das eine Verbindung herstellt, um HTTP-Anforderungen zu senden
  • Server (Server): Ein Programm, das Verbindungen akzeptiert, um HTTP-Anforderungen zu bedienen
  • User Agent (Benutzeragent): Ein Client-Programm, das Anforderungen initiiert (Browser, Crawler usw.)
  • Origin Server (Ursprungsserver): Ein Programm, das maßgebliche Antworten für eine gegebene Ressource erzeugen kann
  • Intermediary (Vermittler): Proxy, Gateway oder Tunnel
  • Cache (Zwischenspeicher): Lokale Speicherung früherer Antworten

Nachrichtenstruktur

HTTP-message   = start-line
*( header-field CRLF )
CRLF
[ message-body ]

Anforderungsbeispiel

GET /hello.txt HTTP/1.1
Host: www.example.com
User-Agent: curl/7.16.3
Accept-Language: de, en

Antwortbeispiel

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Content-Length: 51
Content-Type: text/plain

Hello World! My payload includes a trailing CRLF.

Wichtige Merkmale

  1. Zustandsloses Protokoll – Jede Anforderung wird unabhängig verarbeitet
  2. Persistente Verbindungen – HTTP/1.1 verwendet standardmäßig persistente Verbindungen
  3. Chunked Transfer Encoding – Ermöglicht das Senden von Daten ohne Kenntnis der Gesamtlänge
  4. Vermittlerunterstützung – Unterstützt Proxys, Gateways und Tunnel
  5. Protokoll-Upgrade – Unterstützt das Upgrade auf andere Protokolle (z. B. WebSocket)

Sicherheitsüberlegungen

  1. Eingabevalidierung – Benutzereingaben stets validieren und bereinigen
  2. Längenbeschränkungen – Beschränkungen für Anforderungszeilen- und Header-Feldlängen implementieren
  3. HTTPS verwenden – TLS-Verschlüsselung für sensible Kommunikation einsetzen
  4. Request Smuggling verhindern – Nachrichtenparse-Regeln strikt einhalten
  5. Vermittlersicherheit – Proxys und Gateways sorgfältig behandeln
  6. Datenschutz – Personenbezogene Daten in Server-Protokollen schützen

Urheberrechtshinweis

Copyright © 2014 IETF Trust und die als Dokumentautoren identifizierten Personen. Alle Rechte vorbehalten.

Dieses Dokument unterliegt BCP 78 und den rechtlichen Bestimmungen des IETF Trust.

Verwandte Ressourcen


📌 Lesen beginnen: Beginnen Sie mit Abschnitt 1 – Einführung