Saturday, 23 April 2016

What is HTTP protocol ?


The Hypertext Transfer Protocol (HTTP) is an Application Layer protocol for distributed, collaborative, hypermedia information systems.
HTTP is a request-response protocol standard for client-server computing.

In HTTP, a web browser, for example, acts as a client, while an application running on a computer hosting the web site acts as a server. The client submits HTTP requests to the responding server by sending messages to it. The server, which stores content (or resources) such as HTML files and images, or generates such content on the fly, sends messages back to the client in response.

HTTP is called a stateless protocol because each command is executed independently, without any knowledge of the commands that came before it.
Resources to be accessed by HTTP are identified using URIs or URLs — using the http or https URI schemes.

The original version of HTTP, designated HTTP/1.0, was revised in HTTP/1.1.
One of the characteristics in HTTP/1.0 was that it uses a separate connection to the same server for every document, while HTTP/1.1 can reuse the same connection to download, for instance, images for the just served page.

An HTTP session is a sequence of network request-response transactions.
An HTTP client initiates a request. It establishes a Transmission Control Protocol (TCP) connection to a particular port on a host.

An HTTP server listening on that port waits for a client's request message. Upon receiving the request, the server sends back a status line, such as "HTTP/1.1 200 OK", and a message of its own, the body of which is perhaps the requested resource, an error message, or some other information.

https is a URI scheme that is, aside from the scheme token, syntactically identical to the http scheme used for normal HTTP connections, but which signals the browser to use an added encryption layer of SSL/TLS to protect the traffic.

Example
Client request
GET /index.html HTTP/1.1

Server response
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

No comments:

Post a Comment

Note: only a member of this blog may post a comment.