Webtechnologien Teil 2: Hypertext Transfer Protokoll (Wiederholung aus Rechnernetze) 23.03.15 1
Literatur [2-1] Gourley, David; Totty, Brian: HTTP. The definitive Guide. O'Reilly, 2002 [2-2] Badach, Anatol; Rieger, Sebastian; Schmauch, Matthias: Web- Technologien. Hanser, 2003 [2-3] Hypertext Transfer Protocol -- HTTP/1.1 http://tools.ietf.org/html/rfc2616 [2-4] Universal Resource Identifiers in WWW http://tools.ietf.org/html/rfc1630 Defining Well-Known Uniform Resource Identifiers (URIs) http://tools.ietf.org/html/rfc5785 [2-5] Upgrading to TLS Within HTTP/1.1 http://tools.ietf.org/html/rfc2817 2
Web I Die inzwischen wichtigste Anwendung im Internet ist das Web (WWW = World Wide Web). Eine Web-Site ist eine Sammlung von Web-Pages einer Domain. Alle Seiten einer Web-Site gehören zu einer Domain. Die Domains sind dieselben wie bei E-Mail, News etc. Uniform Resource Locator (URL) = Weltweit eindeutige, aber temporäre Adresse eines Objektes im Web Objekte können sein: Web-Seiten, Bilder, Audio-, Video-Dateien oder andere Dokumente URLs werden benutzt, um Querverweise zu realisieren; erst dadurch entsteht ein Netz, ein Web. 3
Web II Die Web-Site selbst wird meistens über die Datei "index.html" bzw. "index.htm" angesprochen. Diese Datei definiert den "Anfang" der Web-Site. Diese Datei wird dann benutzt, wenn in der URL nur der Domainnamen angegeben wird. Der Name dieser speziellen Startdatei wird durch den Web-Server per Konfiguration festgelegt. Als Client-Software werden meistens Browser benutzt; sie realisieren die Protokoll-Schnittstelle zum Web-Server. Das Protokoll ist HTTP (Hypertext Transfer Protocol). Aber auch andere Programme können auf Web-Server zugreifen, z. B. wget, curl unter LINUX. 4
Zugriff auf die Web-Server Domain A1 Browser Request Response Web-Server Domain A2 Web-Site Request Web-Server Response Nach jedem Response wird der Kontext vergessen. Web-Site 5
URL (Uniform Resource Locator) I http://rechnername.subdomain.domain.top:port/dateiname? XXX=YYYY... Angabe des Protokolls, hier http Angabe des Rechners, meist www Angabe der SubDomain entfällt meist Nach dem? folgen Zusatzinformationen Zusatzinformationen Dateiname Beispiel: http://web.f4.htw-berlin.de/messer/index.html Top Level Domain "de" Domain "fhtw-berlin" SubDomain "f4" Rechnername "web" Der Trenner im Dateinamen ist "/" - auch bei Windows-Betriebssystemen. 6
URL (Uniform Resource Locator) II http://<domain>/dateiname? XXX=YYYY&XXX=YYYY&XXX=YYYY... XXX sind die Namen der Formularfelder (Keywords) YYY sind die Inhalte der Formular-Elemente Das Trennzeichen ist ein "&" Die Strings von XXX und YYY müssen kodiert sein: URL-Encoding: http://de.wikipedia.org/wiki/url-encoding Siehe auch: http://de.wikipedia.org/wiki/uniform_resource_locator 7
URL (Uniform Resource Locator) III URLs von Antworten hatten früher häufig Zusätze hinter einem "?", wie hier dargestellt, heute läuft das alles über JavaScript. 8
Bemerkungen Es können theoretisch beliebig viele Domain-Teile vorhanden sein, praktisch sind es 2-3 (Subdomain bis Topdomain). Es gibt noch zwei weitere Begriffe, die sich aber in der Praxis allgemein nicht durchgesetzt haben: Uniform Resource Name (URN) = Weltweit eindeutiger permanenter Name (Adresse) eines Objekts (URLs sind temporär!) Uniform Resource Identifier (URI) = Oberbegriff zu URL und URN. 9
Möglichkeiten für Protokolle in der URL (Internet) http Normale Anforderung einer Seite fast immer https Zugriff mit SSL selten mailto Mailabsenden, z. B. "mailto:joe@ostern.de" selten ftp Anforderung einer Datei mit FTP selten rtsp, rtspu Übertragung von Audio- und Videoinformation file Verweis auf lokale Datei nie sehr selten news Zugriff auf eine Artikelgruppe im News-System fast nie about Zugriff auf Browser-Internata nie 10
Zugang zur Website I Browser HTTP-Zugang Web-Server Datenbank- Server Log-Dateien Web-Site Datenbank FTP-Client FTP-Zugang FTP-Server Web-Site-Betreiber Web-Site-Provider Neben diesen beiden Zugängen sind noch SSH und WebDAV verbreitet. 11
Zugang zur Website II Neben einem recht unsicheren FTP-Zugang gibt es noch den gleich unsicheren Zugang über WebDAV. Bei diesem Protokoll wird direkt die Web-Site aus der Ferne bearbeitet. Einen sicheren Zugang realisiert nur SSH. 12
Cookies I Cookie = Kombination eines frei definierbaren Schlüsselwortes mit einem Wert in der Form von "Keyword=Wert" sowie einigen Attributen Die Attribute definieren die Zugehörigkeit zu einer Web-Site sowie noch weitere Eigenschaften. Die im Browserkrieg entstandenen Cookie-Formate wurden erstmals in RFC 2109 festgelegt. Hier werden Cookies in der modernen Version nach RFC 6265 erläutert. Attribut Erläuterung domain path expires secure Name der Domain oder ein Teil davon, z. B. "lola.de" Pfad zur Datei Verfallsdatum nach RFC 822 ohne Anführungszeichen Cookie wird nur bei SSL übertragen 13
Cookies II - Beispiele Siehe: http://de.wikipedia.org/wiki/http-cookie http://en.wikipedia.org/wiki/http_cookie 14
Cookies III - Beispiele Typischer Spionage- Glückskeks 15
Cookies IV - Behandlung 16
Flash-Cookies Flash-Cookies stammen von Flash-Anwendungen und haben einen anderen Aufbau und Größe. Sie haben auch nichts mit den bisher vorgestellten Cookies etwas zu tun. Inhalt und Aufgabe derartiger Cookies werden nicht veröffentlicht. Sie können z.b. mit dem Firefox-Plugin Better Privacy gelöscht werden. 17
Hypertext Transfer Protokoll (HTTP) Definiert in RFC 2616 (HTTP 1.1) HTTP 1.0: Version mit Full-Request/Responses HTTP 1.1: Optimierte, verbesserte Version von 1.0 Benutzung von Port 80 oder einem Port, der in der URL angegeben ist, für den Zugriff auf Server HTTP ist ein Protokoll, das Binärdaten entsprechend MIME, jedoch nicht unbedingt in base64 kodiert, überträgt. Die MIME-Definitionen sind analog zu denen zur E-Mail. HTTP ist in dem Sinne ohne Zustände, als dass keine Session- Identifikation existiert, d.h. nach der Behandlung eines Reqtuest wird dieser vom Server vergessen. Dies führte zur Erfindung der Cookies sowie zur Einführung der Sessions bei SSL. 18
Phasen einer Transaktion (HTTP 1.1) 1. Aufbau der TCP/IP-Verbindung mit dem Web-Server 2. Absenden einer HTTP-Anfrage durch Client 3. Absenden der Antwort-Nachricht durch Server 4. Mehrfaches Wiederholen der letzten beiden Punkte 5. Abbau der Verbindung Bemerkungen Bei HTTP 1.1 wird grundsätzlich die Verbindung solange gehalten, bis (voraussichtlich) alle Dateien übertragen sind, was zu einer geringeren Netzbelastung führt. Bei HTTP 1.0 war das nicht so. 19
Client-Anforderung (Request) Anforderungszeile Method URL HTTP-Version Header Nachricht...... Kopf-Informationen Leerzeile Optionale Daten 20
Server-Antwort (Response) Statuszeile HTTP-Version Status-Code Text Header Nachricht...... Kopf-Informationen Leerzeile Optionale Daten Die Header-Informationen bestehen in allen Fällen aus einer Liste von Schlüsselwörtern und Werten entsprechend folgender Syntax: Keyword : Wert 21
Beispiele für Methoden (Request) Kommando GET HEAD PUT POST DELETE Erläuterung Kopieren einer Datei auf den Client Kopieren des HTML-Kopfes der angegebenen Datei auf den Client Kopieren einer Datei auf den Server Übertragung von Daten, z. B. Inhalt von Formularen, im hinteren Teil der Nachricht Löschen der Datei auf dem Server Darüber hinaus gibt es noch folgende Kommandos: OPTIONS, TRACE und CONNECT. 22
Beispiele für Header-Informationen (Request) I Keyword Accept Authorization Cookie Cookie2 From Host Referer User-Agent Erläuterung Vom Client akzeptierte Datenformate "Benutzername:Password" in base64 kodiert Form: Name=Wert Cookie im RFC-2965-Format E-Mailadresse des Clients Hostname des Clients URL der aktuellen HTML-Seite Name des Browsers Als Authentifizierung (mit dem Schlüsselwort Authorization) kann die Basic Access Authentication angewendet werden, z.b. konfiguriert über.htaccess-dateien beim Apache-Webserver. 23
Beispiele für Header-Informationen (Request) II Keyword If-Modified-Since Range Erläuterung Nur wenn seit Datum modifiziert Teilbereich einer Datei(!) Die Bedingungen dienen u.a. der Cache-Validierung bzw. der Optimierung: Wenn das Cache-Objekt zum Zeitpunkt T geholt wurde, dann bewirkt If-Modified-Since : T dass nur dann der Server Daten liefert, wenn diese nach T modifiziert wurden. 24
Hinweise Der Client gibt die gewünschten Formate bzw. die, die er verarbeiten kann, im Kopf an. Der Server kann dann bei Alternativen ein geeignetes Format auswählen. Der Client liefert unaufgefordert sämtliche für die angesprochene Web-Seite (URL) passenden Cookies. Die Wertepaare Cookie From (wird von den Browsern nicht mehr gesendet) Referer sollten durch den Benutzer konfigurierbar sein, da deren Übertragung die Privatsphäre verletzten kann. 25
Beispiele für Status-Codes Code 200 OK Erklärung 202 Anforderung akzeptiert 203 GET/HEAD-Anforderung erfüllt 300 Datenquellen an mehreren Stellen gefunden 304 Datenquelle konnte nicht bestimmt werden 400 Unverständliche Anforderung 401 Nicht zugelassene Anforderung 403 Zugriff untersagt 404 Datenquelle nicht gefunden 500 Interner Serverfehler 502 Schlechte Netzverbindung oder Server überladen Die Codes sind in Gruppen eingeteilt, deren Nummer die erste Ziffer des Codes bildet. 26
Header-Informationen (Responses) Der Server kann als Header-Informationen in seiner Antwort u.a. liefern: Alter der gelieferten HTML-Seite Umleitung auf eine andere URL Seinen eigenen Namen Cookies (zum Setzen auf dem Client) Steuerinformationen für den Cache Beispiele für Cache-Steuerung "Cache-Control: no-cache" - Kein Cache "Cache-Control: max-age = 10000" - Zeit in Sekunden Das Ausschalten des Caches ist für einige Anwendungen zwingend. 27
Cache-Steuerung Es gibt zwei Möglichkeiten der Steuerung: Im Kopf der HTML-Seite können die meisten der besprochenen Header-Komponenten, so auch die Cache-Kontrolle angegeben werden. Das geht mit http-equiv=" Header ". Die Anweisungen stehen tatsächlich im Kopf. Frameworks für den Server, z.b. in PHP, unterstützen dies. Dies ist die beste Lösung. Ein Beispiel für Header-Angaben: Expires: Thu, 01 Dec 1994 16:00:00 GMT Pragma: no-cache Cache-Control: private,no-cache,no-store Diese Lösung deckt auch alle alten Versionen der Server, Caches und Proxies ab. 28
Datenübertragung I Die Übertragung der Daten erfolgt in ASCII oder binär: US-ASCII (7 bit, Type Plain/HTML) Mit MIME spezifizierten Typ Die Daten haben einen eigenen Header mit folgenden Angaben: Content-Encoding Content-Language Content-Length Content-Type (MIME-Type) Expires (Verfallsdatum) 29
Datenübertragung II Werte für Content-Encoding (Beispiele): Encoding gzip compress deflate identity Erläuterung GNU zip Unix file compress zlib-format Original, nicht verändert Mit Content-Type wird der Typ vor der oben angegebenen Behandlung angegeben. Content-Encoding beschreibt wie das Objekt zwecks Übertragung behandelt wurde. Content-Length gibt die Länge das dann für die Übertragung behandelten Objekt an. 30
Datenübertragung III Über MIME können wie bei Email mehrere Objekte hintereinander übertragen werden, z.b. mehrere Bilder. Damit sind folgende Möglichkeiten vorhanden: Einfacher MIME-Header mit ASCII/Binär-Information Mehrere MIME-Header mit boundary-angabe Die Struktur ist ähnlich zu Email, nur dass nicht mit base64 die binären Daten kodiert werden müssen: es ist also möglich binäre Daten ohne Umkodierung zu übertragen. 31
Proxy Client (1) (2) Server Client (1) (2) (4) Proxy (3) Server Ein Proxy ist ein vermittelndes Zwischensystem. 32
Aufgaben eines Proxys Zwischenspeicherung abgerufener Informationen (Cache) Besonderheiten: Verschlüsselte Informationen werden nicht gespeichert "Interaktive" Web-Anwendungen müssen Cache ausschalten Prüfung der angeforderten URLs, z.b. Verbot privaten Surfens während der Arbeitszeit Prüfung der Antworten, z. B. Ausfiltern aktiver Inhalte wie ActiveX oder Virenscann Beispiele für Proxies: squid: Optimierung durch Cache Zugriffssteuerung privoxy: Herausfiltern Modifizieren der Pakete 33
Nach dieser Anstrengung etwas Entspannung... 34