HTTP

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Einführung in HTTP

  • Das Hypertext Transfer Protocol (HTTP) ist das grundlegende Kommunikationsprotokoll des World Wide Web.
  • Es definiert, wie Clients (z. B. Webbrowser) mit Servern kommunizieren.
  • HTTP basiert auf einem Anfrage-Antwort-Modell.
  • Die aktuelle Version ist HTTP/2, mit HTTP/3 als aufstrebendem Standard.

Architektur von HTTP

  • HTTP ist ein zustandsloses Protokoll – jede Anfrage wird unabhängig behandelt.
  • Die Kommunikation erfolgt zwischen:
 * Client – Stellt eine Anfrage (z. B. ein Webbrowser oder API-Client).
 * Server – Verarbeitet die Anfrage und liefert eine Antwort (z. B. ein Webserver wie Apache oder Nginx).
 * Proxy – Vermittelt Anfragen, kann als Caching-Server oder Sicherheitsfilter fungieren.

HTTP-Methoden

  • HTTP definiert verschiedene Methoden zur Interaktion mit Ressourcen.
  • Wichtige Methoden:
 * GET – Ruft Daten von einem Server ab (z. B. eine Webseite oder API-Response).
 * POST – Sendet Daten an den Server (z. B. ein ausgefülltes Formular).
 * PUT – Aktualisiert eine bestehende Ressource oder erstellt sie, falls nicht vorhanden.
 * DELETE – Löscht eine Ressource.
 * HEAD – Ähnlich wie GET, aber ohne den Antwortkörper.
 * OPTIONS – Fragt ab, welche Methoden für eine Ressource verfügbar sind.
 * PATCH – Aktualisiert Teile einer Ressource.

Aufbau einer HTTP-Anfrage

  • Eine HTTP-Anfrage besteht aus:
 * Request Line – Enthält die Methode, die URL und die HTTP-Version.
 * Headers – Metadaten wie Benutzer-Agent, Cookie, Sprache und Content-Type.
 * Body – (optional) Enthält Daten, meist bei POST- oder PUT-Anfragen.
  • Beispiel für eine GET-Anfrage:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

Aufbau einer HTTP-Antwort

  • Eine HTTP-Antwort besteht aus:
 * Status Line – Enthält die HTTP-Version, den Statuscode und eine Statusmeldung.
 * Headers – Enthält Metadaten zur Antwort (z. B. Content-Type, Cache-Control).
 * Body – Enthält die eigentlichen Inhalte (HTML, JSON, Bilder etc.).
  • Beispiel für eine HTTP-Antwort:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024

<html>
  <body>
    <h1>Willkommen!</h1>
  </body>
</html>

HTTP-Statuscodes

  • Statuscodes geben den Zustand der Anfrage an.
  • Häufige Statuscodes:
 * 200 OK – Anfrage erfolgreich verarbeitet.
 * 301 Moved Permanently – Ressource wurde dauerhaft verschoben.
 * 400 Bad Request – Fehlerhafte Anfrage vom Client.
 * 403 Forbidden – Zugriff verweigert.
 * 404 Not Found – Ressource nicht gefunden.
 * 500 Internal Server Error – Allgemeiner Serverfehler.

Unterschiede zwischen HTTP/1.1, HTTP/2 und HTTP/3

  • HTTP/1.1:
 * Einführung von Keep-Alive-Verbindungen zur Wiederverwendung.
 * Unterstützung von Chunked-Transfer-Encoding für große Dateien.
  • HTTP/2:
 * Multiplexing erlaubt mehrere Anfragen gleichzeitig über eine Verbindung.
 * Header-Kompression reduziert Overhead.
  • HTTP/3:
 * Basierend auf QUIC (UDP statt TCP), schneller bei schlechten Verbindungen.
 * Besseres Fehlerhandling und geringere Latenz.

Sicherheitsaspekte von HTTP

  • HTTP ist unverschlüsselt – Inhalte können abgefangen werden.
  • HTTPS (HTTP Secure) verschlüsselt die Kommunikation mit TLS.
  • Risiken bei ungesichertem HTTP:
 * Man-in-the-Middle-Angriffe (MITM)
 * Session Hijacking
 * Datenmanipulation
  • Empfohlene Schutzmaßnahmen:
 * Nutzung von HTTPS mit gültigen Zertifikaten.
 * HSTS (HTTP Strict Transport Security) aktivieren.
 * Sichere Cookies und CSP (Content Security Policy) einsetzen.

Aufgaben

  • Erstelle eine einfache HTTP-Anfrage mit cURL und analysiere die Antwort.
  • Teste verschiedene HTTP-Methoden mit einer API.
  • Vergleiche die Performance zwischen HTTP/1.1 und HTTP/2 mit einem Webserver.

Warum ist HTTP wichtig?

  • Grundlage für die Kommunikation im Web.
  • Verständnis notwendig für Webentwicklung, API-Design und Security.
  • Stetige Weiterentwicklung für bessere Performance und Sicherheit.