VSIS: Arbeitsgruppe Verteilte Systeme und Informationssysteme prInt: Das Praktikum Internet-Werkzeuge  Praktikum Internet-Werkzeuge   Fachbereich
  Aufgaben  Dokus  Links   Universität Hamburg

 Das Hypertext Transfer Protocol (HTTP)

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.

HTTP Requests

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:

Methoden

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.

HTTP Requests

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:

oder

Statuscodes

Statuscodes sind drei-stellige Zahlen, wobei die erste Ziffer die Klasse des Codes bestimmt:

Die häufigsten Statuscodes sind:

200 OK
Allgemeine Erfolgsmeldung. Die angefragte Resource folgt im Körper der Nachricht.
301 Moved Permanently
302 Moved Temporarily
400 Bad Request
Die Anfrage enthielt eine falsche Syntax.
404 Not Found
Die angefragte Ressource exitiert nicht.
500 Server Error
Ein unerwarteter Server-Fehler ist aufgetreten, z.B. durch ein fehlerhaftes CGI-Skript.

Header Lines

Neben der initialen Zeile können Header weitere Zeilen enthalten, die nähere Informationen zur Anfrage bzw. Antwort oder ggf. zum im Body übermittelten Objekt beinhalten. Diese Kopfzeilen besitzen ein einheitliches, in RFC 822 definiertes Format: <Feldname>: <Wert>. HTTP 1.0 definiert 16 verschiedene Felder, von denen bei Anfragen keines erforderlich ist. Die am häufigtsten in Anfrageköpfen verwendeten Felder sind folgend:
Accept
Gibt an, welche MIME-Types der Browser darstellen kann.
From
EMail-Adresse des Benutzers.
If-Modified-Since
Bei der GET-Methode werden nur Dokumente, die seit dem angegebenen Zeitpunkt modifiziert wurden übertragen. Andernfalls wird die Meldung 304 Not Modified zurückgegeben.
User-Agent
Identifiziert den verwendeten Web-Browser.
Im Kopf einer Antwort kommen unter anderen folgende Felder zur Anwendung:
Last-Modified
Datum der letzten Änderung der Ressource.
Server
Identifiziert den verwendeten Web-Server.
Wenn eine Anfrage oder eine Antwort einen Körper (Body) enthält, so wird dieser in der Regel durch folgende Felder im Kopf der Nachricht näher beschrieben:
Content-Length
Gibt die Länge der Nachricht im Body in Bytes an.
Content-Type
Legt den MIME-Type der Nachricht im Body fest.

 HTTP 1.1

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:


Mi 12-16 Uhr Raum: B-201 und RZ Start: 05.04.2006
Eine Veranstaltung des Arbeitsbereichs Verteilte Systeme und Informationssysteme (VSIS)

Letzte Änderung : 09.04.2001 - 17:10
EMail: prInt06@vsis.informatik.uni-hamburg.de