Introduction
HTTP/3 is the 3rd major version of the HTTP protocol that powers the internet. In comparison with the previous version of http which relied on TCP, http/3 relies on QUIC.
QUIC
Specification published at 6th June, 2022
Developed initially at Google in 2012, had its way to IETF and public by 2022. A decade for completion and standardization !!!
Are the semantics like requests, methods, status codes still the same like previous versions of http/2?
yes, they still remain the same
The underlying mechanisms are changed, like http/3 uses space congestion control over UDP (User Datagram protocol)
Head-Of-Line Blocking (HOL)
This is a performance problem where there is a queue of packets built due to the first packet that is yet to be consumed.
We have browsers that have limits on the number of parallel requests that it can send to a server, when they are used up, as we anticipate, a Queue is formed for the newer requests that start accumulating the newer requests till the former requests are completely processed.
We had HTTP/2 to address this issue by the process of multiplexing which eliminates this HOL at the application layer. However there is still a blocking HOL in the TCP layer.
This was a bottleneck that limits the performance. Hence, QUIC solves this problem by using multiplexing with UDP and thereby removing the HOL with TCP.
So, we get to leverage good performance.
0-RTT
For any server and client that have been connected in the past, there is no formal introduction - acknowledgements. More like we talking to our friends without any formal introduction / waiting for they to acknowledge our greetings etc, so we make requests responded quick through (QUIC)
Encryption by Default
The data at the application layer will always be encrypted. There is no separate TCP handshake and TLS handshake which were distinct events in the previous versions of HTTP.
In this case how are the encryptions and connections managed?
QUIC sets up the encrypted connections at the transport layer. Since this is happening as a single action, applications does not need to perform a TCP handshake and a TLS handshake.
Further, packet number and few other headers are encrypted by default giving a tough time for the hackers to understand what is going on.
Are there apps out in http/3?
yes, I have seen apps from Google, cloudflare using http3 for many of their apps. The below is the network capture in Google Chrome new tab which loads content from google
Most of the leading browsers support HTTP/3. Chrome (79 and onwards), Firefox (72 and onwards) etc
Web Server Support
Currently, the LiteSpeed Webserver supports HTTP/3. I did try it out for a Java App and realized that it was not easy as there were listeners and the team was not sure on the use of them. I feel that running an app on another webserver while using Litespeed as a proxy can be used to achieve support for HTTP/3.
I will try it out in the upcoming days and share my findings or steps for the same.
However, Kestrel, Nginx webservers do seem to have a good support for the HTTP/3. Also, IIS in Windows Server 2022 has support, looks like some registry keys are to be setup to enable HTTP3
We have just scratched the surface and as we delve into the details, things will get very interesting.
Comments
Post a Comment