SlideShare a Scribd company logo
HTTP/2
ISLAM GAMAL
topics
HTTP Today
Why HTTP/2
How it works
Working with HTTP2
Demo
HTTP Today
 Using HTTP 1.1 since 1997 / 1999
 Connection: keep-alive
 Head of Line Blocking
 But we still use N TCP Connections per origin
 And Many Hacks because requests are evil
 Spriting of Images
 Resource Inlining
 Concatenation of files
 Domain Sharding
 CDNs
 No Header Compression
HTTP Problems
 Negotiation mechanism that allows clients and servers to elect to use HTTP 1.1, 2.0, or
potentially other non-HTTP protocols.
 Maintain high-level compatibility with HTTP 1.1 (for example with methods, status
codes, and URIs, and most header fields)
 Decrease latency to improve page load speed in web browsers by considering:
 Data compression of HTTP headers
 HTTP/2 Server Push
 Pipelining of requests
 Fixing the head-of-line blocking problem in HTTP 1.x
 Multiplexing multiple requests over a single TCP connection
 Support common existing use cases of HTTP, such as desktop web browsers, mobile
web browsers, web APIs, web servers at various scales, proxy servers, reverse proxy
servers, firewalls, and content delivery networks
2009 .. SPDY
 It came in a beautiful package
 Header Compression
 Now cookieless domains are useless
 Multiplexing
 Now we can say that sharding is BAD PRACTICE
 Priority First (Ex. Bring my JS and CSS files first)
 Server Push
 With “Server Hint”, and “RST_STREAM” for HTTP/2
Why HTTP/2
 Performance matters
 HTTP/2 reduces the impact of latency on web applications
 TLS is becoming the default
 HTTP/2 amortizes TLS costs for the entire application
 Enabling new web development
 User perceivable improvement in web site performance
 Work with today’s internet
 Remain compatible with existing content
What is HTTP/2
 Used SPDY3 as its first draft
 Main Driven by Performance
 But also includes
 Security
 Reliability
HTTP/2 vs SPDY
 Binary instead of ASCII
 Header Compression (HPACK - RFC 7541)
 Fully multiplexed - Means: Parallelism and Out of Order Req/Res
 Stream Prioritization
 1 TCP Connection  N Streams  N Frames
 Solves Head of Line Blocking
 Server Push what it thinks that the client will need (e.g., assets)
HTTP 1.x vs HTTP/2
HTTP/2 Units
Frames Streams Connections
• Flags
• Type
• Stream Identifier
• Payload
• Length
• Identifier
• State
• Priority
• Flow Control
• Flow Control
HTTP/1.1 – Request = Connection HTTP/2 – Request = Stream
…
Each request required dedicated TCP connection TCP connection can have multiple streams (requests)
Responses come in order per connection Responses can come out of order, server can optimize
Each connection requires setup + slow start No connection setup for new streams, no slow start
Application sees “connections” Streams are represented as “connections” to apps
HTTP/2 Connections and Streams
Header Compression
:path: /
accept-encoding: gzip,deflate
user-agent:
:authority:
…
Static Table
:authority: www.example.com
Dynamic Table
:method: GET
:scheme: http
:path: /
:authority: www.example.com
Lit-
Index
Name Value
(Huffman-encoded string)
 HPACK
Header Compression
 Each header is expressed as either…
 Indexed: Reference to full header in static or dynamic table
 Literal:
 Name as reference to static/dynamic table entry, or as Huffman-encoded string
 Value as Huffman-encoded string
 Indexing behavior:
 Add to dynamic table
 Don’t add to dynamic table
 NEVER add to dynamic table (supposed to be persisted through intermediaries)
HTTP/2 Frame Types
1. DATA
2. HEADERS
3. PRIORITY
4. RST_STREAM
5. SETTINGS
1. SETTINGS_HEADER_TABLE_SIZE
2. SETTINGS_ENABLE_PUSH
3. SETTINGS_MAX_CONCURRENT_STREAMS
4. SETTINGS_INITIAL_WINDOW_SIZE
5. SETTINGS_MAX_FRAME_SIZE
6. SETTINGS_MAX_HEADER_LIST_SIZE
6. PUSH_PROMISE
7. PING
8. GOAWAY
9. WINDOW_UPDATE
10. CONTINUATION
HTTP/2 GET
HTTP/2 POST Request
HTTP/2 POST Response
Request Reliability
 In HTTP no retry a request when an error occurs
 Re-Attempt: It is only possible to some server to do some processing prior to
