HTTP stands for the HyperText Transfer Protocol, and is an application-level protocol that was designed to process data requests for the World Wide Web. The World Wide Web is a service found on the Internet, therefore, HTTP is designed for use on the Internet (TCP/IP), and is a part of the application layer of the Internet protocol suite. The development of HTTP is currently (2014) controlled by two bodies: 1) Internet Engineering Task Force (IETF); 2) World Wide Web Consortium (W3C). HTTP is based upon a client server model: where a client program (browser) makes HTTP requests to a server that hosts web orientated documents (html, cgi, gif, jpeg etc). HTTP functions in a similar manner to FTP; although there is a difference in how each protocol uses the Transmission Control Protocol (TCP) to reliable send data. HTTP resources are located by client programs (browsers etc) that use URL's and hyperlinks; a hyperlink (hypertext link) is text / image, located in a web document, that are embedded with a URL. Uniform Resource Locators (URL's) is a type of Uniform Resource Identifier (URI) that typically contains: http (protocol), hostname (www.internet-guide.co.uk), and a file name (example.html).
(Pictured right: Tim Berners-Lee, who designed the first version of HTTP while working at CERN)
Development of HTTP
The World Wide Web was invented by Sir Tim Berners-Lee: he first proposed a hypertext system in 1989, and through the help of Robert Cailliau launched the World Wide Web as a service on the Internet in 1991. HTTP was invented by Tim Berners-Lee and his CERN team - alongside HTML and URLs - and by 1991 it was documented as being: version 0.9. HTTP, to begin with, was a fairly simple protocol with only a GET request available (a GET request is explained in the following section of this page). From 1991-1999, HTTP was expanded upon - more request methods were added and security options - and a range of working groups and organisations were involved in evolving and improving HTTP. Request for Comment's documents RFC 1945, RFC 2068, RFC 2616 and RFC 7230 can be read to view how the development of HTTP has evolved. As of 2014, version 1.1 is still viewed as the standard version of HTTP, however amendments and "improvements" are continuing to be suggested and acted upon. The following individuals have been involved in publishing a specification for HTTP: R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee, L. Masinter, P. Leach and J. Reschke.
How HTTP functions
The World Wide Web is an information system / system where documents are located through the use of URL's and hyperlinks. Web documents (pages) are typically written using the Hypertext Markup Language (HTML), but other markup languages can be used. The World Wide Web is based on a client-server model: with a browser (client) requesting and retrieving data stored on a server (web/http server). The client will initiate a HTTP session: HTTP mostly uses the Transmission Control Protocol to establish a reliable data transmissions, and does so on TCP port number 80. Servers can demand access authentication before serving the request. Client and servers communicate via HTTP request and response messages - these messages include a header section with a range of fields (connection, date, content-type, refresh, content-length, user-agent, range, pragma etc).
There is a range of HTTP request methods: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, and PATCH. Most of these methods are defined as 'safe' requests methods: they just retrieve documents and do not interfere with the server. Other methods, such as POST and DELETE, can cause a side effect upon the server. HTTP response messages include a status line status code; some common status codes are: 100 Continue, 200 OK, 204 No Content, 301 Moved Permanently, 302 Found, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 500 Internal Server Error, 501 Not Implemented, 502 Bad Gateway, 503 Service Unavailable. How a HTTP connection is closed depends upon the HTTP version (HTTP/0.9, 1.0, or 1.1): 1.1 was the first version to enable a persistent connection.
Encrypted connections are provided by HTTPS (also named HTTP Secure, HTTP Security, HTTP over Transport Layer Security, and HTTP over SSL).