Das HTTP Protokoll

Kommunikation mit dem HTTP Protokoll

HTTP (HyperText Transfer Protocol) steht für ein zustandsloses Protokoll, das die Regeln für die Kommunikation eines HTTP-Clients mit einem HTTP-Server definiert.
Die Kommunikation verläuft über ein zuverlässiges Transport-Protokoll, meistens über TCP.

Der HTTP-Client sendet eine Anfrage (Request) an den HTTP-Server, der auf die Anfrage antwortet (Response).

Das HTTP Protokoll wird von der IETF in der RFC 7230 definiert.

Die Request Line (Client-Request)

Die erste Zeile einer Client-Anfrage an einen Server wird als Request Line (Anfrage-Zeile) bezeichnet.

Diese Request Line folgt einem genau definerten Format:

method SP request-target SP HTTP-Version CR LF

method

Anfrage-Methode (z.B. GET oder POST)

request-target

Ressource, die vom Client angefragt wird (z.B. eine bestimmte HTML-Datei)

HTTP-Version

HTTP Version (z.B. HTTP/1.1)

SP

Leerzeichen (Space)

CR LF

Wagenrücklauf (CR)
Zeilenvorschub (LF)

Die Status Line (Server-Response)

Der Server antwortet auf eine Client-Anfrage immer mit einer Status Line (Status-Zeile). Diese kann von mehreren Header-Lines und dem Response-Body gefolgt werden.

Diese Status Line folgt einem genau definerten Format:

HTTP-Version SP status-code SP reason-phrase CR LF

HTTP-Version

HTTP Version (z.B. HTTP/1.1)

status-code

Ein dreistelliger Status-Code (z.B. 200)

reason-phrase

Eine kurze Beschreibung des Status Codes.

SP

Leerzeichen (Space)

CR LF

Wagenrücklauf (CR)
Zeilenvorschub (LF)

Der Header (Request / Response)

Der Header (Kopfzeilen) Bereich einer Anfrage (Request) oder Antwort (Response) besteht aus einer oder mehreren Zeilen, den sogenannten Header-Fields, die jeweils mit CR LF abgeschlossen werden.

Dem Header folgt immer eine Leerzeile, die nur aus CR und LF besteht.

Der Header enthält zusätzliche Informationen, die die Nachricht, deren Verarbeitung oder den Absender/Empfänger betreffen.

Bei einer Server-Antwort (Response) kommt direkt vor dem Header die Status-Zeile. Nach der vorgeschriebenen Leerzeile, die dem Header folgen muss, kann der Message-Body Bereich, die eigentliche Ressource folgen.

Die Syntax eines Header-Fields ist wie folgt definiert:

field-name : OWS field-value SP field-value ... OWS CR LF

field-name

Bezeichner des Header-Fields

field-value

Wert des Header-Fields

SP

Leerzeichen (Space)

CR LF

Wagenrücklauf (CR)
Zeilenvorschub (LF)

OWS

Optional Whitespace: Optional kann ein Leerzeichen (Space) oder ein horizontaler Tab eingefügt (HTAB) werden.

Der gesamte Header ist immer wie folgt strukturiert:

Header-Field
Header-Field
.
.
.
Header-Field

CR LF