Wie funktioniert das "Web"?

Dieser Artikel soll ein paar grundlegende Dinge erklären, die für die Programmierung von Webseiten vorausgesetzt werden. Hierbei wird der Begriff „Web“ für jenen Bereich des Internets verwendet, auf den üblicherweise mit einem Webbrowser zugegriffen wird.

Client/Server-Konzept

Das Web basiert auf dem Client/Sever-Konzept.

Client

Als Client wird jener Computer bezeichnet, der über einen Webbrowser eine Seite aufruft. Bekommt er eine Seite vom Server geliefert, wird diese im Browser angezeigt.

Server

Ein Server ist ein Computer, der dem Client einen gewissen Dienst zur Verfügung stellt. Dabei läuft dem Computer ein Programm, welches auf einem Netzwerk-Port auf Anfragen wartet. Bekommt das Programm (oder genauer gesagt der Dienst) eine Anfrage, antwortet er entsprechend darauf. Im Idealfall besteht die Antwort von einem Web-Server aus einer Webseite.
Um in einem Netzwerk wie dem Internet eindeutig identifizierbar zu sein, hat jeder Rechner eine eindeutige IP-Adresse (Internet Protocol). Diese kann zum Beispiel so aussehen: 123.34.56.178. Diese Nummern sind für Computer zwar praktisch, für Menschen aber sehr schwer zu merken.
Viel leichter ist es sich sprechende Namen zu merken, wie etwas proggen.org. Solange diese Adresse eindeutig ist, gibt es auch damit kein Problem. Solche Adressen werden URL (Uniform Resource Locator) genannt und sehen zum Beispiel so aus: http://www.proggen.org/doku.php?id=start. Eine URL hat folgendes Schema:

[Protokoll]://[Server].[Domain]/[Pfad]?[Parameter]=[Wert]&[Parameter]=[Wert]

In unserem Beispiel ist der Server „proggen“ unter der Domain „org“, der über HTTP angesprochen wird. Der Pfad zu der Seite lautet „doku.php“. Nach einem Fragezeichen folgen gewissen Werte, die an den Server geschickte werden. Weitere Werte werden mit „&“ abgetrennt.
Für die Umrechnung zwischen URLs und IP-Adressen sind sogenannte DNS-Server (Domain Name System) zuständig. Sie führen Tabellen, in denen die Zuordnungen zwischen URL und IP gelistet sind.

HTTP/HTTPS: Kommunikation zwischen Client und Server

Doch wie verständigen sich jetzt Client und Server? Dafür gibt es ein standardisiertes Protokoll, das HTTP (HyperText Transfer Protocol) genannt wird. Ein Protokoll ist nichts weiter als eine Vorschrift, wie sich 2 oder mehrere Programme miteinander unterhalten müssen. Zum Beispiel muss eine Anfrage einem ganz bestimmten Schema folgen, ebenso wie die Antwort des Servers. Bei HTTP wird nur unverschlüsselter Text übertragen, was natürlich auch ein gewisses Sicherheitsrisiko darstellt. Abhilfe schafft das verschlüsselte Protokoll HTTPS.

HTML/CSS: Darstellung und Formatierung von Inhalten

Jetzt wissen wir wie Client und Server Text austauschen können. Doch Webseiten im Internet beinhalten ja noch viel mehr, wie etwa Bilder und Formatierungen. Um eine Seite optisch zu gestalten, wird die Beschreibungssprache HTML (HyperText Markup Language) verwendet. HTML ist keine Programmiersprache, sie dient nur dazu Inhalt formatieren. Es gibt zwar eine Standardisierung für HTML, jedoch hielten sich vor allem in der Vergangenheit nur wenige an diesen Standard. Heutzutage sollte man dabei wesentlich weniger Probleme haben.
Da HTML in seiner Funktionalität sehr eingeschränkt ist, wird die optische Gestaltung oft mit CSS (Cascading Style Sheets) realisiert.
Über Eingabe-Formulare ist es möglich Werte an den Server zu schicken und eine neue Seite abzufragen. Die Werte im Formular können am Server verarbeitet werden und natürlich in die folgenden Seiten einfließen.

JavaScript: Code am Client ausführen

Eine statische HTML-Seite ist zwar schon ganz schön, aber bestimmt nicht mehr sehr zeitgemäß. Die Programmiersprache JavaScript erlaubt es im Browser des Clients sehr eingeschränkt Code auszuführen. Damit können etwa Animationen dargestellt oder auf Benutzereingabe reagiert werden. Wichtig ist, dass der Code im Browser des Clients ausgeführt wird. Dieser Code hat nichts mit dem Server zu tun!

Ajax: Dynamisches Nachladen von Inhalten

Bis jetzt sind HTML-Formulare unsere einzige Möglichkeit Daten mit dem Server auszutauschen. Dafür muss aber immer eine neue Seite geladen werden. Ajax stellt eine Erweiterung zu JavaScript dar und ermöglicht das dynamische Senden und Empfangen von Daten. Mit JavaScript und Ajax kann man also schon einiges am Client anzeigen, ohne die Seite komplett neu laden zu müssen.

Generierung der Seite am Server

Nun haben wir besprochen wie die Daten am Client verarbeitet werden. Aber wie werden diese Seiten überhaupt am Server erzeugt? Dafür gibt es verschiedene Wege. Es ist möglich die Seite direkt in HTML zu schreiben und in einer .html-Datei verfügbar zu machen. Das ist jedoch sehr unflexibel, vor allem wenn kein JavaScript/Ajax verwendet wird.
Der kompliziertere, aber wesentlich funktionsreichere Weg ist es eine serverseitige Programmiersprache zu verwenden. Wählt der Browser des Clients eine Seite am Server an, wird automatisch vom Server ein Programm ausgeführt, welches eine HTML-Datei erzeugt und an den Client schickt. Webseiten können am Server in vielen beliebigen Programmiersprachen erzeugt werden, einige Beispiele dafür sind PHP, Java, Python, Perl und C++. Diese Programme können dann natürlich verschiedene Funktionen des Servers verwenden, wie zum Beispiel das Abfragen von Daten aus einer Datenbank oder das Anlegen von Dateien.