![]() |
![]() |
|||
| Aufgaben Dokus Links | ||||
|
HTTP ist das dem WWW zugrundeliegende (Netzwerk-) Protokoll der Applikationsschicht der TCP/IP-Protokollfamilie. HTTP ist verbindungsorientiert und basiert daher auf TCP, allerdings läßt es sich ohne weiteres auch auf anderen verbindungsorientierten Transportprotkollen realisieren. Die Aufgabe von HTTP ist die Übertragung von HTML-Dokumenten, Images und anderen Daten (allgemein auch als Ressourcen bezeichnet) zwischen Web-Browser und Web-Server. Eine Ressource ist eine durch eine URL identifizierte Menge von Informationen, die sowohl statisch vorliegen - wie im Fall einer Datei - oder dynamisch zum Zeitpunkt der Anfrage (durch ein CGI-Skript) erzeugt werden kann.
HTTP ist ein asymmetrisches Request/Reply-Protokoll, das auf dem Client/Server-Modell basiert: Ein Klient (in der Regel ein Web-Browser) öffnet eine Netzwerk-) Verbindung zu einem Server (in der Regel ein Web-Server) und sendet diesem eine Anfrage zu. Der auf Anfragen wartende Server bearbeitet die Anfrage und sendet bei erfolgreicher Bearbeitung eine Antwort zurück. Andernfalls übermittelt er eine Fehlermeldung an den Klienten. Direkt nach Beantwortung der Anfrage wird die Verbindung wieder abgebaut. HTTP ist also ein zustandsloses Protokoll, bei dem zwischen zwei Transaktionen keine Informationen über die Verbindung aufrecht erhalten werden. Diese Eigenschaft von HTTP ermöglicht zwar einfache und effiziente Implementierungen und ist in den meisten Fällen voll ausreichend, für bestimmte Anwendungen ist aber die Aufrechterhaltung eines Kontextes zwischen Klient und Server über mehrere HTTP-Transaktionen hinweg notwendig. Aufgrund der fehlenden Unterstützung durch HTTP muß diese Funktionalität auf Anwendungsebene realisiert werden.
Die Kommunikation zwischen Klient und Server erfolgt durch den Austausch von Nachrichten (HTTP-Messages). Eine Nachricht besteht dabei allgemein aus einem Kopf (Header) und dem eigentlichen Inhalt, dem sogenannten Körper (Body), der Nachricht. Die beiden Teilen sind durch eine Leezeile getrennt. Während der Header sowohl für Anfragen als auch für Antworten immer mindestens eine Zeile (die initial request bzw. response line) umfaßt, kann der Körper auch leer sein. Dies ist bei Anfragen häufig der Fall.
Der Kopf einer Anfrage enthält als erste Zeile die initial request line, die aus drei durch Leerzeichen getrennten Teilen besteht: Dem Namen der zu verwendenen Methode, der URL der angefragten Ressource und der Version von HTTP, die benutzt wird. Eine typische request line sieht folgendermaßen aus:
GET /path/to/file/index.html HTTP/1.0
GET ist die bei weitem am häufigsten verwendete HTTP Methode. Mit ihr können sowohl statische Ressourcen wie HTML-Dokumente und Images, als auch dynamische, z.B. durch CGI-Skripts erzeugte Ressourcen angefordert werden. Die gewünschte Ressource wird dabei in der nachfolgenden URL spezifiziert, die auch (URL-)kodierte Parameter für CGI-Skripte enthalten kann.
Sollen größere Datenmengen an den Server übergeben werden, wie es z.B. bei komplexen HTML-Formularen der Fall ist, so empfiehlt es sich, die Methode POST zu verwenden. Neben der URL, die meistens ein CGI-Skript identifiziert, können mit dieser Methode beliebige Daten im Körper der Anfrage an den Server gesendet werden.
Mit der PUT-Methode werden die im Körper der Anfrage befindlichen Daten an den Server übetragen und - falls dessen Konfiguration dies erlaubt - unter der angegebenen URL abgelegt werden.
Wenn man lediglich am Kopf der Antwort interessiert ist, sollte man statt GET die Methode HEAD verwenden. Außerdem gibt es nocht die Methoden DELETE, LINK und UNLINK zum Löschen(!) bzw. Herstellen und Entfernen von Verbindungen zwischen Dokumenten. Die Methoden POST und DELETE sind bei den meisten Web-Servern - aus verständlichen Gründen - ausgeschaltet.
Die erste Zeile des Headers einer Antwort, die sogennante status line, besteht - genau wie die initial request line - aus drei durch Leerzeichen getrennten Teilen: Der HTTP-Version, einemresponse status code, der das Ergebnis der Anfrage angiebt, sowie einer reason phrase, die den Statuscode näher beschreibt (in Englisch). Typische Statuszeilen sehen wie folgt aus:
HTTP/1.0 200 OK
oder
HTTP/1.0 404 Not Found
Statuscodes sind drei-stellige Zahlen, wobei die erste Ziffer die Klasse des Codes bestimmt:
Die häufigsten Statuscodes sind:
|
Vor längerer Zeit wurde mit HTTP 1.1 eine neuere Version des Protokolls verabschiedet, das - unter Gewährleistung der Abwärtskompatibilität zu HTTP 1.0 - einige Defizite der alten Version behebt und eine Reihe von Erweiterungen enthält. Dazu zählen unter anderem:
|
||||||