HTTP/1.1 - HTTP-Kommunikation (Version 1.0/1.1)
HTTP ist das Kommunikationsprotokoll im World Wide Web (WWW). Mit HTTP werden Dateien oder Datenströme von einem Webbrowser (Client) bei einem Webserver angefordert und vom Browser dargestellt oder wiedergegeben.
HTTP 1.0 stammt aus dem Jahr 1996 und HTTP 1.1 von 1999. Das heißt, das Protokoll zur Übertragung von Daten zwischen Anwendungen hat sich bis zur Einführung von HTTP/2 nicht verändert.
Mit HTTP Version 1.0 baut jeder Browser bei jedem HTTP-Request eine eigene TCP-Verbindung zum Webserver auf. Das heißt, jedes einzelne Element (Bild, CSS, Java Script, etc.) wird einzeln angefordert. Mit HTTP Version 1.1 lässt sich eine TCP-Verbindung für mehrere sequenzielle Requests nutzen. Dadurch spart man sich den Verbindungsaufbau und Verbindungsabbau, und die dabei anfallen Übertragungskapazität und Zeit.
Übersicht: HTTP-Versionen
- HTTP - Hypertext Transfer Protocol
- HTTP/1.1 - HTTP Version 1.0 und 1.1
- HTTP/2 - HTTP Version 2.0
- HTTP/3 - HTTP Version 3.0
Übersicht: HTTP/1.0 und HTTP/1.1
- HTTP-Request
- HTTP-Request-Header
- HTTP-Methoden
- HTTP-Response
- HTTP-Response-Header
- HTTP-Response-Codes / HTTP-Status-Codes
- HTTP-Request-Header
HTTP-Kommunikation
Die Kommunikation findet nach dem Client-Server-Prinzip statt. Der HTTP-Client (Browser) sendet seine Anfrage (HTTP-Request) an den HTTP-Server (Webserver/Web-Server). Dieser bearbeitet die Anfrage und schickt seine Antwort (HTTP-Response) zurück.
HTTP-Request
Der HTTP-Request ist die Anfrage des HTTP-Clients an den HTTP-Server. Ein HTTP-Request besteht aus den Angaben Methode, URL und dem Request-Header. Die häufigste Methoden sind GET und POST. Dahinter folgt durch ein Leerzeichen getrennt der URL und die verwendete HTTP-Version. In weiteren Zeilen folgt der Header und bei der Methode POST durch eine Leerzeile (!) getrennt die Formular-Daten.
HTTP-Request-Header
- Methode URL HTTP/Version
- General Header
- Request Header
- Entity Header (optional)
- Leerzeile (!)
- Request Entity (falls vorhanden)
Beispiel für einen HTTP-Request-Header
Im folgenden wird der HTTP-Request-Header dargestellt, den der Browser an den Webserver schickt.
GET / HTTP/1.1 Host: www.elektronik-kompendium.de User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive
HTTP-Methoden
Jeder HTTP-Request durch den Client wird durch die Angabe einer Methode eingeleitet. Die Methode weißt den Server an, was er mit dem Request machen soll. Die HTTP Version 1.1 sieht die folgenden Methoden vor:
- GET
- POST
- HEAD
- PUT
- OPTIONS
- DELETE
- TRACE
- CONNECT
Methode | Beschreibung |
---|---|
GET | Die GET-Methode dient der Anforderung einer HTML-Datei oder einer anderen Quelle. Die Quelle wird durch der URL adressiert. Im Header lassen sich Bedingungen hinterlegen, die die Netzlast reduzieren oder einen unterbrochenen Datentransfer wieder aufnehmen. Über GET lassen sich auch Formular-Daten übermitteln. Diese werden in codierter Form der URL angehängt. URL und Formular-Daten sind durch ein Fragezeichen (?) voneinander getrennt. |
POST | Die POST-Methode funktioniert ähnlich wie die GET-Methode. POST wird jedoch zur Übermittlung von Formular-Daten an ein Programm oder Skript verwendet. Die Daten werden im Entity-Bereich getrennt durch eine Leerzeile vom Header übertragen. |
HEAD | Die HEAD-Methode fordert den Response-Header an, der üblicherweise vom Server nach einem GET-Request übermittelt wird. |
PUT | Diese Methode erlaubt das Erstellen oder Ändern von Dateien auf dem Server. |
OPTIONS | Die OPTIONS-Methode dient zur Ermittlung von Kommunikationsoptionen durch den HTTP-Client. Es werden jedoch keinerlei Aktionen ausgeführt oder Daten übertragen. |
DELETE | Diese Methode führt zur Löschung der Datei, die durch die URL adressiert ist. |
TRACE | Die TRACE-Methode dient der Verfolgung von HTTP-Requests, die zwischen Client und Server über einen oder mehrere Proxy-Server laufen. Im Header-Feld "Via" des HTTP-Responses sind alle zwischengeschaltete Server protokolliert. |
CONNECT | Durch die CONNECT-Methode baut ein Proxy-Server einen Tunnel zum angegebenen Rechner auf und übermittelt darin Daten und Kommandos zwischen Client und Server. |
HTTP-Response
Der HTTP-Response ist die Antwort des HTTP-Servers an den HTTP-Client. Der HTTP-Response besteht aus der verwendeten HTTP-Version, dem Status-Code der Responses und der Klartext-Meldung des Status-Codes. In den anschließenden Zeilen folgt der Header und durch eine Leerzeile (!) getrennt die HTML-Datei.
HTTP-Response-Header
- HTTP/Version Response-Code (Status)
- Klartext-Meldung (Reason)
- General Header
- Response Header
- Entity Header (optional)
- Leerzeile (!)
- Resource Entity (falls vorhanden)
Beispiel für einen HTTP-Response-Header
Im folgenden wird der HTTP-Response-Header dargestellt, den der Webserver an den Browser schickt und dem eine Datei folgt. Im folgenden wird nur die HTML-Datei zurück geliefert. Aufgrund Referenzierungen in der HTML-Datei schickt der Browser weitere HTTP-Requests an den Server. Er fordert weitere Dateien an. Zum Beispiel CSS, Javascript, Bilder, Audio oder Video.
HTTP/1.x 200 OK Date: Tue, 08 Sep 2009 15:47:06 GMT Server: Apache/1.3.34 Ben-SSL/1.55 Keep-Alive: timeout=2, max=200 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html
HTTP-Response-Codes / HTTP-Status-Codes
Die Antwort des HTTP-Servers an den HTTP-Client enthält in der ersten Zeile den Status-Code und die Klartext-Meldung des HTTP-Responses, verursacht durch den HTTP-Request. Der Status-Code ist eine 3stellige Nummer, die dem HTTP-Client Informationen über die Verfügbarkeit der angeforderten Daten mitteilt. Z. B. wird über den Status-Code eine Fehlermeldung übermittelt.
Die Status-Codes sind in 5 Gruppen unterteilt, die über den HTTP-Response eine Grundaussage treffen.
Status-Codes | Beschreibung |
---|---|
100-199 | Status-Codes im 100er Bereich sind Meldungen informeller Art. |
200-299 | Status-Codes im 200er Bereich informieren den Client über eine erfolgreiche Anfrage. |
300-399 | Status-Codes im 300er Bereich deuten auf eine Umleitung hin und weisen den Client an, seine Anfrage auf das zurückgelieferte Ziel zu wiederholen oder den Benutzer die Entscheidung treffen zu lassen. |
400-499 | Status-Codes im 400er Bereich sind Fehlermeldungen, die vom Client ausgelöst werden. Meistens handelt es sich um eine Anfrage, die vom Server nicht beantwortet werden kann. |
500-599 | Status-Codes im 500er Bereich sind Fehlermeldungen, die vom Server direkt ausgelöst werden. |
Liste der HTTP-Response-Codes
Status-Code | Meldung EN | Meldung DE | HTTP-Version |
---|---|---|---|
100 | Continue | Weiterleitung | 1.1 |
101 | Switching Protocols | Protokoll ändern | 1.1 |
200 | OK | Alles in Ordnung / Standardmeldung | 1.0 |
201 | Created | Erfolgreich erstellt | 1.0 |
202 | Accepted | Akzeptiert | 1.0 |
203 | Non-Authoritative Information | Die Daten sind von einem anderen Server | 1.0 |
204 | No Content | Ausführung ohne Feedback | 1.0 |
205 | Reset Content | Datenversendung nicht möglich | 1.1 |
206 | Partial Content | Datenversendung in mehreren Teilen | 1.1 |
300 | Multiple Choices | Datei ist mehrfach vorhanden | 1.0 |
301 | Moves Permanently | Datei ist dauerhaft verschoben | 1.0 |
302 | Moves Temporarily | Datei ist vorübergehend verschoben | 1.0 |
303 | See Other | Datei ist an einem andern Ort | 1.0 |
304 | Not Modified | Datei ist unverändert | 1.0 |
305 | Use Proxy | Datei über Proxy anfordern | 1.0 |
400 | Bad Request | Keine Bearbeitung | 1.0 |
401 | Unauthorized | Nicht autorisiert | 1.0 |
402 | Payment Required | Kostenpflichtige Daten | 1.0 |
403 | Forbidden | Zugriff verweigert | 1.0 |
404 | Not Found | Nicht gefunden | 1.0 |
405 | Method not Allowed | Methode nicht erlaubt | 1.1 |
406 | Not Acceptable | Anfrage nicht akzeptiert | 1.1 |
407 | Proy Authorisation Required | Nicht autorisierter Proxy | 1.1 |
408 | Request Timeout | Zeitüberschreitung | 1.1 |
409 | Conflict | Zugriff gesperrt | 1.1 |
410 | Gone | Daten wurden verschoben | 1.1 |
411 | Length Required | Längenangaben erforderlich | 1.1 |
412 | Precondition Failed | Vorbedingungen nicht erfüllt | 1.1 |
413 | Request Entity Too Long | Anfrage zur Bearbeitung zu lang | 1.1 |
414 | Request URL Too Long | Adresse zu lang | 1.1 |
415 | Unsupported Media Type | Nicht unterstützter MIME-Type | 1.1 |
416 | Requested Range Not Satisfiable | Angegebener Bereich ist falsch | 1.1 |
417 | Expectation Failed | Vorraussetzung ist nicht erfüllt | 1.1 |
500 | Internal Server Error | Interner Server Fehler | 1.0 |
501 | Not Implemented | Nicht implementierte Anfrage | 1.0 |
502 | Bad Gateway | Gatewayfehler | 1.0 |
503 | Service Unavailable | Server ueberlastet | 1.0 |
504 | Gateway Timeout | Zeitüberschreitung Gateway | 1.1 |
505 | HTTP Version not supported | Nicht unterstützte HTTP-Version | 1.1 |
Erläuterung der häufig auftretenden Status-Codes
Status-Code | Beschreibung |
---|---|
200 | Dieser Status-Code wird bei jeder erfolgreich bearbeiteten Anfrage übermittelt. |
401 | Zugriffe auf passwortgeschützte Bereiche eines Servers werden dem Client mit diesem Code verwehrt. Nur wenn der Client sich nach diesem Code autorisiert, bekommt er Zugriff auf die Dateien und Verzeichnisse. (Siehe unter HTTP-Authentifizierung) |
404 | Immer dann, wenn keine HTML-Datei zurückgeliefert werden kann, dann erfolgt die Rückmeldung eines 404-Errors. Meistens liefert der Server eine Standard-Fehlerseite zurück. |
500 | Ein HTTP-Server kann nicht nur HTML-Dateien schicken, sondern auch Programme und Skripte ausführen, die HTML-Daten zurückliefern. Kommt es bei der Ausführung zu einem Fehler, bricht der Server den Vorgang ab und liefert diese Fehlermeldung zurück. |
Eigenen Webserver einrichten
Für den Raspberry Pi gibt es verschiedene Webserver. Am einfachsten ist es mit dem "lighttpd". Hier muss man am wenigsten konfigurieren und die Installation ist effektiv mit einem Befehl auf der Kommandozeile erledigt.
Übersicht: HTTP
- WWW - World Wide Web
- HTTP - Hypertext Transfer Protocol
- HTTPS / HTTP Secure
- HTTP/2 - HTTP Version 2.0
- HTTP/3 - HTTP Version 3.0
- WebDAV - Web-based Distributed Authoring and Versioning
Weitere verwandte Themen:
- URL - Uniform Resource Locator
- TLS - Transport Layer Security
- DNS - Domain Name Service
- MIME-Typen - Multipurpose Internet Mail Extensions
- Protokolle in der Netzwerktechnik
Teilen
Netzwerktechnik-Fibel
Alles was Sie über Netzwerke wissen müssen.
Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.
Netzwerktechnik-Fibel
Alles was Sie über Netzwerke wissen müssen.
Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.
Alles was Sie über Kommunikationstechnik wissen müssen.
Kommunikationstechnik-Fibel
Die Kommunikationstechnik-Fibel ist ein Buch über die Grundlagen der Kommunikationstechnik, Übertragungstechnik, Netze, Funktechnik, Mobilfunk, Breitbandtechnik und Voice over IP.