Das HTTP-Protokoll

November 2017
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

BefehlBeschreibung
GETAnfrage der URL-Quelle
HEADAnfrage des URL-Kopfs
POSTSenden der Daten zum URL-Programm
PUTSenden der Daten zur URL
DELETELöschung der URL-Quelle

Köpfe

KopfnameBeschreibung
AcceptBrowsereigener Inhaltstyp (zum Beispiel text/html, siehe MIME-Typen)
Accept-CharsetBrowser-Zeichensatz
Accept-EncodingBrowser-Datencodierung
Accept-LanguageBrowser-Sprache (per default Englisch)
AuthorizationBrowser-Identifizierung beim Server
Content-EncodingKodierungsart des Anfragekörpers
Content-LanguageSprache des Anfragekörpers
Content-LengthLänge des Anfragekörpers
Content-TypeInhaltsart des Anfragekörpers (zum Beispiel text/html), siehe MIME-Typen)
DateAnfangsdatum der Transferdaten
ForwardedEingesetzt bei Übergangsrechner zwischen Server und Browser
FromBezeichnung der Client-E-Mail
FromFordert ein Dokument, das vor längerer Zeit geändert wurde.
LinkBeziehung zwischen zwei URLs
Orig-URLUrsprungs-URL der Anfrage
RefererUrsprungs-URL (Link), von der die Anfrage stammt.
User-AgentInformationsfolge ü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

KopfnameBeschreibung
Content-EncodingCodetyp des Antwortkörpers
Content-LanguageSprachtyp des Antwortkörpers
Content-LengthLänge des Antwortkörpers
Content-TypeInhaltsart des Antwortkörpers (zum Beispiel text/html), siehe MIME-Typen)
DateAnfangsdatum der Transferdaten
ExpiresGültigkeitsablaufdatum der Daten
ForwardedEingesetzt bei Übergangsrechner zwischen Server und Browser
LocationUmleitung auf eine neue Dokument-URL
ServerEigenschaften 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.

CodeMeldungBeschreibung
10xInformationsmeldungDiese Codes sind im Protokoll Version 1.0 nicht vorhanden.
20xErfolgDiese Codes zeigen den korrekten Ablauf der Transaktion.
200OKDie Anfrage wurde korrekt abgeschlossen.
201CREATEDFolgt auf einen Befehl POST, zeigt Erfolg an.
202ACCEPTEDDie Anfrage wurde angenommen, aber der nachfolgende Prozess wurde nicht abgeschlossen.
203PARTIAL INFORMATIONWenn dieser Code aus der Abarbeitung des Befehls GET kommt, zeigt dies eine nicht abgeschlossen Handlung an.
204NO RESPONSEDie Anfrage ist beim Server angekommen, es sind aber keine Informationen zu senden.
205RESET CONTENTDer Server fordert den Browser auf, die Inhalte von Formularfeldern zu löschen.
206PARTIAL CONTENTEs handelt sich um die Antwort auf eine Anfrage mit dem Kopf range. Der Server zeigt den Kopf content-range.
30xRedirectionDiese Codes zeigen, dass die Ressource an einen anderen Ort verschoben wurde.
301MOVEDDie angefragten Daten wurden auf eine anderen Adresse verschoben.
302FOUNDDie angefragten Daten sind zwar eine neue URL, aber sie sind inzwischen verschoben worden.
303METHODDer Client soll eine neue Adresse probieren, möglichst mit einer anderen Methode als GET.
304NOT MODIFIEDWenn 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.
40xClient-FehlerDiese Codes zeigen, dass die Anfrage nicht korrekt formuliert wurde.
400BAD REQUESTSyntaxfehler bei der Anfrage oder die Bearbeitung ist nicht möglich.
401UNAUTHORIZEDDie Meldungsparameter machen Angaben über die zulässigen Autorisierungsformen. Der Client soll seine Anfrage mit korrekten Autorisierungsdaten neu formulieren.
402PAYMENT REQUIREDDer Client soll seine Anfrage neu formulieren mit den korrekten Zahlungsangaben.
403FORBIDDENDer Ressourcenzugang ist verboten.
404NOT FOUNDKlassisch! Der Server hat nichts gefunden, umgezogen ohne neue Adressenangabe.
50xServer-FehlerDiese Codes melden einen internen Fehler des Servers.
500INTERNAL ERRORDer Server steht vor einem unlösbaren Problem, das ihn zur Aufgabe der Bearbeitung zwingt.
501NOT IMPLEMENTEDDer Server kennt den Dienst nicht.
502BAD GATEWAYDer Server erhält eine ungültige Antwort vom angesprochenen Server, an den er sich als Gateway oder Proxy anbinden wollte.
503SERVICE UNAVAILABLEDer Server ist zeitweise nicht erreichbar wegen Überlastung.
504GATEWAY TIMEOUTDie Antwortzeit des Servers geht über die vom Gateway gebilligte Antwortzeit hinaus.

Foto: © Pixabay.

Lesen Sie auch


The HTTP protocol
The HTTP protocol
El protocolo HTTP
El protocolo HTTP
Le protocole HTTP
Le protocole HTTP
Il protocollo HTTP
Il protocollo HTTP
O protocolo  HTTP
O protocolo HTTP
Polityka prywatności
Polityka prywatności
Letztes Update am 14. November 2017 06:05 von SilkeCCM.
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.