HTTP
Version vom 15. März 2025, 09:36 Uhr von Thomas.will (Diskussion | Beiträge)
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.