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
-
Introduction (Einführung)
- 1.1 Requirements Notation (Anforderungsnotation)
- 1.2 Syntax Notation (Syntaxnotation)
-
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)
-
Message Format (Nachrichtenformat)
- 3.1 Start Line (Startzeile)
- 3.2 Header Fields (Header-Felder)
- 3.3 Message Body (Nachrichtenrumpf)
-
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
-
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)
-
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
-
ABNF List Extension (ABNF-Listenerweiterung)
-
IANA Considerations (IANA-Überlegungen)
-
Security Considerations (Sicherheitsüberlegungen)
Anhänge
- Appendix A - HTTP Version History (HTTP-Versionsgeschichte)
- Appendix B - Collected ABNF (Gesammelte ABNF)
- References (Referenzen)
HTTP/1.1-Spezifikationsreihe
RFC 7230 ist der erste Teil der HTTP/1.1-Spezifikationsreihe. Die vollständige Reihe umfasst:
- RFC 7230 - Message Syntax and Routing (dieses Dokument)
- RFC 7231 - Semantics and Content (Semantik und Inhalt)
- RFC 7232 - Conditional Requests (Bedingte Anforderungen)
- RFC 7233 - Range Requests (Bereichsanforderungen)
- RFC 7234 - Caching (Zwischenspeicherung)
- 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
- Zustandsloses Protokoll – Jede Anforderung wird unabhängig verarbeitet
- Persistente Verbindungen – HTTP/1.1 verwendet standardmäßig persistente Verbindungen
- Chunked Transfer Encoding – Ermöglicht das Senden von Daten ohne Kenntnis der Gesamtlänge
- Vermittlerunterstützung – Unterstützt Proxys, Gateways und Tunnel
- Protokoll-Upgrade – Unterstützt das Upgrade auf andere Protokolle (z. B. WebSocket)
Sicherheitsüberlegungen
- Eingabevalidierung – Benutzereingaben stets validieren und bereinigen
- Längenbeschränkungen – Beschränkungen für Anforderungszeilen- und Header-Feldlängen implementieren
- HTTPS verwenden – TLS-Verschlüsselung für sensible Kommunikation einsetzen
- Request Smuggling verhindern – Nachrichtenparse-Regeln strikt einhalten
- Vermittlersicherheit – Proxys und Gateways sorgfältig behandeln
- 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
- Offizielles Dokument: https://www.rfc-editor.org/rfc/rfc7230.html
- Errata: https://www.rfc-editor.org/errata_search.php?rfc=7230
- Hinweis: RFC 7230 wurde durch RFC 9110–9114 (HTTP Semantics) abgelöst
📌 Lesen beginnen: Beginnen Sie mit Abschnitt 1 – Einführung