HTTP-Protokoll

HTTP-Anfrage

Sending request:

GET /nonexistent.html HTTP/1.1
Host: www.google.ch
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
Referer: http://www.rexswain.com/httpview.html
Connection: close
Receiving Header:
HTTP/1.1·404·Not·Found(CR)(LF)
Cache-Control:·private,·max-age=0(CR)(LF)
Date:·Mon,·11·Jun·2019·04:11:23·GMT(CR)(LF)
Expires:·-1(CR)(LF)
Content-Type:·text/html;·charset=UTF-8(CR)(LF)
Server:·gws(CR)(LF)
X-XSS-Protection:·0(CR)(LF)
Transfer-Encoding:·chunked(CR)(LF)
Connection:·close(CR)(LF)

Sending Request

Methode
Bedeutung
CONNECT
  • dient der Kennzeichnung von SSL-Anfragen
  • lässt einem “unerkannt” durch Proxyserver kommen
DELETE
  • löscht die angegebene Ressource auf dem Server
GET
  • Anforderung der Ressource
  • Kann Dokument, Stream, Script usw sein
  • Redirects werden vom Server übernommen
  • GET /wp-content/uploads/2016/06/letters-820×312.jpg HTTP/1.1\r\n

 

HEAD
  • Ist fast wie die GET-Anweisung
  • Es wird nur ein Header ohne Daten geliefert
  • Wird benutzt, wenn ein Proxyserver checken will, ob ein Dokument noch gültig ist
OPTIONS
  • eine Methode, bei der angefragt wird, ob es bestimmte Voraussetzungen benötigt, um auf eine Ressource zuzugreifen
POST
  • Hier werden Variablen nicht in der Anforderung sondern in einem Datenteil übertragen.
  • Es ist ein zusätzliches Datenpaket, das gesendet wird.
PUT
  • Die Daten, die mit POST übertragen werden, sollen an einem bestimmten Ort auf dem Server gespeichert werden.
TRACE
  • dient zur Verfolgung von Anfragen
  • für Übermittlung über mehrere Proxyserver interessant
  • kann zur Diagnose verwendet werden

Client Header

HTTP-Header
BEDEUTUNG
Accept Beispiel: Accept: style/css

  • Gibt die Mime-Typen an, die der Browser verarbeiten kann.
Accept-Charset Beispiel: Accept-Charset: ISO 8859-1

  • Gibt die unterstützten Zeichensätze an.
Accept-Encoding Beispiel: Accept-Encoding: gzip

  • Gibt die Kodierungsmöglichkeiten an, die der Browser verarbeiten kann
Accept-Language Beispiel: Accept-Language:de, en, fr

  • Gibt die Art und die Reihenfolge der akzeptierten Sprachen an.
Authorization Beispiel Basic:
Authorization: nutzername passwortBeispiel Digest:Authorization: Digest username=”me”,
realm=”iwantin@localhost’;
nonce=”Iss9zb710qdd2e0e86cIdOf6606ss0c099″,
uri=“/no/download/”,
qop=auth,
nc=00000001,
cnonce=”3ag5116b”,
response=”6d59fae497t3b05332951k55222c4ef1 “,
opaque=”5cdhh69c8ln9baf9f0171e951ff4fe41″‘

  • Bei Basic wird das Passwort unverschlüsselt gesendet
  • Bei Digest findet eine umfassendere Kommunikation statt
Cache-Control Beispiel: Cache-Control: min-fresh = 5000

  • Dieser Header kann vom Client und vom Server benutzt werden. Die Direktiven sind jedoch für Header und Server unterschiedlich. Grundsätzlich geht es um die Zwischenspeicherung innerhalb eines Proxy-Cache.
  • no-cache – Antwort nicht zwischenspeichern.
  • no-store – Antwort ebenfalls nicht im Cache speichern (bezieht sich auf sensible Daten).
  • max-age = 36 – die Antwort des Servers darf nicht älter als 36 Sekunden sein.
  • max-stale = 7000 – eine zwischengespeicherte Antwort des Servers wird akzeptiert, allerdings darf das Ablaufdatum der Antwort nicht älter sein als die angegebene Zeit in Sekunden (700).
  • min-fresh = 3000 – eine Antwort des Servers wird akzeptiert, wenn das Ablaufdatum die aktuelle Zeit zuzüglich der angegebenen Sekunden nicht überschreitet.
  • no-transform – das Dokument soll nicht in ein anderes Format umgewandelt werden.
  • only-if-cached – nur Daten aus dem Server-Cache werden akzeptiert
Cookie Beispiel: Cookie: CookieDaten=982

  • So kann der Browser feststellen, ob die es ein Cookie des entsprechenden Servers gibt
  • Häufig bei Zugangskontrolle gebraucht (mit CGI-Scripts)
From

 

