Grundlagen HTTP


Protokolle der Anwendungsschicht

Das World Wide Web

– Verteiltes Hypermedia-System
– – dezentrale Speicherung von Dokumenten
– – Verbindungen (Hyperlinks) zwischen den Dokumenten
– – Dokumente mit Text, Grafik, Audio, Video, …
– – einfache Navigation von Dokument zu Dokument
– Standards für die Beschreibung der Dokumentenstruktur und für das Protokoll des Dokumentenzugriffs
– – Einheitliche Schnittstelle für beliebige Dokumentarten
– – Integration anderer Internet-Anwendungen im WWW-Browser
– – Web-Inhalte von WWW-Servern angeboten
– – – über Well-known-Port 80

Das World Wide Web

Zeilenorientierte WWW-Browser
– reine Textdarstellung ohne Bilder, Audio, Video; Bedienung nur über Tastatur
– für Verbindungen mit geringer Übertragungsrate oder Systeme mit begrenzten Ressourcen

Lynx

Lynx

Das World Wide Web

– Grafische WWW-Browser
– – direkt darstellbar sind Dokumente mit HTML, ASCII, Grafiken in den Formaten GIF, XBM, XPM, JPEG, PNG, …
– – Einbindung externer Betrachter für z.B. Postscript, PDF, spezielle Grafikformate (TIFF, PICT, …), Audio (WAV, MP3, …), Video (MPEG, QuickTime, …)
– – Beispiele: Firefox, Opera, Konqueror, Internet Explorer

Grafische Ausgabe

 

 

Grafische Ausgabe

Grafische Ausgabe

Hypertext Transfer Protocol

– kurz „HTTP“ genannt; RFC 2616
– – Aktuell: Version 1.1
– Dient meist dem Transfer von Dateien vom Server zum Klient, aber auch der Übertragung z.B. von Formulardaten
– – ist trotz des Namens nicht auf HTML-Dokumente beschränkt
– – Übertragung stets vom Klient initiiert
– – einfaches ASCII-Protokoll, benutzt Elemente von MIMEAktuell: Version 1.1

HTTP ist ein Prokotoll der Anwendungsschicht. Es nutzt TCP als Transportprotokoll (könnte theoretisch auch UDP verwenden).

Adressierung von Webinhalten

– Zugriff auf WWW-Seiten erfordert Klärung:
– –Wie lautet der lokale Name der Seite beim Server?
– –Wo liegt die Seite?
– –Wie kann auf die Seite zugegriffen werden?
– Adresse besteht aus Angaben zu Protokoll, Socket, Datei, Parameter
– Uniform Resource Locator
– – Aufgabe: Angabe der Position einer Ressource (meist Datei)
– – Geht davon aus, dass die Ressource über das Netz geholt werden muss
– – Wenn die Ressource nur einmal vorhanden ist, kann damit auch eine eindeutige Bezeichnung geliefert werden
Beispiel: http://www.ibb-fisi.de

Das URL-Format

URL-Format

URL-Format

* auch „Schema“ genannt
** Kennwort soll nicht mehr angegeben werden, und Server müssen diese Angabe nicht mehr beachten (deprecated).

Das URL-Format

– Bis auf die Rechneradresse (DNS-Name oder IP-Adresse) und das Protokoll ist alles optional
– – Protokol kann vom Browser ergänzt werden (meist http)
– – Pfad wird als Server-Stammverzeichnis angenommen, wenn fehlend (entscheidet Server)
– Anfrage (Query)
– – Wenn vorhanden, mit „?“ angeschlossen
– – Format Name=Wert, mit „&“ getrennt
– Fragment (Anchor)
– – Obliegt dem Klienten, das übermittelte Dokument geeignet darzustellen (z.B. zu diesem Punkt herunterrollen)

Uniform Resource Identifiers

– Verallgemeinerung des URL-Konzepts
– Nicht mehr nur Ort, sondern auch Identität bestimmend
– Format Schema:Hierarchische Angaben[?Anfrage][#Fragment]
– Hierarchische Angaben: schemaspezifische Angaben, eventuell mehrgliedrig
– Jede URL ist eine URI
– – Protokoll wird generell als „Schema“ gelesen, z.B. das „http-Schema“
– – Hierarchische Angaben der URL: Rechner mit Port einschließlich Pfad (ggf. vorgehängte Authentifikation)

Uniform Resource Names

– Uniform Resource Names (URNs) sind dauerhafte, ortsunabhängige Namen für WWW-Ressourcen
– – Es soll einfach sein, andere Namensräume auf URNs abzubilden
– – Schema: urn:Namensraum:namensraumspezifische Angabe
– – Beispiele

urn:ietf:rfc:2141 // RFC 2141
urn:ietf:std:50 // …
urn:isbn:3-8266-5042-5 // …

– – URNs geben nicht die Quelle an; diese muss erst bestimmt werden
– – – URN -> URL
– Jede URN ist eine URI
– – Schema „urn“

URI-Beispiele
http://www.mit.edu:8001/people/dshapiro/macsites.html
– Webseite
file:///WWW/beispiel.html
– URI (mit fehlender Rechnerangabe), Datei im lokalen Dateisystem
ftp://ftp.cs.mit.edu/README
– Datei auf Server
mailto:majordomo@example.com?body=subscribe%20bamboo-l
– E-Mail an diese Adresse erstellen (RFC 2368)
news:comp.infosystems.www.users
– Diskussionsforum
Die frühere strikte Partitionierung (was nicht URL ist, ist URN) ist mittlerweile aufgegeben worden. Manche URIs
passen weder gut zu den URLs, noch sind es URNs (z.B. „data:“, eingebettetes Datenelement)
In technischen Dokumenten wird generell nur noch der Begriff URI verwendet.

 

HTTP

HTTP

HTTP

Anfrage (Request)

• Befehle (auch Methoden genannt)

GET Lesen einer Seite (allg.: einer Ressource)
HEAD Lesen eines Seitenkopfs (insbesondere Angaben, wann die Seite zuletzt geändert wurde)
PUT Abspeichern einer Seite (Neuanlegen)
POST Anhängen von Daten (wird zum Übertragen von Formulardaten verwendet)
DELETE Löschen einer Seite (sofern erlaubt)

Server kann entscheiden, worauf sich die URL tatsächlich bezieht
– z.B. wird / auf eine spezielle Datei (index.html) umgelenkt

• Beispiel
– GET /index.html HTTP/1.1

HTTP-Kopfzeilen

• Jede Zeile besteht aus einer Angabe der Form Name:Wert und endet
mit einem Zeilenvorschub
– Wert kann eine Komma-separierte Liste sein
• Beispiel

GET / HTTP/1.1

Host: www.vs.uni-kassel.de
User-Agent: Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.6) Gecko/20050226 Firefox/1.0.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en;q=0.5,en-us;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: wikidbUserID=3; wikidbToken=d9173a300eca8100; wikidbUserName=bla
Cache-Control: max-age=0

