Hypertext Transfer Protocol
Anwendung | HTTP | |||
Transport | TCP | |||
Internet | IP | |||
Netzwerk | Ethernet | Token Ring |
FDDI | ... |
Das Hypertext Transfer Protocol (HTTP) ist ein zustandsloses Protokoll zur Übertragung von Daten. Es ist eines der Protokolle, die der TCP/IP-Protokollstapel bereitstellt. Zugeordnet ist es dabei der Anwendungsschicht. Primär wird es im Rahmen des World Wide Web zur Übertragung von Webseiten verwendet (Webbrowser greifen fast ausschließlich mit diesem Protokoll auf Web-Server zu). Durch Erweiterung seiner Anfragemethoden, Header-Informationen und Fehlercodes ist es allerdings nicht auf Hypertext beschränkt, sondern wird zunehmend zum Austausch beliebiger Daten verwendet.
Das Protokoll wurde 1989 von Tim Berners-Lee am CERN zusammen mit dem URL und HTML erfunden; das World Wide Web (WWW) wurde geboren.
HTTP ist ein Kommunikationsschema, um Webseiten (oder Bilder oder prinzipiell jede andere beliebige Datei) von einem entfernten Computer auf den eigenen zu übertragen. Wenn auf einer Webseite der Link zur URL http://www.example.net/infotext.html aktiviert wird, so wird an den Computer mit dem Namen www.example.net die Anfrage gerichtet, die Datei infotext.html zurückzusenden. Der Name www.example.net wird dabei zuerst über das DNS-Protokoll in eine IP-Adresse umgesetzt. Zur Übertragung wird über das TCP-Protokoll auf Port 80 eine HTTP-GET Anforderung gesendet.
Anfrage:
GET /infotext.html HTTP/1.1 Host: www.example.net
Zusätzliche Informationen wie Angaben über den Browser, zur gewünschten Sprache etc. können über einen Header (Kopfzeilen) in jeder HTTP-Kommunikation übertragen werden. Sobald der Header mit einer Leerzeile abgeschlossen wird, sendet dann der Computer, der einen Web-Server (an Port 80) betreibt, seinerseits eine HTTP-Antwort zurück. Diese besteht aus Header-Informationen des Servers, einer Leerzeile und dem Inhalt der Datei infotext.html. Die Datei ist normalerweise im Hypertext-Format HTML, das vom Browser in eine lesbare Darstellung gebracht wird. Es kann jedoch jede andere Datei in jedem beliebigen Format sein, zum Beispiel Bildinformationen, Audio- und Videodaten. Die Information kann auch dynamisch generiert werden und braucht auf dem Server nicht als Datei abgelegt sein.
Antwort:
HTTP/1.1 200 OK Server: Apache/1.3.29 (Unix) PHP/4.3.4 Content-Length: (Größe von infotext.html in Byte) Content-Language: de Content-Type: text/html Connection: close (Inhalt von infotext.html)
Der Server sendet eine Fehlermeldung zurück, wenn die Information aus irgendeinem Grund nicht gesendet werden kann. Der genaue Ablauf dieses Vorgangs (Anfrage und Antwort) ist in der HTTP-Spezifikation festgelegt.
Bei HTTP 1.0 wird vor jeder Anfrage eine neue TCP-Verbindung aufgebaut und nach Übertragung der Antwort wieder geschlossen. Sind in ein HTML-Dokument beispielsweise zehn Bilder eingebettet, so werden insgesamt elf TCP-Verbindungen benötigt, um die Seite auf einem grafikfähigen Browser aufzubauen. In der neuesten Version 1.1 können mehrere Anfragen und Antworten pro TCP-Verbindung gesendet werden. Für das HTML-Dokument mit zehn Bildern wird so nur eine TCP-Verbindung benötigt. Zusätzlich können abgebrochene Downloads fortgesetzt werden und eine Menge auf der Low-Level-Ebene wurde verbessert. Informationen aus früheren Anforderungen gehen verloren (zustandsloses Protokoll). Über Cookies in den Header-Informationen können aber Anwendungen realisiert werden, die Statusinformationen (Benutzereinträge, Warenkörbe) zuordnen können. Dadurch können Webanwendungen die Status- bzw. Sitzungseigenschaften erfordern, realisiert werden. Auch eine Benutzerauthentifizierung ist möglich. Normalerweise kann die Information, die über HTTP übertragen wird, auf allen Rechnern und Routern, die im Netzwerk durchlaufen werden, gelesen werden. Über HTTPS kann die Übertragung verschlüsselt erfolgen.
Die Kommunikation der beteiligten Rechner kann mit Werkzeugen zur Netzwerkanalyse (zum Beispiel Ethereal) anschaulich nachvollzogen werden.
Eine Möglickeit, HTTP/1.1 in Chats einzusetzen, ist die Verwendung des MIME-Typs multipart/replace möglich, bei der der Browser nach Sendung eines Boundary-Codes und einem neuerlichen Content-Length-Header sowie eines neuen Content-Type-Headers den Inhalt des Browsrfensters komplett erneuert.
HTTP-Statuscodes
- 1xx: Informationen
- 100: Continue
- 101: Switching Protocols
- 2xx: Erfolgreiche Operation
- 200: OK
- 201: Created
- 202: Accepted
- 203: Non-Authoritative Information
- 204: No Content
- 205: Reset Content
- 206: Partial Content
- 3xx: Umleitung
- 300: Multiple Choices
- 301: Moved Permanently
- 302: Found
- 303: See Other
- 304: Not Modified
- 305: Use Proxy
- 307: Temporary Redirect
- 4xx: Client-Fehler
- 400: Bad Request
- 401: Unauthorized
- 402: Payment Required (in HTTP/1.1 noch nicht spezifiziert)
- 403: Forbidden
- 404: Not Found
- 405: Method Not Allowed
- 406: Not Acceptable
- 407: Proxy Authentication Required
- 408: Request Time-out
- 409: Conflict
- 410: Gone
- 411: Length Required
- 412: Precondition Failed
- 413: Request Entity Too Large
- 414: Request-URI Too Large
- 415: Unsupported Media Type
- 416: Requested range not satisfiable
- 417: Expectation Failed
- 5xx: Server-Fehler
- 500: Internal Server Error
- 501: Not Implemented
- 502: Bad Gateway
- 503: Service Unavailable
- 504: Gateway Time-out
- 505: HTTP Version not supported
Weblinks und andere Verweise
- RFC 1945 (Hypertext Transfer Protocol -- HTTP/1.0)
- RFC 2616 (Hypertext Transfer Protocol -- HTTP/1.1)
- RFC 2617 (HTTP Authentication: Basic and Digest Access Authentication)
- Eine Liste aller für HTTP relevanten RFCs
- HTMLWorld: HTTP-Einführung (deutsch)
- SELFHTML: Statuscodes von HTTP (deutsch)
- Ethereal - Software zur Analyse von Netzwerkprotokollen (englisch)
- HTTP Anfrage- und Antwort-Header ansehen
Siehe auch: Netzwerkprotokoll, HTTPS, SOAP, HTML, XML, WebDAV, Zeichenkodierung Vorlage:WikiReader Internet