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 zu der Anwenderschicht der etablierten Netzwerkprotokolle. Diese wird von einem Anwenderprogramm angesprochen, also meist einem Webbrowser. Im Schichtenmodell entspricht HTTP den Anwendungsschichten fünf bis sieben. Ursprünglich diente HTTP [Hypertext Transfer Protocol] der Übertragung von Hypertext, zum Beispiel von Metadaten oder Daten einer Session. Durch die Erweiterung der Anfragemethoden konnten aber zunehmend beliebige Daten übertragen werden in Verbindung mit einem zuverlässigen Transportprotokoll (TCP).
Aufbau des Protokolls
Ein Protokoll enthält wichtige Informationen über den Aufbau eines Datenpakets. Absender und Empfänger werden ebenso übertragen wie der Typ des Datenpakets, zum Beispiel Verbindungsaufbau, -abbau und Nutzdaten. Außerdem werden die Paketlänge und eine Prüfsumme mitgeteilt. Diese Informationen werden den Nutzdaten (HTML, Texte, Bilder) als Header vorangestellt oder angehängt. Das Transportprotokoll dient dabei dazu, das Datenpaket auf Vollständigkeit zu überprüfen und gegebenenfalls zu verwerfen und es neu anzufordern.
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 zwei Teilen: Der Nachrichtenkopf (Message Header) enthält Metainformationen zum Nachrichtenkörper (Message Body). Hier sind Informationen über Codierung, Inhaltstyp und andere Informationen enthalten, die dafür sorgen, dass die Nutzerdaten korrekt interpretiert und ausgegeben werden.
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 Datei info.html zurückzusenden. Der Hostname wird über das DNS-Protokoll in eine IP übersetzt. Zur Übertragung wird an den Standardport des Servers eine HTTP-GET Anforderung gesendet (request).
Falls ein Link unerlaubte Zeichen (z. B. Leerstellen) enthält, werden diese mit % codiert. Auch zusätzliche Angaben über den Browsertyp und der gewünschten Sprache können im Header einer solchen Anfrage übertragen werden. Sobald der Header gesendet und abgeschlossen ist, sendet der Server die HTTP-Antwort zurück. Dieser besteht aus den Header-Informationen des Servers, einer Leerzeile und dem Inhalt der Datei. Diese Informationen werden normalerweise zusammen mit den Auszeichnungssprachen HTML, XHTML und XML und ergänzenden Informationen wie Stylesheets und verschiedenen Skripte wie zum Beispiel JavaScript, übertragen. Diese beeinflussen das Erscheinungsbild und das Verhalten (Dynamik) der Daten. Im Prinzip kann aber jede Datei in jedem Format übertragen werden und Dateien können über die Informationen aus Datenbanken und durch Verwendung von Scriptsprachen (ASP, PHP, JSP u. a.) dynamisch generiert werden.
HTTP-Request Methoden
Für eine Anfrage stehen dem Client verschiedene Methoden zur Verfügung, um Daten anzufordern, zu übertragen oder die Übertragung von Daten zu prüfen oder zu kontrollieren.
- Bei der GET-Methode werden Daten unter Angabe einer URI von einem Server angefordert. Dabei können auch sogenannte Argumente übertragen werden. Die Länge der URI ist je nach Servertyp beschränkt und sollte nicht größer als 255 Bytes sein.
- Mit der POST-Methode werden je nach Servertyp und Ausstattung Datenmengen zur Weiterverarbeitung an den Server geschickt. Diese Methode wird beispielsweise zur Übertragung und Verarbeitung von Formulardaten eingesetzt. Auch an die URL können bei dieser Methode weitere Daten angehängt werden.
- Um die Gültigkeit einer Datei zu prüfen, bietet sich die HEAD-Methode an. Hier wird im Gegensatz zur GET-Methode nur die Header-Information angefordert, nicht der eigentliche Dokumenteninhalt.
- Mit der PUT-Methode lassen sich Dateien unter Angabe der Ziel-URL auf einen Webserver hochladen.
- Mit der DELETE-Methode lassen sich die angegebenen Dateien oder Daten auf einem Server löschen. Meist ist diese Methode aber aus Sicherheitsgründen abgeschaltet.
- Die TRACE-Methode liefert die Anfrage so zurück, wie sie vom Server empfangen wurde, was besonders bei der Fehlerbeseitigung von Bedeutung sein kann.
- Die Methode OPTIONS listet die vom Server unterstützten Methoden und Features aus.
Die Methoden GET und POST werden am häufigsten in Zusammenhang mit HTTP verwendet. Wobei die GET-Methode zur Anforderung einer Ressource deren URI verschickt, während mit der Methode POST Daten in fast unbegrenzter Menge übertragen werden können.
Statuscodes
Jede HTTP-Anfrage an einen Server ist mit einem Statuscode verbunden. Dieser liefert Informationen über den Erfolg einer Anfrage, über die Art eines Fehlers oder die Notwendigkeit, sich zu authentifizieren, um eine bestimmte Ressource ansehen zu können. Statuscodes sind in fünf Kategorien eingeteilt, die jeweils aus drei Ziffern bestehen. Auf diese Weise wird dem Nutzer mitgeteilt, welcher Fehler bei der Übertragung entstanden ist oder was er tun muss, um Zugriff auf eine Datei zu erhalten.
Aufstellung der Statuscodes:
- Die Ziffernfolge 1xx betrifft Probleme und Fehler in Zusammenhang mit Informationen.
- Die Ziffernfolge 2xx betrifft erfolgreiche Operationen. Diese Statuscodes werden nicht angezeigt.
- Die Ziffernfolge 3xx betrifft Umleitungen.
- Die Ziffernfolge 4xx bezieht sich auf Client-Fehler.
- Die Ziffernfolge 5xx bezieht sich auf Server-Fehler.
Andere Funktionen: Anmeldung
Über HTTP lassen sich nicht nur Daten anfordern oder übertragen. Es stellt den Anwendern auch zwei Verfahren zur Authentifizierung zur Verfügung. Wenn der Server feststellt, dass für die gewünschte Datei ein Benutzername und ein Passwort nötig sind, gibt er den Statuscode 401 aus und liefert einen Dialog, in den Benutzername und Passwort einzutragen sind.
Die Basic Authentification verlangt lediglich die Angabe dieser beiden Werte, bietet aber keinen kryptografischen Schutz. Sie sollte also nur in Zusammenhang mit HTTPS eingesetzt werden. Bei der Digest Access Authentification sendet der Header zusätzlich eine zufällige Zeichenfolge, der Browser berechnet einen Hashcode, die vom Server mit einer Prüfsumme verglichen wird. Diese Methode ist weitgehend abhörsicher.
Datenkompression
HTTP bietet auch Möglichkeiten der Datenkompression an. Ein Client teilt bei der Anfrage mit, welche Kompressionsverfahren er verarbeiten kann. Daraufhin sendet der Server die Antwort in einem unterstützten Verfahren an den Client zurück. Besonders bei Textinformation wie HTML, CSS, Javascript lassen sich so große Datenmengen gut komprimieren, während bei Bilder, Audio und Video diese Kompression nutzlos ist.
Zusammenfassung
HTTP steht für Hypertext Transfer Protocol und ist ein Protokoll für die Übertragung von Daten zwischen Servern und Webbrowsern im Internet. Es fungiert in den Anwendungsschichten des Netzwerk-Schichtenmodells und ermöglicht den Austausch verschiedener Datentypen, nicht nur von Hypertext. Die Datenübertragung erfolgt über ein zuverlässiges Transportprotokoll, meistens TCP.
Die Kommunikation in HTTP geschieht durch Nachrichten, die aus einer Anfrage (Request) und einer Antwort (Response) bestehen. Diese Nachrichten enthalten Header und Body, welche Metainformationen und eigentliche Nutzerdaten beinhalten. Der Prozess beginnt, 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. Diese Methoden können auch Parameter und Argumente enthalten, die die Anfrage weiter spezifizieren.
Jeder HTTP-Request erhält einen Statuscode, der den Erfolg oder Fehler der Anfrage anzeigt. Diese Codes sind in fünf Kategorien unterteilt, die Informationen, erfolgreiche Operationen, Umleitungen, Client-Fehler und Server-Fehler abdecken.
Zusätzlich zur Datenübertragung bietet HTTP auch Authentifizierungsmethoden und die Möglichkeit zur Datenkompression. Bei der Authentifizierung werden Benutzername und Passwort abgefragt, wobei verschiedene Sicherheitsstufen verfügbar sind. Datenkompression wird hauptsächlich für Textdaten wie HTML, CSS und Javascript verwendet.
Häufige Fragen und Antworten
Was ist HTTP?
HTTP steht für Hypertext Transfer Protocol und ist ein Protokoll zur Übertragung von Daten zwischen Servern und Webbrowsern im Internet. Es ermöglicht den Austausch verschiedener Datentypen und wird in den Anwendungsschichten des Netzwerk-Schichtenmodells eingesetzt.
Welche Methoden bietet HTTP für die Datenübertragung?
HTTP bietet verschiedene Methoden für die Datenübertragung. Die gängigsten sind:
- GET-Methode: zum Anfordern von Daten
- POST-Methode: zum Senden von Daten an den Server
- HEAD-Methode: zum Anfordern des Dateikopfes
- PUT-Methode: zum Hochladen von Dateien auf den Server
- DELETE-Methode: zum Löschen von Dateien auf dem Server
Was sind Statuscodes in HTTP?
Statuscodes sind Informationen, die jeder HTTP-Anfrage an einen Server zugeordnet sind. Sie geben Auskunft über den Erfolg der Anfrage, mögliche Fehler und die Notwendigkeit einer Authentifizierung. Die Statuscodes sind in fünf Kategorien unterteilt und bestehen aus drei Ziffern.
Welche Authentifizierungsmethoden bietet HTTP an?
HTTP bietet zwei Authentifizierungsmethoden:
- Basic Authentification: einfache Methode, die Benutzername und Passwort erfordert
- Digest Access Authentification: sicherere Methode, bei der zusätzlich eine zufällige Zeichenfolge und eine Prüfsumme verwendet werden
Wie funktioniert die Datenkompression in HTTP?
HTTP bietet die Möglichkeit der Datenkompression. Der Client teilt dem Server mit, welche Verfahren er unterstützt, und der Server sendet die Antwort in einem komprimierten Format zurück. Dadurch können vor allem Textdaten wie HTML, CSS und Javascript effizient übertragen werden.