the error which could result in undesired effects
 HTTP/2 Provides 2 mechanisms as guarantee to a client that a request has
not been processing
 GOAWAY: the highest stream number that has been processed
 REFUSED_STREAM: error code can be included in a RST_STREAM frame
Upgrade Request Anatomy
 When you don’t know if it supports HTTP/2
GET / HTTP/1.1
Host: server.example.com
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings:
Response
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c
• “h2c” means no TLS connection
• “h2” means TLS connection [TLS-ALPN]
• Implicit acknowledgement of HTTP2-Settings
How To Upgrade
 Change Text with Binary
 HTTP2 is working over HTTP1.1
 NO HTTP without TLS(HTTPS)
 Then we have, Binary over Text
 So, Implement APLN
Upgrade Sample
HTTP/2 Adoption Rate
 Browsers: Chrome and Firefox latest versions support already
 Servers: Apache (mod_h2), jetty, Apache Traffic Server
 Services: Google, Twitter
 Proxy: Squid
 CDN
 Akamai said in the end of the 2015and
 CloudFlare when ‘nginx supports HTTP/2’
Working With HTTP/2
Working With HTTP/2
Hosting
 Hosting .NET Apps
 IIS 10 on Windows 10
 Windows Server 2016
 Ngnix
 Kestrel
 Hosting Java Apps
 Apache HTTP 2.4.17+
 Jetty 9.3+
 Tomcat 9 (still not fully supported)
 Hosting Node Apps
 Node-http2
 Node-spdy
 ExpressJS 5.0(Still has issues)
Working With HTTP/2
Server software
 Apache 2.4.12 Apache Traffic Server supports
HTTP/2.[58]
 Caddy supports HTTP/2.[59]
 Citrix NetScaler 11.x supports HTTP/2.[60]
 Sucuri Supports HTTP/2.[61]
 F5 BIG-IP Local Traffic Manager 11.6 supports
HTTP/2.[62]
 h2o was built from the ground up for HTTP/2
support.[63]
 Jetty 9.3 supports HTTP/2.[64]
 LiteSpeed Web Server 5.0 supports
HTTP/2.[65]
 Warp (Haskell web server, used by default in
Yesod) supports HTTP/2.
 Microsoft IIS supports HTTP/2 in Windows
10[66] and Windows Server 2016.
 Netty 4.1 supports HTTP/2.[67]
 nginx 1.9.5 supports HTTP/2.[68]
 node.js 5.0 supports HTTP/2.[69]
 OpenLiteSpeed 1.3.11 and 1.4.8 supports
HTTP/2.[70]
 Proxygen supports HTTP/2.
 Radware Alteon NG supports HTTP/2.[71]
 ShimmerCat was built from the ground up for
HTTP/2 support.[72]
 Vert.x 3.3 supports HTTP/2
 Wildfly 9 supports HTTP/2.
What About .NET
ASP.NET Core is an open source and cross-platform technology by Microsoft
for developing web-based applications. In .NET Framework 4.6.0 Microsoft
announced support for HTTP/2. So the .NET Framework 4.6.0 & 4.6.1 supports
HTTP/2.
Examples
 http://www.http2demo.io/
 https://http2.akamai.com/
 https://http2.golang.org/
 chrome://net-internals/
 http://caniuse.com/
Thank You!

More Related Content

What's hot

Apache web server
Apache web serverApache web server
Apache web server
Sabiha M
 
Meeting 13. web server i
Meeting 13. web server iMeeting 13. web server i
Meeting 13. web server i
Syaiful Ahdan
 
HTTP/2
HTTP/2HTTP/2
HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016
Daniel Stenberg
 
Ftp server configuration on cisco packet tracer
Ftp server configuration on cisco packet tracerFtp server configuration on cisco packet tracer
Ftp server configuration on cisco packet tracer
prodhan999
 
Http mule
Http muleHttp mule
Http mule
Karnam Karthik
 
APACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUXAPACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUXwebhostingguy
 
Apache web server tutorial for linux
Apache web server tutorial for linuxApache web server tutorial for linux
Apache web server tutorial for linux
Sahad Sali
 
