Das HTTP-Protokoll

Das Protokoll HTTP ist das seit 1990 meistbenutzte Datenübertragungsprotokoll im Internet. Hier erfahren Sie, wie es im Detail funktioniert.

Einführung in das HTTP-Protokoll

HTTP (HyperText Transfer Protocol) ist ein Protokoll zur Übertragung von Daten auf der Anwendungsschicht des OSI-Modells. Es ist das schon seit 1990 meistbenutzte Protokoll im Wordwide Web und sorgt dafür, dass Daten in eine Anwendung, nämlich in Webbrowser, geladen werden können.

Derzeit werden vor allem die Versionen HTTP/1.0 und HTTP/1.1 verwendet. Die aktuellste Version heißt HTTP/2.

Die frühe Version 0.9 war nur dem Datentranfer ins Internet gewidmet (insbesondere von in HTML geschriebenen Seiten). Die Version 1.0, die am meisten verwendet wurde und bis heute verwendet wird, kann Nachrichten mit Header übertragen sowie die Inhaltsangaben über die Meldungen selbst erstellen mittels der sogenannten MIME-Codierung.

Ziel des HTTP-Protokolls ist der lokalisierte Datentransfer (hauptsächlich im HTML-Format) dank einer sogenannten URL-Zeichenkette zwischen Client und Webserver.

Kommunikation zwischen Client und Server

Die Kommunikation zwischen Client und Server geschieht in zwei Stufen:

Communication entre navigateur et serveur
Der Client verschickt eine HTTP-Anfrage (request) an den Server. Der Server bearbeitet die Anfrage und sendet eine HTTP-Antwort (response) zum Client.

In Wirklichkeit läuft die Kommunikation über eine längere Zeitspanne, wenn man die Bearbeitung im Server miteinbezieht. Da es hier nur um das HTTP-Protokoll geht, wird die Bearbeitung auf der Server-Seite im Rahmen dieses Artikels ausgelassen.

HTTP-Anfrage

Ein HTTP-Anfrage ist die vom Client zum Server gesendete Zeilenfolge. Sie enthält die folgenden Elemente.

Request-Zeile: Dies ist eine Zeile, die den beantragten Dokumententyp, die anzuwendende Methode und die eingesetzte Protokoll-Version bestimmt. Die Zeile gliedert sich in drei Teile: die Methode, die URL, die vom Client verwendete Protokollversion (im Allgemeinen HTTP/1.0).

Nachrichtenkopf der Anfrage (header): Dies ist eine Anzahl von fakultativen Zeilen mit zusätzlichen Informationen über die Anfrage und/oder den Client (Navigator, Betriebssystem usw.). Jede Zeile besteht aus einem den Kopftyp bezeichnenden Namen gefolgt von einem Doppelpunkt (:) und dem Kopfwert.

Nachrichtenkörper der Anfrage (body): Dies ist eine Folge von optionalen Zeilen, die vom vorigen Zeilenblock durch eine Leerzeile getrennt sind. Der Body kann zum Beispiel mit einem POST-Befehl Daten an den Server über ein Formular senden.

Eine HTTP-Anfrage hat folgende Syntax (<crlf> bedeutet carriage return und line feed):

METHODE URL-VERSION <crlf> KOPF : Wert <crlf>
.
.
.
KOPF : Wert <crlf>
Leere Zeile <crlf> ANFRAGEKOPF

Hier ein Beispiel für eine HTTP-Anfrage:

GET [/ http://de.kioskea.net] HTTP/1.0
Accept : text/html
If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT
User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

HTTP-Befehle

Befehl Beschreibung
GET Anfrage der URL-Quelle
HEAD Anfrage des URL-Kopfs
POST Senden der Daten zum URL-Programm
PUT Senden der Daten zur URL
DELETE Löschung der URL-Quelle

Köpfe

Kopfname Beschreibung
Accept Browsereigener Inhaltstyp (zum Beispiel text/html, siehe MIME-Typen)
Accept-Charset Browser-Zeichensatz
Accept-Encoding Browser-Datencodierung
Accept-Language Browser-Sprache (per default Englisch)
Authorization Browser-Identifizierung beim Server
Content-Encoding Kodierungsart des Anfragekörpers
Content-Language Sprache des Anfragekörpers
Content-Length Länge des Anfragekörpers
Content-Type Inhaltsart des Anfragekörpers (zum Beispiel text/html), siehe MIME-Typen)
Date Anfangsdatum der Transferdaten
Forwarded Eingesetzt bei Übergangsrechner zwischen Server und Browser
From Bezeichnung der Client-E-Mail
From Fordert ein Dokument, das vor längerer Zeit geändert wurde.
Link Beziehung zwischen zwei URLs
Orig-URL Ursprungs-URL der Anfrage
Referer Ursprungs-URL (Link), von der die Anfrage stammt.
User-Agent Informationsfolge über den Client (wie Name, Browserversion, Betriebsystem)

HTTP-Antwort

Eine HTTP-Antwort ist die vom Server zum Client gesendete Zeilenfolge. Sie enthält die folgenden Elemente.

Statuszeile: Zeile mit Angabe der verwendeten Protokollversion und Bearbeitungzustand der Anfrage mittels Code und Erläuterungstext. Die Zeile besteht aus drei Kürzeln getrennt durch ein Leerzeichen: Version des angewendeten Protokolls, Statuscode und Code-Erläuterung.

Antwort-Kopf: Besteht aus einer frei wählbaren Zeilenfolge mit zusätzlichen Angaben über die Antwort und/oder den Server. Zum Aufbau der Zeilen gehören Kopftypename gefolgt von einem Doppelpunkt (:) und Kopfwert.

