Netzwerk
TCP/IP (Webserver)
5 Das HTTP Protokoll

HTTP (Hypertext Transfer Protocoll) ist das Standardprotokoll des Port 80. Dies ist ein Application Level Protokoll, was von dem ISO/OSI Schichtmodell herrührt.

 

In diesem Protokoll werden reine Textdaten ausgetauscht, woduch ein Debugging mit z.B. Telnet leicht möglcih ist.

 


5.1 HTTP Request

Ein Client (Web Brobser) stellt seine Anfrage, die einem bestimmten Format genügen muss. Man unterscheidet zwischen einem Simple-Request und einem Full-Request.

 

Ein Simple-Request sieht folgendermaßen aus

GET <URI> <crlf>

 

Ein Full-Request besteht mindestens noch aus der HTTP Version

GET <URI> <HTTP Version> <crlf>

 

Neben der GET Methode sind noch die Methode HEAD und POST möglich. Diese Methoden sind definierte Aktionen, auf die der Web Server reagiert und die entsprechenden Informationen zurück liefert. Die prinzipiellen Unterschiede der Methoden ist in der Tabelle aufgeführt.

 

GET: Daten anfragen

HEAD: Nur die Kopfdaten zurückliefern

POST: Daten senden

 

Die wichtigste Methode ist natürlich die GET Methode.

 

Beim Full-Request kann der Client weitere Informationen mitliefern. Hierzu wird in jeder weiteren Zeile des Request weitere Werte mitübergeben. Hierzu gehören z.B.

Accept  | Authorization | Connection | From | Host | If-Modified-Since | Referer | User-Agent

 

Abgeschlossen wird ein Request mit einer Leerzeile.

 

Hier ein Request des Internet Explorer 5.5

GET / HTTP/1.1

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*

Accept-Language: de

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)

Host: localhost:2000

Connection: Keep-Alive

<crlf>

 


5.2 HTTP Response

Der Webserver antwortet – in Abhängigkeit vom Request – mit einem Simple-Response oder einem Full-Response. Ein Simple-Response wird nur bei der HTTP Version 0.9 genutzt.

 

Ein Simple-Response enthält nur die Daten, es wird keine Statuszeile oder weitere Informationen zurückgesendet. Abgeschlossen wird die Antwort, indem die Verbindung geschlossen wird. Neuere Versionen erlauben das Geöffnethalten der Verbindung, um weitere Daten anzufordern (vgl. Connection: Keep-Alive).

 

Ein Full-Response beginnt mit der Statuszeile. Diese gibt Auskunft über die Bearbeitung der Anfrage. Generell sieht die Statuszeile folgendermaßen aus

<HTTP Version> <Status Code> <Status Text> <crlf>

 

Der Client hat so die Möglichkeit, auf die Antwort des Web Servers zu reagieren.

 

Der Status Code ist dreistellig. Die erste Stelle gibt über den generellen Bearbeitungsstand Auskunft.

1xx Information (nicht benutz, für zukünftige Implementierungen reserviert)

2xx Erfolg

3xx Redirect (weiter Aktionen (müssen) folgen)

4xx Client Fehler

5xx Server Fehler

 

Hier eine Übersicht über die genaueren Fehlercodes

200 OK

201 Created

202 Accepted (noch am Verarbeiten)

204 No Content (es gibt nichts neues)

301 Moved Permanently (neue URL)

302 Moved Temporarly) (zeitweise neue URL)

304 Not Modified (keine Änderung)

400 Bad Request (Anfrage nicht verstanden)

401 Unautorized (Passwort notwendig)

403 Forbidden (Zugriff verweigert)

404 Not Found (URI nicht gefunden)

500 Internal Server Error

501 Not Implemented

502 Bad Gateway (als Gateway arbeitender Web Server erhielt Fehler vom befragen Server)

503 Service Unavailable (Service temporär nicht verfügbar)

 

Neben der Statuszeile können weitere Header felder als Antwort mit übertragen werden. Hierzu gehören noch

Date | Connection | Location | Server | WWW_Authenticate

 

Bei Anfragen und Antworten können weitere Entities im Header angegeben werden. Hierzu gehören

Allow | Content-Encoding | Content-Length | Content-Type | Expires | Last-Modified

 



Last update:  13.07.2005