HTTP: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
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.