cadlag dot org

HTTP/0.9 and the World Wide Web

In the past few posts we have been looking at the syntax and semantics of TCP. There is still much more to be said on the subject (e.g. congestion control), but to really understand TCP in action we need to also consider an application level protocol. Perhaps the most widely used of these is the Hypertext Transfer Protocol, which was developed alongside the World Wide Web.

The WWW was developed by Tim Berners-Lee and others at CERN. Tim describes the motivation in a 1991 newsgroup announcement:

The WWW project was started to allow high energy physicists to share data, news, and documentation.

To turn the dream of the WWW into a reality, Berners-Lee had to develop some key technologies:

  1. A textual format, HTML, for hypertext documents. These documents include typesetting information as well as links to others.
  2. A protocol, HTTP, to request and receive hypertext documents.
  3. A server, which can host HTML files (or generate them on-the-fly).
  4. A client, the earliest web browser, which can request and display HTML.

The earliest public version of HTTP is version 0.9. This is an extremely simple application protocol running on top of TCP. It defines a single type of request made by a client: get an HTML document at a given address. The server responds with the contents of the HTML document, and then closes the connection. If there is an error it is reported as a human-readable HTML message.

Even without a web browser, a person could manually issue a GET request directly in ASCII text using a telnet client. No doubt this ease of use helped drive early adoption. Over the next few years, HTTP incorporated additional features, including new request types and headers for communicating additional metadata. In 1996, the HTTP/1.0 specification was proposed in RFC 1945. If you’re curious about the evolution of HTTP, I highly recommend this article from the Mozilla developer documentation.

Reply to this post by email ↪