Hypertext Transfer Protocol (HTTP)
- HTTP im TCP/IP- Referenzmodell
- Schichten 6 und 7, Application
- Protokolle: Http und HTTPS
HTTP HTTP Request/Response Sequenz
- Client –> Server: SYN
- Client <– Server: SYN/ACK
- Client: ACK
- Client –> Server: Client Hello
- Client <– Server: ServerHello, Certificate, ServerHelloDone
- Client –> Server: ClientKeyExchange, ChangeCipherSpec, Finished
- Client <– Server: ChangeCipherSpec, Finished
- Client –> Server: HTTP Request
- 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.1Method Path VersionOfProtocol
- HTTP Response
HTTP/1.1 200 OKVersionOfProtocol 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
- 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 Name (URN)
- Uniform Resource Locator (URL)
<scheme>:<scheme-specific-part>
HTTP Request Path and Parameter
http://server.example.org:8080/index.html?param1=A¶m2=Bschema://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
- text
- text/plain
- text/pdf
- text/css
- text/html
- text/javascript
- font
- audio
- 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
| Method | Body in Request | Body in Response | Safe | Idempotent | Cachable |
|---|
| GET | Nein | Ja | Ja | Ja | Ja |
| HEAD | Nein | Nein | Ja | Ja | Ja |
| POST | Ja | Ja | Nein | Nein | Manchmal |
| PUT | Ja | Vielleicht | Nein | Ja | Nein |
| Patch | Ja | Ja | Nein | Nein | Nein |
| DELETE | Manchmal | Vielleicht | Nein | Ja | Nein |
| CONNECT | Nein | Ja | Nein | Nein | Nein |
| OPTIONS | Nein | Ja | Ja | Ja | Nein |
| TRACE | Nein | Nein | Ja | Ja | Nein |
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