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 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.
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.
One major limitation with http/1.1 is the number of requests per connection is limited, usually to 6 requests per connection.
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.
Unlike all its predecessors, HTTP/3 uses QUIC.