Serverzeit:   25.06.2017 - 03:57

Wie funktioniert eigentlich ein Webserver?

von Benjamin Jung am 09.02.2014

Ein Webserver ist nichts anderes wie ein Computer / Server, auf welchem eine Webseite und dessen System gespeichert sind. Meistens wird als Betriebssystem ein Linux-System gewählt. Der Computer ist meistens in einem Rechenzentrum aufgestellt und ist mit dem Internet verbunden. In diesem Beitrag wollen wir Ihnen den Webserver etwas näher erklären.


Die DNS-Adresse

Die eigentliche Webseitenadresse (also z. B. www.homepage-webhilfe.de) ist lediglich eine DNS-Adresse. Diese DNS-Adresse leitet dann auf die jeweilige IP-Adresse der Webseite um. Diese IP-Adresse wechselt aber aus Sicherheitsgründen meistens in einem 24-Stunden-Takt. Der Vorteil an der DNS-Adresse ist einfach: Sie ist einfach zu merken und bleibt immer gleich. Sobald sich nämlich die IP-Adresse geändert hat, wird die neue IP-Adresse an den DNS-Server geschickt, sodass mit der richtigen Eingabe der DNS-Adresse auf die richtige IP-Adresse weitergeleitet werden kann. Vielleicht ist Ihnen in der Statusleiste ihres Browsers schon ein Mal aufgefallen, dass dort der Status-Hinweis "Host wird aufgelöst …" angezeigt wird. Hierbei wird vom DNS-Server abgerufen, auf welcher IP-Adresse sich die Webseite in Wirklichkeit befindet.


Die Webserver-Anfrage

Vielleicht haben Sie schon ein Mal etwas von einem "Request" gehört. "Request" ist englisch und heißt übersetzt Anfrage. Der Webserver ist dauernd auf Bereitschaft und horcht einen bestimmten Port ab. Bei einer normalen Webseite wird der Port 8080 abgehört (HTTP-Port). Bei verschlüsselten Webseiten wird der Port 430 abgehört (HTTPS-Port). Sobald der Webbrowser, nach ihrer Eingabe, die IP-Adresse erhalten hat, wird an den Webserver ein Befehl geschickt. Dabei handelt es sich um einen GET- oder POST-Befehl. Wenn Sie bereits mit PHP, Perl oder JavaScript gearbeitet haben, dann sollten Ihnen die GET- und POST-Methoden bekannt sein. Der Befehl enthält des Weiteren den Pfad der Datei die / des Ordners der vom Browser aufgerufen werden solle. Eine Anfrage könnte bspw. so aussehen:

GET /Blog/articles/wie-bekomme-ich-mehr-besucher.php HTTP/1.1
Host: www.homepage-webhilfe.de

Der Webserver prüft die Anforderung

Handelt es sich bei dem Request-Pfad um einen Ordner muss je nach Serverkonfiguration der Server prüfen ob in diesem Ordner eine Index- oder Default-Datei vorhanden ist oder wenn nicht ob dann die Ordnerstruktur angezeigt werden darf oder ein "403 Forbidden"-Fehler angezeigt wird. Natürlich muss auch noch überprüft werden ob die Datei / der Ordner überhaupt existiert und dann ein "404 Not Found"-Fehler angezeigt werden muss. Bei einem Apache-Server können wir mit der Datei .htaccess die Konfiguration des Servers stark beeinflussen und selbst Fehler-Seiten anzeigen lassen.


Der Browser erhält die Daten

Nachdem nun alle Prüfungen durchgeführt worden sind, kann der Webserver die Daten zurück an den Browser senden. Dies ist deshalb möglich, da der Browser am Anfang mit dem Webserver eine feste Verbindung hergestellt hat, über welche Daten auch wieder zurückgesendet werden können. Als erstes muss der Webserver den sogenannten "Header" senden. Der "Header" enthält die Kopfdaten für den Browser. Der untere Code zeigt ein Beispiel für einen validen Header. Nachdem der Browser nun den "Header" erhalten hat, weiß der Browser über den Status auf dem Webserver bescheid. In den Kopfdaten sind einige Werte enthalten die für den Browser sehr wichtig sind: MIME-Typ, Sprache, Datei-Länge und den Status (normalerweise "200 OK"). Bei dem Status handelt es sich um den HTTP-Status. Dieser Status kann in Fehlerfällen auch z. B. "403 Forbidden" oder "404 Not Found" sein. Nachdem die Kopfdaten gesendet worden sind, können wir auch die eigentliche Daten senden. Dazu muss der Webserver die Datei die vom Webbrowser angefordert ist einlesen, die Datei der Fehlerseite einlesen oder andere Meldungen erstellen und im Byte-Format an den Browser zurücksenden. Wenn Sie auf der Webseite nun bspw. auf einen Link klicken, geht das ganze Spiel von vorne los.