Zum Anfrage-Kopf gehörend
Zum allgemeinen Kopf gehörend
Zusatz

HTTP-Header

– Beispiele
– – Host: Angabe des angefragten Webservers (es könnten mehrere Hostnamen der Adresse zugeordnet sein)
– – Referer: Angabe, auf welcher Webseite der angeklickte Verweis stand
– – Accept-Language: Die Webseite könnte in mehreren Sprachversionen vorliegen; hiermit wird die Präferenz festgelegt
– – Content-Encoding: Teil des Inhaltskopfs; wurden irgendwelche Filter auf den Inhalt angewendet (z.B. Kompression mit gzip)?
– – Last-Modified: Bei Dateien in der Regel der Zeitstempel; allgemein der Zeitpunkt, als sich zuletzt der Zustand änderte
– Kopfzeilen können beliebig angeordnet sein, sie müssen nicht nach Kategorien gruppiert sein.
– – Es wird jedoch empfohlen, erst allgemeine, dann anfragespezifische, dann inhaltsspezifische Angaben zu nennen.

Antwort (Response)

– Antwort (wieder reiner Text) besteht aus
– – Statuszeile
– – Kopf
– – Daten
– Statuszeile
– – Dreistelliger Zahlencode mit Klartexthinweis
– – Beispiele siehe rechts

2xx Success
200 OK
201 Created
202 Accepted
204 No content
3xx Redirection
301 Moved permanently
307 Temporary redirect
4xx Client error
 400  Bad request
 401  Unauthorized
402 Payment required
403 Forbidden
404 Not found
 5xx Server error
500 Internal server error
503 Service unavailable

Beispiel

Klient - Server www

Klient – Server www

HTTP und Sitzungen

– HTTP ist nicht sitzungsorientiert
– – Jede HTTP-Abfrage ist eine eigene Verbindungsaufnahme
– – Möglich, im Kopf anzugeben, die Verbindung über ein paar Anfragen hinweg wiederzuverwenden (Keep-alive)
– – – Jedoch ist jede Anfrage völlig eigenständig und hat nichts mit einer vorherigen Anfrage zu tun
– Problem bei geschützten Seiten
– – Wie merkt sich das System den Login?
– Erhaltung einer Sitzung auf Applikationsebene beim Klienten und Server
– Sitzungsreferenzen
– – über URL
– – über Cookies

Sitzungen

– URL-Methode
– – Server erzeugt eine Sitzungs-ID und erzeugt passende Verweise, welche diese ID beinhalten

Server Sitzungen

Server Sitzungen

Cookies

– Begriff vom Netscape geprägt
– – Offiziell: HTTP State Management Mechanism (RFC 2965)
– Spezieller Protokollkopf
– – vom Server in einer Antwort an den Klienten geschickt
– – Set-Cookie: Cookie1,Cookie2,Cookie3,… (veraltet)
– – Neuer: Set-Cookie2: Cookie1,Cookie2,Cookie3,…
– – Jedes Cookie ist ein Paar Name=Wert
– – Zusatzparameter je Cookie mit Semikolon getrennt
– – – z.B. ist dies ein einzelnes Cookie: lastvisit=1112277815;Path=/;Comment=Test

Cookie wird vom Browser gespeichert
– temporär: nur im Speicher (auch „Session Cookie“)
– permanent: im Dateisystem (auch „Persistent Cookie“)
Prinzip
– Browser ist angehalten, das Cookie (als Kopfzeile) wieder an den Server zu schicken, wenn es zu Host/Port/URI ein passendes Cookie gibt (das nicht
verfallen ist)
Kopfzeile
– Cookie: Version CookieSp1,CookieSp2,…
wobei Version=$Version=Wert und CookieSpX so aussieht:

Name=Wert[;$Path=Pfad][;$Domain=Domain][;$Port=Port]
mit den Werten vom Server

Nur diese 3 Parameter, nur diese Reihenfolge (trennt dadurch Cookies)

mit den Werten vom Server

Cookies Beispiel

Cookies Beispiel

World Wide Web

Weiteres zur Technik des World Wide Web in speziellen Folgen dieser Vorlesung
– World Wide Web (1)
– Web 2.0