Zuletzt aktualisiert am 05.12.2025 8 Minuten Lesezeit

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