HTTP-Tutorial


HTTP (HyperText Transfer Protocol) ist ein Protokoll der Anwendungsschicht, das für verteilte, kollaborative Hypermedia-Informationssysteme verwendet wird.

HTTP ist die Grundlage der Datenkommunikation für das World Wide Web (WWW). Es wurde entwickelt, um die Kommunikation zwischen Clients und Servern zu gewährleisten, und ist eines der am häufigsten verwendeten Protokolle im Internet.

HTTP ist ein Protokoll, das Daten (HTML-Dateien, Bilddateien, Abfrageergebnisse usw.) basierend auf dem TCP/IP-Kommunikationsprotokoll überträgt.

Der ursprüngliche Zweck der Entwicklung von HTTP war, eine Methode zum Veröffentlichen und Empfangen von HTML-Seiten bereitzustellen. Über HTTP- oder HTTPS-Protokolle angeforderte Ressourcen werden durch Uniform Resource Identifiers (URIs) identifiziert.


HTTP-Anfrage-Antwort

Das grundlegende Funktionsprinzip von HTTP besteht darin, dass der Client (normalerweise ein Webbrowser) eine Anfrage an den Server sendet und der Server nach Erhalt der Anfrage die entsprechenden Ressourcen zurückgibt. Diese Ressourcen können Webseiten, Bilder, Audiodateien, Videos usw. sein.

HTTP verwendet ein Client-Server-Modell, bei dem der Client Anfragen sendet und der Server Antworten zurückgibt.

Das HTTP-Anfrage-Antwort-Modell besteht typischerweise aus den folgenden Schritten:

  • Verbindung herstellenZwischen dem Client und dem Server wird eine Verbindung hergestellt. In traditionellem HTTP basiert diese auf dem TCP/IP-Protokoll. Neuere HTTP/2 und HTTP/3 verwenden fortgeschrittenere Transportschichtprotokolle, wie das TCP-basierte Binärprotokoll (HTTP/2) oder das UDP-basierte QUIC-Protokoll (HTTP/3).

  • Anfrage sendenDer Client sendet eine Anfrage an den Server. Die Anfrage enthält die URL der Ressource, auf die zugegriffen werden soll, die Anfragemethode (GET, POST, PUT, DELETE usw.), Anfrage-Header (z. B. Accept, User-Agent) und einen optionalen Anfrage-Body (für POST- oder PUT-Anfragen).

  • Anfrage verarbeitenNach dem Empfang der Anfrage findet der Server anhand der Informationen in der Anfrage die entsprechende Ressource und führt die geeigneten Verarbeitungsoperationen aus. Dies kann das Abrufen von Daten aus einer Datenbank, das Generieren dynamischer Inhalte oder einfach das Zurückgeben statischer Dateien umfassen.

  • Antwort sendenDer Server kapselt das verarbeitete Ergebnis in einer Antwort und sendet sie an den Client zurück. Die Antwort enthält einen Statuscode (um den Erfolg oder Misserfolg der Anfrage anzugeben), Antwort-Header (z. B. Content-Type, Content-Length) und einen optionalen Antwort-Body (z. B. HTML-Seiten, Bilddaten).

  • Verbindung schließenNach Abschluss des Anfrage-Antwort-Zyklus kann die Verbindung zwischen dem Client und dem Server geschlossen werden, es sei denn, es wird eine persistente Verbindung verwendet (wie keep-alive in HTTP/1.1).


HTTP-Methoden

HTTP-Methoden legen fest, welche Aktionen der Client an Ressourcen auf dem Server ausführen kann.

Die wichtigsten HTTP-Methoden sind:

  • GETGET: Fordert die angegebene Ressource vom Server an. Dies ist die am häufigsten verwendete Methode für den Zugriff auf Seiten.
  • POSTPOST: Fordert den Server auf, die Daten im Anfrage-Body zu akzeptieren und zu verarbeiten; wird normalerweise für die Übermittlung von Formularen verwendet.
  • PUTPUT: Fordert den Server auf, eine Ressource zu speichern und den gesamten Inhalt der Zielressource durch den Inhalt im Anfrage-Body zu ersetzen.
  • DELETEDELETE: Fordert den Server auf, die angegebene Ressource zu löschen.
  • HEADHEAD: Ähnlich wie GET, ruft jedoch nicht den Inhalt der Ressource ab, sondern nur die Antwort-Header-Informationen.

HTTP-Statuscodes

HTTP-Statuscodes sind die Antwort des Servers auf Anfragen von Clients.

Statuscodes werden in fünf Kategorien unterteilt:

  • 1xx (Informationsstatuscodes)Zeigt an, dass die empfangene Anfrage verarbeitet wird.
  • 2xx (Erfolgsstatuscodes)Zeigt an, dass die Anfrage erfolgreich verarbeitet wurde.
  • 3xx (Weiterleitungsstatuscodes)Es ist eine weitere Aktion erforderlich, um die Anfrage abzuschließen.
  • 4xx (Client-Fehlerstatuscodes)Zeigt an, dass die Anfrage einen Syntaxfehler enthält oder nicht erfüllt werden kann.
  • 5xx (Server-Fehlerstatuscodes)Beim Verarbeiten der Anfrage ist auf dem Server ein Fehler aufgetreten.

HTTP-Versionen

HTTP hat mehrere Versionen. Derzeit sind HTTP/1.1 und HTTP/2 weit verbreitet, und HTTP/3 wird allmählich vorangetrieben.

  • HTTP/1.1HTTP/1.1: Unterstützt persistente Verbindungen, wodurch mehrere Anfragen/Antworten über dieselbe TCP-Verbindung übertragen werden können, was den Aufwand für das Herstellen und Schließen von Verbindungen reduziert.
  • HTTP/2HTTP/2: Basierend auf binärem Framing, unterstützt Multiplexing, wodurch mehrere unabhängige, bidirektionale Austausche gleichzeitig über eine einzige HTTP/2-Verbindung initiiert werden können.
  • HTTP/3HTTP/3: Basierend auf dem QUIC-Protokoll, um Netzwerklatenz zu reduzieren und Übertragungsgeschwindigkeit sowie Sicherheit zu verbessern.

Sicherheit


HTTP selbst ist unsicher, da die übertragenen Daten nicht verschlüsselt sind und abgehört oder manipuliert werden können. Um dieses Problem zu lösen, wurde HTTPS eingeführt (ausführlich im nächsten Kapitel), das SSL/TLS-Protokolle zu HTTP hinzufügt und Verschlüsselung sowie Authentifizierung für die Datenübertragung bietet.

Andere Erweiterungen