|
|
Dieses Dokument ist verfübar auf: English Castellano Deutsch Francais Italiano Nederlands Russian Turkce |
von Charles vidal <charles_vidal/at/bigfoot.com> Über den Autor: Als Präsident einer pariser gastronomie Linux User Group gefällt ihm die GNU Philosophie, da sie in die selbe Richtung geht wie der Wissensaustausch. Er hätte gerne Zeit Saxophon zu spielen. Übersetzt ins Deutsche von: Jean-Pierre Schwickerath <schwicky/at/gmx.net> Inhalt: |
Apache 1. TeilZusammenfassung:
Dieser Artikel ist der erste einer Serie über den meist benutzten HTTP (Web) Server Apache. In diesem ersten Teil, werden wir die Historik des Webs besprechen, das HTTP Protokoll und die Basisfunktionen von Apache. |
Es sind die Leute des CERN (Europäisches Zentrum für Nuklearforschung), die das Konzept des HTTP Servers und Klienten entwickelt haben.
Einmal diese Forschungsarbeit beendet, haben sie es einer amerikanischen Universität (NSCA) übergeben. Viele Leute (und vor allen Dingen die Franzosen) wären überrascht zu erfahren, dass es die Europäer waren, die die Basis des Webs erfunden haben.
Apache ist der Name eines freien Web Server Projektes. Der Name Apache hat eine etwas unklare Herkunft. Manche sagen es käme von "a patchy server" wegen den vielen Patches des Anfangs (Schon wieder so ein Hackerkram :) ), andere meinen auf eine etwas seriösere Art, dass die Mitglieder dieses Projektes diesen Namen gewählt haben um an die besondere Fähigkeit der Apaches zu erinnern die sich sehr gut anpassen konnten.
Dieser Server ist der meist benutzte im Internet. Er respektiert das HTTP 1.1 Protokoll , dass vom w3 Consortium normalisiert ist.
Nach der Netcraft Studie von Juni 1999 wird der Webserver Apache von 56.19% benutzt.
Ein Webserver ist ein "Server" Programm, dass auf die Anfragen der Web Klienten, wie zum Beispiel Lynx :) antwortet.
Der Webserver und -klient kommunizieren dank des HTTP Protokolls (HyperText Transfer Protocol). Aktuell ist die Version 1.1 dieses Protokolls, man spricht dann vonHTTP/1.1.
Dieses Protokoll kann man in zwei grosse Teile aufspalten: Die Anfrage und die Antwort des Servers.
1.- Die Anfrage
Einfach gesehen, ist sie eine Zeile die der Anfrage des Klienten entspricht. Sie kann in drei Unterteile aufgeteilt werden:
1- Die Arten der Anfragen können folgende sein: GET, POST, HEAD, PUT, DEL, TRACE.
2- Die URL ist die Adresse die man sehen möchte, sie befindet sich direkt hinter dem Domainname
3- Das benutzte Protokoll kann HTTP/1.0 oder HTTP/1.1 sein
Diese Zeile kann oder muss mit anderen Zeilen vervollständigt werden, die es erlauben die Anfrage zu verfeinern, wie wir es für eine HTTP/1.1 Anfrage sehen werden.
2.- die Antwort
Die Antwort des Servers besteht aus einem Kopf und dem Körper der Antwort (der natürlich von der Anfrage abhängt)
telnet www.linuxfocus.org 80 Trying 195.53.25.18... Connected to nova.linuxfocus.org. Escape character is '^]'. GET / HTTP/1.0 <return> <return> HTTP/1.1 200 OK Date: Mon, 27 Sep 1999 21:23:20 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Last-Modified: Sun, 26 Sep 1999 16:40:44 GMT ETag: "4b005-1616-37ee4c8c" Accept-Ranges: bytes Content-Length: 5654 Connection: close Content-Type: text/html <PAGE HTML> |
Analysieren wir nun die Antwort:
Die erste Zeile deutet auf das, für die Antwort benutzte Protokoll und den Antwort-Code des Servers (Codes die grösser als 400 sind, weisen auf ein Fehler hin). Anschliessend das Datum, den Servertyp, das Datum der letzten Veränderung (so kann der Klient wissen ob was er in seinem Cache hat noch gültig ist oder nicht). Centent-Lenght gibt die Länge des gesandten Dokumentes (es gibt kein Content-Lenght für CGI-Skripte), der Content-Type gibt dem Klienten Informationen über den MIME-Typ des gesandten (Text, HTML, Bilder,...).
Ich habe nicht alles beschrieben, da mir einige Sachen unbekannt sind :)
Schauen wir uns jetzt mal einen Fehler an...
telnet www.linuxfocus.org 80 Trying 195.53.25.18... Connected to nova.linuxfocus.org. Escape character is '^]'. get / HTTP/1.0 <return> <return> HTTP/1.1 501 Method Not Implemented Date: Mon, 27 Sep 1999 21:22:03 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Allow: GET, HEAD, OPTIONS, TRACE Connection: close Content-Type: text/html |
Wie Sie es sehen können, der Kopf der Meldung spricht für sich.
Das HTTP Protokoll ist sehr einfach wie wir in kleinen Beispielen sehen werden:
telnet www.linuxfocus.org 80 Trying 195.53.25.18... Connected to nova.linuxfocus.org. Escape character is '^]'. GET / < return > < return > |
Der Inhalt von index.html der Linuxfocus Site kommt dann...
Was ist auf der Seite des Apache Servers passiert?
Mit dem Befehl telnet haben Sie sich mit der Maschine www.linuxfocus.org verbunden (IP Adresse 195.53.25.1) und das am Port 80, ein gewöhnlicher Port für dieses Protokoll. Der Server auf der anderen Seite wartete auf eine Anfrage. Sie haben GET / getippt und dann zwei mal die Eingabetaste.
Warum zwei mal Eingabetaste? Nun dies gibt das Ende Ihrer Anfrage an (Sie haben eine lehre Zeile gesandt). Der Server antwortet Ihnen dann indem er Ihnen die gefragte Datei schickt (index.html).
Am Ende der Übertragung wird die Verbindung geschlossen. Wie Sie es feststellen können ist die Sprache zwischen dem Webbrowser und dem Server sehr einfach. Aber Achtung, das wird komplexer mit den Versionen von HTTP:GET / HTTP/1.0< return > < return > HTTP/1.1 200 OK Date: Tue, 24 Aug 1999 22:25:11 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Last-Modified: Sun, 01 Aug 1999 11:50:52 GMT ETag: "4b005-1462-37a4349c" Accept-Ranges: bytes Content-Length: 5218 Connection: close Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ....Und wenn man dann folgendes macht;
HTTP/1.1 400 Bad Request Date: Tue, 24 Aug 1999 22:24:59 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Connection: close Transfer-Encoding: chunked Content-Type: text/html GET / HTTP/1.1 <return > < return > <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>400 Bad Request</TITLE> </HEADBODY> <H1>Bad Request</H1> Your browser sent a request that this server could not understand.<P> client sent HTTP/1.1 request without hostname (see RFC2068 section 9, and 14.23): </P> </BODY></HTML>In der Tat, mit dem neuen HTTP/1.1 Protokoll braucht die Anfrage mehr Informationen. Die Anfrage braucht mehrere Zeilen. Dieser Zusatz erlaubt es, für ein besseren Austausch, dem Server mehr Informationen zu übertragen. In der neuen 1.1 Version haben die Apache-Leute genauestens die Spezifikationen respektiert. Das neue Protokoll erlaubt ein grosszahl an neuen Funktionen: Authentification, Virtuelle Site (Mehrere Sites können die gleiche IP Adresse haben, siehe nslookup) Beispiel:
GET / HTTP/1.0< return > Host:www.linuxfocus.org< return > < return >
[...]Wie die meisten Server-Klient Programme, passiert mit dem Server, wenn er eine anfrage bekommt, folgendes:
Der Webserver ist eine Interface zwischen dem Webklienten der eine URL (Uniform Request Locator) anfragt - dieser Ausdruck ist nicht der einzige, denn es gibt auch URI, URN aber dies ist nicht in unserem Interesse - und dem System auf dem sich der Server befindet.
In der Tat, der Webklient sendet ihm seine Anfrage und der
Server schickt ihm die HTML Seiten zurück, die der URL
entsprechen. Der Klient verlangt dann die Bilder die sich in
dieser befindet, der Server wird sie ihm genauso senden. Aber
er kann auch, je nach Anfrage, die Interface mit einigen
Systemprogrammen spielen, die vom Site-Administrator (auch
WebMaster genannt) ausgewählt oder geschrieben wurden.
Diese Programme werden CGI-Skripte genannt (Common Gateway
Interface) und senden eine HTML Seite zurück. Wir werden
später sehen, dass man neue Funktionen an diesen Server
anbinden kann, und das mit Hilfe von Modulen.
Hier haben wir die Basisfunktionen eines HTTPD Servers.
Versuchen Sie gut zu verstehen was Apache, in der verschiedenen Tests mit telnet, macht.
In den nächsten Artikeln werden wir die Konfiguration, die Apache-Module (mit den Virtual Hosts, Module, die Ihre HTML Seiten dynamisch machen (PHP, PERL, ...), das SSL-Modul (Secure Socket Layer) und zum Ende auch noch die Compilierung von Apache).
|
Der LinuxFocus Redaktion schreiben
© Charles vidal, FDL LinuxFocus.org |
Autoren und Übersetzer:
|
2003-01-04, generated by lfparser version 2.35