Inhalt ! Was ist neu? | Gästebuch
Sie sind hier: www.netz-meister.de > Marko Meister > more than you get wi ... > Papers > HTTP-Server: Anforde ...


HTTP-Server: Anforderungen und Technologien

Vortrag im Rahmen des medientechnischen Kolloquiums (Fakultät Medien, Bauhaus-Universität Weimar),
6.11.1996,
Marko Meister

Zielstellung

In diesem Vortrag wird beschrieben werden, was ein HTTP-Server ist, welche Anforderungen an eine solche Software gestellt werden und mit welchen Mitteln bestimmte Anforderungen durch die Software erfüllt werden. Dabei wird der letzte Punkt eher exemplarisch behandelt werden. Das Hauptaugenmerk liegt auf der Darstellung der Anforderungen. Ziel ist nicht, bestimmte Implementationen vorzustellen, sondern eher Verständnis für die Funktionsweise einer solchen Software zu schaffen. Dieses Verständnis ist eine Grundvoraussetzung für die optimale Auswahl und den effizienten Betrieb solcher Systeme.

Grundlagen

Internet

Das Internet hat durch das World-Wide Web einen immensen Wachstums- und Bekanntheitsschub erfahren. Dadurch werden immer mehr Menschen mit den Technologien des Internet konfrontiert. Neben der Nutzung der Informationen die durch das Internet verfügbar gemacht werden, steigt auch das Interesse, selbst Informationen bereitzustellen. Ein Schritt auf dem Weg zum Informationsbereitsteller ist die Auswahl und der Betrieb eines HTTP Servers. Weitere grundlegende Informationen zum Internet sind in [MEI96] zu finden.

Client-Server

Das World-Wide Web basiert wie viele andere Dienste des Internet auf einer Client-Server Architektur. (interessierte Menschen können sich das Beispiel mit dem Kellner und dem Gast in [MEI96] zum besseren Verständnis der Client-Server Architektur ansehen). Informationsanbieter benutzen zur Veröffentlichung ihrer Daten einen HTTP-Server.

HTTP

World-Wide Web Server und Client tauschen Daten nach einem genau vorgeschriebenen Schema aus. Dieses Schema beinhaltet formalisierte Kommunikationsregeln. Solche Schemata werden auch Protokolle genannt. Das Protokoll auf dem das World-Wide Web basiert heißt Hypertext transmission Protocol (HTTP). HTTP ist ein verbindungsloses Protokoll. Jeder Datenaustausch beinhaltet lediglich eine Anforderung durch den Client (request) und eine entsprechende Antwort durch den Server (response). Tiefergehende Informationen zu diesem Protokoll sind in [HTT96] zu finden.

Betriebssysteme / Plattformen

Wie jede Software benötigt auch ein HTTP-Server ein Betriebssystem, welches die Schnittstelle zur verwendeten Hardware zur Verfügung stellt. Prinzipiell kann festgestellt werden, daß für nahezu alle Computer / Betriebssysteme HTTP-Serversoftware zur Verfügung steht. Natürlich sollte aber beachtet werden, daß nicht jedes Betriebssystem gleich gut für den Einsatz einer solchen Software geeignet ist. Durch die speziellen Anforderungen an HTTP-Server scheiden bestimmte Betriebssysteme aber von vornherein für den tagtäglichen, nutzbringenden Einsatz aus. Prinzipiell eignen sich die Betriebssysteme besser, die hohe Betriebssicherheit bieten, mehrprozeßfähig sind und Netzwerkkommunikation über TCP/IP integriert haben. Solche Betriebssysteme sind im allgemeinen die UNIX Derivate aber auch z.B. Windows NT. Bei der Auswahl der Hardware für einen HTTP-Server spielt neben dem Betriebssystem auch die zu erwartende Belastung des Servers eine Rolle.

Anforderungen an HTTP-Server

allgemeine Anforderungen

Ein HTTP-Server muß in erster Linie auf die Anforderungen, die ihm ein Client über HTTP mitteilt, reagieren können. Dies ist die Grundanforderung an eine solche Software. Es existieren aber noch weitere Anforderungen, die sich zum teil aus dieser Grundanforderung ergeben.

Betriebssicherheit

Ein HTTP-Server beantwortet in der Regel 24 Stunden am Tag Anforderungen von Clients und das an jedem Tag im Jahr. Die Software sollte also möglichst permanent ohne Unterbrechung laufen. Um dies zu erreichen, sollte ein solches System möglichst nur dann seine Arbeit unterbrechen, wenn dies durch den Betreiber gefordert ist. HTTP Server sollten also sehr robust konzipiert und absturzsicher konzipiert sein. In diesem Zusammenhang ist zu erwähnen, daß auch dynamische Konfigurationsänderungen während der Laufzeit des HTTP-Servers möglich sein sollten. Dadurch wird eine hohe Verfügbarkeit und Flexibilität des Servers gewährleistet. Weiterhin sollte ein HTTP-Server keine Möglichkeit bieten, das Fremde unerlaubten Zugriff auf das System erhalten. Bei Betriebsystemen, die mehrere Nutzer mit unterschiedlichen Privilegien verwalten können, sollte der HTTP-Server in einem Nutzerkontext mit möglichst weit eingeschränkten Privilegien ausgeführt werden können.

