In researching some HTTP caching issues, I came across this interesting paper[pdf] : Clarifying the Fundamentals of HTTP [Simon Fell]
This paper should be required reading for anyone who wants to really understand HTTP.
Why is HTTP so complex? Well, if you stick with serving simple web pages in a single language, and you don't require compression, partial transfer of content, and so on, then HTTP is quite simple. In perhaps 99% of current usage, it is this simple. But HTTP allows for some very complex situations, such as this: you request an "image" at a certain URL, you specify the formats you prefer -- say PNG, GIF, TIFF, in that order -- and the server chooses a format and sends it. In the real world, however, one would have a different URL for the PNG version, the GIF version, and the TIFF version of the image. It's the same with HTML pages. According to HTTP, you could have a single URL for a web page in multiple languages. In the real world, designers assign a different URL to the English version, to the Spanish Version, to the French version, and so on.
Posted by Doug Sauder at May 22, 2002 09:58 AM