The HTTP/2 protocol is a recently ratified standard that delivers significant performance benefits over HTTP 1.1. HTTP/2 achieves these performance improvements with a range of features including
- HTTP header compression
- Use of server push
- Request multiplexing
All the latest releases of major browser platforms, including browsers on mobile platforms, now include HTTP/2 support with applications and webservers increasingly providing support for the new protocol. The significance for the end user of HTTP/2 is in reduced latency which leads to a much better user experience when compared to HTTP 1.1.
HTTP/2 is an evolution of the SPDY protocol which was developed by Google and was in extensive use. SPDY is now deprecated with the industry (including Google) adopting the HTTP/2 standard. KEMP are embracing HTTP/2 to deliver an enhanced quality of experience for end users with the introduction of a HTTP/2 proxy (Layer 7) for HTTP/2 connections between clients and servers.
How HTTP/2 makes a difference
Web pages contain multiple assets (sometimes hundreds) including images, CSS files and scripts. When transferring each of these assets between a server and a client a header is included that contains elements such as cookies and referrer information that means that each request has a header payload of up to 1500 bytes. Because of their size, multiple TCP packets are required to deliver these requests and the TCP slow start mechanism will limit the acknowledgement rate for packets. Header compression reduces the size of these headers so that a request can be completely satisfied within the TCP slow start phase and possible fit into a single packet.
With server push, a HTTP/2 server can anticipate the assets a client may request and proactively push these assets to the client. The impact of this is that a client can avoid the overhead of making a request to the server as the required asset has already been transferred by the server. This approach has significant benefits on high-latency connections where most of the client wait time is generated by request and response delays rather than bandwidth.
HTTP 1.1 allowed a browser to send multiple requests via a single connection which reduced the overhead of establishing a connection for each element on a web page. However, this approach was sub-optimal as a large request in a connection could block other requests in the same connection. Multiplexing of requests allows processing of requests and replies in parallel and avoids the request blocking issue.
HTTP/2 and TLS Security
HTTP/2 supports the use of TLS for authentication and encryption of client/server connections. Although TLS is not mandatory in HTTP/2, all the major browsers enforce TLS usage on HTTP/2 connections making secured connections the de facto implementation.