Apache web server
Apache web serverApache web server
Apache web server
Rishabh Bahukhandi
 
Apache server configuration & optimization
Apache server configuration & optimizationApache server configuration & optimization
Apache server configuration & optimizationGokul Muralidharan
 
transfer protocols,ftp,smtp,pop,imap
transfer protocols,ftp,smtp,pop,imaptransfer protocols,ftp,smtp,pop,imap
transfer protocols,ftp,smtp,pop,imap
AKSHIT KOHLI
 
HTTP Presentation
HTTP Presentation HTTP Presentation
HTTP Presentation
Lana Dujanovic
 
Apache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya KulkarniApache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya Kulkarniwebhostingguy
 
HyperText Transfer Protocol (HTTP)
HyperText Transfer Protocol (HTTP)HyperText Transfer Protocol (HTTP)
HyperText Transfer Protocol (HTTP)
Gurjot Singh
 
Configuring the Apache Web Server
Configuring the Apache Web ServerConfiguring the Apache Web Server
Configuring the Apache Web Serverwebhostingguy
 
Understanding the Web through HTTP
Understanding the Web through HTTPUnderstanding the Web through HTTP
Understanding the Web through HTTP
Olivia Brundage
 
Composite Source With Mule ESB
Composite Source With Mule ESBComposite Source With Mule ESB
Composite Source With Mule ESB
Jitendra Bafna
 

What's hot (20)

Apache web server
Apache web serverApache web server
Apache web server
 
Apache ppt
Apache pptApache ppt
Apache ppt
 
Meeting 13. web server i
Meeting 13. web server iMeeting 13. web server i
Meeting 13. web server i
 
HTTP/2
HTTP/2HTTP/2
HTTP/2
 
HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016
 
Ftp server configuration on cisco packet tracer
Ftp server configuration on cisco packet tracerFtp server configuration on cisco packet tracer
Ftp server configuration on cisco packet tracer
 
Http mule
Http muleHttp mule
Http mule
 
APACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUXAPACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUX
 
Apache web server tutorial for linux
Apache web server tutorial for linuxApache web server tutorial for linux
Apache web server tutorial for linux
 
Apache web server
Apache web serverApache web server
Apache web server
 
Apache server configuration & optimization
Apache server configuration & optimizationApache server configuration & optimization
Apache server configuration & optimization
 
transfer protocols,ftp,smtp,pop,imap
transfer protocols,ftp,smtp,pop,imaptransfer protocols,ftp,smtp,pop,imap
transfer protocols,ftp,smtp,pop,imap
 
HTTP Presentation
HTTP Presentation HTTP Presentation
HTTP Presentation
 
Apache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya KulkarniApache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya Kulkarni
 
HyperText Transfer Protocol (HTTP)
HyperText Transfer Protocol (HTTP)HyperText Transfer Protocol (HTTP)
HyperText Transfer Protocol (HTTP)
 
Configuring the Apache Web Server
Configuring the Apache Web ServerConfiguring the Apache Web Server
Configuring the Apache Web Server
 
Understanding the Web through HTTP
Understanding the Web through HTTPUnderstanding the Web through HTTP
Understanding the Web through HTTP
 
Composite Source With Mule ESB
Composite Source With Mule ESBComposite Source With Mule ESB
Composite Source With Mule ESB
 
Apache Ppt
Apache PptApache Ppt
Apache Ppt
 
Apache ppt
Apache pptApache ppt
Apache ppt
 

Similar to 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
peychevi
 
HTTP/2 Introduction
HTTP/2 IntroductionHTTP/2 Introduction
HTTP/2 Introduction
Walter Liu
 
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017Introduction to gRPC - Mete Atamel - Codemotion Rome 2017
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017
Codemotion
 
Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...
Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...
Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...
Codemotion
 
Http/2
Http/2Http/2
Http2 is here! And why the web needs it
Http2 is here! And why the web needs itHttp2 is here! And why the web needs it
Http2 is here! And why the web needs it
IndicThreads
 
HTTP/2 for Developers
HTTP/2 for DevelopersHTTP/2 for Developers
HTTP/2 for Developers
Svetlin Nakov
 
Http2 kotlin
Http2   kotlinHttp2   kotlin
Http2 kotlin
Andrii Bezruchko
 
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
Amit Bhakay
 
