Johnny.sh

HTTP Versions

There are currently 2 versions of HTTP in production use out in the world, these are HTTP/1.1 and HTTP/2.

Despite there being these different versions, the API surface area of HTTP is the same. All the request methods, etc. are the same, but the underlying implementation and behavior about the server/client relationship changes, and maybe the transport changes too.

HTTP/1

RF #1945

HTTP/1 was the first implementation of Hypertext Transfer Protocol. It is generally not in use at all anymore. The issue with HTTP/1 was that each request required initializing it’s own TCP connection.

HTTP/1.1

RFC #2616

This is what most of our day to day traffic goes over. It supports reusing connections through “keep-alive”, so as to not block the network.

Uses TCP.

One major limitation with http/1.1 is the number of requests per connection is limited, usually to 6 requests per connection.

HTTP/2

rfc 7540

Also uses TCP. The main difference between HTTP/1.1 and HTTP/2 is that it uses multiplexing — one TCP connection can have multiple HTTP requests happening at once, and one HTTP request can also go over different TCP connections to complete its request.

HTTP/3

draft-ietf-quic-http-34

Unlike all its predecessors, HTTP/3 uses QUIC.

Last modified: February 22, 2022
/about
/uses
/notes
/talks
/projects
/podcasts
/reading-list
/spotify
© 2024