Unterabschnitte


2.1 Das World Wide Web

Das so genannte World Wide Web (WWW) ist ein Teilbereich des Internets. Neben Diensten wie eMail (SMTP), Dateitransfer (FTP), Terminalemulationen (Telnet), hat sich das WWW in kurzer Zeit sehr stark verbreitet.

Abbildung 2.1: Das World Wide Web
\includegraphics[width=0.80\textwidth,keepaspectratio]{pic/www}

Das WWW wurde Anfang der 90er Jahre am CERN 2.1entwickelt und besteht im Wesentlichen aus einer Vielzahl von (Web-) Servern und (Web-) Browsern, die inzwischen weltweit verteilt sind. Die Webserver stellen für jedermann zugängliche Informationen in einem plattformunabhängigen Format bereit.

Die Nutzer des WWW können mit einem entsprechendem Programm - dem Browser - auf diese Informationen zugreifen und dabei über so genannte Hypertext-Links 2.2direkt zu beliebigen anderen Informationsquellen gelangen, die sich vielleicht mit dem gleichen Thema beschäftigen.

Dieses eigentlich recht simple Prinzip war so durchschlagend, dass die Zahl der Server von unter hundert (Anfang der 90er) auf über 180 Millionen heute (Stand Juli 2003) geradezu explodiert ist.

Schon nach ca. fünf Jahren machte der WWW-Verkehr mehr als die Hälfte des gesamten Internetverkehrs aus.

Abbildung 2.2: Entwicklung der Hosts (Quelle: ISC)
\includegraphics[width=\textwidth,keepaspectratio]{pic/hosts}

Damit ergaben sich zwangsläufig ganz neue Probleme. Das Volumen des WWW hat das Internet fast überrollt. Die nötigen Bandbreiten sind exponentiell gewachsen, Webserver sind wie Pilze aus dem Boden geschossen (die alle auch noch eine eigene IP-Adresse benötigten), und durch die einfache Bedienung fanden immer mehr Anwender den Weg in das Internet.

Hier zeigten sich dann auch sehr schnell einige Unzulänglichkeiten im zugrunde liegenden HTTP-Protokoll:

Für das Bandbreitenproblem und die immer noch hohe Anzahl von TCP-Verbindungen kam schließlich ein (Cache-)Proxyserver ins Spiel...


2.1.1 Der (Web-)Browser

Der Browser 2.4stellt die Schnittstelle zwischen dem Benutzer und dem WWW dar. Er interpretiert die eingegebene Adresse (URL) und erstellt daraus abgeleitet eine Anfrage (Request) an den im URL angegebenen Webserver, sendet diese Anfrage an den Webserver, interpretiert die Antwort (Response) des Webservers, lädt ggf. erforderliche weitere Objekte (z.B. Grafiken) nach, baut daraus die anzuzeigende Seite auf und stellt diese in seinem Fenster dar.

Browser gibt es inzwischen für nahezu alle Betriebssysteme und jeden Geschmack. Die zz. gängigsten Browser sind u.a.:


2.1.2 Der Webserver

Der Webserver stellt Informationen im WWW oder in einem lokalen Netz zur Verfügung. I.d.R. kann jeder, der die Adresse des Servers kennt, diese Informationen mit einem Browser abrufen.

Ein Webserver kann - wie z.B. bei Internet Providern - auch unter mehreren Adressen erreichbar sein. Viel genutzte Server müssen durchaus täglich mehrere Millionen Anfragen von unterschiedlichsten Browsern beantworten.

Die auf einem Webserver zur Verfügung gestellten Informationen bestehen aus einzelnen Objekten. Ein Objekt kann im einfachsten Fall eine einfache Textdatei sein, ein Bild (meist GIF-, JPG- oder PNG-Format), ein Tondokument (z.B. MP3-Format) oder das Ergebnis einer komplexen Datenbankabfrage.

Weit verbreitete Webserver sind u.a.:


2.1.3 Der URL