Http 2
Http 2Http 2
Under the Covers with the Web
Under the Covers with the WebUnder the Covers with the Web
Under the Covers with the Web
Trevor Lohrbeer
 
Next generation web protocols
Next generation web protocolsNext generation web protocols
Next generation web protocols
Daniel Austin
 
Revisiting HTTP/2
Revisiting HTTP/2Revisiting HTTP/2
Revisiting HTTP/2
Fastly
 
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Ontico
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
Ido Flatow
 
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
Java EE 8: What Servlet 4.0 and HTTP/2 mean to youJava EE 8: What Servlet 4.0 and HTTP/2 mean to you
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
Alex Theedom
 
HTTP
HTTPHTTP
HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1
Daniel Austin
 
Taking a Quantum Leap with Html 5 WebSocket
Taking a Quantum Leap with Html 5 WebSocketTaking a Quantum Leap with Html 5 WebSocket
Taking a Quantum Leap with Html 5 WebSocket
Shahriar Hyder
 

Similar to Http2 (20)

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/2 Introduction
HTTP/2 IntroductionHTTP/2 Introduction
HTTP/2 Introduction
 
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017Introduction to gRPC - Mete Atamel - Codemotion Rome 2017
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017
 
Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...
Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...
Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...
 
Http/2
Http/2Http/2
Http/2
 
Http2 is here! And why the web needs it
Http2 is here! And why the web needs itHttp2 is here! And why the web needs it
Http2 is here! And why the web needs it
 
HTTP/2 for Developers
HTTP/2 for DevelopersHTTP/2 for Developers
HTTP/2 for Developers
 
Http2 kotlin
Http2   kotlinHttp2   kotlin
Http2 kotlin
 
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
 
Http 2
Http 2Http 2
Http 2
 
Under the Covers with the Web
Under the Covers with the WebUnder the Covers with the Web
Under the Covers with the Web
 
Next generation web protocols
Next generation web protocolsNext generation web protocols
Next generation web protocols
 
Revisiting HTTP/2
Revisiting HTTP/2Revisiting HTTP/2
Revisiting HTTP/2
 
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
 
5-WebServers.ppt
5-WebServers.ppt5-WebServers.ppt
5-WebServers.ppt
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
Java EE 8: What Servlet 4.0 and HTTP/2 mean to youJava EE 8: What Servlet 4.0 and HTTP/2 mean to you
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
 
HTTP
HTTPHTTP
HTTP
 
HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1
 
Taking a Quantum Leap with Html 5 WebSocket
Taking a Quantum Leap with Html 5 WebSocketTaking a Quantum Leap with Html 5 WebSocket
Taking a Quantum Leap with Html 5 WebSocket
 

Recently uploaded

GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 

Recently uploaded (20)

GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 

