Browser Server HTTP2 TLS TCP HTTP2 over TLS
Browser Server HTTP/2 TLS TCP
HTTP/2 over TLS (HTTPS: // Scheme) • Negotiate TCP connection • TLS Client Hello contains ALPN Extension with h 2, HTTP 1. 1 • TLS Server Hello contains ALPN Extension with h 2 • TLS completes • Client sends HTTP/2 Settings Frame… HTTP/2 over clear text (HTTP: // Scheme) • Negotiate TCP connection • Client sends request over HTTP 1. 1 • Server sends HTTP 1. 1 response and includes an UPGRADE header • Client sends 2 nd request over HTTP 1. 1, includes UPGRADE header • Server sends 101 – Switching Protocols with response • Client send HTTP/2 setting frame…
Streams look like TCP connections to IIS/ASP. NET apps HTTP/1. 1 – Request = Connection HTTP/2 – Request = Stream … Each request required dedicated 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
Half. Closed Reserved (local) Closed Open Idle Reserved (remote) Half. Closed (remote)
Static Table Dynamic Table : path: / accept-encoding: gzip, deflate user-agent: : authority: … : method: GET : scheme: http : path: / : authority: www. example. com Lit. Index Name Value (Huffman-encoded string)
GET /index. aspx Push Promise /style. css /logo. png /script. js GET /style. css GET /logo. png GET /script. js • App calls new IIS/ASP API with desired request headers • Creates new request in http. sys pipeline, delivered to app as if client made request
Legacy Web Platforms Win. HTTP IIS ASP. NET i. XHR Windows. Web. HTTP Web OC Web. View WWA Internet Explorer Spartan
- Slides: 16