SlideShare a Scribd company logo
1 of 39
Download to read offline
HTTP/2 – Ist das auch gut
für java-basierte
Webservices?
JAN WEINSCHENKER
20. Februar 2018 @JANWEINSCHENKER 1
Agenda
20. Februar 2018 @JANWEINSCHENKER 2
1. HTTP von damals bis heute
2. Die Technik in HTTP
3. Java und Servlet4
4. Fragen
20. Februar 2018 @JANWEINSCHENKER 3
PROFESSIONALS
INDIVIDUALS
N3RDS
Die Holisticon AG ist eine Management- und IT-
Beratung aus Hamburg.
Wir entwickeln beste Individualsoftware,
Webplattformen und Apps.
Geschäftsprozesse durchdringen wir und
automatisieren sie.
Große Datenmengen machen wir mit Smart-Data-
Ansätzen beherrschbar.
HTTP von damals bis
heute
DIE VORGESCHICHTE VON HTTP/2 (H2)
20. Februar 2018 @JANWEINSCHENKER 4
HTTP/1.0 - 1990
Line Mode Browser (LMB) von Nicola Pellow (CERN)
20. Februar 2018 @JANWEINSCHENKER 5
HTTP/1.0 – 1991: Nexus Browser
Entwickelt von Tim
Berners-Lee
20. Februar 2018 @JANWEINSCHENKER 6
20. Februar 2018 @JANWEINSCHENKER 7
www.muenchen.de - April 1999
Quelle: archive.org
www.yahoo.com - April 1999
Quelle: archive.org
HTTP/1.1 – 1999
Das Web heute
20. Februar 2018 @JANWEINSCHENKER 8
315 Requests
5,79 MB
2,36s
Das Web hat sich verändert
• Mehr und komplexere
Inhalte
• JavaScript, CSS, AJAX,
Audio/Video, ...
• Mobile Endgeräte, also ggf.
unzuverlässige Leitungen
• „Dickere“ Leitungen
• Leistungsfähigere Browser
• Das Web bzw. HTTP ist zur
Grundlage von SOAP- und
RESTful-Webservices
geworden.
20. Februar 2018 @JANWEINSCHENKER 9
Aber HTTP/1.* stammt immer noch
aus den 90ern!
HTTP/2 – Seit 2015
• Connection-Multiplexing
• Reduziert Protokoll-Overhead und TCP-Sockets
• Server-Push
• Reduziert Anzahl der HTTP-Anfragen
• Komprimierung der Protokoll-Header (HPACK)
• Reduziert Anzahl der TCP-Roundtrips
20. Februar 2018 @JANWEINSCHENKER 10
Die Technik in HTTP
20. Februar 2018 @JANWEINSCHENKER 11
HTTP Request Roundtrip
20. Februar 2018 @JANWEINSCHENKER 12
Client ServerDNS
DNS
TCP
HTTP
GET
SSL
www.google.de
172.217.20.195
SYN
SYN/ACK
ACK
GET
1x pro
Host
HTTP/1.1 Request-Pipelining
20. Februar 2018 @JANWEINSCHENKER 13
Client Server
GET index.html
Abwicklung
mehrerer
GET-Requests
innerhalb
einer TCP-
Verbindung
HTTP/1.1 – Head-Of-Line-Blocking
Bei HTTP/1.1 verarbeitet der Client die Antworten des Servers nur
in der Reihenfolge, in der er die zugehörigen Anfragen versendet
hat.
20. Februar 2018 @JANWEINSCHENKER 14
HTTP/1.1 Workarounds
• Mehrere TCP-Connections parallel öffnen
• Domain Sharding
• TCP-Verbindungen sind relativ “teuer“
• Anzahl an Verbindungen wird durch Clients begrenzt.
20. Februar 2018 @JANWEINSCHENKER 15
HTTP/1.1 Workarounds - Sharding
20. Februar 2018 @JANWEINSCHENKER 16
www.site.com
static1.site.com
static2.site.com
style.css
button.css
logo.png
product.png
HTTP/1.1 Workarounds
• Verbindungen reduzieren
• Spriting
• Zusammenfassen von Ressourcen
• CSS und JavaScript
• Inlining mittels Base 64
• Probleme beim Caching
20. Februar 2018 @JANWEINSCHENKER 17
HTTP/2 - Keine Workarounds mehr nötig
• HTTP/2 bietet Multiplexing
• Alle Request-Response-Konversationen laufen simultan über
ein und dieselbe TCP-Verbindung.
20. Februar 2018 @JANWEINSCHENKER 18
HTTP/2 Push und Multiplexing
20. Februar 2018 @JANWEINSCHENKER 19
Client Server
HTTP
GET
GET index.html
index.html favicon.ico
script.js
Style.css
via Server-PUSH
HTTP/2 - Begrifflichkeiten
HTTP/2 HTTP/1.1
Connection Ein TCP Socket
Stream Ein Austausch von Request- und Response-Messages zwischen Client und
Server
Message Ein Request bzw. eine Response
Frame Kleinste Einheit zur Kommunikation über die Connection. Eine Message
besteht aus einem oder mehreren Frames.
20. Februar 2018 @JANWEINSCHENKER 20
20. Februar 2018 @JANWEINSCHENKER 21
HTTP/2 - Die Bausteine
Connection
Stream
Message
frame frame frame frame
frame frame frame frame
frame frame frame frame
Message
frame frame frame frame
frame frame frame frame
frame frame frame frame
Message
frame frame frame frame
frame frame frame frame
frame frame frame frame
Stream
Message
frame frame frame frame
frame frame frame frame
frame frame frame frame
Message
frame frame frame frame
frame frame frame frame
frame frame frame frame
Message
frame frame frame frame
frame frame frame frame
frame frame frame frame
Stream ...
20. Februar 2018 @JANWEINSCHENKER 22
HTTP/2 – Ein Beispiel-Stream
Client
Server
Message 1 Message 2
STREAM-ID 41
HEADERS-Frame
GET /index.html
+END_HEADER
+END_STREAM
STREAM-ID 41
HEADERS-Frame
STATUS 200
+END_HEADER
STREAM-ID 41
DATA-Frame
{binary data}
STREAM-ID 41
DATA-Frame
{binary data}
STREAM-ID 41
DATA-Frame
{binary data}
+END_STREAM
20. Februar 2018 @JANWEINSCHENKER 23
HTTP/2 – Ein Beispiel für Server-PUSH
Client
Server
STREAM-ID 41
HEADERS-Frame
GET /index.html
+END_HEADER
+END_STREAM
STREAM-ID 41
HEADERS-Frame
STATUS 200
+END_HEADER
STREAM-ID 41
PUSH_PROMISE-Frame
/style.css
via STREAM 42
STREAM-ID 41
DATA-Frame
{binary data}
+END_STREAM
STREAM-ID 42
DATA-Frame
{binary data}
+END_STREAM
STREAM-ID 42
HEADERS-Frame
STATUS 200
+END_HEADER
20. Februar 2018 @JANWEINSCHENKER 24
HTTP/2 – Noch ein Beispiel für Server-PUSH
Client
Server
STREAM-ID 41
HEADERS-Frame
GET /index.html
+END_HEADERS
+END_STREAM STREAM-ID 41
HEADERS-Frame
STATUS 200
STREAM-ID 41
PUSH_PROMISE-Frame
/style.css
via STREAM 42
+END_HEADERS
STREAM-ID 41
DATA-Frame
{binary data}
+END_STREAM
STREAM-ID 42
HEADERS-Frame
STATUS 200
+END_HEADERS
STREAM-ID 42
RST_STREAM-Frame
<Error Code>
Compression in HTTP/1.1
• Keine Header Compression
• Komprimierung von Nutzdaten mittels
GZIP und DEFLATE
20. Februar 2018 @JANWEINSCHENKER 25
Header-Daten im Browser
LIVE-DEMO
• www.spiegel.de
• www.hsv.de
• www.netzpolitik.org
20. Februar 2018 @JANWEINSCHENKER 26
Header-Daten im Browser
1 Kilobyte an Cookie-Daten pro HTTP-Request
• Problem beim initialen Verbindungsaufbau:
• TCP definiert eine Maximalgröße für die ersten TCP Pakete:
532 bytes.
• MSS (Maximum Segment Size)
20. Februar 2018 @JANWEINSCHENKER 27
ACK
TCP Slow Start
20. Februar 2018 @JANWEINSCHENKER 28
Browser Server
GET
GET
GET
ACK
ACK
Beispiel: 1 GET-Request mit 1500 Byte an Header-Daten und MSS 500 Byte.
Header Compression – HTTP/2
• Komprimierung der HTTP-Header mittels
HPACK
• Payload-Kompression weiterhin mit GZIP
20. Februar 2018 @JANWEINSCHENKER 29
Header Compression mit HPACK
Dreistufige Komprimierung von HTTP Headern.
1. Vordefiniertes Kompressionswörterbuch für 61 sehr gebräuchliche Header. Z.B.:
◦ 2 = :method GET
◦ 3 = :method POST
◦ 8 = :status 200
◦ 16 = accept-encoding gzip, deflate
2. Dynamisches Kompressionswörterbuch
◦ Wird zum Zeitpunkt der Verbindungsaufnahme ausgehandelt
3. Statische Huffman-Kodierung
20. Februar 2018 @JANWEINSCHENKER 30
HTTP/2 zum Angucken
https://http2.golang.org/gophertiles?latency=200
20. Februar 2018 @JANWEINSCHENKER 31
Java und Servlet4
20. Februar 2018 @JANWEINSCHENKER 32
Die Servlet API
20. Februar 2018 @JANWEINSCHENKER 33
• Die meisten Änderungen sind für Entwickler transparent.
• Multiplexing und HPACK erfolgen automatisch.
• Lediglich Server Push ist mit eigenem
Implementierungsaufwand verbunden.
Java: HTTP/2 Verfügbarkeit
Name HTTP/2 Servlet 4
JBOSS EAP 7.1 ja nein
Wildfly 9+ ja nein
Glassfish 5 ja ja
Spring Boot 2 (RC1) ja ja (mit Embedded Tomcat 9)
Tomcat 9 ja ja
OkHttp 3 Client ja nein
Jetty Serve und Client v9.3+ ja nein
Undertow Server 1.4 ja nein
Apache Commons HTTP Client ja nein
20. Februar 2018 @JANWEINSCHENKER 34
Codebeispiele bei Github
https://github.com/janweinschenker/servlet4-demo
20. Februar 2018 @JANWEINSCHENKER 35
Fazit
• Mittlerweile gibt es Java-
Implementierungen
• HTTP/2 setzt sich zu langsam durch.
20. Februar 2018 @JANWEINSCHENKER 36
Fragen?
???
20. Februar 2018 @JANWEINSCHENKER 37
Ende
Vielen Dank!
20. Februar 2018 @JANWEINSCHENKER 38
Icons
Icons von http://hawcons.com
20. Februar 2018 @JANWEINSCHENKER 39