Http2

  • 2. topics HTTP Today Why HTTP/2 How it works Working with HTTP2 Demo
  • 3. HTTP Today  Using HTTP 1.1 since 1997 / 1999  Connection: keep-alive  Head of Line Blocking  But we still use N TCP Connections per origin  And Many Hacks because requests are evil  Spriting of Images  Resource Inlining  Concatenation of files  Domain Sharding  CDNs  No Header Compression
  • 4. HTTP Problems  Negotiation mechanism that allows clients and servers to elect to use HTTP 1.1, 2.0, or potentially other non-HTTP protocols.  Maintain high-level compatibility with HTTP 1.1 (for example with methods, status codes, and URIs, and most header fields)  Decrease latency to improve page load speed in web browsers by considering:  Data compression of HTTP headers  HTTP/2 Server Push  Pipelining of requests  Fixing the head-of-line blocking problem in HTTP 1.x  Multiplexing multiple requests over a single TCP connection  Support common existing use cases of HTTP, such as desktop web browsers, mobile web browsers, web APIs, web servers at various scales, proxy servers, reverse proxy servers, firewalls, and content delivery networks
  • 5. 2009 .. SPDY  It came in a beautiful package  Header Compression  Now cookieless domains are useless  Multiplexing  Now we can say that sharding is BAD PRACTICE  Priority First (Ex. Bring my JS and CSS files first)  Server Push  With “Server Hint”, and “RST_STREAM” for HTTP/2
  • 6. Why HTTP/2  Performance matters  HTTP/2 reduces the impact of latency on web applications  TLS is becoming the default  HTTP/2 amortizes TLS costs for the entire application  Enabling new web development  User perceivable improvement in web site performance  Work with today’s internet  Remain compatible with existing content
  • 7. What is HTTP/2  Used SPDY3 as its first draft  Main Driven by Performance  But also includes  Security  Reliability
  • 8. HTTP/2 vs SPDY  Binary instead of ASCII  Header Compression (HPACK - RFC 7541)  Fully multiplexed - Means: Parallelism and Out of Order Req/Res  Stream Prioritization  1 TCP Connection  N Streams  N Frames  Solves Head of Line Blocking  Server Push what it thinks that the client will need (e.g., assets)
  • 9. HTTP 1.x vs HTTP/2
  • 10. HTTP/2 Units Frames Streams Connections • Flags • Type • Stream Identifier • Payload • Length • Identifier • State • Priority • Flow Control • Flow Control
  • 11. HTTP/1.1 – Request = Connection HTTP/2 – Request = Stream … Each request required dedicated TCP connection TCP connection can have multiple streams (requests) Responses come in order per connection Responses can come out of order, server can optimize Each connection requires setup + slow start No connection setup for new streams, no slow start Application sees “connections” Streams are represented as “connections” to apps HTTP/2 Connections and Streams
  • 12. Header Compression :path: / accept-encoding: gzip,deflate user-agent: :authority: … Static Table :authority: www.example.com Dynamic Table :method: GET :scheme: http :path: / :authority: www.example.com Lit- Index Name Value (Huffman-encoded string)  HPACK
  • 13. Header Compression  Each header is expressed as either…  Indexed: Reference to full header in static or dynamic table  Literal:  Name as reference to static/dynamic table entry, or as Huffman-encoded string  Value as Huffman-encoded string  Indexing behavior:  Add to dynamic table  Don’t add to dynamic table  NEVER add to dynamic table (supposed to be persisted through intermediaries)
  • 14. HTTP/2 Frame Types 1. DATA 2. HEADERS 3. PRIORITY 4. RST_STREAM 5. SETTINGS 1. SETTINGS_HEADER_TABLE_SIZE 2. SETTINGS_ENABLE_PUSH 3. SETTINGS_MAX_CONCURRENT_STREAMS 4. SETTINGS_INITIAL_WINDOW_SIZE 5. SETTINGS_MAX_FRAME_SIZE 6. SETTINGS_MAX_HEADER_LIST_SIZE 6. PUSH_PROMISE 7. PING 8. GOAWAY 9. WINDOW_UPDATE 10. CONTINUATION
  • 18. Request Reliability  In HTTP no retry a request when an error occurs  Re-Attempt: It is only possible to some server to do some processing prior to the error which could result in undesired effects  HTTP/2 Provides 2 mechanisms as guarantee to a client that a request has not been processing  GOAWAY: the highest stream number that has been processed  REFUSED_STREAM: error code can be included in a RST_STREAM frame
  • 19. Upgrade Request Anatomy  When you don’t know if it supports HTTP/2 GET / HTTP/1.1 Host: server.example.com Connection: Upgrade, HTTP2-Settings Upgrade: h2c HTTP2-Settings: Response HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: h2c • “h2c” means no TLS connection • “h2” means TLS connection [TLS-ALPN] • Implicit acknowledgement of HTTP2-Settings
  • 20. How To Upgrade  Change Text with Binary  HTTP2 is working over HTTP1.1  NO HTTP without TLS(HTTPS)  Then we have, Binary over Text  So, Implement APLN
  • 22. HTTP/2 Adoption Rate  Browsers: Chrome and Firefox latest versions support already  Servers: Apache (mod_h2), jetty, Apache Traffic Server  Services: Google, Twitter  Proxy: Squid  CDN  Akamai said in the end of the 2015and  CloudFlare when ‘nginx supports HTTP/2’
  • 24. Working With HTTP/2 Hosting  Hosting .NET Apps  IIS 10 on Windows 10  Windows Server 2016  Ngnix  Kestrel  Hosting Java Apps  Apache HTTP 2.4.17+  Jetty 9.3+  Tomcat 9 (still not fully supported)  Hosting Node Apps  Node-http2  Node-spdy  ExpressJS 5.0(Still has issues)
  • 25. Working With HTTP/2 Server software  Apache 2.4.12 Apache Traffic Server supports HTTP/2.[58]  Caddy supports HTTP/2.[59]  Citrix NetScaler 11.x supports HTTP/2.[60]  Sucuri Supports HTTP/2.[61]  F5 BIG-IP Local Traffic Manager 11.6 supports HTTP/2.[62]  h2o was built from the ground up for HTTP/2 support.[63]  Jetty 9.3 supports HTTP/2.[64]  LiteSpeed Web Server 5.0 supports HTTP/2.[65]  Warp (Haskell web server, used by default in Yesod) supports HTTP/2.  Microsoft IIS supports HTTP/2 in Windows 10[66] and Windows Server 2016.  Netty 4.1 supports HTTP/2.[67]  nginx 1.9.5 supports HTTP/2.[68]  node.js 5.0 supports HTTP/2.[69]  OpenLiteSpeed 1.3.11 and 1.4.8 supports HTTP/2.[70]  Proxygen supports HTTP/2.  Radware Alteon NG supports HTTP/2.[71]  ShimmerCat was built from the ground up for HTTP/2 support.[72]  Vert.x 3.3 supports HTTP/2  Wildfly 9 supports HTTP/2.
  • 26. What About .NET ASP.NET Core is an open source and cross-platform technology by Microsoft for developing web-based applications. In .NET Framework 4.6.0 Microsoft announced support for HTTP/2. So the .NET Framework 4.6.0 & 4.6.1 supports HTTP/2.
  • 27. Examples  http://www.http2demo.io/  https://http2.akamai.com/  https://http2.golang.org/  chrome://net-internals/  http://caniuse.com/

