HTTP

Hypertext Transfer Protocol
HTTP is used to transfer web documents as well as requesting services from web servers. It functions as a request-response protocol. A client (web browser) submits an HTTP request message to a server which returns an HTTP response message containing the requested content (HTML files with objects such as images, java-applets, videoclips etc.)

Persistent vs. Non-Persistent Connections
HTTP/0.9 and 1.0 - connection closes after single request/response pair. HTTP/1.1 employs a keep-alive mechanism, allowing a connection to be reused for more than one request.

Every object (that is, every image and flash object etc.) in a web document must be fetched in its own HTTP request from the browser. Therefore, non-persistent connections suffer significant overhead with multiple TCP connections that must be initiated and tore down. A persistent connection can retrieve all objects of web document without closing the connection after each one. Typically, the server will close the connection after a set amount of time.

HTTP Pipelining
Multiple HTTP requests are sent without waiting for the response of each one. Used with persistent connections and reduces the total time for the server to return all requested items. Only supported in HTTP/1.1.

HTTP Request Message
GET /index.html HTTP/1.1 Host: www.example.com

HTTP Response Message
HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Etag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=UTF-8 Following the response message is a blank line and then the data of the requested object, in this case the actual text content of the HTML document.

HTTP Conditional Get
The semantics of the GET method change to a "conditional GET" if the request message includes an If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field. A conditional GET method requests that the entity be transferred only under the circumstances described by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network usage by allowing cached entities to be refreshed without requiring multiple requests or transferring data already held by the client.

HTTPS
HTTP encrypted using SSL/TLS.