Konfigurationsmöglichkeiten

Ein HTTP-Server sollte möglichst bis ins letzte Detail vom Anwender konfigurierbar sein. Dadurch ergibt sich ein Höchstmaß an Flexibilität. Natürlich führt dies in der Regel dazu, daß sehr viel Fachwissen notwendig ist, um einen HTTP-Server optimal zu konfigurieren. Auch die Art und Weise wie die Konfiguration erfolgt, wirkt sich in der Regel auf die Akzeptanz einer solchen Software aus. So ist es für einen wenig versierten Benutzer sicher einfacher, seine gewohnte Browserumgebung auch für die Konfiguration des HTTP-Servers zu verwenden als in irgendwelchen Konfigurationsdateien irgendwelche Optionen einzutragen. Zu beachten ist allerdings, daß eine graphische Oberfläche noch lange nicht bedeutet, daß die Konfiguration einfach von statten geht.

Zugriffssteuerung / Abhörsicherheit, Verschlüsselung

In vielen Fällen ist es in der Praxis sinnvoll, bestimmt Informationen nur für bestimmte Nutzer zur Verfügung zu stellen. Aus diesem Grund bieten viele HTTP-Server die Möglichkeit, den Zugriff auf Daten zu steuern. Soll verhindert werden, daß Daten die übertragen werden, von dritten unberechtigterweise mitgehört werden, so müssen die Daten auf geeignete Weise verschlüsselt werden. Hierfür stehen in der Praxis zwei Methoden gegenüber. Secure socket Layer (SSL) und secure Hypertext transmission protocol (SHTTP). SSL bietet dabei den Vorteil, daß theoretisch jeder Browser benutzt werden kann, da SSL als Schicht zwischen den Browser und das Betriebssystem geschoben werden kann. SHTTP erfordert dagegen eigens entwickelte Browsersoftware.

Redirection, virtuelle Verzeichnisse, Aliase, virtuelle Server etc.

Es gibt viele nützliche Kleinigkeiten, die den Betrieb eines HTTP-Servers vereinfachen können. So sollte es z.B. möglich sein, bestimmte Anforderungen mit einem URL zu beantworten. Diese Technik ist eine Art Umleitung einer Anforderung. Auch virtuelle Verzeichnisse (Aliase) oder virtuelle Server vereinfachen die Strukturierung eines Servers.

Buchführung über Aktivitäten (access- / errorlog etc.)

Ein HTTP-Server sollte jede seiner Aktivitäten dokumentieren. Diese Informationen sind für den Betreiber eines solchen Systems wichtig, um Rückschlüsse auf die Beliebtheit und Akzeptanz seiner Informationen zu ziehen (accesslog). Bei der Administration eines HTTP-Server helfen diese Informationen dabei, das System zu optimieren bzw. Fehler und Inkonsistenzen (errorlog) aufzudecken.

Erweiterbarkeit (CGI, API)

Die Flexibilität und die Einsatzmöglichkeiten eines HTTP-Servers lassen sich sehr stark vergrössern, wenn der HTTP-Server erweiterbar ist. Um einem HTTP-Server erweiterte Funktionalitäten zur Verfügung zu stellen, muß der Server zumindest das Common Gateway Interface (CGI) unterstützen. Mit Hilfe dieser Schnittstelle ist es möglich, Programme zu schreiben, deren Ergebnisse über den Server für jeden HTTP-Client zur Verfügung gestellt werden (siehe auch [CGI96]). HTTP-Server, die ein Application Programmers Interface zur Verfügung stellen, bieten noch flexiblere Möglichkeiten der Integration von externen Programmen. API-basierte Programme bieten im allgemeinen höhere Performance, sind aber schwieriger zu entwickeln. Zudem müssen sie meist speziell auf das API eines speziellen HTTP-Servers zugeschnitten werden und sind deshalb nur schwer portierbar. Für CGI-Applikationen gilt dies nicht in dem Maße.

Performance