Editor's Notes

  1. Head of Line Blocking HOL: occurs when a line of packets is held up by the first packet, for example in input buffered network switches, out-of-order delivery, and multiple requests in HTTP pipelining. N: usually 6 connections Reduce latency Reduce total number of TCP connections i.e., reduce number of open sockets Better web security. Maintain compatibility with HTTP/1.1 clients and server. Maintain same usability as HTTP/1.1 i.e., can be used wherever we use HTTP/1.1 Better web security.
  2. Multiplexing: Multiple asynchronous HTTP requests over a single TCP connection. Server Push: Multiple responses for single request Header Compression: Compress HTTP headers along with content. Request prioritization: While making multiple HTTP requests to a same domain they can be prioritized. Binary Protocol: HTTP/2 is binary protocol whereas HTTP/1.1 is text protocol.
  3. HTTP/2 was developed by the IETF’s HTTP Working Group, which maintains the HTTP protocol. It’s made up of a number of HTTP implementers, users, network operators and HTTP experts. Binary Instead of Text TLS: Transport Layer Security (TLS) and its predecessor, Secure Sockets Layer (SSL), both frequently referred to as "SSL", are cryptographic protocols that provide communications security over a computer network.
  4. Server Push: HTTP/2 Server Push is a modern, more efficient equivalent to the common practice of inlining assets in HTTP/1.1. Inlining is when you convert your external JavaScript and CSS resources into <script> and <style> elements in your HTML page. The goal is to minimize the number of HTTP requests between the browser and the server. Server Push accomplishes the same thing, but allows assets to be cached independently so that you’re not sending the same inline CSS styles with every single web page your visitors request. TCP/IP: TCP/IP (Transmission Control Protocol/Internet Protocol) is the basic communication language or protocol of the Internet. It can also be used as a communications protocol in a private network (either an intranet or an extranet). When you are set up with direct access to the Internet, your computer is provided with a copy of the TCP/IP program just as every other computer that you may send messages to or get information from also has a copy of TCP/IP.
  5. Why is HTTP/2 binary? Binary protocols are more efficient to parse, more compact “on the wire”, and most importantly, they are much less error-prone, compared to textual protocols like HTTP/1.x, because they often have a number of affordances to “help” with things like whitespace handling, capitalization, line endings, blank lines and so on.
  6. Inner Structure of Frames/Streams/Connections
  7. To remove the redundant headers, Huffman Coding with static and dynamic tables(Create index address space) Instead of send the all header we only send indexes to lookup the corresponding key and value
  8. HPack Behavior, How does it works
  9. again, followed by zero or more CONTINUATION frames
  10. RST_STREAM reset stream
  11. Application Layer Protocol Negotiation TLS: point to point connection and send encrypted information