HTTP
HTTP steht fuer 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 taeglich, 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 fuer 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 fuer ein weltweites Informationssystem. Zusammen mit HTML und URLs bildete HTTP die technische Grundlage des Web.
Die wichtigsten Versionen
HTTP hat seit seiner Einfuehrung mehrere grosse 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): Einfuehrung 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 fuer 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 ermoeglicht die zustandslose Kommunikation, bei der jede Anfrage unabhaengig 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 fuer 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 enthaelt die Methode (GET), den Pfad (/lexikon/http) und die Protokollversion (HTTP/1.1). Die folgenden Zeilen sind Header, die zusaetzliche Informationen wie den Hostnamen und den Browser-Typ uebermitteln.
Aufbau einer HTTP-Antwort
Die Serverantwort enthaelt 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 ausgefuehrt werden soll. Die Wahl der richtigen Methode ist besonders bei der Entwicklung von REST-APIs wichtig.
Die wichtigsten HTTP-Methoden
In der taeglichen Webentwicklung wirst du hauptsaechlich 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 vollstaendig | Ja | Ja |
| PATCH | Aktualisiert Teile einer Ressource | Nein | Ja |
| DELETE | Loescht eine Ressource | Ja | Optional |
| HEAD | Wie GET, aber nur Header | Ja | Nein |
| OPTIONS | Fragt unterstuetzte Methoden ab | Ja | Optional |
Idempotent bedeutet, dass mehrfaches Ausfuehren 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 fuenf Klassen unterteilt, wobei die erste Ziffer die Kategorie bestimmt.
Statuscode-Kategorien
Die fuenf Kategorien decken alle moeglichen Antwortszenarien ab:
- 1xx (Informational): Anfrage erhalten, Verarbeitung laeuft (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)
Haeufig verwendete Statuscodes
Diese Statuscodes wirst du in der Praxis am haeufigsten 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 verfuegbar |
HTTP-Header
HTTP-Header transportieren Metadaten ueber 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 ueber Client/Browser
- Accept: Gewuenschte 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 zurueck an den Client:
- Content-Type: MIME-Typ der Antwort
- Content-Length: Groesse des Body in Bytes
- Cache-Control: Anweisungen fuer Caching
- Set-Cookie: Setzt Cookies im Browser
- Location: Weiterleitungs-URL (bei 3xx-Status)
- Server: Informationen ueber den Server
HTTPS und Sicherheit
HTTPS (HTTP Secure) ist die verschluesselte Variante von HTTP. Sie kombiniert HTTP mit TLS (Transport Layer Security), um die Kommunikation zwischen Browser und Server zu schuetzen. HTTPS gewaehrleistet drei wichtige Sicherheitseigenschaften:
- Vertraulichkeit: Die uebertragenen Daten sind verschluesselt und koennen nicht mitgelesen werden
- Integritaet: Manipulationen an den Daten werden erkannt
- Authentizitaet: Der Server beweist seine Identitaet durch ein Zertifikat
Seit 2018 markieren alle grossen Browser HTTP-Seiten als "nicht sicher". HTTPS ist heute der Standard fuer alle Webseiten, nicht nur fuer Shops oder Banking-Anwendungen. Suchmaschinen wie Google bevorzugen HTTPS-Seiten im Ranking.
HTTP/2 und HTTP/3
Die neueren HTTP-Versionen bringen erhebliche Performanceverbesserungen gegenueber HTTP/1.1. Waehrend 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 veroeffentlicht und adressiert viele Schwaechen von HTTP/1.1. Es basiert auf dem SPDY-Protokoll von Google und bringt folgende Verbesserungen:
- Binaeres Protokoll: Effizienter als das textbasierte HTTP/1.1
- Multiplexing: Mehrere Anfragen ueber 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 urspruenglich von Google entwickelt und bietet besonders bei instabilen Verbindungen Vorteile:
- Schnellerer Verbindungsaufbau: 0-RTT bei bekannten Servern moeglich
- Bessere Performance bei Paketverlust: Kein Head-of-Line-Blocking
- Integrierte Verschluesselung: 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 fuer nahezu alle Webanwendungen. Ob du eine Webseite aufrufst, eine mobile App nutzt oder eine API abfragst, fast immer kommunizierst du ueber HTTP.
HTTP-Anfragen testen
Fuer 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 ermoeglichen detaillierte Analysen des HTTP-Verkehrs.
Typische Einsatzgebiete
HTTP wird in verschiedenen Bereichen eingesetzt:
- Webseiten: Browser laden HTML, CSS, JavaScript und Medien ueber HTTP
- REST-APIs: Die meisten Web-APIs kommunizieren ueber HTTP/HTTPS
- Microservices: Services in verteilten Systemen nutzen oft HTTP fuer die interne Kommunikation
- Webhooks: Server-zu-Server-Benachrichtigungen ueber HTTP-Callbacks
- File Downloads: Grosse Dateien werden haeufig ueber HTTP verteilt
HTTP in der IT-Ausbildung
Das Verstaendnis von HTTP gehoert zu den Grundkenntnissen jedes IT-Fachmanns. Ob du Webseiten entwickelst, Server administrierst oder Netzwerke analysierst, du wirst immer wieder mit HTTP in Beruehrung kommen.
Als Fachinformatiker fuer Anwendungsentwicklung arbeitest du taeglich mit HTTP. Du entwickelst Web-Anwendungen und APIs, implementierst Formulare mit POST-Requests und optimierst die Performance durch korrektes Caching. Das Verstaendnis von Statuscodes hilft dir beim Debugging.
Als Fachinformatiker fuer Systemintegration konfigurierst du Webserver wie Apache oder nginx, richtest Reverse Proxies ein und analysierst HTTP-Verkehr bei Problemen. Kenntnisse ueber HTTPS sind wichtig fuer die Absicherung von Webdiensten mit TLS-Zertifikaten.
Quellen und weiterfuehrende 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 - Ausfuehrliche HTTP/2-Erklaerung
- W3C - Tim Berners-Lee - Erfinder des World Wide Web