HTTP: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 8: Zeile 8:
 
* HTTP ist ein zustandsloses Protokoll – jede Anfrage wird unabhängig behandelt.
 
* HTTP ist ein zustandsloses Protokoll – jede Anfrage wird unabhängig behandelt.
 
* Die Kommunikation erfolgt zwischen:
 
* Die Kommunikation erfolgt zwischen:
  * ''Client'' – Stellt eine Anfrage (z. B. ein Webbrowser oder API-Client).
+
** ''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).
+
** ''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.
+
** ''Proxy'' – Vermittelt Anfragen, kann als Caching-Server oder Sicherheitsfilter fungieren.
  
 
== HTTP-Methoden ==
 
== HTTP-Methoden ==
 
* HTTP definiert verschiedene Methoden zur Interaktion mit Ressourcen.
 
* HTTP definiert verschiedene Methoden zur Interaktion mit Ressourcen.
 
* Wichtige Methoden:
 
* Wichtige Methoden:
  * '''GET''' – Ruft Daten von einem Server ab (z. B. eine Webseite oder API-Response).
+
** '''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).
+
** '''POST''' – Sendet Daten an den Server (z. B. ein ausgefülltes Formular).
  * '''PUT''' – Aktualisiert eine bestehende Ressource oder erstellt sie, falls nicht vorhanden.
+
** '''PUT''' – Aktualisiert eine bestehende Ressource oder erstellt sie, falls nicht vorhanden.
  * '''DELETE''' – Löscht eine Ressource.
+
** '''DELETE''' – Löscht eine Ressource.
  * '''HEAD''' – Ähnlich wie GET, aber ohne den Antwortkörper.
+
** '''HEAD''' – Ähnlich wie GET, aber ohne den Antwortkörper.
  * '''OPTIONS''' – Fragt ab, welche Methoden für eine Ressource verfügbar sind.
+
** '''OPTIONS''' – Fragt ab, welche Methoden für eine Ressource verfügbar sind.
  * '''PATCH''' – Aktualisiert Teile einer Ressource.
+
** '''PATCH''' – Aktualisiert Teile einer Ressource.
  
 
== Aufbau einer HTTP-Anfrage ==
 
== Aufbau einer HTTP-Anfrage ==
 
* Eine HTTP-Anfrage besteht aus:
 
* Eine HTTP-Anfrage besteht aus:
  * ''Request Line'' – Enthält die Methode, die URL und die HTTP-Version.
+
** ''Request Line'' – Enthält die Methode, die URL und die HTTP-Version.
  * ''Headers'' – Metadaten wie Benutzer-Agent, Cookie, Sprache und Content-Type.
+
** ''Headers'' – Metadaten wie Benutzer-Agent, Cookie, Sprache und Content-Type.
  * ''Body'' – (optional) Enthält Daten, meist bei POST- oder PUT-Anfragen.
+
** ''Body'' – (optional) Enthält Daten, meist bei POST- oder PUT-Anfragen.
  
 
* Beispiel für eine GET-Anfrage:
 
* Beispiel für eine GET-Anfrage:
Zeile 39: Zeile 39:
 
== Aufbau einer HTTP-Antwort ==
 
== Aufbau einer HTTP-Antwort ==
 
* Eine HTTP-Antwort besteht aus:
 
* Eine HTTP-Antwort besteht aus:
  * ''Status Line'' – Enthält die HTTP-Version, den Statuscode und eine Statusmeldung.
+
** ''Status Line'' – Enthält die HTTP-Version, den Statuscode und eine Statusmeldung.
  * ''Headers'' – Enthält Metadaten zur Antwort (z. B. Content-Type, Cache-Control).
+
** ''Headers'' – Enthält Metadaten zur Antwort (z. B. Content-Type, Cache-Control).
  * ''Body'' – Enthält die eigentlichen Inhalte (HTML, JSON, Bilder etc.).
+
** ''Body'' – Enthält die eigentlichen Inhalte (HTML, JSON, Bilder etc.).
  
 
* Beispiel für eine HTTP-Antwort:
 
* Beispiel für eine HTTP-Antwort:
Zeile 68: Zeile 68:
 
== Unterschiede zwischen HTTP/1.1, HTTP/2 und HTTP/3 ==
 
== Unterschiede zwischen HTTP/1.1, HTTP/2 und HTTP/3 ==
 
* HTTP/1.1:
 
* HTTP/1.1:
  * Einführung von Keep-Alive-Verbindungen zur Wiederverwendung.
+
** Einführung von Keep-Alive-Verbindungen zur Wiederverwendung.
  * Unterstützung von Chunked-Transfer-Encoding für große Dateien.
+
** Unterstützung von Chunked-Transfer-Encoding für große Dateien.
 
* HTTP/2:
 
* HTTP/2:
  * Multiplexing erlaubt mehrere Anfragen gleichzeitig über eine Verbindung.
+
** Multiplexing erlaubt mehrere Anfragen gleichzeitig über eine Verbindung.
  * Header-Kompression reduziert Overhead.
+
** Header-Kompression reduziert Overhead.
 
* HTTP/3:
 
* HTTP/3:
  * Basierend auf QUIC (UDP statt TCP), schneller bei schlechten Verbindungen.
+
** Basierend auf QUIC (UDP statt TCP), schneller bei schlechten Verbindungen.
  * Besseres Fehlerhandling und geringere Latenz.
+
** Besseres Fehlerhandling und geringere Latenz.
  
 
== Sicherheitsaspekte von HTTP ==
 
== Sicherheitsaspekte von HTTP ==
Zeile 81: Zeile 81:
 
* HTTPS (HTTP Secure) verschlüsselt die Kommunikation mit TLS.
 
* HTTPS (HTTP Secure) verschlüsselt die Kommunikation mit TLS.
 
* Risiken bei ungesichertem HTTP:
 
* Risiken bei ungesichertem HTTP:
  * Man-in-the-Middle-Angriffe (MITM)
+
** Man-in-the-Middle-Angriffe (MITM)
  * Session Hijacking
+
** Session Hijacking
  * Datenmanipulation
+
** Datenmanipulation
 
* Empfohlene Schutzmaßnahmen:
 
* Empfohlene Schutzmaßnahmen:
  * Nutzung von HTTPS mit gültigen Zertifikaten.
+
** Nutzung von HTTPS mit gültigen Zertifikaten.
  * HSTS (HTTP Strict Transport Security) aktivieren.
+
** HSTS (HTTP Strict Transport Security) aktivieren.
  * Sichere Cookies und CSP (Content Security Policy) einsetzen.
+
** Sichere Cookies und CSP (Content Security Policy) einsetzen.
  
 
== Aufgaben ==
 
== Aufgaben ==

Aktuelle Version vom 15. März 2025, 09:38 Uhr

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.