SlideShare a Scribd company logo
1 of 47
Download to read offline
Introducing HTTP/2
Ido Flatow
Senior Architect, Sela Group
Microsoft RD & MVP
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Agenda
• HTTP 1.1 – What it’s all about
• Web (HTTP 1.1) and its current state
• What is (HTTP/2) – and how fast is it?
• Goals of HTTP/2
• HTTP/2 concepts
• How to troubleshoot
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
HTTP Messages 101
• HTTP is a first class application protocol:
– Widely supported across platforms and devices
– Scalable
– Simple
• Uses the request-response messaging pattern
• Define resource-based semantics and not RPC
(Remote Procedure Call) or methods
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
HTTP Request Messages
GET http://localhost:2300/api/agents/Bond HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US,en;q=0.7,he;q=0.3
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0;
Windows NT 6.2; WOW64; Trident/6.0)
Accept-Encoding: gzip, deflate
Host: localhost:2300
DNT: 1
Connection: Keep-Alive
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
HTTP Response Messages
HTTP/1.1 200 OK
Cache-Control: public, max-age=300
Content-Type: application/json; charset=utf-8
ETag: "1"
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
Date: Mon, 19 Nov 2012 17:49:40 GMT
Content-Length: 142
{
"Id": "Bond",
"FullName": "James Bond",
"Alias": "007",
"Version": 1,
"Image": "http://localhost:2300/api/agents/Bond.jpg"
}
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
URIs
• HTTP is not an RPC protocol
• HTTP uses URIs to identify resources over
the network
• An HTTP URI has the following basic
structure:
http://theagency.com:8080/agents?id=1
Schema Host Port Absolute
Path
Query
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Verbs
• HTTP defines a set of Methods or Verbs that add
an action-like semantics to requests
• Verbs are defined as the first segment of the
request-line:
• There are eight verbs defined in HTTP 1.1:
GET http://localhost:4392/travelers/1 HTTP/1.1
GET
POST
PUT
DELETE
HEAD
OPTIONS
TRACE
CONNECT
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Status Codes
• Status-Codes describe the result of the server’s effort so
satisfy the request
• Passed in the response's status-line as three digit along-side
a textual description called reason-phrases
• HTTP has five different categories of status-codes:
– 1xx – Informational
– 2xx – Success
– 3xx – Redirection
– 4xx – Client Error
– 5xx – Server Error
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Compression
• Compression is something the client needs to
request
• Requests are not normally compressed
• Accept-Encoding: gzip,deflate
• Server is not obligated to compress the
response
• Content-Encoding: gzip / deflate
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Web – Current State
• HTTP 1.1 is huge
– HTTP 1.0 RFC 1945 – released 1996 – 60 pages
– HTTP 1.1 RFC 2626 – released 1999 – 176 pages
– Now split into 6 documents – RFC 7230 and family
• Incomplete implementation of RFC
– Eg. HTTP pipelining
• Inadequate use of TCP
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Transfer Size +300% in 4.5 Years
• January 2012 – August 2016
(http://httparchive.org) top 1000 sites
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Shortcoming – Current Web
• Concurrent connection limit
• Head of line blocking
• TCP slow start
• Latency – page load time
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Max Persistent Connections
• From HTTP 1.1 RFC:
– “Clients that use persistent connections SHOULD limit the number of simultaneous connections that
they maintain to a given server. A single-user client SHOULD NOT maintain more than 2
connections with any server or proxy. … These guidelines are intended to improve HTTP
response times and avoid congestion.”
• Firefox 2 – 2
• Firefox 3 and on – 6
• Opera 9.26 – 4
• Opera 12 – 6
• Safari 3 – 4
• Safari 5 – 6
• IE 7 – 2
• IE 8 – 6
• IE 10 – 8
• Chrome – 6
Avg. TCP connections during page load (Last 24 months)
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Head-of-Line Blocking (No Pipelining)
• Each connection can only handle
one request at a time
• If current request blocks, next
request will wait
• HTTP 1.1 defines pipelining, but
most browsers do not implement
it
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
TCP Slow Start
• TCP does not use the full
bandwidth capacity from
start
• TCP probes network to
find available capacity
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Latency vs Bandwidth
• Average web page has over 100 objects to download
• Largest impact on page load time is latency, not bandwidth
https://www.akamai.com/us/en/our-thinking/state-of-the-internet-report
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
What is 20ms of Latency?
(RTT = Round-trip time)
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
What Have we Done to Improvise?
• Reduce # of requests and latency overhead
– Spriting
– Concatenation/Bundling (JavaScript, CSS)
– Inlining
• Overcome max connection limit
– Domain sharding
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Spriting
.d1, .d2, .d3, .d4, .d5, .d6, .d7 {
background:transparent url("dir_sprite.png") no-repeat 4px 0;
}
.d2 {background-position:4px -36px;}
.d3 {background-position:4px -74px;}
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Concatenation and Inlining
• Join multiple script/style files into a single resource
• Embed JavaScript and CSS within the page
• Inline images in CSS or HTML using data URIs
(Base64 encoding)
<img src="data:image/gif;
base64,R0lGODlhAQABAIAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw=="
alt="1x1 transparent (GIF) pixel" />
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Domain Sharing
• Work around the max connection
restriction
• Minimal overhead for DNS lookup
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Problems with “optimizations”
• Spriting
– Painful and annoying preprocessing, cache invalidations, slower
executions
• Inlining
– Resource can’t be cached, inflates parent document by 33%
overhead
• Concatenation
– Less modular code, expensive cache invalidators, slower
execution
• Domain sharding
– TCP slowstart, excessive DNS lookup, latency
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
HTTP/2 to the Rescue
• Improve latency and less RTT sensitive
• Fix pipelining and remove “head of line
blocking”
• Does not require multiple connections
• Achieved all this by retaining semantics of
HTTP 1.1
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
It Began with SPDY
• Originally proposed by Google as a wire format
extension to HTTP in 2011
• Implements all the major features of HTTP/2
• Serves as a testbed for improvements to HTTP
– Without the burden of standardization
• SPDY became the basis of HTTP/2 in 2012
• Chrome stopped using SPDY in May 2016
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
What is HTTP/2
• HTTP/2 uses a single, multiplexed connection
– Max connection limit per domain can be ignored
• HTTP/2 compresses header data and sends it in a
concise, binary format
– Better than the plain text format used previously
• Less need for popular HTTP 1.1 optimizations
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
HTTP/2 Specification
• Started with SPDY - draft 3
• Comprised out of two specifications
– HTTP/2 – RFC7540
– HPACK (header compression) – RFC7541
• Implementations
– HTTP/2 over TLS (h2)
– HTTP/2 over TCP (h2c)
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
HTTP/2 Over TLS (h2)
• HTTP/2 shipped with TLS as optional
• Firefox and Chrome developer teams stated
they will only implement HTTP/2 over TLS
• Today, only HTTPS:// is allowed for HTTP/2
• TLS must be at least v1.2, with cipher suite
restrictions
https://http2.github.io/http2-spec/#BadCipherSuites
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
HTTP/2 Over TCP (h2c)
• Uses the Upgrade header
• Not many clients support h2c (curl)
GET /page HTTP/1.1
Host: server.example.com
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings: (SETTINGS payload)
HTTP/1.1 200 OK
Content-length: 243
Content-type: text/html
(... HTTP/1.1 response ...)
--- or ---
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c
(... HTTP/2 response ...)
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
HTTP/2 in One Slide
• One TCP connection
• Request → Stream
– Streams are multiplexed
– Streams are prioritized
• Binary framing layer
– Prioritization
– Flow control
– Server push
• Header compression (HPACK)
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
TCP Connections - HTTP 1.1 vs
HTTP/2
• HTTP 1.1
• HTTP/2
Client
http://www.url.com
Client
http://www.url.com
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
DEMO
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Am I Using HTTP/2?
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
HTTP/2 Support
• Servers
– Microsoft IIS 10
(Win 10 / Server 2016)
– Apache 2.4.12
– Nginx 1.9.5
– Jetty 9.3
– Many more…
• Browsers
– Edge
– IE11 (Windows 10)
– Firefox 40+
– Chrome 43+
– Safari 9+
– Opera 32+
– iOS Safari 9.1+
– Chrome for Android 46+
– CURL
Google, Facebook, Twitter and many more are using HTTP/2 already
HTTP/2 is used by 10% of all websites (Oct. 2016 http://w3techs.com)
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
HTTP/2 Multiplexing
• Each request/response stream has an ID
• Streams comprise of frames (Header, Data…)
• TCP connection can have multiple streams
• Frames can be interleaved in the TCP channel
• Stream dependencies control frame prioritization
• Server (IIS/ASP.NET) sees streams as TCP connections
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Frame Types
Frame type Description
DATA HTTP body
HEADERS Header fields
PRIORITY Sender-advised priority of stream
RST_STREAM Signal termination of stream
SETTINGS Configuration parameters for the connection
PUSH_PROMISE Signal a promise (push) of referenced sources
PING Measure roundtrip time and “liveness”
GOAWAY Inform peer to stop creating streams for current connection
WINDOW_UPDATE Connection flow control
CONTINUATION Continue a segment of header block fragments
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Header Compression (HPACK)
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
DEMO
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
How to Troubleshoot - Chrome
• Net Internals console in Chrome
• chrome://net-internals/#http2
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
How to Troubleshoot - Wireshark
• Export symmetric session keys to a file
• Load it with Wireshark
– Preferences->Protocols->SSL
• Works with Chrome
and Firefox (<48)
C:> set SSLKEYLOGFILE = %userprofile%desktopsslkeylog.log
$ export SSLKEYLOGFILE=~/Desktop/sslkeylog.log
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
How to Troubleshoot - Wireshark
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
How to Troubleshoot - Wireshark
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
How to Troubleshoot - Wireshark
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
DEMO
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Server Push (Promise)
• After the server responds with an HTML, it waits for requests to
embedded resources
• Server code knows which resources client needs
– JavaScript
– CSS
– Images
– HTML pages of future navigation
• Why not just push it to the client along with the HTML?
• In ASP.NET, use HttpResponse.PushPromise
string path = Request.ApplicationPath;
Response.PushPromise(path + "/Images/1.png");
Response.PushPromise(path + "/Images/2.png");
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
DEMO
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Summary
• Multiplexing
– Multiple requests and responses
– Fixes head-of-line blocking problem
– Avoid the HTTP 1.1 hacks
– Mechanism for request prioritization
• Fewer TCP connections
– Reduces TCP slow start
• Header compression
• Server Push
INTRODUCING HTTP/2
http://bit.ly/2gcMBRQ - Please tell us how it was
Resources
• https://http2.github.io/faq
• http://daniel.haxx.se/http2/http2-v1.10.pdf
• https://tools.ietf.org/html/rfc7540
• http://blogs.iis.net/davidso/http2
• http://blogs.msdn.com/b/webdev/archive/2015/04/30/updates-
for-asp-net-4-6-web-forms-mvc-5-web-api-2.aspx
@IdoFlatow // idof@sela.co.il // www.idoflatow.net/downloads

More Related Content

What's hot

HTTP 2.0 – What do I need to know?
HTTP 2.0 – What do I need to know? HTTP 2.0 – What do I need to know?
HTTP 2.0 – What do I need to know? Sigma Software
 
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0Cory Forsyth
 
HTTP/2 Changes Everything
HTTP/2 Changes EverythingHTTP/2 Changes Everything
HTTP/2 Changes EverythingLori MacVittie
 
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
 
HTTP2 & HPACK #pyfes 2013-11-30
HTTP2 & HPACK #pyfes 2013-11-30HTTP2 & HPACK #pyfes 2013-11-30
HTTP2 & HPACK #pyfes 2013-11-30Jxck Jxck
 
HTTP/2 for Developers
HTTP/2 for DevelopersHTTP/2 for Developers
HTTP/2 for DevelopersSvetlin Nakov
 
HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1Daniel Austin
 
HTTP/2: What no one is telling you
HTTP/2: What no one is telling youHTTP/2: What no one is telling you
HTTP/2: What no one is telling youFastly
 
HTTP/2 : why upgrading the web? - apidays Paris
HTTP/2 : why upgrading the web? - apidays ParisHTTP/2 : why upgrading the web? - apidays Paris
HTTP/2 : why upgrading the web? - apidays ParisQuentin Adam
 
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
 
What's New in HTTP/2
What's New in HTTP/2What's New in HTTP/2
What's New in HTTP/2NGINX, Inc.
 
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
 
HTTP 2.0 Why, How and When
HTTP 2.0 Why, How and WhenHTTP 2.0 Why, How and When
HTTP 2.0 Why, How and WhenCodemotion
 
HTTP - The Protocol of Our Lives
HTTP - The Protocol of Our LivesHTTP - The Protocol of Our Lives
HTTP - The Protocol of Our LivesBrent Shaffer
 
I got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't oneI got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't oneAdrian Cole
 

What's hot (20)

HTTP 2.0 – What do I need to know?
HTTP 2.0 – What do I need to know? HTTP 2.0 – What do I need to know?
HTTP 2.0 – What do I need to know?
 
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
 
SPDY and HTTP/2
SPDY and HTTP/2SPDY and HTTP/2
SPDY and HTTP/2
 
HTTP/2 Changes Everything
HTTP/2 Changes EverythingHTTP/2 Changes Everything
HTTP/2 Changes Everything
 
Http2 right now
Http2 right nowHttp2 right now
Http2 right now
 
Http2
Http2Http2
Http2
 
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
 
HTTP2 & HPACK #pyfes 2013-11-30
HTTP2 & HPACK #pyfes 2013-11-30HTTP2 & HPACK #pyfes 2013-11-30
HTTP2 & HPACK #pyfes 2013-11-30
 
HTTP/2 for Developers
HTTP/2 for DevelopersHTTP/2 for Developers
HTTP/2 for Developers
 
HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1
 
Http/2
Http/2Http/2
Http/2
 
HTTP/2: What no one is telling you
HTTP/2: What no one is telling youHTTP/2: What no one is telling you
HTTP/2: What no one is telling you
 
HTTP/2 : why upgrading the web? - apidays Paris
HTTP/2 : why upgrading the web? - apidays ParisHTTP/2 : why upgrading the web? - apidays Paris
HTTP/2 : why upgrading the web? - apidays Paris
 
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
 
HTTP2 is Here!
HTTP2 is Here!HTTP2 is Here!
HTTP2 is Here!
 
What's New in HTTP/2
What's New in HTTP/2What's New in HTTP/2
What's New in HTTP/2
 
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?
 
HTTP 2.0 Why, How and When
HTTP 2.0 Why, How and WhenHTTP 2.0 Why, How and When
HTTP 2.0 Why, How and When
 
HTTP - The Protocol of Our Lives
HTTP - The Protocol of Our LivesHTTP - The Protocol of Our Lives
HTTP - The Protocol of Our Lives
 
I got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't oneI got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't one
 

Viewers also liked

Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Ido Flatow
 
Http2: why the web is upgrading? - bdx.io 2015
Http2: why the web is upgrading?   - bdx.io 2015Http2: why the web is upgrading?   - bdx.io 2015
Http2: why the web is upgrading? - bdx.io 2015Quentin Adam
 
Async patterns in javascript
Async patterns in javascriptAsync patterns in javascript
Async patterns in javascriptRan Wahle
 
Responsive ui
Responsive uiResponsive ui
Responsive uiRan Wahle
 
What's New in WCF 4.5
What's New in WCF 4.5What's New in WCF 4.5
What's New in WCF 4.5Ido Flatow
 
The Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with AzureThe Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with AzureIdo Flatow
 
Powershell For Developers
Powershell For DevelopersPowershell For Developers
Powershell For DevelopersIdo Flatow
 
Debugging the Web with Fiddler
Debugging the Web with FiddlerDebugging the Web with Fiddler
Debugging the Web with FiddlerIdo Flatow
 
Getting Started with the TypeScript Language
Getting Started with the TypeScript LanguageGetting Started with the TypeScript Language
Getting Started with the TypeScript LanguageGil Fink
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0Ido Flatow
 
Production debugging web applications
Production debugging web applicationsProduction debugging web applications
Production debugging web applicationsIdo Flatow
 
IIS for Developers
IIS for DevelopersIIS for Developers
IIS for DevelopersIdo Flatow
 
IaaS vs. PaaS: Windows Azure Compute Solutions
IaaS vs. PaaS: Windows Azure Compute SolutionsIaaS vs. PaaS: Windows Azure Compute Solutions
IaaS vs. PaaS: Windows Azure Compute SolutionsIdo Flatow
 
Advanced WCF Workshop
Advanced WCF WorkshopAdvanced WCF Workshop
Advanced WCF WorkshopIdo Flatow
 
Debugging with Fiddler
Debugging with FiddlerDebugging with Fiddler
Debugging with FiddlerIdo Flatow
 
HTTPS: What, Why and How (SmashingConf Freiburg, Sep 2015)
HTTPS: What, Why and How (SmashingConf Freiburg, Sep 2015)HTTPS: What, Why and How (SmashingConf Freiburg, Sep 2015)
HTTPS: What, Why and How (SmashingConf Freiburg, Sep 2015)Guy Podjarny
 
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...Ido Flatow
 

Viewers also liked (20)

Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6
 
Http2: why the web is upgrading? - bdx.io 2015
Http2: why the web is upgrading?   - bdx.io 2015Http2: why the web is upgrading?   - bdx.io 2015
Http2: why the web is upgrading? - bdx.io 2015
 
Async patterns in javascript
Async patterns in javascriptAsync patterns in javascript
Async patterns in javascript
 
Responsive ui
Responsive uiResponsive ui
Responsive ui
 
Webcomponents v2
Webcomponents v2Webcomponents v2
Webcomponents v2
 
What's New in WCF 4.5
What's New in WCF 4.5What's New in WCF 4.5
What's New in WCF 4.5
 
EF Core (RC2)
EF Core (RC2)EF Core (RC2)
EF Core (RC2)
 
The Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with AzureThe Essentials of Building Cloud-Based Web Apps with Azure
The Essentials of Building Cloud-Based Web Apps with Azure
 
Powershell For Developers
Powershell For DevelopersPowershell For Developers
Powershell For Developers
 
Debugging the Web with Fiddler
Debugging the Web with FiddlerDebugging the Web with Fiddler
Debugging the Web with Fiddler
 
Getting Started with the TypeScript Language
Getting Started with the TypeScript LanguageGetting Started with the TypeScript Language
Getting Started with the TypeScript Language
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
 
Production debugging web applications
Production debugging web applicationsProduction debugging web applications
Production debugging web applications
 
IIS for Developers
IIS for DevelopersIIS for Developers
IIS for Developers
 
IaaS vs. PaaS: Windows Azure Compute Solutions
IaaS vs. PaaS: Windows Azure Compute SolutionsIaaS vs. PaaS: Windows Azure Compute Solutions
IaaS vs. PaaS: Windows Azure Compute Solutions
 
Advanced WCF Workshop
Advanced WCF WorkshopAdvanced WCF Workshop
Advanced WCF Workshop
 
HTTP/2 in Examples
HTTP/2 in ExamplesHTTP/2 in Examples
HTTP/2 in Examples
 
Debugging with Fiddler
Debugging with FiddlerDebugging with Fiddler
Debugging with Fiddler
 
HTTPS: What, Why and How (SmashingConf Freiburg, Sep 2015)
HTTPS: What, Why and How (SmashingConf Freiburg, Sep 2015)HTTPS: What, Why and How (SmashingConf Freiburg, Sep 2015)
HTTPS: What, Why and How (SmashingConf Freiburg, Sep 2015)
 
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
 

Similar to Introduction to HTTP/2

Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2Ido Flatow
 
Next generation web protocols
Next generation web protocolsNext generation web protocols
Next generation web protocolsDaniel Austin
 
Http2 Security Perspective
Http2 Security PerspectiveHttp2 Security Perspective
Http2 Security PerspectiveSunil Kumar
 
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
 
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
 
A New Internet? Introduction to HTTP/2, QUIC and DOH
A New Internet? Introduction to HTTP/2, QUIC and DOHA New Internet? Introduction to HTTP/2, QUIC and DOH
A New Internet? Introduction to HTTP/2, QUIC and DOHAPNIC
 
Cleaning Up the Dirt of the Nineties - How New Protocols are Modernizing the Web
Cleaning Up the Dirt of the Nineties - How New Protocols are Modernizing the WebCleaning Up the Dirt of the Nineties - How New Protocols are Modernizing the Web
Cleaning Up the Dirt of the Nineties - How New Protocols are Modernizing the WebSteffen Gebert
 
Java EE 8: What Servlet 4 and HTTP2 Mean
Java EE 8: What Servlet 4 and HTTP2 MeanJava EE 8: What Servlet 4 and HTTP2 Mean
Java EE 8: What Servlet 4 and HTTP2 MeanAlex Theedom
 
In a HTTP/2 World - DeccanRubyConf 2017
In a HTTP/2 World - DeccanRubyConf 2017In a HTTP/2 World - DeccanRubyConf 2017
In a HTTP/2 World - DeccanRubyConf 2017Douglas Vaz
 
HTTP2 in action - Piet Van Dongen - Codemotion Amsterdam 2017
HTTP2 in action - Piet Van Dongen - Codemotion Amsterdam 2017HTTP2 in action - Piet Van Dongen - Codemotion Amsterdam 2017
HTTP2 in action - Piet Van Dongen - Codemotion Amsterdam 2017Codemotion
 
Let's use modern protocols everywhere!
Let's use modern protocols everywhere!Let's use modern protocols everywhere!
Let's use modern protocols everywhere!jcak77
 
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
 
Stuart Larsen, attacking http2implementations-rev1
Stuart Larsen, attacking http2implementations-rev1Stuart Larsen, attacking http2implementations-rev1
Stuart Larsen, attacking http2implementations-rev1PacSecJP
 

Similar to Introduction to HTTP/2 (20)

Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
Next generation web protocols
Next generation web protocolsNext generation web protocols
Next generation web protocols
 
Http/2
Http/2Http/2
Http/2
 
Http2 kotlin
Http2   kotlinHttp2   kotlin
Http2 kotlin
 
Http2 Security Perspective
Http2 Security PerspectiveHttp2 Security Perspective
Http2 Security Perspective
 
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
 
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
 
A New Internet? Introduction to HTTP/2, QUIC and DOH
A New Internet? Introduction to HTTP/2, QUIC and DOHA New Internet? Introduction to HTTP/2, QUIC and DOH
A New Internet? Introduction to HTTP/2, QUIC and DOH
 
Cleaning Up the Dirt of the Nineties - How New Protocols are Modernizing the Web
Cleaning Up the Dirt of the Nineties - How New Protocols are Modernizing the WebCleaning Up the Dirt of the Nineties - How New Protocols are Modernizing the Web
Cleaning Up the Dirt of the Nineties - How New Protocols are Modernizing the Web
 
Introduction to HTTP2
Introduction to HTTP2Introduction to HTTP2
Introduction to HTTP2
 
SPDY - or maybe HTTP2.0
SPDY - or maybe HTTP2.0SPDY - or maybe HTTP2.0
SPDY - or maybe HTTP2.0
 
Http2 in practice
Http2 in practiceHttp2 in practice
Http2 in practice
 
Java EE 8: What Servlet 4 and HTTP2 Mean
Java EE 8: What Servlet 4 and HTTP2 MeanJava EE 8: What Servlet 4 and HTTP2 Mean
Java EE 8: What Servlet 4 and HTTP2 Mean
 
In a HTTP/2 World - DeccanRubyConf 2017
In a HTTP/2 World - DeccanRubyConf 2017In a HTTP/2 World - DeccanRubyConf 2017
In a HTTP/2 World - DeccanRubyConf 2017
 
computer networking
computer networkingcomputer networking
computer networking
 
HTTP2 in action - Piet Van Dongen - Codemotion Amsterdam 2017
HTTP2 in action - Piet Van Dongen - Codemotion Amsterdam 2017HTTP2 in action - Piet Van Dongen - Codemotion Amsterdam 2017
HTTP2 in action - Piet Van Dongen - Codemotion Amsterdam 2017
 
Let's use modern protocols everywhere!
Let's use modern protocols everywhere!Let's use modern protocols everywhere!
Let's use modern protocols everywhere!
 
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: What's new?
HTTP/2: What's new? HTTP/2: What's new?
HTTP/2: What's new?
 
Stuart Larsen, attacking http2implementations-rev1
Stuart Larsen, attacking http2implementations-rev1Stuart Larsen, attacking http2implementations-rev1
Stuart Larsen, attacking http2implementations-rev1
 

More from Ido Flatow

Google Cloud IoT Core
Google Cloud IoT CoreGoogle Cloud IoT Core
Google Cloud IoT CoreIdo Flatow
 
Production Debugging War Stories
Production Debugging War StoriesProduction Debugging War Stories
Production Debugging War StoriesIdo Flatow
 
Building IoT and Big Data Solutions on Azure
Building IoT and Big Data Solutions on AzureBuilding IoT and Big Data Solutions on Azure
Building IoT and Big Data Solutions on AzureIdo Flatow
 
Migrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the FieldMigrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the FieldIdo Flatow
 
Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015Ido Flatow
 
ASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP FundamentalsASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP FundamentalsIdo Flatow
 
Caching in Windows Azure
Caching in Windows AzureCaching in Windows Azure
Caching in Windows AzureIdo Flatow
 
Automating Windows Azure
Automating Windows AzureAutomating Windows Azure
Automating Windows AzureIdo Flatow
 

More from Ido Flatow (8)

Google Cloud IoT Core
Google Cloud IoT CoreGoogle Cloud IoT Core
Google Cloud IoT Core
 
Production Debugging War Stories
Production Debugging War StoriesProduction Debugging War Stories
Production Debugging War Stories
 
Building IoT and Big Data Solutions on Azure
Building IoT and Big Data Solutions on AzureBuilding IoT and Big Data Solutions on Azure
Building IoT and Big Data Solutions on Azure
 
Migrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the FieldMigrating Customers to Microsoft Azure: Lessons Learned From the Field
Migrating Customers to Microsoft Azure: Lessons Learned From the Field
 
Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015
 
ASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP FundamentalsASP.NET Web API and HTTP Fundamentals
ASP.NET Web API and HTTP Fundamentals
 
Caching in Windows Azure
Caching in Windows AzureCaching in Windows Azure
Caching in Windows Azure
 
Automating Windows Azure
Automating Windows AzureAutomating Windows Azure
Automating Windows Azure
 

Recently uploaded

UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?SANGHEE SHIN
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum ComputingGDSC PJATK
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfAnna Loughnan Colquhoun
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.francesco barbera
 

Recently uploaded (20)

UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum Computing
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdf
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.
 

Introduction to HTTP/2

  • 1. Introducing HTTP/2 Ido Flatow Senior Architect, Sela Group Microsoft RD & MVP
  • 2. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Agenda • HTTP 1.1 – What it’s all about • Web (HTTP 1.1) and its current state • What is (HTTP/2) – and how fast is it? • Goals of HTTP/2 • HTTP/2 concepts • How to troubleshoot
  • 3. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was HTTP Messages 101 • HTTP is a first class application protocol: – Widely supported across platforms and devices – Scalable – Simple • Uses the request-response messaging pattern • Define resource-based semantics and not RPC (Remote Procedure Call) or methods
  • 4. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was HTTP Request Messages GET http://localhost:2300/api/agents/Bond HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Language: en-US,en;q=0.7,he;q=0.3 User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) Accept-Encoding: gzip, deflate Host: localhost:2300 DNT: 1 Connection: Keep-Alive
  • 5. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was HTTP Response Messages HTTP/1.1 200 OK Cache-Control: public, max-age=300 Content-Type: application/json; charset=utf-8 ETag: "1" Server: Microsoft-IIS/8.0 X-AspNet-Version: 4.0.30319 Date: Mon, 19 Nov 2012 17:49:40 GMT Content-Length: 142 { "Id": "Bond", "FullName": "James Bond", "Alias": "007", "Version": 1, "Image": "http://localhost:2300/api/agents/Bond.jpg" }
  • 6. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was URIs • HTTP is not an RPC protocol • HTTP uses URIs to identify resources over the network • An HTTP URI has the following basic structure: http://theagency.com:8080/agents?id=1 Schema Host Port Absolute Path Query
  • 7. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Verbs • HTTP defines a set of Methods or Verbs that add an action-like semantics to requests • Verbs are defined as the first segment of the request-line: • There are eight verbs defined in HTTP 1.1: GET http://localhost:4392/travelers/1 HTTP/1.1 GET POST PUT DELETE HEAD OPTIONS TRACE CONNECT
  • 8. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Status Codes • Status-Codes describe the result of the server’s effort so satisfy the request • Passed in the response's status-line as three digit along-side a textual description called reason-phrases • HTTP has five different categories of status-codes: – 1xx – Informational – 2xx – Success – 3xx – Redirection – 4xx – Client Error – 5xx – Server Error
  • 9. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Compression • Compression is something the client needs to request • Requests are not normally compressed • Accept-Encoding: gzip,deflate • Server is not obligated to compress the response • Content-Encoding: gzip / deflate
  • 10. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Web – Current State • HTTP 1.1 is huge – HTTP 1.0 RFC 1945 – released 1996 – 60 pages – HTTP 1.1 RFC 2626 – released 1999 – 176 pages – Now split into 6 documents – RFC 7230 and family • Incomplete implementation of RFC – Eg. HTTP pipelining • Inadequate use of TCP
  • 11. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Transfer Size +300% in 4.5 Years • January 2012 – August 2016 (http://httparchive.org) top 1000 sites
  • 12. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Shortcoming – Current Web • Concurrent connection limit • Head of line blocking • TCP slow start • Latency – page load time
  • 13. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Max Persistent Connections • From HTTP 1.1 RFC: – “Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. … These guidelines are intended to improve HTTP response times and avoid congestion.” • Firefox 2 – 2 • Firefox 3 and on – 6 • Opera 9.26 – 4 • Opera 12 – 6 • Safari 3 – 4 • Safari 5 – 6 • IE 7 – 2 • IE 8 – 6 • IE 10 – 8 • Chrome – 6 Avg. TCP connections during page load (Last 24 months)
  • 14. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Head-of-Line Blocking (No Pipelining) • Each connection can only handle one request at a time • If current request blocks, next request will wait • HTTP 1.1 defines pipelining, but most browsers do not implement it
  • 15. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was TCP Slow Start • TCP does not use the full bandwidth capacity from start • TCP probes network to find available capacity
  • 16. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Latency vs Bandwidth • Average web page has over 100 objects to download • Largest impact on page load time is latency, not bandwidth https://www.akamai.com/us/en/our-thinking/state-of-the-internet-report
  • 17. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was What is 20ms of Latency? (RTT = Round-trip time)
  • 18. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was What Have we Done to Improvise? • Reduce # of requests and latency overhead – Spriting – Concatenation/Bundling (JavaScript, CSS) – Inlining • Overcome max connection limit – Domain sharding
  • 19. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Spriting .d1, .d2, .d3, .d4, .d5, .d6, .d7 { background:transparent url("dir_sprite.png") no-repeat 4px 0; } .d2 {background-position:4px -36px;} .d3 {background-position:4px -74px;}
  • 20. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Concatenation and Inlining • Join multiple script/style files into a single resource • Embed JavaScript and CSS within the page • Inline images in CSS or HTML using data URIs (Base64 encoding) <img src="data:image/gif; base64,R0lGODlhAQABAIAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==" alt="1x1 transparent (GIF) pixel" />
  • 21. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Domain Sharing • Work around the max connection restriction • Minimal overhead for DNS lookup
  • 22. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Problems with “optimizations” • Spriting – Painful and annoying preprocessing, cache invalidations, slower executions • Inlining – Resource can’t be cached, inflates parent document by 33% overhead • Concatenation – Less modular code, expensive cache invalidators, slower execution • Domain sharding – TCP slowstart, excessive DNS lookup, latency
  • 23. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was HTTP/2 to the Rescue • Improve latency and less RTT sensitive • Fix pipelining and remove “head of line blocking” • Does not require multiple connections • Achieved all this by retaining semantics of HTTP 1.1
  • 24. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was It Began with SPDY • Originally proposed by Google as a wire format extension to HTTP in 2011 • Implements all the major features of HTTP/2 • Serves as a testbed for improvements to HTTP – Without the burden of standardization • SPDY became the basis of HTTP/2 in 2012 • Chrome stopped using SPDY in May 2016
  • 25. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was What is HTTP/2 • HTTP/2 uses a single, multiplexed connection – Max connection limit per domain can be ignored • HTTP/2 compresses header data and sends it in a concise, binary format – Better than the plain text format used previously • Less need for popular HTTP 1.1 optimizations
  • 26. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was HTTP/2 Specification • Started with SPDY - draft 3 • Comprised out of two specifications – HTTP/2 – RFC7540 – HPACK (header compression) – RFC7541 • Implementations – HTTP/2 over TLS (h2) – HTTP/2 over TCP (h2c)
  • 27. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was HTTP/2 Over TLS (h2) • HTTP/2 shipped with TLS as optional • Firefox and Chrome developer teams stated they will only implement HTTP/2 over TLS • Today, only HTTPS:// is allowed for HTTP/2 • TLS must be at least v1.2, with cipher suite restrictions https://http2.github.io/http2-spec/#BadCipherSuites
  • 28. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was HTTP/2 Over TCP (h2c) • Uses the Upgrade header • Not many clients support h2c (curl) GET /page HTTP/1.1 Host: server.example.com Connection: Upgrade, HTTP2-Settings Upgrade: h2c HTTP2-Settings: (SETTINGS payload) HTTP/1.1 200 OK Content-length: 243 Content-type: text/html (... HTTP/1.1 response ...) --- or --- HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: h2c (... HTTP/2 response ...)
  • 29. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was HTTP/2 in One Slide • One TCP connection • Request → Stream – Streams are multiplexed – Streams are prioritized • Binary framing layer – Prioritization – Flow control – Server push • Header compression (HPACK)
  • 30. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was TCP Connections - HTTP 1.1 vs HTTP/2 • HTTP 1.1 • HTTP/2 Client http://www.url.com Client http://www.url.com
  • 31. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was DEMO
  • 32. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Am I Using HTTP/2?
  • 33. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was HTTP/2 Support • Servers – Microsoft IIS 10 (Win 10 / Server 2016) – Apache 2.4.12 – Nginx 1.9.5 – Jetty 9.3 – Many more… • Browsers – Edge – IE11 (Windows 10) – Firefox 40+ – Chrome 43+ – Safari 9+ – Opera 32+ – iOS Safari 9.1+ – Chrome for Android 46+ – CURL Google, Facebook, Twitter and many more are using HTTP/2 already HTTP/2 is used by 10% of all websites (Oct. 2016 http://w3techs.com)
  • 34. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was HTTP/2 Multiplexing • Each request/response stream has an ID • Streams comprise of frames (Header, Data…) • TCP connection can have multiple streams • Frames can be interleaved in the TCP channel • Stream dependencies control frame prioritization • Server (IIS/ASP.NET) sees streams as TCP connections
  • 35. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Frame Types Frame type Description DATA HTTP body HEADERS Header fields PRIORITY Sender-advised priority of stream RST_STREAM Signal termination of stream SETTINGS Configuration parameters for the connection PUSH_PROMISE Signal a promise (push) of referenced sources PING Measure roundtrip time and “liveness” GOAWAY Inform peer to stop creating streams for current connection WINDOW_UPDATE Connection flow control CONTINUATION Continue a segment of header block fragments
  • 36. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Header Compression (HPACK)
  • 37. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was DEMO
  • 38. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was How to Troubleshoot - Chrome • Net Internals console in Chrome • chrome://net-internals/#http2
  • 39. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was How to Troubleshoot - Wireshark • Export symmetric session keys to a file • Load it with Wireshark – Preferences->Protocols->SSL • Works with Chrome and Firefox (<48) C:> set SSLKEYLOGFILE = %userprofile%desktopsslkeylog.log $ export SSLKEYLOGFILE=~/Desktop/sslkeylog.log
  • 40. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was How to Troubleshoot - Wireshark
  • 41. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was How to Troubleshoot - Wireshark
  • 42. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was How to Troubleshoot - Wireshark
  • 43. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was DEMO
  • 44. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Server Push (Promise) • After the server responds with an HTML, it waits for requests to embedded resources • Server code knows which resources client needs – JavaScript – CSS – Images – HTML pages of future navigation • Why not just push it to the client along with the HTML? • In ASP.NET, use HttpResponse.PushPromise string path = Request.ApplicationPath; Response.PushPromise(path + "/Images/1.png"); Response.PushPromise(path + "/Images/2.png");
  • 45. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was DEMO
  • 46. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Summary • Multiplexing – Multiple requests and responses – Fixes head-of-line blocking problem – Avoid the HTTP 1.1 hacks – Mechanism for request prioritization • Fewer TCP connections – Reduces TCP slow start • Header compression • Server Push
  • 47. INTRODUCING HTTP/2 http://bit.ly/2gcMBRQ - Please tell us how it was Resources • https://http2.github.io/faq • http://daniel.haxx.se/http2/http2-v1.10.pdf • https://tools.ietf.org/html/rfc7540 • http://blogs.iis.net/davidso/http2 • http://blogs.msdn.com/b/webdev/archive/2015/04/30/updates- for-asp-net-4-6-web-forms-mvc-5-web-api-2.aspx @IdoFlatow // idof@sela.co.il // www.idoflatow.net/downloads

Editor's Notes

  1. http://www.http2demo.io/ https://http2.akamai.com/demo
  2. Pipelining in HTTP 1.1 is mostly supported in browsers, but not in proxies
  3. Diagrams via Akamai’s state of the Internet statistics https://www.igvita.com/2012/07/19/latency-the-new-web-performance-bottleneck/
  4. https://www.maxcdn.com/one/visual-glossary/domain-sharding-2/ 2-4 domains is the optimal ratio
  5. TLS must support SNI, disable compression and re-negotiation, minimal key length for ephemeral key exchange
  6. HTTP/2 on local IIS 10
  7. PushPromise3.pcapng