|
HTTP - Hypertext Transfer ProtocolHTTP ist ein Protokoll der Applikationsschicht, das alle Möglichkeiten der Übertragung von Hypermedia-Informationen bietet. HTTP ist nicht Hardware- oder Betriebssystemabhängig. Seit 1990 ist dieses Protokoll im Einsatz und wird derzeit meist In der Version 'HTTP/1.0' verwendet.Heutige Informationssysteme benötigen weit mehr Funktionen als das einfache Senden und Empfangen von Nachrichten. Die Entwicklung von HTTP/1.0 ist nicht abgeschlossen. Es bietet die Möglichkeit, weitere Funktionalität zu entwickeln.Die Adressierung von Ressourcen erfolgt dabei mittels URls, die zum einen Orte (URL) oder Bezeichner (URN) sein können. Diese zeigen gleichzeitig den gewünschten Übertragungsmechanismus an. Nachrichten werden in der gleichen Form übertragen, wie sie auch bei normalem Mail-Transport verwandt werden. Dabei kommt oft MIME zum Einsatz. HTTP/1.0 ist auch für den Zugriff auf Server mit anderen Protokollen geeignet. So ist es WWW-Clients möglich, mit Servern und Gateways per SMTP, NNTP, FTP, Gopher und WAIS zu kommunizieren. Hauptfunktionen des HTTPDie grundlegende Funktionsweise des HTTP folgt dem alten Frage-Antwort-Spiel. Ein fragendes Programm (WWW-Browser) öffnet eine Verbindung zu einem Programm, welches auf Fragen wartet (WWW-Server) und sendet ihm die Anfrage zu. Die Anfrage enthält, die Fragemethode, die URL, die Protokollversion, Informationen über den Dienst und möglicherweise etwas Inhalt in Form einer Nachricht. Der Server antwortet auf diese Frage mit einer Statusmeldung,
auf die eine MIME-artige Nachricht folgt, die Informationen über den Server
und eventuell schon das gefragte Dokument enthält.
Direkt nach Beantwortung der Frage wird die Verbindung wieder abgebaut. So
soll erreicht werden, daß die Leitungskapazitäten geschont werden.
Derzeit finden HTTP-Verbindungen meist per TCP/IP statt. Das soll aber nicht
heißen, daß HTTP nicht auch auf anderen Netzwerkprotokollen aufsetzen kann.
Beide Seiten müssen auch dazu in der Lage sein, auf den vorzeitigen Abbruch
der Kommunikation durch die andere Seite zu reagieren. Vorzeitiger Abbruch
kann durch Aktionen von Benutzern, Programmfehler oder Überschreiten der
Antwortzeiten ausgelöst werden. Durch den Abbruch der Verbindung durch eine
der beiden Seiten wird der gesamte Vorgang abgebrochen.
Struktur der HTTP-Botschaften
Jede Kommunikation zwischen zwei WWW-Programmen besteht aus HTTP-Botschaften,
die in Form von Anfragen und Antworten zwischen Client und Server ausgetauscht
werden. Eine HTTP-Botschaft (HTTP-Message) kann entweder ein
Simple-Request, eine Simple-Response, ein Full-Request
oder eine Full-Response sein. Die beiden zuerst genannten Botschaftstypen
gehören zum HTTP/0.9-Standard. Die beiden letzten Typen gehören schon
zum HTTP/1.0.
Allgemeinfelder des Botschaftskopfes
Jedes der Felder eines HTTP-Botschaftenkopfes weist die gleiche Struktur
auf. Im RFC 822 wurde definiert, daß jedes Feld mit einem Feldnamen und
dem Feldinhalt erscheint.
Auf den Feldnamen muß unbedingt ein Doppelpunkt folgen. Der Feldname kann
alle Zeichen außer dem Doppelpunkt und der Escape-Sequenzen enthalten.
Allgemeinfelder enthalten Informationen wie das Datum, die Message-ID,
die verwendete MIME-Version und ein 'forwarded'-Feld, das angibt, ob das
Dokument eigentlich von einer anderen Adresse stammt.
Anfragen
Bei Anfragen wird zwischen einfachen und komplexen Anfragen unterschieden.
Eine einfache Anfrage besteht nur aus einer Zeile, die angibt, welche
Information gewünscht wird. Ein Beispiel:
GET https://www.netzmafia.de/index.html
Dabei wird nur die Methode (GET) und die URL des Dokumentes angegeben. Es
werden keine weiteren Felder erwartet und vom adressierten Server wird
auch nur ein ganz einfacher Antwortkopf zurückgesendet.
Es kann aber auch eine komplexere Anfrage erzeugt werden. Dabei muß die
Zeile aus dem obigen Beispiel noch die Version des HTT-Protokolls
angehängt werden. In einem Beispiel würde das folgendermaßen aussehen:
GET https://www.netzmafia.de/index.html HTTP/1.0
Die Anfügung der HTTP-Version ist also der ganze Unterschied zwischen
einer einfachen und einer komplexen HTTP-Anfrage. Der Unterschied zwischen
einfacher und komplexer Anfrage wird aus Gründen der Kompatibilität
gemacht. Ein Browser, der noch das alte HTTP/0.9 implementiert hat, wird
nur eine einfache Anfrage losschicken können. Ein neuer Server muß
dann eine Antwort, auch im Format des HTTP/0.9 zurücksenden.
Felder einer komplexen Anfrage
Um die Anfrage näher zu spezifizieren, wurden weitere Felder eingeführt.
In den Anfragefeldern stellen z. B. Informationen über den Server und
den benutzten Browser. Weiterhin kann man dort Informationen über den
Gegenstand der Übertragung bekommen. In der folgenden kurzen Übersicht
sind alle möglichen Felder einer Anfrage aufgeführt.
- Anfragezeile (Request-Line)
Informationsanfrage wie oben geschildert. Die zugehörigen Methoden
folgen im nächsten Abschnitt.
- Allgemeiner Kopf (General-Header)
Im allgemeinen Kopf werden allgemeine Informationen über die Nachricht
übermittelt.
- Anfragekopf (Request-Header)
In diesen Feldern kann der Browser weitere Informationen über die
Anfrage und über den Browser selbst absetzen. Diese Felder sind optional
und müssen nicht erscheinen.
- Gegenstandskopf (Entity-Header)
In diesem Feld werden Einträge übermittelt, welche den Inhalt der
Nachricht näher beschreiben.
- Gegenstand der Nachricht (Entity-Body)
Vor dem eigentlichen Inhalt muß definitionsgemäß eine Leerzeile stehen.
Der Inhalt ist dann in dem Format codiert, das in den Gegenstandsfeldern
definiert wurde (meist HTML).
Fragemethoden
Das an erster Stelle in einer Anfragezeile (Request-Line) stehende Wort
beschreibt die Methode, die mit der nachfolgenden URL angewendet werden
soll. Die Methodennamen müssen dabei immer groß geschrieben werden.
Der Entwurf des HTTP-Standards erlaubt leicht eine Erweiterung.
Kommen wir nun zur Bedeutung der einzelnen Methoden.
Beispiel einer Konversation
Benutzereingaben werden kursiv geschrieben. Das lokale System ist eine Windows-Kiste.
plate@lx3-lbs:~ > telnet www.netzmafia.de 80
Trying 141.39.253.210...
Connected to www.netzmafia.de.
Escape character is '^]'.
GET /index.html HTTP/1.0
HTTP/1.1 200 OK
Date: Mon, 18 Sep 2000 13:59:58 GMT
Server: Apache/1.3.6 (Unix) (SuSE/Linux)
Last-Modified: Tue, 29 Aug 2000 08:08:58 GMT
ETag: "134015-8e8-39ab6f9a"
Accept-Ranges: bytes
Content-Length: 2280
Connection: close
Content-Type: text/html
<HTML>
<HEAD>
<TITLE>Netzmafia</TITLE>
</HEAD>
<body bgcolor="#000000" text="#FFFFCC" link="#FFCC00"
alink="#FF0000" vlink="#FF9900">
...
</BODY>
</HTML>
Connection closed by foreign host.
|
|
|