Jedes Objekt im WWW hat eine eindeutige Adresse, den URL (Uniform Resource Locator) [#!RFC1035!#,#!RFC1123!#,#!RFC1738!#]. Der URL besteht aus mehreren Teilen und enthält alle Informationen, die für das Auffinden des Objektes im WWW nötig sind.

Beispiel für einen URL:

http://www.squid-cache.org:80/squidnow.html

http://
Hiermit wird das zu verwendende Protokoll, also HTTP, bestimmt.

www.squid-cache.org
Der Server auf dem das gewünschte Objekt zu finden ist.

:80
Der Port auf dem Server, über den HTTP-Anfragen angenommen werden.

/squidnow.html
Der lokale Pfad auf dem Server (hier das root-Verzeichnis "/") und der Name des eigentlichen Objekts squidnow.html.

Es handelt sich also um ein HTML-Dokument mit dem Namen squidnow.html, das im root-Verzeichnis "/" des Servers www.squid-cache.org zu finden ist und per HTTP-Protokoll über Port 80 des Servers abgerufen werden kann.


2.1.4 Das HTTP

Das HTTP (HyperText Transfer Protocol) [#!RFC1123!#,#!RFC1945!#,#!RFC2616!#] ist das grundlegende Protokoll für das World Wide Web (WWW). Es regelt umfassend die Kommunikation zwischen einem Browser (Client) und einem Webserver (Server). Es unterscheidet dabei grundsätzlich die Anfragen vom Client (Request) und die Antworten vom Server (Response).

Abbildung 2.3: Client-Server-Prinzip
\includegraphics[width=0.50\textwidth,keepaspectratio]{pic/client_server}

Ein Request besteht als reine Anfrage meist nur aus wenigen hundert Bytes und beinhaltet nur die Adresse des angefragten Objekts sowie einige zusätzliche Informationen, die der Client dem Server zur weiteren Verarbeitung mitteilen will.

Der Response, als Antwort des Servers, enthält i.d.R. das angefragte Objekt selbst und kann je nach Objekt sehr umfangreich sein (z.B. bei größeren Downloads).

Das Protokoll arbeitet weitgehend im Klartext. Jeder Request oder Response besteht aus einem Header, der Statusinformationen oder Optionen zu einer Anfrage oder einem Objekt enthält und ggf. einem Datenteil, der den eigentlichen Inhalt, z.B. das Objekt selbst, enthält.


2.1.5 Die Kommunikation

Eine einfache HTTP-Anfrage nach http://www.squid-cache.org/ wird wie folgt abgearbeitet:

Der URL wird wie unter [2.1.3] beschrieben zerlegt.

Der Server-Name www.squid-cache.org wird über DNS aufgelöst. In diesem Beispiel würde hierfür die IP-Adresse des Servers 206.168.0.9 ausgegeben.

Da in der URL kein Port angegeben wurde, stellt der Client nun eine Verbindung mit dem Server 206.168.0.9 auf dem Standard HTTP-Port 80 her.

Der Client sendet eine Anfrage (Request) mit folgendem Inhalt:

GET / HTTP/1.1
Host: www.squid-cache.org
...

Es wird eine GET-Anfrage nach dem Objekt "/" mit der Protokollversion HTTP/1.1 an den Host www.squid-cache.org gestellt. In der Anfrage werden i.d.R. noch weitere Daten an den Server übergeben, wie z.B. IP-Adresse des Clients, Browserversion, bevorzugte Sprachen, ...
Das Beispiel zeigt die einfachste mögliche Version einer Anfrage. Diese beiden Zeilen sind mindestens erforderlich für eine Anfrage nach HTTP 1.1.

Nach HTTP/1.0 würde die GET-Zeile allein ausreichen, da hiernach jeder Host eine eigene IP-Adresse besitzt. Die Zuordnung Host - IP-Adresse ist damit eindeutig.

Nach HTTP/1.1 werden jedoch auch virtuelle Hosts unterstützt, d.h. auf einem Server mit einer IP-Adresse können sich mehrere Webhosts mit unterschiedlichen Host-Namen befinden. Damit der angesprochene Server weiß, welcher der virtuellen Hosts gemeint ist, muss dieser in der Anfrage mit übertragen werden.

Hat der Server den (virtuellen) Host www.squid-cache.org und das angefragte Objekt "/" gefunden, schickt er dem Client eine Antwort (Response) mit folgendem Inhalt:

HTTP/1.1 200 OK
Date: Mon, 29 Jul 2002 19:43:45 GMT
Server: Apache/1.3.26 (Unix)
Cache-Control: max-age=86400
Expires: Tue, 30 Jul 2002 19:43:45 GMT
Last-Modified: Thu, 30 May 2002 01:31:01 GMT
ETag: "303215-15b8-3cf580d5"
Accept-Ranges: bytes
Content-Length: 5560
Content-Type: text/html

<HTML>
<HEAD>
<TITLE>Squid Web Proxy Cache</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff">
...

Der Server antwortet mit Statuscode 200 (OK), dass er das angefragte Objekt gefunden hat und ebenfalls mit HTTP/1.1 an den Client überträgt.

Im folgenden Header 2.5werden noch einige Informationen über den Server und das Dokument übertragen und dann folgt nach einer Leerzeile das eigentliche Dokument (ab <HTML> ).

Abbildung 2.4: Client-Server-Kommunikation
\includegraphics[width=0.70\textwidth,keepaspectratio]{pic/client_server1}

Da eine HTTP-Kommunikation in reinem Klartext erfolgt, können Sie diese Verbindung auch ganz einfach ohne Browser manuell testen. Stellen Sie mit einem einfachen Terminalprogramm (z.B. mit Telnet) eine Verbindung mit dem Webserver auf Port 80 her und geben Sie manuell die o.g. Anfrage ein. Nach der Eingabe der Request-Daten müssen Sie zum Abschluss zweimal mit Return bestätigen (eine Leerzeile wird als Ende des Request gewertet).
In der folgenden Abbildung sehen Sie Ihre Eingaben (kursiv) und die Rückmeldung des Webservers:

telnet www.squid-cache.org 80

Trying 206.168.0.9...
Connected to www.squid-cache.org.
Escape character is '^]'.

GET / HTTP/1.1
Host: www.squid-cache.org

HTTP/1.1 200 OK
Date: Mon, 29 Jul 2002 19:43:45 GMT
Server: Apache/1.3.26 (Unix)
Cache-Control: max-age=86400
Expires: Tue, 30 Jul 2002 19:43:45 GMT
Last-Modified: Thu, 30 May 2002 01:31:01 GMT
ETag: "303215-15b8-3cf580d5"
Accept-Ranges: bytes
Content-Length: 5560
Content-Type: text/html

<HTML>
<HEAD>
<TITLE>Squid Web Proxy Cache</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff">
...


(c)2003 dpunkt.Verlag - mail(a)squid-handbuch.de