SlideShare a Scribd company logo
1 of 47
HTTP/2 for Developers
How HTTP/2 Works and How
It Changes Developer's Life?
Svetlin Nakov
Manager Training
and Inspiration
Software University
http://softuni.bg
2
 Co-founder of the Software University (SoftUni) – https://softuni.bg
 Trained thousands people in programming and software development
 Taught hundreds of software development lessons
 20+ years in software development
 15 years in training programmers
 Author of 7 programming books
 Speaker at hundreds talks, presentations, lessons,
courses, seminars, conferences, and technical events
 Blog: http://www.nakov.com
About Me
3
 Networking takes ~ 70% of the page load time!
Top 1M Alexa Sites (in 2013) – Telemetry
Source: https://goo.gl/yX8nFN
 69.5% of time blocked
on network
 6.6% of time blocked
JavaScript
 5.1% blocked on
Layout
 4.5% blocked on Paint
4
 Opening a typical site in 2014, e.g. https://softuni.bg
 HTTP 1.0 supports only one connection per request
 65 connections need to be open, then closed
 HTTP 1.1 supports "keep alive"
 Open connection, download a resource, then another resource, …
 Works in serial mode: if one resource is slow, page load is slow
 Modern Web needs "a better HTTP protocol"
HTTP/2: The Problem
5
 HTTP/2 is protocol designed for
 Low latency transport of content over the Web
 No change to HTTP semantics
 It’s about how data travels through the wire
 Key new features in HTTP/2
 Multiplexing: multiple streams over a single connection
 Header compression: reuse headers from previous requests
 Sever push: multiple parallel responses for a single request
 Prioritization: some resources have priorities
What is HTTP/2?
6
 HTTP 0.9 (1991) – supports simple GET requests
 HTTP 1.0 (1996) – single connection, POST, headers, …
 HTTP 1.1 (1999) – keep-alive connections + pipelining
 SPDY (2009-2010) – connection multiplexing + server push
 Google developed the SPDY to replace HTTP 1.1 in Chrome and in
the Google ecosystem
 HTTP/2 (2014-2015) – de facto standardized SPDY
 An official standard for the new low-latency HTTP protocol
HTTP/2 History
HTTP/2 Enabled Web Sites – Examples
 Facebook
 Technically not HTTP/2
 SPDY/3.1
 Google and its sites
(GMail, YouTube, …)
 Use the latest HTTP/2
 Combines QUIC + SPDY
 Twitter, Yahoo, Wikipedia
Multiplexing
Multiple Streams over Single Connection
9
 HTTP 1.0 without keep-alive
 Uses one request per TCP
connection
 Opening / closing a TCP
connection is slow
 Especially in high-latency
connections (mobile networks)
 Typical latencies:
HTTP 1.0: Single Connection
client server
Open a TCP
connection
HTTP request +
HTTP response
Close the TCP
connection
10
 HTTP 1.1 with keep-alive
 Open a TCP connection
 Multiple times perform:
 Send a HTTP request
 Read a HTTP response
 Close the TCP connection
 Reuse TCP connections
 Avoids multiple TCP
connection open / close
HTTP 1.1: Keep Alive
client server
Open a TCP
connection
Sequence of
HTTP request +
HTTP response
Close the TCP
connection
11
 HTTP 1.1 with pipelining
 Opens a TCP connection
 Send multiple HTTP requests
(without waiting responses)
 Get the HTTP responses at
once in FIFO order
 Close the TCP connection
 Head-of-line blocking (HOL)
slows down the entire pipeline
HTTP 1.1: Pipelining
client server
Open a TCP
connection
Multiple
HTTP requests,
followed by their
HTTP responses
Close the TCP
connection
12
 Browsers open 4-8 parallel TCP
connections to each server
 Multiple request / response
streams run in parallel
 The initial opening of these
connections still has a cost
 The number of connections is
limited per domain
 Domain sharding may improve
load time for heavy sites
HTTP 1.1: Multiple Connections
client server
Open a TCP
connection
Close the TCP
connection
client server
Open a TCP
connection
Close the TCP
connection
13
HTTP/2: Multiplexing
 HTTP/2 uses multiplexing
 Single TCP connection
 Multiple parallel streams
 Prioritization: clients specify each
resource importance
 Out of order responses
 TCP connection is open once
 Resources come though the
same connection
Multiple
parallel
streams
client server
Open a TCP
connection
Close the TCP
connection
14
 HTTP/2 defines streams (bidirectional sequence of data)
 One TCP connection serves multiple parallel streams
 The structure inside HTTP/2 is called a frame
 Frame types: HEADERS, DATA, SETTINGS, PUSH_PROMISE, …