Die Performance ist meist das erste Kriterium, welches in den Beschreibungen der speziellen HTTP-Server aufgeführt wird. In diesem Vortrag wird die Performance aber erst jetzt angesprochen. Dies hat seinen Grund. Im Normalfall spielt die Performance einer HTTP-Serversoftware erst dann eine entscheidende Rolle, wenn konkurrierende Clients den Server so stark belasten, daß Wartezeiten entstehen. Beim Zugriff über das Internet entstehen die Wartezeiten aber im Normalfall durch die geringe Bandbreite der Netzwerkverbindungen oder durch deren Überlastung. Dies ist auch ein Grund, warum für den Betrieb eines einfachen HTTP-Servers (ohne Anbindung von rechenintensiven externen Programmen) oft ein Low-Cost Computer ausreichend ist. Zudem ist der Preis für schnellere Hardware oft niedriger als der Preis für Software mit mehr Performance. Trotzdem sollte der Performance eines WWW-Servers Beachtung geschenkt werden, zumal wenn Produkte verglichen werden, die ansonsten gleiche Merkmale besitzen. In Fällen, wo die Beschränkung nicht durch das Netzwerk besteht, spielt die Performance natürlich eine größere Rolle als im hier beschriebenen Normalfall. Solche Fälle sind z.B. Intranet-Lösungen und der Einsatz von rechenintensiven Programmen, die über CGI oder API an den HTTP-Server angebunden sind.

verschiedene Technologien

Techniken zur Requestbehandlung

linear
Der Server nimmt eine Anforderung entgegen und reagiert mit einer Antwort. Es existiert nur ein Prozeß. Während der Beantwortung können keine weiteren Requests entgegengenommen werden.
Simple fork
Bei einem eintreffenden Request generiert die Serversoftware einen neuen Prozeß. Dieser Prozeß übernimmt die Beantwortung der Anforderung. Der Masterprozeß kann dann sofort wieder auf neue Anforderungen hören. (Beispiel ist z.B. der CERN 3.0 Server und NCSA vor version 1.4.
Pre-forking
Beim Start des HTTP-Servers erzeugt der Hauptprozeß eine bestimmte Anzahl von Kindprozessen. Diesen Kindprozessen wird bei Bedarf die Beantwortung einer Anfrage übergeben. Diese Vorgehensweise ist günstiger, als normales forking, da das Erzeugen neuer Kindprozesse wertvolle Zeit verbraucht. Beispiel ist z.B. Netscape Netsite Server, Apache, NCSA ab 1.4).

Requestbehandlungsmethoden

Erhöhung von Flexibilität

Um die Flexiblität eines HTTP-Servers zu erhöhen gibt es verschiedene Methoden. Solche Methoden sind SSI, SSS, CGI und API. Jede dieser Methoden hat ihre speziellen Einsatzgebiete. Alle Methoden dienen der Erhöhung der Flexibilität des HTTP-Servers und der Bereitstellung dynamischer Dokumente.
Server-Side Includes (SSI)
Die Dokumente werden mit speziellen Tags ausgezeichnet. Der Server ersetzt die Tags durch entsprechende Inhalte, wenn das Dokument von einem Client angefordert wird. Beispiel ist z.B. das Last-Modified SSI.
Server-Side Scripting (SSS)
SSS ist eine neue Variante der Server-Side Includes. Das Dokument enthält Befehle, die durch den Server ausgeführt werden (nicht zu verwechseln mit Java Script o.ä.). Die Ausgaben des Scriptes werden in das Dokument eingefügt und an den Client geschickt.
Common Gateway Interface (CGI)
Der Server startet ein externes Programm welches ein vollständiges Dokument erzeugt. Dieses Dokument wird über den Server an den Client geschickt. Weitergehende Informationen zu CGI unter [CGI96]
Application Programming Interface (API)
Programmteile werden als Komponenten des Servers geladen, sind also eng an den Server gekoppelt. Diese Programmteile erweitern die Funktionalität des HTTP-Servers.

 Methodenvergleich

Diejenigen Anwender, die einen HTTP-Server in erster Linie zur Bereitstellung von Informationen betreiben, sind am besten mit SSI, SSS bzw. CGI-Programmen beraten. Diese Methoden bieten eine in vielen Fällen ausreichende Performance und sind zudem einfach zu benutzen. Programme die auf eine HTTP-Server API aufsetzen haben dem gegenüber einen entscheidenden Nachteil. Entwicklung, Test und Wartung solcher Programme ist erheblich kostenintensiver. Es ist fast unmöglich, API-basierte Programme auf einer anderen HTTP-Server einzusetzen, ohne das gesamte Programm umzuschreiben. API-basierte Programme sind aber in jedem Fall ressourcenschonender.

vgl. [DEN96]

Übersicht über existierende HTTP-Server Software

Im Internet finden sich zu allen existierenden HTTP-Servern nähere Informationen: Eine Liste mit ca. 100 verschiedenen Systemen und den zugehörigen Adressen im Netz befindet sich unter [SER96]

Die folgenden Grafiken und Tabellen sollen die Aufteilung des HTTP-Servermarktes auf die verschiedenen Hersteller illustrieren.

plot.1 picture

