HTTP Arthur Zaczek Aug 2015 HTTP 1 Einleitung 1.1 Definition - - PDF document

http
SMART_READER_LITE
LIVE PREVIEW

HTTP Arthur Zaczek Aug 2015 HTTP 1 Einleitung 1.1 Definition - - PDF document

HTTP Arthur Zaczek Aug 2015 HTTP 1 Einleitung 1.1 Definition Das Hypertext Transfer Protocol ( HTTP , dt. Hypertext-bertragungsprotokoll) ist ein Protokoll zur bertragung von Daten ber ein Netzwerk . Es wird hauptschlich eingesetzt,


slide-1
SLIDE 1

HTTP

Arthur Zaczek

Aug 2015

slide-2
SLIDE 2

HTTP

1 Einleitung

1.1 Definition

Das Hypertext Transfer Protocol (HTTP, dt. Hypertext-Übertragungsprotokoll) ist ein Protokoll zur Übertragung von Daten über ein Netzwerk. Es wird hauptsächlich eingesetzt, um Webseiten aus dem World Wide Web (WWW) in einen Webbrowser zu laden. HTTP gehört der sogenannten Anwendungsschicht etablierter Netzwerkmodelle an. Die Anwen- dungsschicht wird von den Anwendungsprogrammen angesprochen, im Fall des HTTP ist dies meistens ein Webbrowser. Im ISO/OSI-Schichtenmodell entspricht die Anwendungsschicht den Schichten 5–7.

1.2 Zustandslos

HTTP ist ein zustandsloses Protokoll. Ein zuverlässiges Mitführen von Sitzungsdaten kann erst auf der Anwendungsschicht durch eine Sitzung über eine Session-ID implementiert werden. Durch Erweiterung seiner Anfragemethoden, Header-Informationen und Statuscodes ist das HTTP nicht auf Hypertext beschränkt, sondern wird zunehmend zum Austausch beliebiger Daten

  • verwendet. Zur Kommunikation ist HTTP auf ein zuverlässiges Transportprotokoll angewiesen.

In nahezu allen Fällen wird hierfür TCP verwendet.

1.3 Geschichte

Das Protokoll wurde 1989 von Tim Berners-Lee am CERN zusammen mit der URL und der HTML entwickelt, wodurch praktisch das World Wide Web geboren wurde.

1.4 Aufbau

Die Kommunikationseinheiten im HTTP zwischen Client und Server werden als Nachrichten beze- ichnet, von denen es zwei unterschiedliche Arten gibt:

  • die Anfrage (engl. Request) vom Client an den Server und
  • die Antwort (engl. Response) als Reaktion darauf vom Server zum Client.

1.5 Aufbau

Jede Nachricht besteht dabei aus zwei Teilen:

  • dem Nachrichtenkopf (engl. Message Header, kurz: Header oder auch HTTP-Header

genannt). Er enthält wichtige Informationen über den Nachrichtenkörper wie etwa ver- wendete Kodierungen oder den Inhaltstyp, damit dieser vom Empfänger korrekt interpretiert werden kann.

  • dem Nachrichtenkörper (engl. Message Body, kurz: Body) Der Nachrichtenkörper enthält

schließlich die Nutzdaten. 1

slide-3
SLIDE 3

HTTP

1.6 Funktionsweis

HTTP ist ein Kommunikationsschema, um Webseiten (oder Bilder oder prinzipiell jede andere beliebige Datei) von einem entfernten Computer auf den eigenen zu übertragen. Wenn auf einer Webseite der Link zur URL http://www.example.net/infotext.html aktiviert wird, so wird an den Computer mit dem Hostnamen www.example.net die Anfrage gerichtet, die Ressource /infotext.html zurückzusenden. Der Name www.example.net wird dabei zuerst über das DNS-Protokoll in eine IP-Adresse

  • umgesetzt. Zur Übertragung wird über TCP auf den Standard-Port 80 des HTTP-Servers eine

HTTP-GET-Anforderung gesendet.

1.7 Beispiel

GET /infotext.html HTTP/1.1 Host: www.example.net HTTP/1.1 200 OK Server: Apache/1.3.29 (Unix) PHP/4.3.4 Content-Length: (Größe von infotext.html in Byte) Content-Language: de (nach ISO 639 und ISO 3166) Content-Type: text/html Connection: close (Inhalt von infotext.html)

1.8 Funktionsweise

