HTTP das einfache und universelles Transport-Protokoll

Datentransport zwischen Client und Server im Klartext

Das Kürzel «HTTP» bzw. «http» ging mit der Verbreitung des Internets um die Welt, die Werbung verwendet es heute noch gerne, es wird dazu benutzt, eine Internet-Adresse (URL) zu kennzeichnen. Eigentlich ist HTTP «nur» für die korrekte Übermittlung der Web-Seiten mit dem HTML-Code vom Web-Server zum Browser zuständig. Dies wird aber vom Benutzer praktisch nicht wahrgenommen, so ganz nach dem Motto: Der Surfer braucht es, die meisten wissen aber gar nicht was sie benutzen bzw. eintippen.

Klickt der Anwender auf einen unterstrichenen Hyperlink, so tritt wieder HTTP in Aktion, es schickt die per Maus oder anderem Zeigegerät angewählte URL auf die Reise und sucht im weltweiten Web nach den angewählten Bits und Bytes. HTTP-Anfragen werden vom Browser an den Web-Server geschickt, der HTTP-Server empfängt die Anfragen standardmässig auf dem TCP-Port 80, verarbeitet sie und sendet die Daten (HTML-, CSS-Dateien und/oder Grafiken) zurück an den Browser.

HTTP 1.0
Die produktive Ur-Version HTTP 1.0 wird nur noch (hoffentlich) nur noch von den wenigsten WWW-Servern verwendet. Mit HTTP 1.0 ist ein wiederaufsetzen einer abgebrochenen Übertragung nicht möglich. Die Daten müssen von Beginn an nochmals übertragen werden.

Jim Gettys - verantwortlicher Entwickler von HTTP beim W3C

Bei der Standardisierungs-Organisation des World Wide Web W3C federführend für die HTTP 1.1 und HTTP-NG-Spezifikation war Jim Gettys. Die Arbeiten für diesen Standard wurden im Jahr 2000 abgeschlossen. Für technische Fragen ist er ist unter der Adresse jg@w3c.org erreichbar.

HTTP 1.1
Die offizielle Version 1.1 von HTTP ist durch Datenkompression und kleinere Datenpakete um den Faktor 2 bis 10 schneller als HTTP 1.0. Mit der Einführung von HTTP 1.1 wurden auch die CSS-Normen und das Bildformat PNG verabschiedet. Werden Web-Sites mit einem optimalen Speed / Design-Faktor aufgesetzt (beinhaltet CSS und PNG) so ist eine Geschwindigkeitssteigerung um den Faktor 10 möglich.

Wichtige Status- / Fehlermeldungen von HTTP 1.1
Die folgenden Statusmeldungen werden in der Anwendung von HTTP immer wieder verwendet, teilweise sind sie auch für den Benutzer sichtbar.

301 - Moved
: Die angewählte Ressource hat eine neue Adresse, diese sollte angegeben sein
302 - Moved: Die angewählte Ressource hat eine neue Adresse, diese sollte angegeben sein
304 - Not modified: Dokument wurde nicht geändert seit letzter Anfrage,Browser-/Proxy-Cache wird genutzt
400 - Bad Request: Der Server «versteht» die Anfrage nicht, meist ein Syntax-Fehler in der URL
401 - Unauthorized: Zugriff auf die URL verweigert, falsches Passwort oder falscher Benutzername
404 - Not Found: Die URL ist falsch (war vielleicht einmal richtig)
408 - Request Timed Out: Zu lange Wartezeit
500 - Internal Server Error: Unerwarteter interner Server-Status, Bearbeitung abgebrochen

Da HTTP sich zu einem elementaren Standardprotokoll entwickelt hat, ist die aktuelle Version von HTTP ist im TCP/IP-Stack des jeweiligen Betriebssystems integriert.

Das Dokument HTTP-Statuscodes auf dieser Web-Site beinhaltet weitere Informationen über die Statuscodes. Sie sind grundsätzlich in die in Kategorien von 1xx bis 5xx unterteilt.

HTTP-NG
Die Entwicklung von HTTP wurde als HTTP-NG bezeichnet, es sollte das HTTP der nächsten Generation (HTTP Next Generation) werden. Die Spezifikationsarbeiten wurden vom W3C in Zusammenarbeit mit der IETF vorangetrieben und sollten den Internet-Datenverkehr weiter stark optimieren. Die Arbeiten an HTTP-NG wurden im Juni 2001 eingestellt.

Beispiel einer HTTP-Kommunikation
Die Kommunikation zwischen dem Client (Browser) und dem Server (Web-Server mit HTTP) wird am Beispiel einer Seitenanforderung aus diesem Glossar deutlich. Im Browser fordert der Anwender die Seite ETHERNET.HTM an.

Die übermittelten statischen Daten im HTTP-Header der Datenpakete beim Aufruf der URL http://www.stefan-lenz.ch/glossar/ethernet.htm aus dem Google-Suchfenster:

http://www.stefan-lenz.ch:80/glossar/ethernet.htm
Client IP = 130.60.208.161
Server IP = 157.161.182.163
Client physical address = 00:48:54:00:E3:47
Server physical address = 00:00:0C:01:52:79
Client port = 1070
Server port = 80 TCP

Client zum Server
GET /glossar/ethernet.htm HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)
Host: www.stefan-lenz.ch
Connection: Keep-Alive

Server zum Client
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Connection: keep-alive
Date: Tue, 25 Jan 2000 12:52:29 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Sun, 05 Dec 1999 19:45:27 GMT
ETag: "d096c347593fbf1:79db2"
Content-Length: 11608

An dieser Stelle liefert der Server dem Client (Browser) die HTML-Datei mit dem Seiteninhalt, der Seitenaufbau im Browser beginnt:

<html>
<head>
</head>
<body>
...
<body>
</html>


Die Auflösung der URL in die IP-Adressen erfolgt mittels DNS, anschliessend wird die IP-Adresse mittels ARP in die physischer Netzwerkadresse übersetzt und eine HTTP-GET-Anfrage an den Server generiert.

Der Server beantwortet die Anfrage zunächst mit dem Code 200 OK, das bedeutet, dass die Seite ETHERNET.HTM im gesuchten Pfad vorhanden ist. Anschliessend werden einige statistische Daten zum Server und zur angeforderten Seite übermittelt, nach der Angabe der tatsächlichen Seitenlänge in Bytes (11608 Bytes) folgt die HTML-Seite.

Wird die Seite nicht gefunden bzw. kann der Server die URL deshalb nicht «auflösen» so beantwortet er die HTTP-GET-Anfrage mit dem Fehlercode «HTTP 404 - Not Found».


Protokoll-Angabe in URL
Für eine vollständige Adresse bzw. URL muss im Internet-Browser das zu verwendende Protokoll für die URL angegeben werden:

Eine vollständige URL-Angabe mit Kommunikations-Protokoll

Wird bei der Adresseingabe das Protokoll vom Benutzer nicht explizit angegeben, so ergänzt der Browser (Internet Explorer, Firefox usw.) http:// vor der Kommunikationsaufnahme mit dem Server automatisch selbst.

Ein aktueller Browser (Internet Explorer, Firefox, oder Opera) beherrscht HTTP und FTP-Protokolle wahlweise im Up- oder Download-Modus. Dadurch wird dem Benutzer einiges an Benutzerkomfort geboten - ein Klick auf einen Link genügt, der Download im FTP- oder HTTP-Stream startet automatisch.