More Related Content

Similar to HTTP/2 – Ist das auch gut für java-basierte Webservices?

HTTP/3 und QUIC Making the internet faster
HTTP/3 und QUIC Making the internet fasterHTTP/3 und QUIC Making the internet faster
HTTP/3 und QUIC Making the internet fasterQAware GmbH
 
Echtzeitvisualisierung von Twitter und Co.
Echtzeitvisualisierung von Twitter und Co.Echtzeitvisualisierung von Twitter und Co.
Echtzeitvisualisierung von Twitter und Co.Kai Donato
 
Echtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoEchtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoOliver Lemm
 
02 Webtechnologien - Informatiosinstegration und Webportale
02 Webtechnologien - Informatiosinstegration und Webportale02 Webtechnologien - Informatiosinstegration und Webportale
02 Webtechnologien - Informatiosinstegration und Webportaleklickandbau
 
Site Speed am Limit - Campixx 2015
Site Speed am Limit - Campixx 2015Site Speed am Limit - Campixx 2015
Site Speed am Limit - Campixx 2015Walter Andreas Pucko
 
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Michael Kirst-Neshva
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 
PHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-PerformancePHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-PerformanceNico Steiner
 
Hypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web APIHypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web APIAlexander Zeitler
 
Eclipse RapidClipse - Status Quo
Eclipse RapidClipse - Status QuoEclipse RapidClipse - Status Quo
Eclipse RapidClipse - Status QuoMarkus Kett
 