HTTP/1.1 200 OK
Server: Apache/1.3.29 (Unix)
Content-Length: 8423
Content-Language: de
Content-Type: text/html

Wie funktioniert das dann mit PHP?

Wenn auf dem Webserver eine Sprache wie PHP verfügbar ist, dann benötigen wir noch einen Zwischenschritt. PHP ist ein plattformunabhängiges Programm, welches auf dem Webserver gespeichert ist, wenn der Server PHP unterstützt. Wenn die "Request-Datei" existiert und es sich um eine PHP-Datei handelt, dann wird dem PHP-Programm diese Datei übergeben. Nun bearbeitet PHP diese Datei führt die darin enthaltenen Aufgaben durch und übergibt im Idealfall das HTML-Skript an den Webserver, welcher dann wiederum den Inhalt an den Browser zurücksendet. Je nach Konfiguration des PHP-Programms (php.ini) ist es auch möglich, dass die Fehler angezeigt und zurückgesendet werden.


Ein eigenen Webserver

Viele Software-Programmierer möchten ein Mal in ihrem Leben einen Webserver programmieren. Aber wie macht man das eigentlich? Generell kann man erstmal jeden Computer mit irgendeinem Betriebssystem verwenden. Das Betriebssystem muss hier keineswegs Linux sein, auch unter Windows können wir einen eigenen Webserver zum Laufen bekommen. Bevor man damit jedoch anfängt sollte man sich ausführlich mit dem Thema beschäftigen. Das Verstehen dieses Blog-Artikels hilft dabei sehr weiter, da hier schon die wichtigsten Grundlagen erklärt werden. Als Programmiersprache kann man so ziemlich jede Programmiersprache verwenden, die Netzwerk-Support und Features wie TCP-Listener unterstützen. Man könnte also problemlos C / C++ oder aber auch C# verwenden. Das Programm besteht dann hauptsächlich aus einer Endlosschleife und sobald eine Datenbindung zum Server hergestellt worden ist, werden bestimmte Ereignisse ausgelöst (Prüfen ob Datei existiert, Datei einlesen, …). Ein einfachen Webserver ohne jegliche Unterstützung von Sonderfunktionen lässt sich für Anfänger in wenigen Tagen programmieren. Für Fortgeschrittene auch innerhalb eines Tages. Um jedoch einen Webserver zu programmieren, der einige Sonderfunktionen unterstützt und des Weiteren sehr sicher und nicht absturzgefährdend ist, benötigt selbst als Fortgeschrittener mehrere Wochen bis Monate. Wer also dem Apache- oder dem IIS-Server Konkurrenz machen möchte braucht sehr viel Erfahrung, Geduld, Programmierkenntnisse und Interesse.


Fazit

Die Funktionsweise eines Webservers ist sehr interessant, wenn wir jedoch bedenken, dass ein guter Webserver alle möglichen HTTP-Fehler behandeln muss und auf keinen Fall abstürzen darf ist ein Webserver auf der anderen Seite auch sehr kompliziert. Der bekannteste Webserver ist der Apache und der IIS von Microsoft. Für einen sehr guten Webserver kommen noch einige weitere Features dazu: MySQL, Mailing-Support, … Wer sich für die Programmieren interessiert, der kann auch mal versuchen einen eigenen Webserver zu programmieren.

Hallo Gast  •  Autorenanmeldung
Copyright 2013 - 2014 Homepage-Webhilfe (Benjamin Jung)   •   Homepage-Webhilfe-Blog   •   Blog-Version 1.5   •   Powered by Benjamin Jung