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

HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPCGuo Jing
 
gRPC Design and Implementation
gRPC Design and ImplementationgRPC Design and Implementation
gRPC Design and ImplementationVarun Talwar
 
pfSense firewall workshop guide
pfSense firewall workshop guidepfSense firewall workshop guide
pfSense firewall workshop guideSopon Tumchota
 
Delivering High-Availability Web Services with NGINX Plus on AWS
Delivering High-Availability Web Services with NGINX Plus on AWSDelivering High-Availability Web Services with NGINX Plus on AWS
Delivering High-Availability Web Services with NGINX Plus on AWSNGINX, Inc.
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQDmitriy Samovskiy
 
OAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId ConnectOAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId ConnectSaran Doraiswamy
 
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...Netgate
 
DDoS Mitigation using BGP Flowspec
DDoS Mitigation using BGP Flowspec DDoS Mitigation using BGP Flowspec
DDoS Mitigation using BGP Flowspec APNIC
 
Implementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on KeycloakImplementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on KeycloakYuichi Nakamura
 
How to Avoid Common Mistakes When Using Reactor Netty
How to Avoid Common Mistakes When Using Reactor NettyHow to Avoid Common Mistakes When Using Reactor Netty
How to Avoid Common Mistakes When Using Reactor NettyVMware Tanzu
 

What's hot (20)

Ssl https
Ssl httpsSsl https
Ssl https
 
Building microservices with grpc
Building microservices with grpcBuilding microservices with grpc
Building microservices with grpc
 
HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPC
 
HAProxy
HAProxy HAProxy
HAProxy
 
Introduction to gRPC
Introduction to gRPCIntroduction to gRPC
Introduction to gRPC
 
HTTP/3 in curl
HTTP/3 in curlHTTP/3 in curl
HTTP/3 in curl
 
gRPC Design and Implementation
gRPC Design and ImplementationgRPC Design and Implementation
gRPC Design and Implementation
 
pfSense firewall workshop guide
pfSense firewall workshop guidepfSense firewall workshop guide
pfSense firewall workshop guide
 
Http caching basics
Http caching basicsHttp caching basics
Http caching basics
 
Delivering High-Availability Web Services with NGINX Plus on AWS
Delivering High-Availability Web Services with NGINX Plus on AWSDelivering High-Availability Web Services with NGINX Plus on AWS
Delivering High-Availability Web Services with NGINX Plus on AWS
 
RabbitMQ.ppt
RabbitMQ.pptRabbitMQ.ppt
RabbitMQ.ppt
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
 
OAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId ConnectOAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId Connect
 
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...
 
OpenID Connect Explained
OpenID Connect ExplainedOpenID Connect Explained
OpenID Connect Explained
 
SSL TLS Protocol
SSL TLS ProtocolSSL TLS Protocol
SSL TLS Protocol
 
gRPC
gRPCgRPC
gRPC
 
DDoS Mitigation using BGP Flowspec
DDoS Mitigation using BGP Flowspec DDoS Mitigation using BGP Flowspec
DDoS Mitigation using BGP Flowspec
 
Implementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on KeycloakImplementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on Keycloak
 
How to Avoid Common Mistakes When Using Reactor Netty
How to Avoid Common Mistakes When Using Reactor NettyHow to Avoid Common Mistakes When Using Reactor Netty
How to Avoid Common Mistakes When Using Reactor Netty
 

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
 
HTTP/2 Introduction
HTTP/2 IntroductionHTTP/2 Introduction
HTTP/2 IntroductionWalter Liu
 
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
 

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
 
HTTP/2 Introduction
HTTP/2 IntroductionHTTP/2 Introduction
HTTP/2 Introduction
 
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 : 더 빠른 웹을 위한 프로토콜
 

Similar to HTTP/2 for Developers

Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2Ido Flatow
 
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)

Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2
 
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
 

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

Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)cama23
 
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxMusic 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxleah joy valeriano
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Celine George
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptxmary850239
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptshraddhaparab530
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfVanessa Camilleri
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Mark Reed
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONHumphrey A Beña
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSJoshuaGantuangco2
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4JOYLYNSAMANIEGO
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptxiammrhaywood
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Seán Kennedy
 

Recently uploaded (20)

Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)
 
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxMusic 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.ppt
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdf
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
 
Raw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptxRaw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptx
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...
 

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