|
Neben der bereitstellung statischer auf dem Server abgelegter Dokumente besteht die Möglichkeit mittels sogenannter CGI-Scripts dynamische Dokumente zu erstellen.
Der Kommunikationablauf gestaltet sich dabei wie folgt:
Die Kommunikation erfolgt auf der Transportebene über sogenannte Portnummern. Diese ermöglichen das Ansprechen unterschiedlicher Dienste. Zusammen mit den IP-Nummern bilden die Portnummern Kommunikationsendpunkte.
Die Portnummern bestehen aus 16 bit, so daß von einem Rechner maximal 65.535 unterschiedliche Ports realisert sein können. Für einige Standarddienste werden von der IANA (Internet Assigned Numbers Authority) sog. Well-Known-Portnummern vergeben. Dies sind Vereinbarungen, Portnummern auf welche Ports bestimmte Dienste hören. FTP-Servern ist der Port mit der Nummer 21 zugeordnet, Telnet hört auf Port 23, Gopher-Server auf den Port mit der Nummer 70.
Portnummern sind auf einen Rechner beschränkt, sie werden für TCP und UDP getrennt vergeben, d.h. die Portnummer 4711 für UDP spezifizert einen anderen Dienst als die Portnummer 4711 für TCP. Unter UNIX erfolgt die Zuordnung vom Dienst zum Portnummer/Protokoll-Paar in der Datei /etc/services.
Um bei der Analogie zum Telefonsystem zu bleiben, stehen Portnummern auf der gleichen Stufe wie Nebenstellenanlagen. Die Netzadresse entspricht dabei der Ortsvorwahl, die Hostadresse der Rufnummer, und der Port entspricht der Durchwahl. Mit diesen Angaben kann eine Verbindung zu einem bestimmten Dienst aufgebaut werden. Well-Known-Ports können nun mit der Auskunft, der Störungsstelle oder der Zeitansage verglichen werden, also Dienstleistungen, die unter einer allgemein verbreiteten Nummer erreichbar sind.
Überwiegend erfolgt die Konfiguration der Server in Konfigurationsdateien beziehungsweise beim Netscape-Server über ein Interface, das die entsprechenen Dateien modifiziert. Daneben bietet der CERN-Server eine Reihe von Kommandozeilen-Switches, die einzelne Optionen der Konfiguration überschreiben können oder die Betriebsart des Servers verändern. Äußerst hilfreich ist beispielsweise die Option '-v', mit der ein Debug-Modus eingeschaltet wird, der den gesamten internen Ablauf des Servers anzeigt.
Die meisten Server lassen sich sowohl vom inetd-Daemon aus starten als auch in einem Stand-alone-Modus betreiben, in dem ständig ein oder mehrere Serverprozesse auf Anfragen warten. Je nach Auslastung des Servers können beide Varianten sinnvoll sein. Bei hoher Auslastung ist jedoch immer der Stand-alone-Modus zu empfehlen, der deutlich effizienter ist. In diesem Fall stellt sich die Frage, ob zunächst nur ein Serverprozeß existiert, der für jede Anfrage einen weiteren Prozeß 'forkt', oder ob er selbst versucht, alle Anfragen zu bearbeiten, oder ob eine konfigurierbare Anzahl von Serverprozessen schon beim ersten Start erstellt wird, an die die eingehenden Anfragen gehen. Diesen Weg verfolgen die neuen Versionen des NCSA-, Apache- und Netscape-Servers, offensichtlich mit einer weiteren Steigerung der Performance bei stark ausgelasteten Servern.
Multi-Domain-Unterstützung ist eine Eigenschaft, die besonders für Provider und WWW-Outsourcer geeignet ist, die mehrere virtuelle Server betreiben wollen. Dabei werden dem Rechner, sofern das Betriebssystem dies unterstützt, zusätzliche IP-Adressen zugeordnet, und ein Server bedient unterschiedliche Namen und eine eigene Homepage für jede IP-Adresse. Für den CERN- und NCSA-Server sind Patches für diese Funktion vorhanden, Netscape und Apache besitzen die Funktion bereits.
Unterstützung von Forms gehört zum Standard eines heutigen WWW-Servers. Interessant wird es jedoch bei den häufig vorkommenen Suchfunktionen. Einzig WN bietet hier eingebaute Funktionen, alle anderen getesteten Server sind auf CGI-Scripts oder Erweiterungen über ein proprietäres API angewiesen.
Im HTTP-Protokoll übermitteln die Clients an den Server, welche Formate, Sprachen et cetera sie verstehen und bevorzugen. Diese Information können einige WWW-Server auswerten und in Abhängigkeit des Browers oder der Präferenzen des Benutzers verschiedene Dokumente verschicken. Man spricht dabei auch von 'Content Negotiation'. Dieses Feature geht natürlich auf Kosten der Komplexität und damit auch der Performance eines Servers.
Neben rein statischen und komplett dynamischen Seiten, die von CGI-Scripts erzeugt werden, bieten viele Server die sogenannten Server Side Includes an. Dabei kann innerhalb eines statischen HTML-Dokumentes ein anderes statisches oder dynamisches Dokument eingebunden werden. Eine typische Anwendunng sind Zähler, die angeben, wie oft eine Seite bereits abgefragt wurde.
Wird von einem WWW-Server im URL kein explizites File abgerufen, sondern der Name eines Verzeichnisses, so bieten die meisten Server eine Funktion, die automatisch ein HTML-File erzeugt, das den Inhalt des Verzeichnisses darstellt. Diese Datei (meist index.html) kann meist je nach Typ der Dateien im Verzeichnis verschiedene Grafiken vor den Dateinamen einbinden. Für welche Dateien welche Grafiken verwendet werden, kann man bei einigen Servern einstellen. Außerdem können bestimmte Dateien vor/nach dem eigentlichen Directory-Listing eingebunden werden. Oft sind dies Dateien mit dem Namen README oder .message.
Wie der Name sagt, ist SSL ein Protokoll, mit dem Daten verschlüsselt und authentifiziert übertragen werden können. SSL wurde von Netscape vorgeschlagen und wird vor allem von Netscape-Produkten verwendet. Das Protokoll ist nicht nur für HTTP geeignet, sondern auch für andere höhere Protokolle; so gibt es von Netscape bereits einen sicheren News-Server und SSL-Telnet-Implementierungen von anderer Seite. Die Art der Verschlüsselung und die Länge der Keys ist bei SSL nicht fest vorgegeben, sondern es lassen sich verschiedene Algorithmen verwenden. Speziell bei den Servern und Browsern von Netscape gibt es immer zwei Versionen, eine für den US-Markt, bei der Schlüssel mit einer vernünftigen Länge (128 Bit) verwendet werden -- und eine Exportversion, bei der lediglich 40 Bit verwendet werden. Diese Version kam unlängst in die Schlagzeilen der Fachpresse, da eine mit SSL verschlüsselte Nachricht -- bei Verwendung eines Keys mit 40 Bit -- im Brute-Force-Verfahren von mehreren hundert Rechnern in einer Woche geknackt wurde.
sHTTP ist eine Erweiterng des HTTP-Protokolls um Mechanismen zur Authentifizierung und Verschlüsselung. Es liegt derzeit als Internet-Draft vor und ist im Gegensatz zu SSL nur für WWW gedacht. Wie bei SSL sind die verwendeten Algorithmen nicht vorgeschrieben. Es ist nur das Message-Format definiert. Verwendet wird sHTTP derzeit nur von wenigen Servern und einigen erweiterten NCSA-Mosaic-Browsern.