Einleitung
HTTP Konzepte
Web-Server
Ausblick
Clients und Server
Anfrage (Request) und Antwort (Response)
auf TCP/IP aufbauend
eine Sitzung pro Anfrage bei HTTP 1.0
bei HTTP 1.1 mehrere Anfragen pro Sitzung
Zustandsloses Protokoll, Idempotenz
HTTP 0.9
HTTP 1.0 vom Februar 1996
HTTP 1.1 vom Juni 1999
HTTP spezifiziert die Syntax und Semantik von Anfragen und Antworten.
Definition von URLs
Datumsformat (RFC 822, 1123)
Zeichensätze (US-ASCII)
Format der Header
HTTP 1.1: Persistent Connections
HTTP 1.1: Content Negotiation
HTTP 1.1: Caching
HTTP 1.1: Multi-homed Servers
Telnet-Verbindung an den Port 80
$ telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. GET / HTTP/1.0 User-Agent: Heinz Kredel Host: localhost Accept: */*
Antwort des Web-Servers
HTTP/1.1 200 OK Date: Sat, 07 Nov 1998 20:53:21 GMT Server: Apache/1.2.4 S.u.S.E./5.1 Last-Modified: Thu, 21 May 1998 19:19:48 GMT ETag: "21047-44c-35647e54" Content-Length: 1100 Accept-Ranges: bytes Connection: close Content-Type: text/html <HTML> ... </HTML> Connection closed by foreign host.
Die Schritte der Anfrage im Detail
TCP/IP-Verbindung (z.B. telnet
)
an einen verabredeten Port (default 80)
erste Zeile: method-Kommando mit Parametern
GET / HTTP/1.0
folgende Zeilen: Informationen des Browsers (UA) an den Server, abgeschlossen durch eine Leerzeile.
User-Agent: Heinz Kredel Host: localhost Accept: */*
Abhägig von method folgen weitere Informationen.
bei POST z.B. die Daten des Formulars, oder auch eine Datei.
Allgemein:
Method-Line General-Header(s) Request-Header(s) Entity-Header(s) CRLF Entity-Body
Die Schritte der Antwort des Servers
erste Zeile: Statuszeile über Erfolg oder Fehler
HTTP/1.1 200 OK
folgende Zeilen: Header-Informationen des Servers, abgeschlossen durch eine Leerzeile.
Date: Sat, 07 Nov 1998 20:53:21 GMT Server: Apache/1.2.4 S.u.S.E./5.1 Last-Modified: Thu, 21 May 1998 19:19:48 GMT ETag: "21047-44c-35647e54" Content-Length: 1100 Accept-Ranges: bytes Connection: close Content-Type: text/html
Abhägig von Content-Type folgen weitere Informationen.
zum Beispiel bei text/html eine HTML-Datei, oder bei image/gif ein GIF-Bild.
Allgemein:
Status-Line General-Header(s) Response-Header(s) Entity-Header(s) CRLF Entity-Body
Nach dem Abbau der Verbindung gibt es auf beiden Seiten keine Informationen mehr über den Partner.
GET
Abholen von Informationen
HEAD
Abholen der Header-Informationen
POST
Mitschicken von Informationen an den Server
PUT, DELETE
fast nie verwendet, nicht für HTTP 1.0 notwendig
LINK, UNLINK
fast nie verwendet, nicht für HTTP 1.0 notwendig
100-199
zur Information
200-299
Client Anfrage erfolgreich
300-399
Client Anfrage umgeleitet, eine neue Anfrage ist erforderlich
300 Multiple Choices 302 Moved Temporarily 304 Not Modified
400-499
Client Anfrage unvollständig
400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found
500-599
Server Fehler
500 Internal Server Error 503 Service Unavailable
Connection:
Close, Keep Alive
Date:
Zeit und Datum
MIME-Version:
Transfer-Encoding:
diverse Cache Optionen
Accept: type/subtype
MIME-Types die angenommen werden
Authorization: Basic base64(username:password)
Authorization: Digest MD5(MD5(uname):number:MD5(passwd))
Cookie: name=wert
If-Modified-Since: date
Referer: url
User-Agent: Zeichenkette
Host: hostname:port
muß bei HTTP 1.1
diverse Cache und Match Optionen
Retry-After: date|seconds
nochmal versuchen bei 503
Server: Zeichenkette
Set-Cookie: name=wert; options
expires=date, domain=domain_name, path=pathname
WWW-Authenticate: Basic realm="Bezug"
WWW-Authenticate: Digest realm="Bezug" nonce="nummer"
Content-Type: mimetype
Content-Length: bytes
Content-Encoding: scheme
x-gzip, x-www-form-urlencoded
Content-Transfer-Encoding: scheme
8bit, base64, quoted-printable
Content-Language: sprache
Expires: date
Last-Modified: date
Location: url
Multipurpose Internet Mail Extensions
Typ/Subtyp | Datei-Erweiterung | Datei-Typ |
---|---|---|
application/pdf | Portable Document Format von Adobe |
|
application/ps | eps, ps | PostScript |
application/x-tar | tar | "Tape-Archive" |
audio/basic | au, snd | Audioformate |
image/gif | gif | Graphikformat |
image/tiff | tiff, tif | Graphikformat |
text/html | html, htm | HTML Datei |
text/plain | txt | reine ASCII Datei |
CERN Server
NCSA Server
Roxen
Netscape Server
Microsoft Server
IBM Server
MOWS, Web-Server in Java
Jigsaw, Web-Server in Java vom W3C
Xitami
Apache
wartet auf TCP/IP-Verbindung
Umsetzen des URLs
http://host/path/file.html
bzw. GET /path/file.html HTTP/1.1
auf Datei-System: Document-Root
/disk1/www/htdocs/path/file.html
ausliefern der Datei
Anfang als Patch (Verbesserungen) zu NCSA Server "a patchy server"
Februar 1995 basierend auf NCSA 1.3
Dezember 1995, Apache 1.0
1999 Gründung der Apache Software Foundation
zur Zeit Version 1.3.27
neueste Version 2.0.44
Multithreading wo möglich
bessere Unterstützung von nicht-Unix Systemen (Windows, OS/2, BeOS)
neues API (Programmierschnittstellen)
Unterstützung für IPv6
Filter Module
wird als Quellcode und Binär angeboten
frei verfügbar
über 50 % Marktanteil
Unterstützt alle wichtigen Dinge: CGI, URL Rewriting, Perl, PHP, Security mit OpenSSL, etc.
stark Modularisiert
Ältere Versionen (wie NCSA):
httpd.conf
Server Grundkonfiguration
srm.conf
Konfiguration der Dateien und anderen Ressourcen
access.conf
Konfiguration der Zugriffsrechte
mime.types
Zuordnung von MIME-Types zu Datei-Extensions
Aktuelle Versionen:
Globale Definitionen
Definitionen für den Haupt-Server
Definitionen für optionale virtuelle Server
mime.types
Zuordnung von MIME-Types zu Datei-Extensions
Beispiel: httpd.conf und mime.types
httpd.conf (früher in access.conf)
<Directory /usr/local/httpd/htdocs/secure> Options FollowSymLinks AllowOverride AuthConfig order allow,deny allow from all </Directory>
/usr/local/httpd/htdocs/secure/.htaccess
AuthUserFile /usr/www/etc/passwd AuthGroupFile /usr/www/etc/groups AuthName MyIntern AuthType Basic require valid-user
Bessere Authentifizierung mit 'AuthType Digest
'.
Bei Bedarf auf bestimmte Methoden beschränken:
<Limit GET> require valid-user </Limit>
passwd
name1: xyz name2: xyz2
group
members: name1, name2
Ablauf:
Zugriff auf geschützte Seite
Server schickt Fehlermeldung
401 Unauthorized
und verlangt Authentifizierung
Browser fragt mit Dialogbox nach den Informationen, z.B. Benutzer/Passwort
Browser wiederholt die Anfrage nach der geschützten Seite, diesmal aber mit Authentifizierung
falls OK, schickt der Server die Seite
erhältlich für fast alle Betriebssysteme
Compilierung durch Make-Files einfach
Konfiguration mit Textdateien und Direktiven
Start, Stop und Restart
viele Logfiles
Kern und Module
Virtuelle Hosts
Handler
httpd.error_log:
[Mon Dec 20 08:29:18 1999] [notice] Apache/1.3.6 (Unix) (SuSE/Linux) configured -- resuming normal operations [Mon Dec 20 08:29:18 1999] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Tue Dec 21 00:24:23 1999] [notice] caught SIGTERM, shutting down ... [Tue Dec 21 11:38:59 1999] [notice] Apache/1.3.6 (Unix) (SuSE/Linux) configured -- resuming normal operations [Tue Dec 21 11:38:59 1999] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
httpd.access_log:
127.0.0.1 - - [21/Dec/1999:20:39:33 +0100] "GET / HTTP/1.0" 304 - 127.0.0.1 - - [21/Dec/1999:20:39:33 +0100] "GET /gif/gl.gif HTTP/1.0" 304 - 127.0.0.1 - - [21/Dec/1999:20:39:33 +0100] "GET /gif/apache_logo.gif HTTP/1.0" 304 - 127.0.0.1 - - [21/Dec/1999:20:39:33 +0100] "GET /gif/awlogo.gif HTTP/1.0" 304 - 127.0.0.1 - - [21/Dec/1999:20:39:33 +0100] "GET /gif/suse_150.gif HTTP/1.0" 304 - 127.0.0.1 - - [21/Dec/1999:20:39:33 +0100] "GET /gif/apache_pb.gif HTTP/1.0" 304 - 127.0.0.1 - - [21/Dec/1999:23:03:29 +0100] "GET /manual/ HTTP/1.0" 304 - 127.0.0.1 - - [21/Dec/1999:23:03:29 +0100] "GET /manual/images/sub.gif HTTP/1.0" 304 - 127.0.0.1 - - [21/Dec/1999:23:03:29 +0100] "GET /manual/images/index.gif HTTP/1.0" 304 - 127.0.0.1 - - [21/Dec/1999:23:03:45 +0100] "GET /manual/install.html HTTP/1.0" 200 10455 127.0.0.1 - - [21/Dec/1999:23:04:13 +0100] "GET /manual/new_features_1_3.html HTTP/1.0" 200 33665
z.B. Webalizer
HTTP-NG
Distributed Object System
Protocol Extension Protocol (PEP)
Performance Benchmarks
Common Gateway Interface (CGI)
Secure Socket Layer (SSL)
Server Side Includes (SSI)
Apache Module
Jigsaw, Web-Server in Java vom W3C
Java-Servlets
© Universität Mannheim, Rechenzentrum, 1998-2002.
Heinz Kredel Last modified: Sun Mar 16 15:43:32 CET 2003