Enthält der Link Zeichen, die in der Anfrage nicht erlaubt sind, werden diese %-kodiert. Zusät- zliche Informationen wie Angaben über den Browser, zur gewünschten Sprache etc. können über den Header (Kopfzeilen) in jeder HTTP-Kommunikation übertragen werden. Sobald der Header mit einer Leerzeile abgeschlossen wird, sendet der Computer, der einen Web-Server (an Port 80) betreibt, seinerseits eine HTTP-Antwort zurück. Diese besteht aus den Header-Informationen des Servers, einer Leerzeile und dem tatsächlichen Inhalt der Nachricht, also dem Dateiinhalt der infotext.html-Datei.

1.9 Funktionsweise

Übertragen werden normalerweise Dateien in Seitenbeschreibungssprachen wie (X)HTML und alle ihre Ergänzungen, zum Beispiel Bilder, Stylesheets (CSS), Skripte (JavaScript) usw., die meistens von einem Browser in einer lesbaren Darstellung miteinander verbunden werden. Prinzipiell kann jede Datei in jedem beliebigen Format übertragen werden, wobei die „Datei“ auch dynamisch generiert werden kann und nicht auf dem Server als physische Datei vorhanden zu sein braucht (z. B. bei Anwendung von CGI, SSI, JSP , PHP und ASP .NET).

1.10 Protokollversionen

Derzeit werden zwei Protokollversionen, HTTP/1.0 und HTTP/1.1, verwendet. HTTP/2.0 ist in Arbeit. 2

slide-4
SLIDE 4

HTTP Bei HTTP/1.0 wird vor jeder Anfrage eine neue TCP-Verbindung aufgebaut und nach Übertra- gung der Antwort standardmäßig vom Server wieder geschlossen. Sind in ein HTML-Dokument beispielsweise zehn Bilder eingebettet, so werden insgesamt elf TCP-Verbindungen benötigt, um die Seite auf einem grafikfähigen Browser aufzubauen.

1.11 Protokollversion

Bei HTTP/1.1 kann ein Client durch einen zusätzlichen Headereintrag (Keep-Alive) den Wunsch äußern, keinen Verbindungsabbau durchzuführen, um die Verbindung erneut nutzen zu kön- nen (persistent connection). Die Unterstützung auf Serverseite ist jedoch optional und kann in Verbindung mit Proxies Probleme bereiten. Mittels HTTP-Pipelining können in der Version 1.1 mehrere Anfragen und Antworten pro TCP- Verbindung gesendet werden. Für das HTML-Dokument mit zehn Bildern wird so nur eine TCP-Verbindung benötigt.

1.12 Zustandsloses Protokoll

Bei HTTP gehen Informationen aus früheren Anforderungen verloren (zustand- sloses Protokoll). Über Cookies in den Header-Informationen können aber Anwendungen realisiert werden, die Statusinformationen (Benutzereinträge, Warenkörbe) zuordnen können. Dadurch werden An- wendungen möglich, die Status- bzw. Sitzungseigenschaften erfordern.

1.13 HTTPS

Normalerweise kann die Information, die über HTTP übertragen wird, auf allen Rechnern und Routern gelesen werden, die im Netzwerk durchlaufen werden. Über HTTPS kann die Übertragung aber verschlüsselt erfolgen.

1.14 HTTP Request Methoden

  • GET ist die gebräuchlichste Methode. Mit ihr werden Inhalte vom Server angefordert.
  • POST ähnelt der GET-Methode, nur dass ein zusätzlicher Datenblock übermittelt wird. Dieser

besteht üblicherweise aus Name-Wert-Paaren, die aus einem HTML-Formular stammen. Grundsätzlich können Daten auch mittels GET übertragen werden (als Argu- mente im URI).

1.15 HTTP Request Methoden

  • HEAD weist den Server an, die gleichen HTTP-Header wie bei einem GET oder POST, nicht

jedoch den eigentlichen Dokumentinhalt selbst zu senden. So kann zum Beispiel schnell die Gültigkeit einer Datei im Browsercache geprüft werden.

  • PUT dient dazu, Dateien unter Angabe des Ziel-URIs auf einen Webserver hochzuladen.

3

slide-5
SLIDE 5

HTTP WebDAV

1.16 HTTP Request Methoden

  • DELETE löscht die angegebene Ressource (z. B. eine Datei) auf dem Server.
  • OPTIONS liefert eine Liste der vom Server unterstützen Methoden und Features.
  • Und andere. . .

