Marvin Rabe

Wie das Surfen im Internet funktioniert

In diesem Beitrag bringe ich dir die Funktionsweise eines Browsers näher. Erst erläutere ich dir anhand eines einfachen Beispiels, wie es funktioniert und anschließend gebe ich einen Einblick in das HTTP-Protokol, dass für den Abruf von Webseiten im Internet verwendet wird.

Besuch im Restaurant

Es ist Mittag. Du setzt dich mit knurrendem Magen in ein Restaurant. Es ist viel los und der Kellner bemerkt dich erst nicht. Du rufst den Kellner zu dir und fragst ihn nach der Speisekarte, die er dir auch nach wenige Minuten bringt.

Noch bist du dir nicht sicher, was du essen willst, aber du bestellst schon mal ein kühles Bier, um die Wartezeit zu überbrücken. Der Kellner nimmt die Bestellung auf und kehrt mit einem frisch gezapften Bier wieder.

Jetzt hast du dich auch für eine Hauptspeise entscheiden können. Du bestellst die Spaghetti und nach einer kurzen Wartezeit werden auch diese vom Kellner gebracht.

Grafisch würde dieser ganze Ablauf so aussehen:

Ablauf einer Bestellung im Restaurant

Nachdem du aufgegessen hast, bist du satt und fragst dich, wieso ich dir das erzähle? Was hat ein Restaurantbesuch mit dem Internet zu tun? Lass es mich dir verraten. Die Funktionsweise ist ähnlich.

Aufruf einer Webseite

Was passierte, als du diesen Beitrag aufgerufen hast?

Dein Webbrowser hat eine HTML-Datei von meinem Webserver angefordert, in der beschrieben steht, wie der Inhalt der Seite aufgebaut ist.

Anschließend hat der Browser sämtliche weitere Ressourcen nachgeladen, die in dieser Datei verwendet werden. Beispielsweise Stylesheets (CSS-Dateien beschreiben das Design der Seite), Bilder, usw.

Sobald alle Inhalte geladen wurden, zeigt der Browser dir die Seite an und der Ladevorgang ist damit abgeschlossen.

Ablauf eines Ladevorgangs einer Webseite

Wie du sehen kannst, haben wir anstelle des Kunden einen Webbrowser und statt des Kellners haben wir einen Webserver. Ansonsten bleibt es aber das gleiche Prinzip.

Solltest du nun beispielsweise auf den Menüpunkt Newsletter klicken (was eine gute Idee wäre, um den Newsletter zu abonnieren), dann beginnt der ganze Prozess von vorn. Erst wird die neue HTML-Datei der Newsletter Seite geladen, dann die restlichen Dateien.

Verbindung zum Server bleibt nicht bestehen

Wichtig zu verstehen ist, dass jede Anfrage eine neue Verbindung zum Server aufnimmt.

Während du diesen Beitrag liest, bist du nicht mehr mit dem Server verbunden. Alle Dateien wurden von deinem Browser gespeichert und werden nur angezeigt.

Erst wenn du dich entschließt eine andere Seite aufzurufen (z. B. du klickst auf einen Link), wird wieder eine Verbindung zum Server aufgenommen, um die neuen Inhalte zu laden.

Wir können dies mit dem Kellner vergleichen. Dieser macht schließlich auch etwas anderes, nachdem er deine Bestellung geliefert hat.

Aufbau der Kommunikation über HTTP

Die Kommunikation erfolgt mit dem Protokoll HTTP (Abkürzung für Hypertext Transfer Protocol) statt. Vereinfacht ist das Protokoll wie folgt.

Wenn du eine Datei aufrufen willst, wird eine Verbindung mit dem Server hergestellt und überträgt folgenden Request:

GET /index.html HTTP/1.1
Host: example.com

Die erste Zeile gibt an welche Datei mit welcher HTTP-Version abgerufen werden soll. In der zweiten Zeile steht der Host-Name des Servers. Je nachdem können aber auch mehr Informationen enthalten sein, wie z.B. Cookies, Parameter, Formular-Daten, usw.

Es wird immer nur eine Datei pro Request abgefragt. Sollten weitere Dateien benötigt werden, werden zusätzliche Requests gestellt.

Der Server beantwortet daraufhin die Anfrage mit einer Response:

HTTP/1.1 200 OK
Date: Mon, 22 Aug 2016 13:37:42 GMT
Content-Type: text/html

<html>
<head>
  <title>Example</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <img src="logo.png">
  <p>Welcome to example.com!</p>
</body>
</html>

Die Antwort ist in zwei Teile geteilt: Header (Kopfzeile) und Inhalt. Diese sind durch eine Leerzeile voneinander getrennt. Alles nach der Leerzeile ist der Inhalt.

In der ersten Zeile des Headers befindet sich die verwendete HTTP-Version und der Statuscode (z. B. 200 OK für keine Fehler, 404 Not Found für Datei nicht gefunden, Informationen zu weiteren Statuscodes). In den nachfolgenden Zeilen befinden sich weitere Informationen zum Inhalt. Wann wurde die Antwort gesendet, was für eine Dateityp ist es, usw.

Im Inhalt befindet sich - wer hätte es erwartet - der Inhalt. In diesem Beispiel ist es eine HTML-Datei. Es kann aber auch jeder andere Dateityp sein.

Was für Daten sind möglich?

Mit HTTP gibt es keine Festlegung auf bestimmte Datentypen. Alle Dateien können prinzipiell über HTTP bereitgestellt werden. Das Protokoll gibt lediglich an, wie die Kommunikation zwischen Client (z. B. ein Webbrowser) und Server erfolgt.

Für die Header gibt es einige Festlegungen (Liste der HTTP-Headerfelder), allerdings können hier auch selbstverständlich eigene Felder eingeführt werden.

Diese Möglichkeiten, sowohl beliebige Daten als auch eigene Header anzugeben, macht HTTP sehr flexibel. Daher wird HTTP häufig für Schnittstellen zwischen verschiedene Anwendungen benutzt (z. B. zur Verbindung von Smartphone Apps zum Server).

Zusammenfassung und Ausblick

Zusammengefasst ist HTTP ein Protokoll zur einheitlichen Übertragung von Daten. Dabei fragt der Client die Daten in einer bestimmten Art vom Server an, die ihm dann im Erfolgsfall geliefert werden.

Dieser Beitrag kratzt lediglich an der Oberfläche. Es gibt noch viel mehr zu entdecken. HTTP bietet unterschiedliche Anfragemethoden (GET, POST, …), Authentifizierung, Caching und Kompression. Wie funktionieren die? Die neue Version HTTP/2 ist auch auf dem Weg und es lohnt sich ein Blick darauf zu werfen. Kannst du die Neuerung von HTTP/2 zur hier dargestellten Funktionsweise entdecken? Schreib es in die Kommentare.

Verwendete Symbole sind von Icons8.