Bootstrapping HTTP/1.1, HTTP/2, and HTTP/3

06-Jun-2025 16
The Hypertext Transfer Protocol (HTTP) has come a long way from its humble beginnings on Tim Berners-Lee's NeXT cube at CERN. It went through a number of iterations, has been abused in just about any conceivable way, chained with proxies, tunnels and caches, intercepted by middleboxes, and is for all intents and purposes the universal internet pipe and primary content delivery mechanism. RFC1945 describing HTTP/1.0 was fairly easy to read, but since then, things have gotten pretty complex: as of May 2025, the number of HTTP-related RFCs ranges from about a conservatively estimated dozen (focused on core protocol definitions and HTTP semantics) to a few hundred (based on title searches across the RFC index). HTTP/1.1 (RFC2616 and onwards) remains the lowest common denominator that clients and servers need to support, and of course modern stacks will want to use HTTP/2 (RFC9113) and HTTP/3 (RFC9114), but just how do they determine each others' capabilities and bootstrap their connection? Let's take a look...
Use coupon code:

RUBYONRAILS

to get 30% discount on our bundle!
Prepare for your next tech interview with our comprehensive collection of programming interview guides. Covering JavaScript, Ruby on Rails, React, and Python, these highly-rated books offer thousands of essential questions and answers to boost your interview success. Buy our 'Ultimate Job Interview Preparation eBook Bundle' featuring 2200+ questions across multiple languages. Ultimate Job Interview Preparation eBook Bundle