1.17 Argumentübertragung

Häufig will der Nutzer einer Website spezielle Informationen senden. Dazu stellt HTTP prinzipiell zwei Möglichkeiten zur Verfügung:

  • HTTP-GET: Die Daten sind Teil der URL und bleiben deshalb beim Speichern oder der

Weitergabe des Links erhalten.

  • HTTP-POST: Übertragung der Daten mit einer speziell dazu vorgesehenen Anfrageart in

den Nachrichtenkörper, so dass sie in der URL nicht sichtbar sind. Die zu übertragenden Daten müssen ggf. URL-kodiert werden, d. h. reservierte Zeichen müssen mit %<Hex-Wert> und Leerzeichen mit + dargestellt werden.

1.18 HTTP GET

Hierbei werden die Parameter-Wertepaare durch das Zeichen ? in der URL eingeleitet. Häufig besteht diese Liste aus mit dem Zeichen & getrennten Wertepaaren, die je aus einem Parameternamen, dem Zeichen = und dem Wert des Parameters bestehen.

1.19 HTTP Get

GET /wiki/Spezial:Search?search=Software&go=Artikel HTTP/1.1 Host: de.wikipedia.org Dem Wikipedia-Server werden zwei Wertepaare übergeben: search Software go Artikel

1.20 HTTP Post

Da sich die Daten nicht in der URL befinden, können per POST große Datenmengen, z. B. Bilder, übertragen werden. 4

slide-6
SLIDE 6

HTTP

1.21 HTTP Post

POST /wiki/Spezial:Search HTTP/1.1 Host: de.wikipedia.org Content-Type: application/x-www-form-urlencoded Content-Length: 26 search=Software&go=Artikel

1.22 HTTP Status Codes

Jede HTTP-Anfrage wird vom Server mit einem HTTP-Statuscode beantwortet. Er gibt zum Beispiel Informationen darüber, ob die Anfrage erfolgreich bearbeitet wurde, oder teilt dem Client, also etwa dem Browser, im Fehlerfall mit, wo (z. B. Umleitung) bzw. wie (z. B. mit Authentifizierung) er die gewünschten Informationen (wenn möglich) erhalten kann. Zusätzlich zum Statuscode enthält der Header der Server-Antwort eine Beschreibung des Fehlers in englischsprachigem Klartext.

1.23 1xx - Information

Die Bearbeitung der Anfrage dauert trotz der Rückmeldung noch an. Eine solche Zwischenantwort ist manchmal notwendig, da viele Clients nach einer bestimmten Zeitspanne (Timeout) automatisch annehmen, dass ein Fehler bei der Übertragung oder Verar- beitung der Anfrage aufgetreten ist, und mit einer Fehlermeldung abbrechen.

1.24 2xx - Erfolgreiche Operation

Die Anfrage wurde bearbeitet und die Antwort wird an den Anfragesteller zurückgesendet.

1.25 3xx - Umleitung

Um eine erfolgreiche Bearbeitung der Anfrage sicherzustellen, sind weitere Schritte seitens des Clients erforderlich. Dies ist zum Beispiel der Fall, wenn eine Webseite vom Betreiber umgestaltet wurde, sodass sich eine gewünschte Datei nun an einem anderen Platz befindet. Mit der Antwort des Servers erfährt der Client im Location-Header, wo sich die Datei jetzt befindet.

1.26 4xx – Client Fehler

Bei der Bearbeitung der Anfrage ist ein Fehler aufgetreten, der im Verantwortungsbereich des Clients liegt.

  • Ein 404 tritt beispielsweise ein, wenn ein Dokument angefragt wurde, das auf dem Server

nicht existiert.

  • Ein 403 weist den Client darauf hin, dass es ihm nicht erlaubt ist, das jeweilige Dokument

abzurufen.

  • Es kann sich zum Beispiel um ein vertrauliches oder nur per HTTPS zugängliches Dokument

handeln. 5

slide-7
SLIDE 7

HTTP

1.27 5xx – Server Fehler

Es ist ein Fehler aufgetreten, dessen Ursache beim Server liegt. Zum Beispiel bedeutet 501, dass der Server nicht über die erforderlichen Funktionen (d. h. zum Beispiel Programme oder andere Dateien) verfügt, um die Anfrage zu bearbeiten. 6