WebSocket my APEX!
WebSocket my APEX!WebSocket my APEX!
WebSocket my APEX!Kai Donato
 
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TU
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TUBetriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TU
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TUJohannes Kinzig
 
High Performance Websites und Google
High Performance Websites und GoogleHigh Performance Websites und Google
High Performance Websites und GoogleWebmontag MRN
 
Webtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer ÜberblickWebtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer ÜberblickClaus Brell
 
Giessen r user group treffen 10 05-2011 - foliensatz
Giessen r user group treffen 10 05-2011 - foliensatzGiessen r user group treffen 10 05-2011 - foliensatz
Giessen r user group treffen 10 05-2011 - foliensatzmasem research institute
 
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenDavid Schneider
 
Frontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeFrontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeNico Steiner
 

Similar to HTTP/2 – Ist das auch gut für java-basierte Webservices? (20)

HTTP/3 und QUIC Making the internet faster
HTTP/3 und QUIC Making the internet fasterHTTP/3 und QUIC Making the internet faster
HTTP/3 und QUIC Making the internet faster
 
Echtzeitvisualisierung von Twitter und Co.
Echtzeitvisualisierung von Twitter und Co.Echtzeitvisualisierung von Twitter und Co.
Echtzeitvisualisierung von Twitter und Co.
 
Echtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoEchtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & Co
 
OAuth 2.0
OAuth 2.0OAuth 2.0
OAuth 2.0
 
02 Webtechnologien - Informatiosinstegration und Webportale
02 Webtechnologien - Informatiosinstegration und Webportale02 Webtechnologien - Informatiosinstegration und Webportale
02 Webtechnologien - Informatiosinstegration und Webportale
 
Site Speed am Limit - Campixx 2015
Site Speed am Limit - Campixx 2015Site Speed am Limit - Campixx 2015
Site Speed am Limit - Campixx 2015
 
Chatbot Hackathon Slidedeck
Chatbot Hackathon SlidedeckChatbot Hackathon Slidedeck
Chatbot Hackathon Slidedeck
 
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
PHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-PerformancePHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-Performance
 
Hypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web APIHypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web API
 
Eclipse RapidClipse - Status Quo
Eclipse RapidClipse - Status QuoEclipse RapidClipse - Status Quo
Eclipse RapidClipse - Status Quo
 
WebSocket my APEX!
WebSocket my APEX!WebSocket my APEX!
WebSocket my APEX!
 
Realtime Web Applications with jWebSocket
Realtime Web Applications with jWebSocketRealtime Web Applications with jWebSocket
Realtime Web Applications with jWebSocket
 
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TU
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TUBetriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TU
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TU
 
High Performance Websites und Google
High Performance Websites und GoogleHigh Performance Websites und Google
High Performance Websites und Google
 
Webtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer ÜberblickWebtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer Überblick
 
Giessen r user group treffen 10 05-2011 - foliensatz
Giessen r user group treffen 10 05-2011 - foliensatzGiessen r user group treffen 10 05-2011 - foliensatz
Giessen r user group treffen 10 05-2011 - foliensatz
 
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
 
Frontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeFrontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 Bestellsysteme
 

