HTTP ist die Abkürzung für Hypertext Transfer Protocol. Es ist ein Protokoll zur Datenübertragung in Netzwerken und wird meistens eingesetzt, um Daten von Websites aus dem World Wide Web von einem Server zu einem Browser zu übertragen. Neben HTTP gibt es noch weitere Protokolle zur Datenübertragung. Ein Protokoll enthält einen Satz von Regeln und Formaten, die das Verhalten der miteinander kommunizierenden Instanzen der verbundenen Computer bestimmen. Da oft mehrere Protokolle zur Datenübertragung erforderlich sind, werden die einzelnen Protokolle in verschiedenen Schichten organisiert.
HTTP zählt zur Anwendungsschicht der etablierten Netzwerkprotokolle. Diese wird von einem Anwenderprogramm angesprochen, also meist einem Webbrowser. Im OSI-Schichtenmodell ist HTTP der siebten Schicht zugeordnet. Ursprünglich diente HTTP [Hypertext Transfer Protocol] der Übertragung von Hypertext. Durch die Erweiterung der Anfragemethoden konnten aber zunehmend beliebige Daten übertragen werden. HTTP/1.1 und HTTP/2 verwenden dafür üblicherweise TCP als zuverlässiges Transportprotokoll. HTTP/3 nutzt dagegen QUIC auf Basis von UDP und stellt Zuverlässigkeit innerhalb von QUIC bereit.
Aufbau des Protokolls
Ein Protokoll enthält wichtige Informationen über den Aufbau und die Verarbeitung übertragener Daten. Bei HTTP gehören dazu beispielsweise die angeforderte Ressource, die verwendete Methode, der Inhaltstyp und die Länge des Nachrichteninhalts. Angaben zu Netzwerkadressen, Datenpaketen und Prüfsummen stammen dagegen aus tieferen Netzwerk- und Transportschichten. Die verschiedenen Protokollschichten wirken zusammen, damit Nutzdaten wie HTML, Texte und Bilder vollständig beim Empfänger ankommen.
Eine Kommunikationseinheit in HTTP [Hypertext Transfer Protocol] zwischen einem Server und einem Rechner, der diese anfordert (Client), wird als Nachricht (Message) bezeichnet. Es gibt zwei unterschiedliche Nachrichten. Die Anfrage an einen Server wird Request genannt. Die Antwort oder Reaktion des Servers heißt Response.
Jede Nachricht besteht aus einem Nachrichtenkopf und gegebenenfalls einem Nachrichtenkörper: Der Message Header enthält Metainformationen zum Message Body. Hier können Informationen über Codierung, Inhaltstyp, Kompression, Zwischenspeicherung und weitere Eigenschaften enthalten sein, die dafür sorgen, dass die Nutzdaten korrekt verarbeitet und ausgegeben werden. Nicht jede Anfrage oder Antwort benötigt einen Body.
Beispiel: Eine vereinfachte HTTP/1.1-Anfrage für eine HTML-Seite besteht aus Startzeile und Headern:1
GET /ratgeber/ HTTP/1.1
Host: example.com
Accept: text/html
Die erste Zeile nennt Methode, Pfad und Protokollversion. Host benennt den angesprochenen Server, Accept den gewünschten Inhaltstyp. Eine Leerzeile beendet den Headerbereich; diese GET-Anfrage enthält keinen Nachrichtenkörper.
Funktionsweise
Eine Anfrage an einen Server wird durch die Eingabe einer URL in die Adresszeile eines Browsers oder durch das Anklicken eines Links gestartet. Die Anfrage http://www.beispiel.de/info.html fordert den Server mit dem Hostnamen beispiel.de dazu auf, die Ressource info.html zurückzusenden. Der Hostname wird über das DNS-Protokoll in eine IP-Adresse aufgelöst. Anschließend sendet der Client eine HTTP-Anforderung an den zuständigen Server. Wird in einer HTTP-URL kein Port angegeben, ist Port 80 der Standard; für HTTPS ist Port 443 üblich.
Falls eine URL Zeichen enthält, die nicht unmittelbar übertragen werden können, werden diese prozentcodiert. Auch zusätzliche Angaben über den Browser, akzeptierte Inhaltstypen und die gewünschte Sprache können im Header einer solchen Anfrage übertragen werden. Sobald die Anfrage gesendet wurde, liefert der Server die HTTP-Antwort zurück. Diese besteht aus einer Statuszeile, den Header-Informationen des Servers, einer Leerzeile und gegebenenfalls dem Inhalt der angeforderten Ressource. Übertragen werden beispielsweise Dokumente in HTML, XHTML oder XML sowie ergänzende Ressourcen wie Stylesheets und Skripte wie JavaScript. Diese beeinflussen das Erscheinungsbild und das Verhalten der Seite. Im Prinzip kann aber jede Datei in einem geeigneten Format übertragen werden. Inhalte können zudem aus Datenbanken stammen und durch Skriptsprachen wie PHP oder JSP dynamisch generiert werden.
HTTPS verändert die grundlegende Funktionsweise von HTTP nicht, schützt die Verbindung aber zusätzlich durch TLS. Dadurch werden übertragene Inhalte verschlüsselt, die Identität des angesprochenen Servers kann anhand seines Zertifikats geprüft werden und Manipulationen während der Übertragung lassen sich erkennen. Ohne HTTPS können sensible Daten und Anmeldedaten auf dem Übertragungsweg unzureichend geschützt sein.
HTTP-Request-Methoden
Für eine Anfrage stehen dem Client verschiedene Methoden zur Verfügung, um Daten anzufordern, zu übertragen oder die Verarbeitung einer Ressource zu steuern.
- Bei der GET-Methode werden Daten unter Angabe einer URI von einem Server angefordert. Dabei können auch sogenannte Argumente als Abfrageparameter übertragen werden. Praktische Längenbeschränkungen für URLs hängen von Browsern, Servern und zwischengeschalteten Systemen ab; eine allgemeine Grenze von 255 Byte gilt nicht.
- Mit der POST-Methode werden Daten zur Weiterverarbeitung an den Server geschickt. Diese Methode wird beispielsweise zur Übertragung und Verarbeitung von Formulardaten eingesetzt. Die Daten befinden sich üblicherweise im Nachrichtenkörper. Mögliche Größenbeschränkungen werden durch Server, Anwendung oder Infrastruktur bestimmt.
- Um Metadaten oder die Erreichbarkeit einer Ressource zu prüfen, bietet sich die HEAD-Methode an. Hier wird im Gegensatz zur GET-Methode nur der Header angefordert, nicht der eigentliche Dokumenteninhalt.
- Mit der PUT-Methode lässt sich eine Ressource unter Angabe der Ziel-URL erstellen oder vollständig ersetzen, sofern der Server diese Methode für den jeweiligen Endpunkt zulässt.
- Mit der DELETE-Methode lässt sich die angegebene Ressource auf einem Server löschen. Ob dies tatsächlich geschieht, hängt von der Anwendung, den Zugriffsrechten und der Serverkonfiguration ab.
- Die TRACE-Methode liefert die Anfrage so zurück, wie sie vom Server empfangen wurde, was bei der Fehleranalyse von Bedeutung sein kann. Viele Server deaktivieren sie aus Sicherheitsgründen.
- Die Methode OPTIONS kann Auskunft über die für eine Ressource unterstützten Kommunikationsoptionen und Methoden geben.
Die Methoden GET und POST werden besonders häufig in Zusammenhang mit HTTP verwendet. Während die GET-Methode eine Ressource anhand ihrer URI anfordert, übermittelt POST Daten im Nachrichtenkörper zur Verarbeitung. Die Wahl der Methode beschreibt die beabsichtigte Aktion; sie ist nicht allein von der übertragenen Datenmenge abhängig.
Statuscodes
Jede HTTP-Antwort eines Servers enthält einen Statuscode. Dieser liefert Informationen über den Erfolg einer Anfrage, über die Art eines Fehlers, eine Umleitung oder die Notwendigkeit, sich für den Zugriff auf eine bestimmte Ressource zu authentifizieren. Statuscodes bestehen aus drei Ziffern und sind in fünf Klassen eingeteilt. Sie helfen Browsern, Suchmaschinen-Crawlern und anderen Clients dabei, die Antwort korrekt zu verarbeiten.
Aufstellung der Statuscodes:
- Die Ziffernfolge 1xx kennzeichnet vorläufige Informationen zum Bearbeitungsstand.
- Die Ziffernfolge 2xx betrifft erfolgreiche Operationen, beispielsweise 200 für eine erfolgreiche Antwort.
- Die Ziffernfolge 3xx betrifft Umleitungen und weitere Schritte, die der Client ausführen muss.
- Die Ziffernfolge 4xx bezieht sich auf Fehler auf der Client-Seite, beispielsweise eine nicht gefundene Ressource mit Status 404.
- Die Ziffernfolge 5xx bezieht sich auf Fehler bei der Verarbeitung durch den Server.
Für die Google-Optimierung ist nicht nur der sichtbare Seiteninhalt relevant. Auch HTTP-Statuscodes müssen zur tatsächlichen Situation passen: Dauerhafte Weiterleitungen sollten einen geeigneten 3xx-Code liefern, erreichbare Seiten normalerweise einen erfolgreichen 2xx-Code und dauerhaft entfernte Inhalte einen passenden 4xx-Code. Fehlerhafte Statuscodes können Crawling, Indexierung und die Weiterleitung von Signalen beeinträchtigen.
Andere Funktionen: Anmeldung
Über HTTP lassen sich nicht nur Daten anfordern oder übertragen. Das Protokoll unterstützt auch verschiedene Verfahren zur Authentifizierung. Wenn der Server feststellt, dass für die gewünschte Ressource Anmeldedaten nötig sind, kann er den Statuscode 401 und einen passenden WWW-Authenticate-Header zurückgeben. Der Client kann daraufhin Anmeldedaten anfordern und mit einer weiteren Anfrage übermitteln.
Die Basic Authentication verwendet Benutzername und Passwort, bietet allein aber keinen kryptografischen Schutz für die übertragenen Zugangsdaten. Sie sollte deshalb nur in Verbindung mit HTTPS eingesetzt werden. Bei der Digest Access Authentication verarbeitet der Client unter anderem eine vom Server übermittelte Zeichenfolge und berechnet daraus einen Hashwert. Auch dieses ältere Verfahren ersetzt HTTPS nicht und schützt insbesondere nicht den gesamten Nachrichteninhalt. Moderne Anwendungen können abhängig vom Einsatzzweck weitere Authentifizierungsverfahren verwenden.
Datenkompression
HTTP bietet auch Möglichkeiten der Datenkompression an. Ein Client teilt bei der Anfrage mit, welche Kompressionsverfahren er verarbeiten kann. Daraufhin kann der Server die Antwort mit einem unterstützten Verfahren komprimieren und kennzeichnet dies im Header. Besonders Textinformationen wie HTML, CSS und JavaScript lassen sich so deutlich verkleinern. Bilder, Audio- und Videodateien sind häufig bereits mit formatspezifischen Verfahren komprimiert, sodass eine zusätzliche HTTP-Kompression dort meist wenig Nutzen bringt und zusätzlichen Rechenaufwand verursachen kann.
Zusammenfassung
HTTP steht für Hypertext Transfer Protocol und ist ein Protokoll für die Übertragung von Daten zwischen Clients und Servern im Internet. Es gehört zur Anwendungsschicht des Netzwerk-Schichtenmodells und ermöglicht den Austausch verschiedener Datentypen, nicht nur von Hypertext. HTTP/1.1 und HTTP/2 verwenden üblicherweise TCP, während HTTP/3 auf QUIC über UDP basiert.
Die Kommunikation in HTTP geschieht durch Nachrichten, die als Anfrage (Request) und Antwort (Response) ausgetauscht werden. Diese Nachrichten enthalten Header und gegebenenfalls einen Body, welche Metainformationen und die eigentlichen Nutzdaten beinhalten. Der Prozess beginnt beispielsweise, wenn der Nutzer eine URL im Browser eingibt oder auf einen Link klickt, woraufhin ein HTTP-Request an den zugehörigen Server gesendet wird.
HTTP bietet verschiedene Methoden für die Datenübertragung an. Die am häufigsten verwendeten sind GET für das Anfordern von Daten und POST für das Senden von Daten an einen Server. Methoden wie HEAD, PUT, DELETE und OPTIONS erfüllen weitere Aufgaben und müssen vom jeweiligen Server unterstützt und erlaubt werden.
Jede HTTP-Antwort enthält einen Statuscode, der den Erfolg, eine Umleitung oder einen Fehler anzeigt. Diese Codes sind in fünf Kategorien unterteilt, die vorläufige Informationen, erfolgreiche Operationen, Umleitungen, Client-Fehler und Server-Fehler abdecken.
Zusätzlich zur Datenübertragung unterstützt HTTP Authentifizierungsverfahren und die Möglichkeit zur Datenkompression. Für eine geschützte Übertragung von Anmeldedaten und Inhalten ist HTTPS erforderlich. Datenkompression wird hauptsächlich für Textdaten wie HTML, CSS und JavaScript verwendet.
Häufige Fragen und Antworten
HTTP steht für Hypertext Transfer Protocol und ist ein Protokoll zur Übertragung von Daten zwischen Clients und Servern im Internet. Es ermöglicht den Austausch verschiedener Datentypen und wird in der Anwendungsschicht des Netzwerk-Schichtenmodells eingesetzt.
HTTP bietet verschiedene Methoden für die Datenübertragung und Verarbeitung von Ressourcen. Die gängigsten sind: GET-Methode: zum Anfordern einer Ressource POST-Methode: zum Senden von Daten an den Server HEAD-Methode: zum Anfordern der Header ohne Nachrichteninhalt PUT-Methode: zum Erstellen oder vollständigen Ersetzen einer Ressource DELETE-Methode: zum Löschen einer Ressource, sofern der Server dies zulässt
Statuscodes sind dreistellige Informationen in einer HTTP-Antwort. Sie geben Auskunft über den Erfolg der Anfrage, Umleitungen, mögliche Fehler und die Notwendigkeit einer Authentifizierung. Die Statuscodes sind in fünf Klassen von 1xx bis 5xx unterteilt.
HTTP unterstützt verschiedene Authentifizierungsverfahren. Zu den klassischen Methoden gehören: Basic Authentication: einfache Methode mit Benutzername und Passwort, die nur über HTTPS eingesetzt werden sollte Digest Access Authentication: älteres Verfahren, bei dem unter anderem eine vom Server übermittelte Zeichenfolge und ein berechneter Hashwert verwendet werden
HTTP bietet die Möglichkeit der Datenkompression. Der Client teilt dem Server mit, welche Verfahren er unterstützt, und der Server kann die Antwort mit einem dieser Verfahren komprimieren. Dadurch lassen sich vor allem Textdaten wie HTML, CSS und JavaScript effizient übertragen. Bei bereits komprimierten Medienformaten ist der zusätzliche Nutzen meist gering.