Antwort-Körper: Enthält das abgefragte Dokument.

Eine HTTP-Antwort hat folgende Syntax (<crlf> bedeutet carriage return und line feed):

VERSION-HTTP CODE EXPLICATION <crlf> Kopf : Wert <crlf>
.
.
.
KOPF : Wert <crlf>
Leerzeile <crlf> ANTWORT Körper

Hier ein Beispiel für eine HTTP-Antwort:

HTTP/1.0 200 OK
Date : Sat, 15 Jan 2000 14:37:12 GMT
Server : Microsoft-IIS/2.0
Content-Type : text/HTML
Content-Length : 1245
Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT

Antwort-Köpfe

Kopfname Beschreibung
Content-Encoding Codetyp des Antwortkörpers
Content-Language Sprachtyp des Antwortkörpers
Content-Length Länge des Antwortkörpers
Content-Type Inhaltsart des Antwortkörpers (zum Beispiel text/html), siehe MIME-Typen)
Date Anfangsdatum der Transferdaten
Expires Gültigkeitsablaufdatum der Daten
Forwarded Eingesetzt bei Übergangsrechner zwischen Server und Browser
Location Umleitung auf eine neue Dokument-URL
Server Eigenschaften des Servers, von dem die Antwort stammt.

Die Antwort-Codes

Das sind die Codes, die am Bildschirm erscheinen, wenn der Browser die geforderte Seite nicht findet. Diser Antwortcodes bestehen aus drei Ziffern: der erste gibt die Statusklasse an und die nächsten beiden die ausführliche Art des Fehlers.

Code Meldung Beschreibung
10x Informationsmeldung Diese Codes sind im Protokoll Version 1.0 nicht vorhanden.
20x Erfolg Diese Codes zeigen den korrekten Ablauf der Transaktion.
200 OK Die Anfrage wurde korrekt abgeschlossen.
201 CREATED Folgt auf einen Befehl POST, zeigt Erfolg an.
202 ACCEPTED Die Anfrage wurde angenommen, aber der nachfolgende Prozess wurde nicht abgeschlossen.
203 PARTIAL INFORMATION Wenn dieser Code aus der Abarbeitung des Befehls GET kommt, zeigt dies eine nicht abgeschlossen Handlung an.
204 NO RESPONSE Die Anfrage ist beim Server angekommen, es sind aber keine Informationen zu senden.
205 RESET CONTENT Der Server fordert den Browser auf, die Inhalte von Formularfeldern zu löschen.
206 PARTIAL CONTENT Es handelt sich um die Antwort auf eine Anfrage mit dem Kopf range. Der Server zeigt den Kopf content-range.
30x Redirection Diese Codes zeigen, dass die Ressource an einen anderen Ort verschoben wurde.
301 MOVED Die angefragten Daten wurden auf eine anderen Adresse verschoben.
302 FOUND Die angefragten Daten sind zwar eine neue URL, aber sie sind inzwischen verschoben worden.
303 METHOD Der Client soll eine neue Adresse probieren, möglichst mit einer anderen Methode als GET.
304 NOT MODIFIED Wenn der Client ein bedingtes GET gesendet hat (um nach einer Dokumentenänderung seit dem letzten Besuch zu fragen), aber das Dokument unverändert geblieben ist.
40x Client-Fehler Diese Codes zeigen, dass die Anfrage nicht korrekt formuliert wurde.
400 BAD REQUEST Syntaxfehler bei der Anfrage oder die Bearbeitung ist nicht möglich.
401 UNAUTHORIZED Die Meldungsparameter machen Angaben über die zulässigen Autorisierungsformen. Der Client soll seine Anfrage mit korrekten Autorisierungsdaten neu formulieren.
402 PAYMENT REQUIRED Der Client soll seine Anfrage neu formulieren mit den korrekten Zahlungsangaben.
403 FORBIDDEN Der Ressourcenzugang ist verboten.
404 NOT FOUND Klassisch! Der Server hat nichts gefunden, umgezogen ohne neue Adressenangabe.
50x Server-Fehler Diese Codes melden einen internen Fehler des Servers.
500 INTERNAL ERROR Der Server steht vor einem unlösbaren Problem, das ihn zur Aufgabe der Bearbeitung zwingt.
501 NOT IMPLEMENTED Der Server kennt den Dienst nicht.
502 BAD GATEWAY Der Server erhält eine ungültige Antwort vom angesprochenen Server, an den er sich als Gateway oder Proxy anbinden wollte.
503 SERVICE UNAVAILABLE Der Server ist zeitweise nicht erreichbar wegen Überlastung.
504 GATEWAY TIMEOUT Die Antwortzeit des Servers geht über die vom Gateway gebilligte Antwortzeit hinaus.

Foto: © Pixabay.

Unsere Inhalte werden in Zusammenarbeit mit IT-Experten erstellt, unter der Leitung von Jean-François Pillou, Gründer von CCM.net. CCM ist eine führende internationale Technologie-Webseite und in elf Sprachen verfügbar.
Lesen Sie auch
Das Dokument mit dem Titel « Das HTTP-Protokoll » wird auf CCM (de.ccm.net) unter den Bedingungen der Creative Commons-Lizenz zur Verfügung gestellt. Unter Berücksichtigung der Lizenzvereinbarungen dürfen Sie das Dokument verwenden, verändern und kopieren, wenn Sie dabei CCM deutlich als Urheber kennzeichnen.