HTTP is designed to permit intermediate network elements to improve or enable communications between clients and servers. HTTP protocol designed within the framework of the Internet protocol suite. Its definition presumes an underlying and reliable transport layer protocol.
Hypertext Transfer Protocol (HTTP) is an application protocol for distributed, collaborative, hypermedia information systems. HTTP is a stateless protocol. In short, this means that every request needs to bring with it as much detail as the server needs to serve that request, without the server having to store a lot of info and meta-data from previous requests. HTTP is the foundation of data communication for the World Wide Web, where hypertext documents include hyperlinks to other resources that the user can easily access, for example by a mouse click or by tapping the screen. HTTP was developed to facilitate hypertext and the World Wide Web.
The first version of HTTP protocol had only one method, namely GET, which would request a page from a server. In this Prortocol, connection is closed after a single request/response pair.
The first documented version of HTTP was HTTP V0.9 (1991).
HTTP Working Group wanted to expand the protocol with extended operations, extended negotiation, richer meta-information, tied with a security protocol which became more efficient by adding additional methods and header fields. RFC 1945 officially introduced and recognized HTTP V1.0 in 1996.
HTTP/1.0 sends separate connection to the same server is made for every resource request & connection is closed after a single request/reponse pair. Under HTTP 1.0, connections are not considered persistent unless a keepalive header is included, although there is no official specification for how keepalive operates. Connection stays continue until either the client or the server decides that the conversation is over, and one of them drops the connection.
HTTP/1.1 standard as defined in RFC 2068 was officially released in January 1997. HTTP/1.1 is a revision of the original HTTP (HTTP/1.0). HTTP/1.1 can reuse a connection multiple times to download images, scripts, stylesheets, etc after the page has been delivered. HTTP/1.1 communications therefore experience less latency as the establishment of TCP connections presents considerable overhead.
In HTTP/1.1 a keep-alive-mechanism was introduced, where a connection could be reused for more than one request. Such persistent connections reduce request latency perceptibly, because the client does not need to re-negotiate the TCP 3-Way-Handshake connection after the first request has been sent. Another positive side effect is that, in general, the connection becomes faster with time due to TCP's slow-start-mechanism.
In HTTP 1.1, all connections are considered persistent unless declared otherwise. The HTTP persistent connections do not use separate keepalive messages, they just allow multiple requests to use a single connection.
Version 1.1 of the protocol also made bandwidth optimization improvements to HTTP/1.0.
For example, HTTP/1.1 introduced chunked transfer encoding to allow content on persistent connections to be streamed rather than buffered. HTTP pipelining further reduces lag time, allowing clients to send multiple requests before waiting for each response. Another addition to the protocol was byte serving, where a server transmits just the portion of a resource explicitly requested by a client.