HTTP, short for HyperText Transfer Protocol, the underlying protocol used by the World Wide Web. HTTP defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. For example, when you enter a URL in your browser, this actually sends an HTTP command to the Web server directing it to fetch and transmit the requested Web page. The other main standard that controls how the World Wide Web works is HTML, which covers how Web pages are formatted and displayed.
This first version of HTTP was functional, but extremely limited in its capabilities. It didn't support the transfer of any types of data other than hypertext, and it provided no mechanism for any sort of “intelligent” communication between the client and server. This early HTTP prototype was not up to the task of providing the basis for data transfer for the future of the World Wide Web. It was never made an official RFC standard, and in fact, never even had a formal version number; it is known today as HTTP version 0.9, or “HTTP/0.9” using the version format used by HTTP. This number has no particular significance other than being a bit smaller than the number of the first official version of the protocol. The skeleton of functionality that HTTP/0.9 formed the basis for a rapid evolution of HTTP in the early 1990s. As the World Wide Web grew in size and acceptance, many new ideas and features were incorporated into HTTP. The result of a great deal of development effort was the formalization of the first HTTP standard: version 1.0. This much enhanced HTTP was published in May 1996 as RFC 1945, Hypertext Transfer Protocol — HTTP/1.0. It had been in use for several years prior to that formal publication date, however.
• The term HTTP was coined by Ted Nelson.Edit
• HTTP commonly utilizes port 80, 8008, or 8080.Edit
• HTTP/0.9 was the first version of the HTTP and was introduced in 1991. Edit
HTTP/1.0 transformed HTTP from a trivial request/response application to a true messaging protocol. It described a complete message format for HTTP, and explained how it should be used for client requests and server responses. One of the most important changes in HTTP/1.0 was the generalization of the protocol to handle many types of different media, as opposed to strictly hypertext documents. This was done by borrowing concepts and header constructs from the Multipurpose Internet Mail Extensions (MIME) standard defined for e-mail. At the same time that it defined much more capable Web servers and clients, HTTP/1.0 retained backwards compatibility with servers and clients still using HTTP/0.9.
HTTP/1.0 was the version of HTTP that was widely implemented in the mid-1990s as the Web exploded in popularity. After only a couple of years, HTTP accounted for the majority of the traffic on the burgeoning Internet. The popularity of HTTP was in fact so great that it single-handedly prompted the installation of a lot of new hardware to handle the load of browser requests and Web server replies.
Unfortunately, much of this huge load of traffic was due to some limitations in HTTP itself. These only became apparent due to the tremendous growth in the use of the protocol which, combined with the normal growing pains of the Internet, led to many frustrated Web users. The inefficiencies of HTTP version 1.0 were a result of design limitations such as the need for each site to be hosted on a different server, the fact that each HTTP session handled only one client request, and a general lack of support for necessary performance-enhancing features such as caching, proxying and partial resource retrieval.
While impatient pundits coined sarcastic terms such as the “World Wide Wait”, the IETF continued to work to improve HTTP. In January 1997, the first draft version of HTTP/1.1 appeared: in RFC 2068. This document was later revised and published as RFC 2616, Hypertext Transfer Protocol — HTTP/1.1, in June 1999. HTTP/1.1 retains backwards compatibility with both HTTP/1.0 and HTTP/0.9. It is accompanied by RFC 2617, HTTP Authentication: Basic and Digest Access Authentication, which deals with security and authentication issues.
HTTP/1.1 introduces several significant improvements over version 1.0 of the protocol, most of which specifically address the performance problems I just described. Some of the more important improvements in version 1.1 are:
§ Multiple Host Name Support: In HTTP/1.0, there was no way to specify the host name of the server to which the client needed to connect. As a result, the Web server at a particular IP address could only support one domain name. This was not only inefficient, it was exacerbating the depletion of IP addresses in the 1990s, because each new Web server to come online required a new IP address. HTTP/1.1 allows one Web server to handle requests for dozens or even hundreds of different virtual hosts.
§ Persistent Connections: HTTP/1.1 allows a client to send multiple requests for related documents to a server in a single TCP session. This greatly improves performance over HTTP/1.0, where each request required a new connection to the server.
§ Partial Resource Selection: In HTTP/1.1, a client can ask for only part of a resource rather than the entire document, which reduces the load on the server and saves transfer bandwidth.
§ Better Caching and Proxying Support: HTTP/1.1 includes many provisions to make caching and proxying more efficient and effective than they were in HTTP/1.0. These techniques can improve performance by providing clients with faster replies to their requests while reducing the load on servers, as well as enhancing security and implementing other functionality.
§ Content Negotiation: A negotiation feature was added that allows the client and server to exchange information to help select the best resource or version of a resource when multiple variants are available.
§ Better Security: HTTP/1.1 defines authentication methods and is generally more “security aware” than HTTP/1.0 was.
In addition to these notable improvements, many other minor enhancements were made in HTTP/1.1. Several of these take the form of new headers that can be included in client requests to better control under what circumstances resources are retrieved from the server, and headers in server responses to provide additional information to the client.
Future HTTP Versions
HTTP/1.1 continues to be the current version of the Hypertext Transfer Protocol, even though it is now several years old. This may seem somewhat surprising, given how widely used HTTP is. Then again, it may be the fact that so many millions of servers and clients implement HTTP/1.1 that no new version has been created. For a while there was speculation that version 1.2 of HTTP would be developed, but this has not happened.
In the late 1990s, work began on a method of expanding HTTP through extensions to the existing version 1.1. Development of the HTTP Extension Framework proceeded for a number of years, and in 1998 a proposed draft for a new Internet standard was created. However, HTTP/1.1 is so widely deployed and so important that it was very difficult to achieve consensus on any proposal to modify it. As a result, when the HTTP Extension Framework was finally published in February 2000 as RFC 2774, the universal acceptance required for a new standard did not exist. The framework was given “experimental” status, and never became a formal standard.