It’s #FrontendFriday – Was ist HTTP?

24.01.2020

Es ist soweit, es ist Freitag – It’s #FrontendFriday :)

Im heutigem Blog geht es um das Thema „Was ist HTTP?“.

Was ist HTTP?

Das Hypertext Transfer Protocol (HTTP, englisch für Hypertext-Übertragungsprotokoll) ist ein zustandsloses Protokoll zur Übertragung von Daten auf der Anwendungsschicht über ein Rechnernetz. Es wird hauptsächlich eingesetzt, um Webseiten (Hypertext-Dokumente) aus dem World Wide Web (WWW) in einen Webbrowser zu laden. Es ist jedoch nicht prinzipiell darauf beschränkt und auch als allgemeines Dateiübertragungsprotokoll sehr verbreitet.

Mit Hypertext Transfer Protocol (HTTP) kommen die Nutzer eines Webbrowsers immer dann in Berührung, wenn sie die Webseiten eines entfernten Servers laden.
Das 2014 von der Internet Engineering Task Force (IETF) veröffentlichte RFC 7231 charakterisiert HTTP derweil allgemeiner als zustandsloses Protokoll, das auf Anwendungsebene angesiedelt ist und sich für verteilte, kollaborative Hypertextinformationssysteme eignet.

Wie funktioniert HTTP?

HTTP definiert für die Kommunikation zwischen Clients und Servern zweierlei Arten von Nachrichten – hierbei handelt es sich entweder um eine Anfrage (Request) oder eine Antwort (Response).

Wenn in einem Webbrowser die URL http://www.example.net/infotext.html aufgerufen wird, so wird an den Hostnamen www.example.net die Anfrage gestellt, die Ressource /infotext.html zurückzusenden.

Der Name www.example.net wird dabei zuerst über das DNS-Protokoll in eine IP-Adresse umgesetzt. Zur Übertragung wird über TCP auf den Standard-Port 80 des HTTP-Servers eine HTTP-GET-Anforderung gesendet.

HTTP

Welche HTTP-Anfragemethoden gibt es?

GET
Ist die gebräuchlichste Methode. Mit ihr wird eine Ressource (zum Beispiel eine Datei) unter Angabe eines URI vom Server angefordert. Als Argumente in dem URI können auch Inhalte zum Server übertragen werden, allerdings soll laut Standard eine GET-Anfrage nur Daten abrufen und sonst keine Auswirkungen haben (wie Datenänderungen auf dem Server oder ausloggen).

POST
Schickt unbegrenzte, je nach physischer Ausstattung des eingesetzten Servers, Mengen an Daten zur weiteren Verarbeitung zum Server, diese werden als Inhalt der Nachricht übertragen und können beispielsweise aus Name-Wert-Paaren bestehen, die aus einem HTML-Formular stammen. Es können so neue Ressourcen auf dem Server entstehen oder bestehende modifiziert werden. POST-Daten werden im Allgemeinen nicht von Caches zwischengespeichert. Zusätzlich können bei dieser Art der Übermittlung auch Daten wie in der GET-Methode an den URI gehängt werden.

HEAD

Weist den Server an, die gleichen HTTP-Header wie bei GET, nicht jedoch den Nachrichtenrumpf mit dem eigentlichen Dokumentinhalt zu senden. So kann zum Beispiel schnell die Gültigkeit einer Datei im Browser-Cache geprüft werden.

PUT

Dient dazu, eine Ressource (zum Beispiel eine Datei) unter Angabe des Ziel-URIs auf einen Webserver hochzuladen. Besteht unter der angegebenen Ziel-URI bereits eine Ressource, wird diese ersetzt, ansonsten neu erstellt.

PATCH

Ändert ein bestehendes Dokument ohne dieses wie bei PUT vollständig zu ersetzen. Wurde durch RFC 5789 spezifiziert.

DELETE

Löscht die angegebene Ressource auf dem Server.

TRACE

liefert die Anfrage so zurück, wie der Server sie empfangen hat. So kann überprüft werden, ob und wie die Anfrage auf dem Weg zum Server verändert worden ist – sinnvoll für das Debugging von Verbindungen.

OPTIONS

Liefert eine Liste der vom Server unterstützten Methoden und Merkmale.

CONNECT

Wird von Proxyservern implementiert, die in der Lage sind, SSL-Tunnel zur Verfügung zu stellen.

Was ist der Unterschied zwischen HTTP/1.1 und HTTP/2?

2015 veröffentlicht die Internet Engineering Task Force (IETF) HTTP/2, die zweite Hauptversion des nützlichsten Internetprotokolls, HTTP. Es wurde von dem früheren experimentellen SPDY-Protokoll abgeleitet.

Hauptziele der Entwicklung von HTTP/2 waren:

  • Protokollverhandlungsmechanismus – Protokollauswahl, z.B. HTTP/1.1, HTTP/2 oder andere.
  • Hohe Kompatibilität mit HTTP/1.1 – Methoden, Statuscodes, URIs und Header-Felder.

Verbesserungen der Seitenladegeschwindigkeit:

  • Komprimierung von Anfrage-Headern
  • Binäres Protokoll
  • HTTP/2-Server-Push
  • Anforderung von Multiplexing über eine einzelne TCP-Verbindung
  • Anfrage für Pipelining
  • HOL-Blockierung (Head-of-Line) – Paket-Blockierung

Antrag auf Multiplexing

HTTP/2 kann mehrere Datenanforderungen parallel über eine einzige TCP-Verbindung senden. Dies ist die fortschrittlichste Funktion des HTTP/2-Protokolls, da es Ihnen ermöglicht, Webdateien asynchron von einem Server herunterzuladen. Die meisten modernen Browser beschränken TCP-Verbindungen auf einen Server.

Header-Komprimierung

HTTP/2 komprimiert eine große Anzahl von redundanten Header-Frames. Es verwendet die HPACK-Spezifikation als einfachen und sicheren Ansatz zur Header-Komprimierung. Sowohl Client als auch Server führen eine Liste von Headern, die in früheren Client-Server-Anforderungen verwendet wurden.
HPACK komprimiert den individuellen Wert jedes Headers, bevor er an den Server übertragen wird, der dann die kodierten Informationen in einer Liste zuvor übertragener Header-Werte nachschlägt, um die vollständigen Header-Informationen zu rekonstruieren.

Browser-Kompatibilität

Die meisten modernen Browser unterstützen das HTTP/2-Protokoll vollständig:

Quelle: https://caniuse.com/#feat=http2

 

Ich hoffe ich konnte euch mit diesem Blogpost einen Einblick in das Thema „Was ist HTTP?“ geben.

Wir wünschen euch ein schönes Wochenende :)

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*