Hypertext Transfer Protocol (HTTP)

  • HTTP im TCP/IP- Referenzmodell
    • Schichten 6 und 7, Application
    • Protokolle: Http und HTTPS

HTTP HTTP Request/Response Sequenz

  1. Client –> Server: SYN
  2. Client <– Server: SYN/ACK
  3. Client: ACK
  4. Client –> Server: Client Hello
  5. Client <– Server: ServerHello, Certificate, ServerHelloDone
  6. Client –> Server: ClientKeyExchange, ChangeCipherSpec, Finished
  7. Client <– Server: ChangeCipherSpec, Finished
  8. Client –> Server: HTTP Request
  9. Client <– Server: HTTP Response

HTTP Message

  • besteht aus
    • HTTP Header
      • General Header
      • Request/Response Header
      • Entity Header
    • HTTP Body
      • …. HTML, JSON …
  • Struktur
    • HTTP Request
      • GET /index.html HTTP/1.1
      • Method Path VersionOfProtocol
    • HTTP Response
      • HTTP/1.1 200 OK
      • VersionOfProtocol StatusCode StatusMessage

Request Methoden

  • Get
    • spezifische Ressource anfragen
    • NUR Daten abfragen
  • Post
    • Objekt “einsenden”
    • Ändern von Inhalten, Erstellen von neuen Inhalten
  • Put
    • Alle derzeitigen Objekte mit neuem “eingesendetem” Objekt ersetzten
  • Patch
    • Teilweise Veränderung eines Objekts
  • Delete
    • Löschen einer Ressource
  • Head
    • Fragt nach IDENTISCHER Response, nur OHNE Response Body
  • Connect
    • Erzeugt Tunnel zum Server anhand von abgefragter Ressource
  • Options
    • Fragt nach Optionen für spezifische Ressource
  • Trace
    • Look-back Test entlang der Server

Uniform Resource Identifier (URI)

  • Uniform Resource Name (URN)
    • Beispiel ISBN für Bücher
  • Uniform Resource Locator (URL)
    • <scheme>:<scheme-specific-part>

HTTP Request Path and Parameter

  • http://server.example.org:8080/index.html?param1=A¶m2=B
  • schema://host:port/path?queryparam

HTTP Response Codes and Messages

  • 100 - 199
    • Informationen
    • 101 Switching Protocols
  • 200 - 299
    • Erfolgreiche Antworten
    • 200 ok
    • 204 keine Inhalte
  • 300 - 399
    • Umleitungen
    • 301 Moved Permanently
  • 400 - 499
    • Client Error Response
    • 401 Unauthorized
    • 404 Not Found
  • 500 - 599
    • Server Error Response
    • 500 Internal Server Error

HTTP Content Negotiation

  • im Request Header
    • Accept: text/*, image/gif, image/jpeg
  • In der Response
    • Content-length: 46 Content-type: text/html

Server-driven Content Negotiation

  • Server entscheidet ob er das gewünschte Format und Inhalte zurückgeben kann
  • Beispiel Sprache
    • Client will Sprache Deutsch
    • Server kann entweder Sprache liefern,oder spezifizierte Alternative senden

Media Type (MIME Type)

  • text
    • text/plain
    • text/pdf
    • text/css
    • text/html
    • text/javascript
  • font
    • font/woff
    • font/ttf
  • audio
    • audio/wave
    • audio/mpeg
  • image
    • image/png
    • image/jpeg
    • image/gif
  • application
    • application/json
    • application/jwk+json
  • video
    • video/mp4
    • video/raw
    • video/quicktime

Agent-driven Content Negotiation

  • Client sagt was er gibt
  • Beispiel Video
    • Client gibt Video als ogg an, Server kann aber nur raw oder mp4
    • Server lehnt Post ab
    • Client muss anderes Format senden

Eigenschaften von Methoden

  • Safe: verändert keine Inhalte auf dem Server
  • Idempotent: man kann immer gleiche Antwort erwarten
MethodBody in RequestBody in ResponseSafeIdempotentCachable
GETNeinJaJaJaJa
HEADNeinNeinJaJaJa
POSTJaJaNeinNeinManchmal
PUTJaVielleichtNeinJaNein
PatchJaJaNeinNeinNein
DELETEManchmalVielleichtNeinJaNein
CONNECTNeinJaNeinNeinNein
OPTIONSNeinJaJaJaNein
TRACENeinNeinJaJaNein

Grundlegende Aspekte für HTTP

  • Text basiert
  • Stateless
  • Sessionful durch Cookies
  • Einfach zu Erweitern
  • Verbindungsabhängig, Kontrolliert durch Transport Layer TCP
Last modified 2024.05.02