Beispiel: From: test@modul239.com

  • Möglichkeit eine Mailadresse mitzusenden
  • Wird aus Datenschutzgründen kaum verwendet
Host Beispiel: Host: iet-gibb.raphaelphoto.ch

  • Angabe, um bei virtuellen Servern die entsprechende Seite zu liefern
  • Ansonsten wird auf die Default-Konfiguration zurückgegriffen
Referer

 

Beispiel: referer: google.com

  • URL des Clients
User-Agent

 

Beispiel: User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36

  • der Browser des Clients.
Via

 

Beispiel: Via: SIP/2.0

  • Informationen über den Proxy, über den diese Anfrage gelaufen ist.

Body

Bei der Client-Anforderung ist es möglich, einen Body mitzusenden. Beispielsweise bei POST-Method Formularen. Die Werte stehen dann im Body der Anfrage. Bei PUT wird die zu übertragene Datei auch im Body mitgesendet.

Serverantwort

Codes

  • 100er: Informationsmeldungen
  • 200er: Erfolgsmeldungen
  • 300er: Umleitungsmeldungen
  • 400er: Clientbasierte Fehlermeldungen
  • 500er: Serverbasierte Fehlermeldungen

Wichtigste Meldungen

200 OK Die Daten wurden wie gewünscht versendet. Das sollte der Normalfall sein!
203 Non-Authoritative Der Statuscode enthält zusätzliche Informationen, Information, die nicht vom angeforderten Server selbst kommen, sondern von einer anderen Software, die auf dem Server-System eingesetzt wird, beispielsweise einem Proxy-Server
301 Moved Permanently Die Daten sind vorübergehend unter einem anderen Anfrage-URI erreichbar. Die neue Adresse wird in der Antwort mit angegeben. Webbrowser fordern dann diese Adresse an und der Benutzer merkt davon nichts.
404 Not Found Die Daten wurden nicht gefunden. Dieser Statuscode entsteht oft, wenn Benutzer per Hand einen komplexen Anfrage-URI in den Browser eintippen und sich dabei verschreiben.
500 Internal Server Error Die Daten werden nicht gesendet, weil auf dem Server ein Fehler aufgetreten ist. Meistens konnte ein CGI-Skript nicht gestartet werden.

Weitere Meldungen und Spezifikationen können unter https://www.w3.org/Protocols/rfc2616/rfc2616.txt eingesehen werden.

Header

Im Header, der vom Client an den Server gesendet wird können praktisch alle bereits erwähnten Header verwendet werden. Es gibt noch einige zusätzliche. Hier sind einige Beispiele:

  • Cache-Control
    • public: darf zwischengespeichert werden
    • private: antwort darf nicht zwischengespeichert werden
  • Retry-After
    • Retry-After 3600
    • Kann verwendet werden, wenn Anfragen erneut gesendet werden können (Bsp. Error 503)
  • WWW-Authenticate
    • WWW-Authenticate: Basic realm=”something”
    • Liefert Informationen für die Zugangskontrolle

Bei solchen Headerantworten kommt anschliessend immer eine Leerzeile.

WebDAV

Beim HTTP-Protokoll gibt es nicht wirklich eine Möglichkeit, gemeinsam an Dokumenten zu arbeiten. Es gibt aber eine Erweiterung: WebDAV (Web based Distributed Authoring and Versioning).
So lassen sich gemeinsam Dokumente bearbeiten und teilen. Bearbeiter können damit auch Dokumente Sperren und weiter bearbeiten ohne Netzwerkverbindung zu haben.
Es können auch Metadaten zugeordnet werden (Bsp. Autorname)

Namespace-Management

Methode
Bedeutung
COPY Kopiert Collections und Ressourcen innerhalb eines zusammenhängenden Namensraums
LOCK Setzt für den Überschreibschutz eine Sperre auf eine Collection oder Ressource.
MOVE Verschiebt Collections und Ressourcen innerhalb eines zusammenhängenden Namensraums.
MKCOL Erzeugt eine neue Collection.
PROPFIND Liest Metadaten von Ressourcen oder Collections.
PROPPATCH Schreibt Metadaten von Ressourcen oder Collections.
UNLOCK Gibt eine gesperrte Collection oder Ressource wieder frei.

Speicherhierarchie

onlineofflinenearline

Online

Dieser Speicher ist über irgendeine Leitung direkt verfügbar. Dazu gehören:

  • Jeglicher verbauter Speicher im Computer
  • Netzwerkspeicher (SAN, NAS)

Nearline

beispielsweise Backupbänder, die sich in einem Taperoboter aber nicht in einem Laufwerk befinden

Offline

alle ausgelagerten Medien – sowohl digitale als auch analoge Daten

  • CDs
  • Externe Festplatten (welche irgendwo gelagert werden)
  • Ordner (Papierdokumente)