plot.3 picture

Server Software Anzahl Prozent

Apache 177793 38.48
NCSA 69238 14.99
Microsoft-Internet-Information-Server 36530 7.91
Netscape-Communications 27618 5.98
Netscape-Commerce 26639 5.77
CERN 22729 4.92
WebSite 10498 2.27
WebSitePro 8793 1.90
WebSTAR 8567 1.85
Microsoft-IIS 7429 1.61

Originalquelle: http://www.netcraft.co.uk

Ausblick und Zusammenfassung

Es gibt sehr viele leistungsfähige HTTP-Serversysteme. Ein Teil dieser Systeme ist sogar kostenlos erhältlich, wenn man das Risiko der Benutzung von Free- und Shareware außer Acht läßt. Bei der Auswahl der Hardware sollte immer beachtet werden, welche Anforderungen an den HTTP-Server gestellt werden. Für den Betrieb eines einfachen HTTP-Servers genügt in der Regel bereits ein PC mit INTEL Pentium 75 Prozessor und genügend Speicher. Es muß also nicht unbedingt sehr viel Geld für die Installation und den Betrieb eines HTTP-Servers ausgegeben werden.

Integration von HTTP-Servern in Betriebssysteme

Die Entwicklung im Bereich der HTTP-Server wird sicher weitergehen. Es ist nicht auszuschließen, daß in Zukunft viele Betriebssysteme einen HTTP-Server integrieren. Wer z.B. Windows NT 4.0 Server installiert, hat die Möglichkeit den IIS gleich mitzuinstallieren. Eine andere Entwicklungsrichtung wäre die Erstellung und Bearbeitung von Dokumenten mit Hilfe des Servers. Beispiel hierfür ist FrontPage.

Weiterentwicklung von HTTP

Zukünftige Weiterentwicklungen für HTTP werden sicher auf eine höhere Sicherheit im Netz abzielen. Dabei sind insbesondere SSL und SHTTP zu nennen. Die verbesserte Sicherheit im World-Wide Web wird besonders die kommerzielle Nutzung fördern. Aber es gibt auch schon wieder völlig neue Konzepte wie z.B. Common Internet File System (CIFS) oder WebNFS. Noch scheint es keinen großen Bedarf zu geben, aber trotzdem wird schon heftig über die Weiterentwicklung auf diesem Gebiet diskutiert.

Intelligentes Verhalten von Serversoftware

Auch bestimmte Verhaltensweisen der Serversoftware könnten noch ausgebaut werden. Heutige HTTP-Server sind bei genauerem Hinsehen nicht sehr intelligent. So fehlen z.B. adaptive Techniken, die z.B. dann greifen, wenn ein Client ein URL anfordert, welches nicht vorhanden ist. Viele HTTP Server quittieren diese Anforderung mit einem kühlen

error 404 - Document not found.

Entwicklung externer Software

Bei Wünschen, die an Serversoftware gestellt werden, sollte aber immer der grundlegende Zweck eines HTTP-Servers und die offene Struktur der meisten Systeme im Auge behalten werden. Dann nämlich wird sich zeigen, daß viele Erweiterungen durch die Anbindung externer Software erreicht werden können.

Insgesamt ist davon auszugehen, daß die Entwicklung verteilter Informationsysteme gerade erst begonnen hat und in Zukunft noch sehr viel neues und interessantes bringen wird.

weiterführende Literatur und Quellen

[MEI96]
 
M. Meister, Y. Benger: "Vademekum für das Internet", Bauhaus Universität Weimar 1996, http://www.uni-weimar.de/CIS/vademekum/
[HTT96]
 
HTTP Working Group: "Hypertext Transfer Protocol ­ HTTP/1.0", Internet Draft, http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-v10-spec-03.html
[SER96]
 
"Liste von HTTP-Serversoftware" http://webcompare.iworld.com/compare/chart.html.
[DEN96]
 
R.B. Denny: "SSI,CGI,API or SSS? Choosing the Right Tool for the Job", http://solo.dc3.com/white/extending.html
[CGI96]
 
M. Meister: "Common Gateway Interface", Vortrag im Rahmen des C:I:S Projektes WS 95/96, Bauhaus Universität Weimar, http://www.uni-weimar.de/w3project/wwwkurs/partIV/
Newsgroups: news:comp.infosystems.www.servers.misc
news:comp.infosystems.www.servers.unix
news:comp.infosystems.www.servers.ms-windows
news:comp.infosystems.www.servers.mac
Yahoo: http://www.yahoo.com/Computers_and_Internet/Software/Internet/World_Wide_Web/Servers/

Das URL dieses Dokumentes:
http://www.uni-weimar.de/~meister1/private/papers/http-server/


mm
erstellt: 10/96, letzte Änderung: 26.01.2006, marko[at]netz-meister[punkt]de