HTTP
HTTP steht für Hypertext Transfer Protocol und ist das wichtigste Kommunikationsprotokoll des World Wide Web. Es regelt, wie Webbrowser und Webserver miteinander kommunizieren, um Webseiten, Bilder, Videos und andere Inhalte auszutauschen.
Du verwendest HTTP täglich, ohne es bewusst wahrzunehmen: Jedes Mal, wenn du eine Webseite aufrufst, sendet dein Browser eine HTTP-Anfrage an einen Server, der mit einer HTTP-Antwort reagiert. Das Protokoll arbeitet im OSI-Modell auf der Anwendungsschicht (Layer 7) und nutzt für den Transport typischerweise TCP als zugrunde liegendes Protokoll.
Geschichte und Entwicklung von HTTP
Die Geschichte von HTTP ist eng mit der Entstehung des World Wide Web verbunden. Tim Berners-Lee entwickelte HTTP 1989 am CERN in Genf als Teil seines Konzepts für ein weltweites Informationssystem. Zusammen mit HTML und URLs bildete HTTP die technische Grundlage des Web.
Die wichtigsten Versionen
HTTP hat seit seiner Einführung mehrere große Versionssprünge durchlaufen, die jeweils bedeutende Verbesserungen mit sich brachten:
- HTTP/0.9 (1991): Die erste Version, extrem einfach gehalten. Nur GET-Anfragen, keine Header, nur HTML-Dokumente
- HTTP/1.0 (1996): Einführung von Headern, Statuscodes und weiteren Methoden (POST, HEAD). Jede Anfrage erforderte eine neue TCP-Verbindung
- HTTP/1.1 (1997): Persistente Verbindungen (Keep-Alive), Chunked Transfer, Host-Header für virtuelle Server. Definiert in RFC 2616
- HTTP/2 (2015): Binäres Protokoll, Multiplexing, Header-Kompression, Server Push. Basiert auf SPDY von Google
- HTTP/3 (2022): Verwendet QUIC statt TCP, bessere Performance bei Paketverlust, standardisiert in RFC 9114
Funktionsweise von HTTP
HTTP basiert auf dem Request-Response-Modell: Ein Client (typischerweise ein Webbrowser) sendet eine Anfrage (Request) an einen Server, der darauf mit einer Antwort (Response) reagiert. Dieses einfache Prinzip ermöglicht die zustandslose Kommunikation, bei der jede Anfrage unabhängig von vorherigen behandelt wird.
Aufbau einer HTTP-Anfrage
Eine HTTP-Anfrage besteht aus mehreren Komponenten: der Anfragemethode, der URL, HTTP-Headern und optional einem Body für Daten:
GET /lexikon/http HTTP/1.1
Host: ausbildung-in-der-it.de
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml
Accept-Language: de-DE,de;q=0.9,en;q=0.8
Connection: keep-alive
Die erste Zeile enthält die Methode (GET), den Pfad (/lexikon/http) und die Protokollversion (HTTP/1.1). Die folgenden Zeilen sind Header, die zusätzliche Informationen wie den Hostnamen und den Browser-Typ übermitteln.
Aufbau einer HTTP-Antwort
Die Serverantwort enthält einen Statuscode, Header und typischerweise den angeforderten Inhalt im Body:
HTTP/1.1 200 OK
Date: Wed, 04 Dec 2024 12:00:00 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 15432
Server: nginx/1.24.0
<!DOCTYPE html>
<html>
<head><title>HTTP - Lexikon</title></head>
<body>...</body>
</html>
HTTP-Methoden
HTTP definiert verschiedene Methoden (auch Verben genannt), die angeben, welche Aktion auf einer Ressource ausgeführt werden soll. Die Wahl der richtigen Methode ist besonders bei der Entwicklung von REST-APIs wichtig.
Die wichtigsten HTTP-Methoden
In der täglichen Webentwicklung wirst du hauptsächlich mit diesen Methoden arbeiten:
| Methode | Beschreibung | Idempotent | Body erlaubt |
|---|---|---|---|
| GET | Ruft eine Ressource ab | Ja | Nein |
| POST | Erstellt eine neue Ressource | Nein | Ja |
| PUT | Ersetzt eine Ressource vollständig | Ja | Ja |
| PATCH | Aktualisiert Teile einer Ressource | Nein | Ja |
| DELETE | Löscht eine Ressource | Ja | Optional |
| HEAD | Wie GET, aber nur Header | Ja | Nein |
| OPTIONS | Fragt unterstützte Methoden ab | Ja | Optional |
Idempotent bedeutet, dass mehrfaches Ausführen der gleichen Anfrage das gleiche Ergebnis liefert. GET, PUT und DELETE sind idempotent, POST hingegen nicht: Jeder POST kann eine neue Ressource erstellen.
HTTP-Statuscodes
Statuscodes sind dreistellige Zahlen, die den Ausgang einer HTTP-Anfrage anzeigen. Sie sind in fünf Klassen unterteilt, wobei die erste Ziffer die Kategorie bestimmt.
Statuscode-Kategorien
Die fünf Kategorien decken alle möglichen Antwortszenarien ab:
- 1xx (Informational): Anfrage erhalten, Verarbeitung läuft (z.B. 100 Continue)
- 2xx (Success): Anfrage erfolgreich verarbeitet (z.B. 200 OK, 201 Created)
- 3xx (Redirection): Weitere Aktion erforderlich (z.B. 301 Moved Permanently, 304 Not Modified)
- 4xx (Client Error): Fehler auf Client-Seite (z.B. 400 Bad Request, 404 Not Found, 403 Forbidden)
- 5xx (Server Error): Fehler auf Server-Seite (z.B. 500 Internal Server Error, 503 Service Unavailable)
Häufig verwendete Statuscodes
Diese Statuscodes wirst du in der Praxis am häufigsten antreffen:
| Code | Name | Bedeutung |
|---|---|---|
| 200 | OK | Anfrage erfolgreich |
| 201 | Created | Ressource erfolgreich erstellt |
| 204 | No Content | Erfolgreich, aber keine Daten im Body |
| 301 | Moved Permanently | Ressource dauerhaft verschoben |
| 304 | Not Modified | Gecachte Version ist aktuell |
| 400 | Bad Request | Fehlerhafte Anfrage |
| 401 | Unauthorized | Authentifizierung erforderlich |
| 403 | Forbidden | Zugriff verweigert |
| 404 | Not Found | Ressource nicht gefunden |
| 500 | Internal Server Error | Serverfehler |
| 503 | Service Unavailable | Server vorübergehend nicht verfügbar |
HTTP-Header
HTTP-Header transportieren Metadaten über die Anfrage oder Antwort. Sie bestehen aus Name-Wert-Paaren und steuern wichtige Aspekte wie Caching, Authentifizierung und Content-Verhandlung.
Wichtige Request-Header
Diese Header sendet der Client an den Server:
- Host: Ziel-Hostname (erforderlich in HTTP/1.1)
- User-Agent: Informationen über Client/Browser
- Accept: Gewünschte Inhaltstypen (z.B. text/html, application/json)
- Authorization: Authentifizierungsdaten
- Cookie: Gespeicherte Cookies
- Content-Type: MIME-Typ des Request-Body
Wichtige Response-Header
Diese Header sendet der Server zurück an den Client:
- Content-Type: MIME-Typ der Antwort
- Content-Length: Größe des Body in Bytes
- Cache-Control: Anweisungen für Caching
- Set-Cookie: Setzt Cookies im Browser
- Location: Weiterleitungs-URL (bei 3xx-Status)
- Server: Informationen über den Server
HTTPS und Sicherheit
HTTPS (HTTP Secure) ist die verschlüsselte Variante von HTTP. Sie kombiniert HTTP mit TLS (Transport Layer Security), um die Kommunikation zwischen Browser und Server zu schützen. HTTPS gewährleistet drei wichtige Sicherheitseigenschaften:
- Vertraulichkeit: Die übertragenen Daten sind verschlüsselt und können nicht mitgelesen werden
- Integrität: Manipulationen an den Daten werden erkannt
- Authentizität: Der Server beweist seine Identität durch ein Zertifikat
Seit 2018 markieren alle großen Browser HTTP-Seiten als "nicht sicher". HTTPS ist heute der Standard für alle Webseiten, nicht nur für Shops oder Banking-Anwendungen. Suchmaschinen wie Google bevorzugen HTTPS-Seiten im Ranking.
HTTP/2 und HTTP/3
Die neueren HTTP-Versionen bringen erhebliche Performanceverbesserungen gegenüber HTTP/1.1. Während HTTP/1.1 immer noch weit verbreitet ist, setzen moderne Webseiten zunehmend auf HTTP/2 und HTTP/3.
Neuerungen in HTTP/2
HTTP/2 wurde 2015 veröffentlicht und adressiert viele Schwächen von HTTP/1.1. Es basiert auf dem SPDY-Protokoll von Google und bringt folgende Verbesserungen:
- Binäres Protokoll: Effizienter als das textbasierte HTTP/1.1
- Multiplexing: Mehrere Anfragen über eine einzige Verbindung gleichzeitig
- Header-Kompression: HPACK reduziert den Overhead durch Header
- Server Push: Server kann Ressourcen proaktiv senden
- Stream-Priorisierung: Wichtige Ressourcen werden bevorzugt geladen
Neuerungen in HTTP/3
HTTP/3 nutzt QUIC (Quick UDP Internet Connections) statt TCP als Transportprotokoll. QUIC wurde ursprünglich von Google entwickelt und bietet besonders bei instabilen Verbindungen Vorteile:
- Schnellerer Verbindungsaufbau: 0-RTT bei bekannten Servern möglich
- Bessere Performance bei Paketverlust: Kein Head-of-Line-Blocking
- Integrierte Verschlüsselung: TLS 1.3 ist fester Bestandteil
- Connection Migration: Verbindung bleibt bei IP-Wechsel erhalten (z.B. WLAN zu Mobilfunk)
HTTP in der Praxis
HTTP ist die Grundlage für nahezu alle Webanwendungen. Ob du eine Webseite aufrufst, eine mobile App nutzt oder eine API abfragst, fast immer kommunizierst du über HTTP.
HTTP-Anfragen testen
Für die Entwicklung und das Debugging von HTTP-Kommunikation gibt es verschiedene hilfreiche Werkzeuge:
# Mit curl eine GET-Anfrage senden
curl -v https://example.com/api/users
# POST-Anfrage mit JSON-Daten
curl -X POST https://example.com/api/users \
-H "Content-Type: application/json" \
-d '{"name": "Max Mustermann", "email": "max@example.de"}'
# Nur Header abrufen
curl -I https://example.com
Die Browser-Entwicklertools (F12) zeigen alle HTTP-Anfragen und -Antworten im Network-Tab. Tools wie Postman oder Wireshark ermöglichen detaillierte Analysen des HTTP-Verkehrs.
Typische Einsatzgebiete
HTTP wird in verschiedenen Bereichen eingesetzt:
- Webseiten: Browser laden HTML, CSS, JavaScript und Medien über HTTP
- REST-APIs: Die meisten Web-APIs kommunizieren über HTTP/HTTPS
- Microservices: Services in verteilten Systemen nutzen oft HTTP für die interne Kommunikation
- Webhooks: Server-zu-Server-Benachrichtigungen über HTTP-Callbacks
- File Downloads: Große Dateien werden häufig über HTTP verteilt
HTTP in der IT-Ausbildung
Das Verständnis von HTTP gehört zu den Grundkenntnissen jedes IT-Fachmanns. Ob du Webseiten entwickelst, Server administrierst oder Netzwerke analysierst, du wirst immer wieder mit HTTP in Berührung kommen.
Als Fachinformatiker für Anwendungsentwicklung arbeitest du täglich mit HTTP. Du entwickelst Web-Anwendungen und APIs, implementierst Formulare mit POST-Requests und optimierst die Performance durch korrektes Caching. Das Verständnis von Statuscodes hilft dir beim Debugging.
Als Fachinformatiker für Systemintegration konfigurierst du Webserver wie Apache oder nginx, richtest Reverse Proxies ein und analysierst HTTP-Verkehr bei Problemen. Kenntnisse über HTTPS sind wichtig für die Absicherung von Webdiensten mit TLS-Zertifikaten.
Quellen und weiterführende Links
- RFC 9110 - HTTP Semantics - Aktuelle HTTP-Spezifikation
- RFC 9114 - HTTP/3 - HTTP/3 Spezifikation
- MDN Web Docs: HTTP - Umfassende HTTP-Dokumentation
- HTTP/2 Explained - Ausführliche HTTP/2-Erklärung
- W3C - Tim Berners-Lee - Erfinder des World Wide Web