It builds on the discipline of reference provided by the Uniform Resource Identifier (URI) , as a location (URL)  or name (URN) , for indicating the resource to which a method is to be applied.
The first version of HTTP, referred to as HTTP/0.9, was a simple protocol for raw data transfer across the Internet.
HTTP/1.0, as defined by RFC 1945 , improved the protocol by allowing messages to be in the format of MIME-like messages, containing metainformation about the data transferred and modifiers on the request/response semantics.
However, HTTP/1.0 does not sufficiently take into consideration the effects of hierarchical proxies, caching, the need for persistent connections, or virtual hosts.
In addition, the proliferation of incompletely-implemented applications calling themselves "HTTP/1.0" has necessitated a protocol version change in order for two communicating applications to determine each other's true capabilities.
This specification defines the protocol referred to as "HTTP/1.1".
This protocol includes more stringent requirements than HTTP/1.0 in order to ensure reliable implementation of its features.
Practical information systems require more functionality than simple retrieval, including search, front-end update, and annotation.
HTTP allows an open-ended set of methods and headers that indicate the purpose of a request .
Fielding Request for Comments: 2616 UC Irvine Obsoletes: 2068 J. HTTP has been in use by the World-Wide Web global information initiative since 1990.
A feature of HTTP is the typing and negotiation of data representation, allowing systems to be built independently of the data being transferred.
It is a generic, stateless, protocol which can be used for many tasks beyond its use for hypertext, such as name servers and distributed object management systems, through extension of its request methods, error codes and headers .