HTTP/2 – Ist das auch gut für java-basierte Webservices?

  • 1. HTTP/2 – Ist das auch gut für java-basierte Webservices? JAN WEINSCHENKER 20. Februar 2018 @JANWEINSCHENKER 1
  • 2. Agenda 20. Februar 2018 @JANWEINSCHENKER 2 1. HTTP von damals bis heute 2. Die Technik in HTTP 3. Java und Servlet4 4. Fragen
  • 3. 20. Februar 2018 @JANWEINSCHENKER 3 PROFESSIONALS INDIVIDUALS N3RDS Die Holisticon AG ist eine Management- und IT- Beratung aus Hamburg. Wir entwickeln beste Individualsoftware, Webplattformen und Apps. Geschäftsprozesse durchdringen wir und automatisieren sie. Große Datenmengen machen wir mit Smart-Data- Ansätzen beherrschbar.
  • 4. HTTP von damals bis heute DIE VORGESCHICHTE VON HTTP/2 (H2) 20. Februar 2018 @JANWEINSCHENKER 4
  • 5. HTTP/1.0 - 1990 Line Mode Browser (LMB) von Nicola Pellow (CERN) 20. Februar 2018 @JANWEINSCHENKER 5
  • 6. HTTP/1.0 – 1991: Nexus Browser Entwickelt von Tim Berners-Lee 20. Februar 2018 @JANWEINSCHENKER 6
  • 7. 20. Februar 2018 @JANWEINSCHENKER 7 www.muenchen.de - April 1999 Quelle: archive.org www.yahoo.com - April 1999 Quelle: archive.org HTTP/1.1 – 1999
  • 8. Das Web heute 20. Februar 2018 @JANWEINSCHENKER 8 315 Requests 5,79 MB 2,36s
  • 9. Das Web hat sich verändert • Mehr und komplexere Inhalte • JavaScript, CSS, AJAX, Audio/Video, ... • Mobile Endgeräte, also ggf. unzuverlässige Leitungen • „Dickere“ Leitungen • Leistungsfähigere Browser • Das Web bzw. HTTP ist zur Grundlage von SOAP- und RESTful-Webservices geworden. 20. Februar 2018 @JANWEINSCHENKER 9 Aber HTTP/1.* stammt immer noch aus den 90ern!
  • 10. HTTP/2 – Seit 2015 • Connection-Multiplexing • Reduziert Protokoll-Overhead und TCP-Sockets • Server-Push • Reduziert Anzahl der HTTP-Anfragen • Komprimierung der Protokoll-Header (HPACK) • Reduziert Anzahl der TCP-Roundtrips 20. Februar 2018 @JANWEINSCHENKER 10
  • 11. Die Technik in HTTP 20. Februar 2018 @JANWEINSCHENKER 11
  • 12. HTTP Request Roundtrip 20. Februar 2018 @JANWEINSCHENKER 12 Client ServerDNS DNS TCP HTTP GET SSL www.google.de 172.217.20.195 SYN SYN/ACK ACK GET 1x pro Host
  • 13. HTTP/1.1 Request-Pipelining 20. Februar 2018 @JANWEINSCHENKER 13 Client Server GET index.html Abwicklung mehrerer GET-Requests innerhalb einer TCP- Verbindung
  • 14. HTTP/1.1 – Head-Of-Line-Blocking Bei HTTP/1.1 verarbeitet der Client die Antworten des Servers nur in der Reihenfolge, in der er die zugehörigen Anfragen versendet hat. 20. Februar 2018 @JANWEINSCHENKER 14
  • 15. HTTP/1.1 Workarounds • Mehrere TCP-Connections parallel öffnen • Domain Sharding • TCP-Verbindungen sind relativ “teuer“ • Anzahl an Verbindungen wird durch Clients begrenzt. 20. Februar 2018 @JANWEINSCHENKER 15
  • 16. HTTP/1.1 Workarounds - Sharding 20. Februar 2018 @JANWEINSCHENKER 16 www.site.com static1.site.com static2.site.com style.css button.css logo.png product.png
  • 17. HTTP/1.1 Workarounds • Verbindungen reduzieren • Spriting • Zusammenfassen von Ressourcen • CSS und JavaScript • Inlining mittels Base 64 • Probleme beim Caching 20. Februar 2018 @JANWEINSCHENKER 17
  • 18. HTTP/2 - Keine Workarounds mehr nötig • HTTP/2 bietet Multiplexing • Alle Request-Response-Konversationen laufen simultan über ein und dieselbe TCP-Verbindung. 20. Februar 2018 @JANWEINSCHENKER 18
  • 19. HTTP/2 Push und Multiplexing 20. Februar 2018 @JANWEINSCHENKER 19 Client Server HTTP GET GET index.html index.html favicon.ico script.js Style.css via Server-PUSH
  • 20. HTTP/2 - Begrifflichkeiten HTTP/2 HTTP/1.1 Connection Ein TCP Socket Stream Ein Austausch von Request- und Response-Messages zwischen Client und Server Message Ein Request bzw. eine Response Frame Kleinste Einheit zur Kommunikation über die Connection. Eine Message besteht aus einem oder mehreren Frames. 20. Februar 2018 @JANWEINSCHENKER 20
  • 21. 20. Februar 2018 @JANWEINSCHENKER 21 HTTP/2 - Die Bausteine Connection Stream Message frame frame frame frame frame frame frame frame frame frame frame frame Message frame frame frame frame frame frame frame frame frame frame frame frame Message frame frame frame frame frame frame frame frame frame frame frame frame Stream Message frame frame frame frame frame frame frame frame frame frame frame frame Message frame frame frame frame frame frame frame frame frame frame frame frame Message frame frame frame frame frame frame frame frame frame frame frame frame Stream ...
  • 22. 20. Februar 2018 @JANWEINSCHENKER 22 HTTP/2 – Ein Beispiel-Stream Client Server Message 1 Message 2 STREAM-ID 41 HEADERS-Frame GET /index.html +END_HEADER +END_STREAM STREAM-ID 41 HEADERS-Frame STATUS 200 +END_HEADER STREAM-ID 41 DATA-Frame {binary data} STREAM-ID 41 DATA-Frame {binary data} STREAM-ID 41 DATA-Frame {binary data} +END_STREAM
  • 23. 20. Februar 2018 @JANWEINSCHENKER 23 HTTP/2 – Ein Beispiel für Server-PUSH Client Server STREAM-ID 41 HEADERS-Frame GET /index.html +END_HEADER +END_STREAM STREAM-ID 41 HEADERS-Frame STATUS 200 +END_HEADER STREAM-ID 41 PUSH_PROMISE-Frame /style.css via STREAM 42 STREAM-ID 41 DATA-Frame {binary data} +END_STREAM STREAM-ID 42 DATA-Frame {binary data} +END_STREAM STREAM-ID 42 HEADERS-Frame STATUS 200 +END_HEADER
  • 24. 20. Februar 2018 @JANWEINSCHENKER 24 HTTP/2 – Noch ein Beispiel für Server-PUSH Client Server STREAM-ID 41 HEADERS-Frame GET /index.html +END_HEADERS +END_STREAM STREAM-ID 41 HEADERS-Frame STATUS 200 STREAM-ID 41 PUSH_PROMISE-Frame /style.css via STREAM 42 +END_HEADERS STREAM-ID 41 DATA-Frame {binary data} +END_STREAM STREAM-ID 42 HEADERS-Frame STATUS 200 +END_HEADERS STREAM-ID 42 RST_STREAM-Frame <Error Code>
  • 25. Compression in HTTP/1.1 • Keine Header Compression • Komprimierung von Nutzdaten mittels GZIP und DEFLATE 20. Februar 2018 @JANWEINSCHENKER 25
  • 26. Header-Daten im Browser LIVE-DEMO • www.spiegel.de • www.hsv.de • www.netzpolitik.org 20. Februar 2018 @JANWEINSCHENKER 26
  • 27. Header-Daten im Browser 1 Kilobyte an Cookie-Daten pro HTTP-Request • Problem beim initialen Verbindungsaufbau: • TCP definiert eine Maximalgröße für die ersten TCP Pakete: 532 bytes. • MSS (Maximum Segment Size) 20. Februar 2018 @JANWEINSCHENKER 27
  • 28. ACK TCP Slow Start 20. Februar 2018 @JANWEINSCHENKER 28 Browser Server GET GET GET ACK ACK Beispiel: 1 GET-Request mit 1500 Byte an Header-Daten und MSS 500 Byte.
  • 29. Header Compression – HTTP/2 • Komprimierung der HTTP-Header mittels HPACK • Payload-Kompression weiterhin mit GZIP 20. Februar 2018 @JANWEINSCHENKER 29
  • 30. Header Compression mit HPACK Dreistufige Komprimierung von HTTP Headern. 1. Vordefiniertes Kompressionswörterbuch für 61 sehr gebräuchliche Header. Z.B.: ◦ 2 = :method GET ◦ 3 = :method POST ◦ 8 = :status 200 ◦ 16 = accept-encoding gzip, deflate 2. Dynamisches Kompressionswörterbuch ◦ Wird zum Zeitpunkt der Verbindungsaufnahme ausgehandelt 3. Statische Huffman-Kodierung 20. Februar 2018 @JANWEINSCHENKER 30
  • 32. Java und Servlet4 20. Februar 2018 @JANWEINSCHENKER 32
  • 33. Die Servlet API 20. Februar 2018 @JANWEINSCHENKER 33 • Die meisten Änderungen sind für Entwickler transparent. • Multiplexing und HPACK erfolgen automatisch. • Lediglich Server Push ist mit eigenem Implementierungsaufwand verbunden.
  • 34. Java: HTTP/2 Verfügbarkeit Name HTTP/2 Servlet 4 JBOSS EAP 7.1 ja nein Wildfly 9+ ja nein Glassfish 5 ja ja Spring Boot 2 (RC1) ja ja (mit Embedded Tomcat 9) Tomcat 9 ja ja OkHttp 3 Client ja nein Jetty Serve und Client v9.3+ ja nein Undertow Server 1.4 ja nein Apache Commons HTTP Client ja nein 20. Februar 2018 @JANWEINSCHENKER 34
  • 36. Fazit • Mittlerweile gibt es Java- Implementierungen • HTTP/2 setzt sich zu langsam durch. 20. Februar 2018 @JANWEINSCHENKER 36
  • 37. Fragen? ??? 20. Februar 2018 @JANWEINSCHENKER 37
  • 38. Ende Vielen Dank! 20. Februar 2018 @JANWEINSCHENKER 38
  • 39. Icons Icons von http://hawcons.com 20. Februar 2018 @JANWEINSCHENKER 39