[LinuxFocus-icon]
Home  |  Plan  |  Index  |  Suchen

Nachrichten | Archiv | Links | Über uns
Dieses Dokument ist verfübar auf: English  Castellano  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  

convert to palmConvert to GutenPalm
or to PalmDoc

[Photo de l'auteur]
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. Teil

[Illustration]

Zusammenfassung:

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.


_________________ _________________ _________________

 

Historie

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.

 

Das HTTP Protokoll

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. [Art der Anfrage]
  2. 2-[URL]
  3. 3-[benutzte Protokoll]

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:
1.- Er dupliziert sich in einen Tocher Prozess um der Antwort entgegenzukommen
2.- Der Vater-Server lauscht weiter auf dem Port 80 für eine Anfrage
3.- Die Tochter antwortet auf die Anfrage.  

Funktionen

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.

 

Zum Abschluss

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).

 

Talkback für diesen Artikel

Jeder Artikel hat seine eigene Seite für Kommentare und Rückmeldungen. Auf dieser Seite kann jeder eigene Kommentare abgeben und die Kommentare anderer Leser sehen:
 Talkback Seite 

Der LinuxFocus Redaktion schreiben
© Charles vidal, FDL
LinuxFocus.org
Autoren und Übersetzer:
fr --> -- : Charles vidal <charles_vidal/at/bigfoot.com>
fr --> de: Jean-Pierre Schwickerath <schwicky/at/gmx.net>

2003-01-04, generated by lfparser version 2.35