Das Protokoll HTTP ist das seit 1990 meistbenutzte Datenübertragungsprotokoll im Internet. Hier erfahren Sie, wie es im Detail funktioniert.
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.
Die Kommunikation zwischen Client und Server geschieht in zwei Stufen:
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.
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)
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 |
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) |
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
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. |
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.