How Multiplexing Works?
HTTP Header Compression
Reuse Headers from Previous Requests
16
992 bytes
Typical HTTP Request Holds Long Headers
GET https://softuni.bg/ HTTP/1.1
Host: softuni.bg
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml,image/webp,*/*
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,bg;q=0.6
Cookie: .AspNet.SoftUniAuth=foQI2JhdsV0jE5PKhLAflcMlB9bl_rN3Rmo3hdR…;
_ga=GA1.2.925942971.1440514837
17
1173 bytes (181 bytes new)
Next Request Holds Nearly the Same Headers
GET https://softuni.bg/apply HTTP/1.1
Host: softuni.bg
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml,image/webp,*/*
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
Referer: https://softuni.bg/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,bg;q=0.6
Cookie: __RequestVerificationToken=5Eo-1AV9…1; language=bg;
_ga=GA1.2.925942971.1440514837; _gat=1;
.AspNet.SoftUniAuth=foQI2JhdsV0jE5PKhLAflcMlB9bl_rN3Rmo3hdR…
18
1176 bytes (8 bytes new, headers 100% the same)
Next Request Holds Even More Similar Headers
GET https://softuni.bg/contacts HTTP/1.1
Host: softuni.bg
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml,image/webp,*/*
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
Referer: https://softuni.bg/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,bg;q=0.6
Cookie: __RequestVerificationToken=5Eo-1AV9…1; language=bg;
_ga=GA1.2.925942971.1440514837; _gat=1;
.AspNet.SoftUniAuth=foQI2JhdsV0jE5PKhLAflcMlB9bl_rN3Rmo3hdR…
19
 HTTP/2 uses a compression standard called HPACK (RFC 7541)
 Compresses the request and response HTTP headers
 No overhead if headers do not change (e.g. polling requests)
 Client and server maintain a table of all previous headers
 Used to efficiently encode previously transmitted values
 Header tables persist for the entire HTTP 2.0 connection
 Incrementally updated by both the client and the server
 Static (predefined) Huffman code used to compress values
HPACK for HTTP/2 Headers Compression
20
 Request line is split to pseudo headers like :method, :path, …
 Static table defines common HTTP headers
 Dynamic table defines HTTP headers in the current HTTP session
HPACK for HTTP/2 Headers Compression
HTTP/2 Server Push
Multiple Parallel Responses for a Single Request
22
 HTTP/2 servers can send multiple responses for a single client
request (push additional resources with the requested resource)
Server Push in HTTP/2
23
 PUSH_PROMISE frames in HTTP/2 allows the server to send
additional resources
 First headers are sent, so clients can decide what to do
 Clients can decline pushed resources (via a RST_STREAM frame)
 E.g. when the pushed resource is already in the cache
 Pushed resources can be cached and reused later
 Pushed resources can be multiplexed alongside other resources
 Pushed resources can be prioritized by the server
Push Promises
Prioritization and Flow Control
Weights, Dependencies, Flow Control
25
 HTTP/2 defines stream prioritization by weight + dependency
 Each stream may be assigned a weight between 1 and 256
 Each stream may be given a dependency on another stream
 The "prioritization tree" defines the preferred order of resources
Stream Weight and Dependency
26
 What is flow control?
 Managing the rate of data transmission between two nodes to
prevent a fast sender from overwhelming a slow receiver
 Example:
 User watches a video and presses the "pause" button
 For each HTTP/2 stream and for the entire connection
 Receivers can specify how many DATA bytes is ready to receive
 WINDOW_UPDATE frames configure the window size
Flow Control in HTTP/2
27
 Some browsers use the QUIC protocol
 QUIC == Quick UDP Internet Connections
 Low-latency UDP-based transport layer protocol
 Designed to replace TCP for better performance
 Build-in multiplexing and TLS-equivalent security
 Still experimental, supported in Chromium
 Learn more at:
 https://www.chromium.org/quic
 https://en.wikipedia.org/wiki/QUIC
The QUIC Protocol
Using HTTP/2
How to Switch to HTTP/2?
29
 There is no such thing as:
 http2://mysite.com
 HTTP/2 uses a standard https:// connection
 With TLS ALPN (Application Layer Protocol Negotiation)
 ALPN allows the applications to negotiate which protocol should
be used over a secure connection without round trips
 Most browsers do not support HTTP/2 without SSL
 Browsers check for HTTP/2 support during the SSL handshake
How to Establish HTTP/2 Connection?
30
 HTTP 1.1 connection could be upgraded to HTTP/2:
 TLS is not mandatory for HTTP/2 (as defined in RFC 7540)
 But most Web browsers refuse to implement clear text HTTP/2
 Non-browser client apps can still use clear-text HTTP/2
HTTP/2 Connection Upgrade
GET / HTTP/1.1
Host: server.example.com
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings: <base64url-encoded HTTP/2 SETTINGS>
HTTP/2 Tools
How It Changes Developer's Life?
32
 HTTP 1.1 was simple to
test / debug / trace
 It is text-based protocol,
human-readable
 HTTP/2 will require tools
 It is binary protocol, not
human-readable
 It runs over TLS tunnel, so
sniffing is complicated
HTTP/2 is a Binary Protocol
33
 Wireshark can sniff HTTP/2
 But cannot decrypt TLS traffic
 No out-of-the-box man-in-the-middle proxy
 Needs the SSL private key for the remote site
 In fact Wireshark is not of help for HTTP/2 Web developers
 Fiddler does not support HTTP/2
 Wait for Microsoft to implement TLS ALPN in .NET Framework
 It decrypts HTTPS through elegant man-in-the-middle proxy
Tools Not Working with HTTP/2
34
 Indicates HTTP/2, SPDY, QUIC, versions, etc.
HTTP/2 and SPDY Indicator for Chrome
35
 Chrome HTTP/2 info page
 chrome://net-internals/#http2
 View all HTTP/2 sessions
 chrome://net-internals/#events&q=type:HTTP2_SESSION
Chrome HTTP/2 Tools
36
 H2I is an interactive HTTP/2 ("h2") console debugger
 Something like telnet to HTTP/2 server
 https://github.com/bradfitz/http2/tree/master/h2i
 Written in GO
 Send / receive raw HTTP/2 frames
 Send PING, SETTINGS, HEADERS frames
 Receive any type of frame
H2I
37
Akamai HTTP/2 Performance Test
HTTP/2 from Dev Perspective
How It Changes Developer's Life?
39
 No more image sprites
 Use separate images
 No more CSS / JavaScript combining
 Use separate CSS / JS files + server push
 No more domain sharding
 Still might boost performance by
distributing the server-side load
 HTTP APIs can be finer-grained
without sacrificing performance
Say "Goodbye" To Many Hacks
40
 Prioritization
 Developers may specify resource prioritization for faster page load
 Web servers / browsers may automatically set priorities
 When to push?
 Developers may push resources for faster page load
 Web servers may push resources transparently of developers
 How to optimize the flow control ?
 Developers may change the flow-control of data streams
Lots of Tweaking for Developers / Admins
Jetty and HTTP/2
HTTP/2 for Java Developers
42
 Jetty is a Java HTTP (Web) server and Servlet engine
 Developed under the Eclipse open-source project
 Supports HTTP/2, WebSocket, OSGi, JMX, JNDI, JAAS
 Enable HTTP/2 in Jetty:
Jetty and HTTP/s
$ java -jar $JETTY_HOME/start.jar --add-to-startd=http2
$ java -jar $JETTY_HOME/start.jar
…
2015-06-17 14:16:12.549:INFO:oejs.ServerConnector:main: Started
ServerConnector@34c9c77f{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
2015-06-17 14:16:12.782:INFO:oejs.ServerConnector:main: Started
ServerConnector@711f39f9{SSL,[ssl, alpn, h2, h2-17, http/1.1]}{0.0.0.0:8443}
…
43
 Jetty allows configuring a server push strategy
 ReferrerPushStrategy auto-learns dependencies from referrer
Jetty Smart Push
44
 Jetty provides http2-client
 Implementation of HTTP/2 client with a low level HTTP/2 API,
dealing with HTTP/2 streams, frames, etc.
 Learn more at http://www.eclipse.org/jetty/
documentation/current/http-client-api.html
Jetty HTTP/2 Client
SslContextFactory sslContextFactory = new SslContextFactory();
HttpClient httpClient = new HttpClient(sslContextFactory);
httpClient.start();
ContentResponse response =
httpClient.GET("https://http2.akamai.com");
…
?
http://softuni.bg
HTTP/2 for Developers
License
 This course (slides, examples, demos, videos, homework, etc.)
is licensed under the "Creative Commons Attribution-
NonCommercial-ShareAlike 4.0 International" license
46
Free Trainings @ Software University
 Software University Foundation – softuni.org
 Software University – High-Quality Education,
Profession and Job for Software Developers
 softuni.bg
 Software University @ Facebook
 facebook.com/SoftwareUniversity
 Software University @ YouTube
 youtube.com/SoftwareUniversity
 Software University Forums – forum.softuni.bg

More Related Content

What's hot

Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2Ido Flatow
 
MQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of ThingsMQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of ThingsBryan Boyd
 
Message queuing telemetry transport (mqtt) message format
Message queuing telemetry transport (mqtt) message formatMessage queuing telemetry transport (mqtt) message format
Message queuing telemetry transport (mqtt) message formatHamdamboy (함담보이)
 
HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPCGuo Jing
 
What is gRPC introduction gRPC Explained
What is gRPC introduction gRPC ExplainedWhat is gRPC introduction gRPC Explained
What is gRPC introduction gRPC Explainedjeetendra mandal
 
Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3NGINX, Inc.
 
Introduction To RabbitMQ
Introduction To RabbitMQIntroduction To RabbitMQ
Introduction To RabbitMQKnoldus Inc.
 
gRPC Design and Implementation
gRPC Design and ImplementationgRPC Design and Implementation
gRPC Design and ImplementationVarun Talwar
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUICShuya Osaki
 
REST vs gRPC: Battle of API's
REST vs gRPC: Battle of API'sREST vs gRPC: Battle of API's
REST vs gRPC: Battle of API'sLuram Archanjo
 
HTTP/2 Changes Everything
HTTP/2 Changes EverythingHTTP/2 Changes Everything
HTTP/2 Changes EverythingLori MacVittie
 
Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2Ido Flatow
 
Introduction MQTT in English
Introduction MQTT in EnglishIntroduction MQTT in English
Introduction MQTT in EnglishEric Xiao
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQpieterh
 
End-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John FallowsEnd-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John FallowsHostedbyConfluent
 
Basics of HTTP - Nafis Fuad
Basics of HTTP - Nafis FuadBasics of HTTP - Nafis Fuad
Basics of HTTP - Nafis FuadCefalo
 
Technical Overview of QUIC
Technical  Overview of QUICTechnical  Overview of QUIC
Technical Overview of QUICshigeki_ohtsu
 

What's hot (20)

Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
MQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of ThingsMQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of Things
 
Message queuing telemetry transport (mqtt) message format
Message queuing telemetry transport (mqtt) message formatMessage queuing telemetry transport (mqtt) message format
Message queuing telemetry transport (mqtt) message format
 
HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPC
 
What is gRPC introduction gRPC Explained
What is gRPC introduction gRPC ExplainedWhat is gRPC introduction gRPC Explained
What is gRPC introduction gRPC Explained
 
Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3
 
Introduction To RabbitMQ
Introduction To RabbitMQIntroduction To RabbitMQ
Introduction To RabbitMQ
 
gRPC Design and Implementation
gRPC Design and ImplementationgRPC Design and Implementation
gRPC Design and Implementation
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUIC
 
HTTP/3 in curl
HTTP/3 in curlHTTP/3 in curl
HTTP/3 in curl
 
REST vs gRPC: Battle of API's
REST vs gRPC: Battle of API'sREST vs gRPC: Battle of API's
REST vs gRPC: Battle of API's
 
HTTP/2 Changes Everything
HTTP/2 Changes EverythingHTTP/2 Changes Everything
HTTP/2 Changes Everything
 
Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2
 
Introduction MQTT in English
Introduction MQTT in EnglishIntroduction MQTT in English
Introduction MQTT in English
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQ
 
Http
HttpHttp
Http
 
End-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John FallowsEnd-to-end Streaming Between gRPC Services Via Kafka with John Fallows
End-to-end Streaming Between gRPC Services Via Kafka with John Fallows
 
Http
HttpHttp
Http
 
Basics of HTTP - Nafis Fuad
Basics of HTTP - Nafis FuadBasics of HTTP - Nafis Fuad
Basics of HTTP - Nafis Fuad
 
Technical Overview of QUIC
Technical  Overview of QUICTechnical  Overview of QUIC
Technical Overview of QUIC
 

Viewers also liked

HTTP/2 What's inside and Why
HTTP/2 What's inside and WhyHTTP/2 What's inside and Why
HTTP/2 What's inside and WhyAdrian Cole
 
Web Performance in the Age of HTTP2 - Topconf Tallinn 2016 - Holger Bartel
Web Performance in the Age of HTTP2 - Topconf Tallinn 2016 - Holger BartelWeb Performance in the Age of HTTP2 - Topconf Tallinn 2016 - Holger Bartel
Web Performance in the Age of HTTP2 - Topconf Tallinn 2016 - Holger BartelHolger Bartel
 
Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)
Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)
Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)💻 Javier Garza
 
Http2.0 Guide 2013-08-14 #http2study
Http2.0 Guide 2013-08-14 #http2studyHttp2.0 Guide 2013-08-14 #http2study
Http2.0 Guide 2013-08-14 #http2studyJxck Jxck
 
Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구
Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구
Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구SangJin Kang
 
How to Create a Professional Slideshare for Absolute Beginners
How to Create a Professional Slideshare for Absolute BeginnersHow to Create a Professional Slideshare for Absolute Beginners
How to Create a Professional Slideshare for Absolute BeginnersSarah Burke
 
Soa design pattern
Soa design patternSoa design pattern
Soa design patternLap Doan
 
HTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks StockholmHTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks StockholmDaniel Stenberg
 
Akamai Korea - Tech Day (2015/03/11) HTTP/2
Akamai Korea - Tech Day (2015/03/11) HTTP/2Akamai Korea - Tech Day (2015/03/11) HTTP/2
Akamai Korea - Tech Day (2015/03/11) HTTP/2SangJin Kang
 
The Case for HTTP/2
The Case for HTTP/2The Case for HTTP/2
The Case for HTTP/2Andy Davies
 
HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안SangJin Kang
 
SOA Pattern : Legacy Wrappers
SOA Pattern : Legacy Wrappers SOA Pattern : Legacy Wrappers
SOA Pattern : Legacy Wrappers WSO2
 
What's New in HTTP/2
What's New in HTTP/2What's New in HTTP/2
What's New in HTTP/2NGINX, Inc.
 
SPDY : 더 빠른 웹을 위한 프로토콜
SPDY : 더 빠른 웹을 위한 프로토콜SPDY : 더 빠른 웹을 위한 프로토콜
SPDY : 더 빠른 웹을 위한 프로토콜Yunsang Choi
 
Http/2 - What's it all about?
Http/2  - What's it all about?Http/2  - What's it all about?
Http/2 - What's it all about?Andy Davies
 

Viewers also liked (20)

HTTP/2 What's inside and Why
HTTP/2 What's inside and WhyHTTP/2 What's inside and Why
HTTP/2 What's inside and Why
 
Web Performance in the Age of HTTP2 - Topconf Tallinn 2016 - Holger Bartel
Web Performance in the Age of HTTP2 - Topconf Tallinn 2016 - Holger BartelWeb Performance in the Age of HTTP2 - Topconf Tallinn 2016 - Holger Bartel
Web Performance in the Age of HTTP2 - Topconf Tallinn 2016 - Holger Bartel
 
Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)
Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)
Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)
 
HTTP/2 in Examples
HTTP/2 in ExamplesHTTP/2 in Examples
HTTP/2 in Examples
 
Http2.0 Guide 2013-08-14 #http2study
Http2.0 Guide 2013-08-14 #http2studyHttp2.0 Guide 2013-08-14 #http2study
Http2.0 Guide 2013-08-14 #http2study
 
Practical Look at Erlang
Practical Look at ErlangPractical Look at Erlang
Practical Look at Erlang
 
Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구
Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구
Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구
 
How to Create a Professional Slideshare for Absolute Beginners
How to Create a Professional Slideshare for Absolute BeginnersHow to Create a Professional Slideshare for Absolute Beginners
How to Create a Professional Slideshare for Absolute Beginners
 
Soa design pattern
Soa design patternSoa design pattern
Soa design pattern
 
HTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks StockholmHTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks Stockholm
 
Akamai Korea - Tech Day (2015/03/11) HTTP/2
Akamai Korea - Tech Day (2015/03/11) HTTP/2Akamai Korea - Tech Day (2015/03/11) HTTP/2
Akamai Korea - Tech Day (2015/03/11) HTTP/2
 
Http/2
Http/2Http/2
Http/2
 
Http2 right now
Http2 right nowHttp2 right now
Http2 right now
 
The Case for HTTP/2
The Case for HTTP/2The Case for HTTP/2
The Case for HTTP/2
 
HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안
 
SOA Pattern : Legacy Wrappers
SOA Pattern : Legacy Wrappers SOA Pattern : Legacy Wrappers
SOA Pattern : Legacy Wrappers
 
Http2
Http2Http2
Http2
 
What's New in HTTP/2
What's New in HTTP/2What's New in HTTP/2
What's New in HTTP/2
 
SPDY : 더 빠른 웹을 위한 프로토콜
SPDY : 더 빠른 웹을 위한 프로토콜SPDY : 더 빠른 웹을 위한 프로토콜
SPDY : 더 빠른 웹을 위한 프로토콜
 
Http/2 - What's it all about?
Http/2  - What's it all about?Http/2  - What's it all about?
Http/2 - What's it all about?
 

Similar to HTTP/2 for Developers

HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 eraHTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 erapeychevi
 
Meetup Tech Talk on Web Performance
Meetup Tech Talk on Web PerformanceMeetup Tech Talk on Web Performance
Meetup Tech Talk on Web PerformanceJean Tunis
 
Next generation web protocols
Next generation web protocolsNext generation web protocols
Next generation web protocolsDaniel Austin
 
Http2 protocol changes
Http2 protocol changesHttp2 protocol changes
Http2 protocol changesMark Friedman
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2Okis Chuang
 
Revisiting HTTP/2
Revisiting HTTP/2Revisiting HTTP/2
Revisiting HTTP/2Fastly
 
Enabling Googley microservices with HTTP/2 and gRPC.
Enabling Googley microservices with HTTP/2 and gRPC.Enabling Googley microservices with HTTP/2 and gRPC.
Enabling Googley microservices with HTTP/2 and gRPC.Alex Borysov
 
HTTP/2 - Differences and Performance Improvements with HTTP
HTTP/2 - Differences and Performance Improvements with HTTPHTTP/2 - Differences and Performance Improvements with HTTP
HTTP/2 - Differences and Performance Improvements with HTTPAmit Bhakay
 
Distributed web based systems
Distributed web based systemsDistributed web based systems
Distributed web based systemsReza Gh
 
A new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUIC
A new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUICA new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUIC
A new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUICAPNIC
 
HTTP/2 - A brief introduction
HTTP/2 - A brief introductionHTTP/2 - A brief introduction
HTTP/2 - A brief introductionGibDevs
 
HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1Daniel Austin
 
Dynamic Adaptive Streaming over HTTP/2.0
Dynamic Adaptive Streaming over HTTP/2.0Dynamic Adaptive Streaming over HTTP/2.0
Dynamic Adaptive Streaming over HTTP/2.0Christopher Mueller
 
HTTP/2: A Better Web Experience
HTTP/2: A Better Web ExperienceHTTP/2: A Better Web Experience
HTTP/2: A Better Web ExperienceAyush Agarwal
 

Similar to HTTP/2 for Developers (20)

Http/2
Http/2Http/2
Http/2
 
Introduction to HTTP2
Introduction to HTTP2Introduction to HTTP2
Introduction to HTTP2
 
Http2
Http2Http2
Http2
 
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 eraHTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
 
HTTP Presentation
HTTP Presentation HTTP Presentation
HTTP Presentation
 
Http2 kotlin
Http2   kotlinHttp2   kotlin
Http2 kotlin
 
Meetup Tech Talk on Web Performance
Meetup Tech Talk on Web PerformanceMeetup Tech Talk on Web Performance
Meetup Tech Talk on Web Performance
 
Next generation web protocols
Next generation web protocolsNext generation web protocols
Next generation web protocols
 
Http2 protocol changes
Http2 protocol changesHttp2 protocol changes
Http2 protocol changes
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
Revisiting HTTP/2
Revisiting HTTP/2Revisiting HTTP/2
Revisiting HTTP/2
 
Enabling Googley microservices with HTTP/2 and gRPC.
Enabling Googley microservices with HTTP/2 and gRPC.Enabling Googley microservices with HTTP/2 and gRPC.
Enabling Googley microservices with HTTP/2 and gRPC.
 
HTTP/2 - Differences and Performance Improvements with HTTP
HTTP/2 - Differences and Performance Improvements with HTTPHTTP/2 - Differences and Performance Improvements with HTTP
HTTP/2 - Differences and Performance Improvements with HTTP
 
Distributed web based systems
Distributed web based systemsDistributed web based systems
Distributed web based systems
 
A new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUIC
A new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUICA new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUIC
A new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUIC
 
HTTP/2 - A brief introduction
HTTP/2 - A brief introductionHTTP/2 - A brief introduction
HTTP/2 - A brief introduction
 
HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1
 
Dynamic Adaptive Streaming over HTTP/2.0
Dynamic Adaptive Streaming over HTTP/2.0Dynamic Adaptive Streaming over HTTP/2.0
Dynamic Adaptive Streaming over HTTP/2.0
 
HTTP/2: A Better Web Experience
HTTP/2: A Better Web ExperienceHTTP/2: A Better Web Experience
HTTP/2: A Better Web Experience
 
HTTP1.1/2 overview
HTTP1.1/2 overviewHTTP1.1/2 overview
HTTP1.1/2 overview
 

More from Svetlin Nakov

BG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учителиBG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учителиSvetlin Nakov
 
Programming World in 2024
Programming World in 2024Programming World in 2024
Programming World in 2024Svetlin Nakov
 
AI Tools for Business and Startups
AI Tools for Business and StartupsAI Tools for Business and Startups
AI Tools for Business and StartupsSvetlin Nakov
 
AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)Svetlin Nakov
 
AI Tools for Entrepreneurs
AI Tools for EntrepreneursAI Tools for Entrepreneurs
AI Tools for EntrepreneursSvetlin Nakov
 
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023Svetlin Nakov
 
AI Tools for Business and Personal Life
AI Tools for Business and Personal LifeAI Tools for Business and Personal Life
AI Tools for Business and Personal LifeSvetlin Nakov
 
Дипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин НаковДипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин НаковSvetlin Nakov
 
Дипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООПДипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООПSvetlin Nakov
 
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТСвободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТSvetlin Nakov
 
AI and the Professions of the Future
AI and the Professions of the FutureAI and the Professions of the Future
AI and the Professions of the FutureSvetlin Nakov
 
Programming Languages Trends for 2023
Programming Languages Trends for 2023Programming Languages Trends for 2023
Programming Languages Trends for 2023Svetlin Nakov
 
IT Professions and How to Become a Developer
IT Professions and How to Become a DeveloperIT Professions and How to Become a Developer
IT Professions and How to Become a DeveloperSvetlin Nakov
 
GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)Svetlin Nakov
 
IT Professions and Their Future
IT Professions and Their FutureIT Professions and Their Future
IT Professions and Their FutureSvetlin Nakov
 
How to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a JobHow to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a JobSvetlin Nakov
 
Призвание и цели: моята рецепта
Призвание и цели: моята рецептаПризвание и цели: моята рецепта
Призвание и цели: моята рецептаSvetlin Nakov
 
What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?Svetlin Nakov
 
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)Svetlin Nakov
 
Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)Svetlin Nakov
 

More from Svetlin Nakov (20)

BG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учителиBG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учители
 
Programming World in 2024
Programming World in 2024Programming World in 2024
Programming World in 2024
 
AI Tools for Business and Startups
AI Tools for Business and StartupsAI Tools for Business and Startups
AI Tools for Business and Startups
 
AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)
 
AI Tools for Entrepreneurs
AI Tools for EntrepreneursAI Tools for Entrepreneurs
AI Tools for Entrepreneurs
 
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
 
AI Tools for Business and Personal Life
AI Tools for Business and Personal LifeAI Tools for Business and Personal Life
AI Tools for Business and Personal Life
 
Дипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин НаковДипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин Наков
 
Дипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООПДипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООП
 
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТСвободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
 
AI and the Professions of the Future
AI and the Professions of the FutureAI and the Professions of the Future
AI and the Professions of the Future
 
Programming Languages Trends for 2023
Programming Languages Trends for 2023Programming Languages Trends for 2023
Programming Languages Trends for 2023
 
IT Professions and How to Become a Developer
IT Professions and How to Become a DeveloperIT Professions and How to Become a Developer
IT Professions and How to Become a Developer
 
GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)
 
IT Professions and Their Future
IT Professions and Their FutureIT Professions and Their Future
IT Professions and Their Future
 
How to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a JobHow to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a Job
 
Призвание и цели: моята рецепта
Призвание и цели: моята рецептаПризвание и цели: моята рецепта
Призвание и цели: моята рецепта
 
What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?
 
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
 
Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)
 

Recently uploaded

Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...Sapna Thakur
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room servicediscovermytutordmt
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Disha Kariya
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajanpragatimahajan3
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...fonyou31
 

Recently uploaded (20)

Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room service
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajan
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
 

HTTP/2 for Developers

  • 1. HTTP/2 for Developers How HTTP/2 Works and How It Changes Developer's Life? Svetlin Nakov Manager Training and Inspiration Software University http://softuni.bg
  • 2. 2  Co-founder of the Software University (SoftUni) – https://softuni.bg  Trained thousands people in programming and software development  Taught hundreds of software development lessons  20+ years in software development  15 years in training programmers  Author of 7 programming books  Speaker at hundreds talks, presentations, lessons, courses, seminars, conferences, and technical events  Blog: http://www.nakov.com About Me
  • 3. 3  Networking takes ~ 70% of the page load time! Top 1M Alexa Sites (in 2013) – Telemetry Source: https://goo.gl/yX8nFN  69.5% of time blocked on network  6.6% of time blocked JavaScript  5.1% blocked on Layout  4.5% blocked on Paint
  • 4. 4  Opening a typical site in 2014, e.g. https://softuni.bg  HTTP 1.0 supports only one connection per request  65 connections need to be open, then closed  HTTP 1.1 supports "keep alive"  Open connection, download a resource, then another resource, …  Works in serial mode: if one resource is slow, page load is slow  Modern Web needs "a better HTTP protocol" HTTP/2: The Problem
  • 5. 5  HTTP/2 is protocol designed for  Low latency transport of content over the Web  No change to HTTP semantics  It’s about how data travels through the wire  Key new features in HTTP/2  Multiplexing: multiple streams over a single connection  Header compression: reuse headers from previous requests  Sever push: multiple parallel responses for a single request  Prioritization: some resources have priorities What is HTTP/2?
  • 6. 6  HTTP 0.9 (1991) – supports simple GET requests  HTTP 1.0 (1996) – single connection, POST, headers, …  HTTP 1.1 (1999) – keep-alive connections + pipelining  SPDY (2009-2010) – connection multiplexing + server push  Google developed the SPDY to replace HTTP 1.1 in Chrome and in the Google ecosystem  HTTP/2 (2014-2015) – de facto standardized SPDY  An official standard for the new low-latency HTTP protocol HTTP/2 History
  • 7. HTTP/2 Enabled Web Sites – Examples  Facebook  Technically not HTTP/2  SPDY/3.1  Google and its sites (GMail, YouTube, …)  Use the latest HTTP/2  Combines QUIC + SPDY  Twitter, Yahoo, Wikipedia
  • 9. 9  HTTP 1.0 without keep-alive  Uses one request per TCP connection  Opening / closing a TCP connection is slow  Especially in high-latency connections (mobile networks)  Typical latencies: HTTP 1.0: Single Connection client server Open a TCP connection HTTP request + HTTP response Close the TCP connection
  • 10. 10  HTTP 1.1 with keep-alive  Open a TCP connection  Multiple times perform:  Send a HTTP request  Read a HTTP response  Close the TCP connection  Reuse TCP connections  Avoids multiple TCP connection open / close HTTP 1.1: Keep Alive client server Open a TCP connection Sequence of HTTP request + HTTP response Close the TCP connection
  • 11. 11  HTTP 1.1 with pipelining  Opens a TCP connection  Send multiple HTTP requests (without waiting responses)  Get the HTTP responses at once in FIFO order  Close the TCP connection  Head-of-line blocking (HOL) slows down the entire pipeline HTTP 1.1: Pipelining client server Open a TCP connection Multiple HTTP requests, followed by their HTTP responses Close the TCP connection
  • 12. 12  Browsers open 4-8 parallel TCP connections to each server  Multiple request / response streams run in parallel  The initial opening of these connections still has a cost  The number of connections is limited per domain  Domain sharding may improve load time for heavy sites HTTP 1.1: Multiple Connections client server Open a TCP connection Close the TCP connection client server Open a TCP connection Close the TCP connection
  • 13. 13 HTTP/2: Multiplexing  HTTP/2 uses multiplexing  Single TCP connection  Multiple parallel streams  Prioritization: clients specify each resource importance  Out of order responses  TCP connection is open once  Resources come though the same connection Multiple parallel streams client server Open a TCP connection Close the TCP connection
  • 14. 14  HTTP/2 defines streams (bidirectional sequence of data)  One TCP connection serves multiple parallel streams  The structure inside HTTP/2 is called a frame  Frame types: HEADERS, DATA, SETTINGS, PUSH_PROMISE, … How Multiplexing Works?
  • 15. HTTP Header Compression Reuse Headers from Previous Requests
  • 16. 16 992 bytes Typical HTTP Request Holds Long Headers GET https://softuni.bg/ HTTP/1.1 Host: softuni.bg Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml,image/webp,*/* Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36 Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8,bg;q=0.6 Cookie: .AspNet.SoftUniAuth=foQI2JhdsV0jE5PKhLAflcMlB9bl_rN3Rmo3hdR…; _ga=GA1.2.925942971.1440514837
  • 17. 17 1173 bytes (181 bytes new) Next Request Holds Nearly the Same Headers GET https://softuni.bg/apply HTTP/1.1 Host: softuni.bg Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml,image/webp,*/* Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36 Referer: https://softuni.bg/ Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8,bg;q=0.6 Cookie: __RequestVerificationToken=5Eo-1AV9…1; language=bg; _ga=GA1.2.925942971.1440514837; _gat=1; .AspNet.SoftUniAuth=foQI2JhdsV0jE5PKhLAflcMlB9bl_rN3Rmo3hdR…
  • 18. 18 1176 bytes (8 bytes new, headers 100% the same) Next Request Holds Even More Similar Headers GET https://softuni.bg/contacts HTTP/1.1 Host: softuni.bg Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml,image/webp,*/* Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36 Referer: https://softuni.bg/ Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8,bg;q=0.6 Cookie: __RequestVerificationToken=5Eo-1AV9…1; language=bg; _ga=GA1.2.925942971.1440514837; _gat=1; .AspNet.SoftUniAuth=foQI2JhdsV0jE5PKhLAflcMlB9bl_rN3Rmo3hdR…
  • 19. 19  HTTP/2 uses a compression standard called HPACK (RFC 7541)  Compresses the request and response HTTP headers  No overhead if headers do not change (e.g. polling requests)  Client and server maintain a table of all previous headers  Used to efficiently encode previously transmitted values  Header tables persist for the entire HTTP 2.0 connection  Incrementally updated by both the client and the server  Static (predefined) Huffman code used to compress values HPACK for HTTP/2 Headers Compression
  • 20. 20  Request line is split to pseudo headers like :method, :path, …  Static table defines common HTTP headers  Dynamic table defines HTTP headers in the current HTTP session HPACK for HTTP/2 Headers Compression
  • 21. HTTP/2 Server Push Multiple Parallel Responses for a Single Request
  • 22. 22  HTTP/2 servers can send multiple responses for a single client request (push additional resources with the requested resource) Server Push in HTTP/2
  • 23. 23  PUSH_PROMISE frames in HTTP/2 allows the server to send additional resources  First headers are sent, so clients can decide what to do  Clients can decline pushed resources (via a RST_STREAM frame)  E.g. when the pushed resource is already in the cache  Pushed resources can be cached and reused later  Pushed resources can be multiplexed alongside other resources  Pushed resources can be prioritized by the server Push Promises
  • 24. Prioritization and Flow Control Weights, Dependencies, Flow Control
  • 25. 25  HTTP/2 defines stream prioritization by weight + dependency  Each stream may be assigned a weight between 1 and 256  Each stream may be given a dependency on another stream  The "prioritization tree" defines the preferred order of resources Stream Weight and Dependency
  • 26. 26  What is flow control?  Managing the rate of data transmission between two nodes to prevent a fast sender from overwhelming a slow receiver  Example:  User watches a video and presses the "pause" button  For each HTTP/2 stream and for the entire connection  Receivers can specify how many DATA bytes is ready to receive  WINDOW_UPDATE frames configure the window size Flow Control in HTTP/2
  • 27. 27  Some browsers use the QUIC protocol  QUIC == Quick UDP Internet Connections  Low-latency UDP-based transport layer protocol  Designed to replace TCP for better performance  Build-in multiplexing and TLS-equivalent security  Still experimental, supported in Chromium  Learn more at:  https://www.chromium.org/quic  https://en.wikipedia.org/wiki/QUIC The QUIC Protocol
  • 28. Using HTTP/2 How to Switch to HTTP/2?
  • 29. 29  There is no such thing as:  http2://mysite.com  HTTP/2 uses a standard https:// connection  With TLS ALPN (Application Layer Protocol Negotiation)  ALPN allows the applications to negotiate which protocol should be used over a secure connection without round trips  Most browsers do not support HTTP/2 without SSL  Browsers check for HTTP/2 support during the SSL handshake How to Establish HTTP/2 Connection?
  • 30. 30  HTTP 1.1 connection could be upgraded to HTTP/2:  TLS is not mandatory for HTTP/2 (as defined in RFC 7540)  But most Web browsers refuse to implement clear text HTTP/2  Non-browser client apps can still use clear-text HTTP/2 HTTP/2 Connection Upgrade GET / HTTP/1.1 Host: server.example.com Connection: Upgrade, HTTP2-Settings Upgrade: h2c HTTP2-Settings: <base64url-encoded HTTP/2 SETTINGS>
  • 31. HTTP/2 Tools How It Changes Developer's Life?
  • 32. 32  HTTP 1.1 was simple to test / debug / trace  It is text-based protocol, human-readable  HTTP/2 will require tools  It is binary protocol, not human-readable  It runs over TLS tunnel, so sniffing is complicated HTTP/2 is a Binary Protocol
  • 33. 33  Wireshark can sniff HTTP/2  But cannot decrypt TLS traffic  No out-of-the-box man-in-the-middle proxy  Needs the SSL private key for the remote site  In fact Wireshark is not of help for HTTP/2 Web developers  Fiddler does not support HTTP/2  Wait for Microsoft to implement TLS ALPN in .NET Framework  It decrypts HTTPS through elegant man-in-the-middle proxy Tools Not Working with HTTP/2
  • 34. 34  Indicates HTTP/2, SPDY, QUIC, versions, etc. HTTP/2 and SPDY Indicator for Chrome
  • 35. 35  Chrome HTTP/2 info page  chrome://net-internals/#http2  View all HTTP/2 sessions  chrome://net-internals/#events&q=type:HTTP2_SESSION Chrome HTTP/2 Tools
  • 36. 36  H2I is an interactive HTTP/2 ("h2") console debugger  Something like telnet to HTTP/2 server  https://github.com/bradfitz/http2/tree/master/h2i  Written in GO  Send / receive raw HTTP/2 frames  Send PING, SETTINGS, HEADERS frames  Receive any type of frame H2I
  • 38. HTTP/2 from Dev Perspective How It Changes Developer's Life?
  • 39. 39  No more image sprites  Use separate images  No more CSS / JavaScript combining  Use separate CSS / JS files + server push  No more domain sharding  Still might boost performance by distributing the server-side load  HTTP APIs can be finer-grained without sacrificing performance Say "Goodbye" To Many Hacks
  • 40. 40  Prioritization  Developers may specify resource prioritization for faster page load  Web servers / browsers may automatically set priorities  When to push?  Developers may push resources for faster page load  Web servers may push resources transparently of developers  How to optimize the flow control ?  Developers may change the flow-control of data streams Lots of Tweaking for Developers / Admins
  • 41. Jetty and HTTP/2 HTTP/2 for Java Developers
  • 42. 42  Jetty is a Java HTTP (Web) server and Servlet engine  Developed under the Eclipse open-source project  Supports HTTP/2, WebSocket, OSGi, JMX, JNDI, JAAS  Enable HTTP/2 in Jetty: Jetty and HTTP/s $ java -jar $JETTY_HOME/start.jar --add-to-startd=http2 $ java -jar $JETTY_HOME/start.jar … 2015-06-17 14:16:12.549:INFO:oejs.ServerConnector:main: Started ServerConnector@34c9c77f{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} 2015-06-17 14:16:12.782:INFO:oejs.ServerConnector:main: Started ServerConnector@711f39f9{SSL,[ssl, alpn, h2, h2-17, http/1.1]}{0.0.0.0:8443} …
  • 43. 43  Jetty allows configuring a server push strategy  ReferrerPushStrategy auto-learns dependencies from referrer Jetty Smart Push
  • 44. 44  Jetty provides http2-client  Implementation of HTTP/2 client with a low level HTTP/2 API, dealing with HTTP/2 streams, frames, etc.  Learn more at http://www.eclipse.org/jetty/ documentation/current/http-client-api.html Jetty HTTP/2 Client SslContextFactory sslContextFactory = new SslContextFactory(); HttpClient httpClient = new HttpClient(sslContextFactory); httpClient.start(); ContentResponse response = httpClient.GET("https://http2.akamai.com"); …
  • 46. License  This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" license 46
  • 47. Free Trainings @ Software University  Software University Foundation – softuni.org  Software University – High-Quality Education, Profession and Job for Software Developers  softuni.bg  Software University @ Facebook  facebook.com/SoftwareUniversity  Software University @ YouTube  youtube.com/SoftwareUniversity  Software University Forums – forum.softuni.bg

Editor's Notes

  1. DEMO jprime:80 with DEV TOOLS