O protocolo HTTP estabelece um conjunto de regras e métodos que controlam a transferência de Hipertexto em redes de computadores. Inicialmente, o protocolo havia sido projetado para realizar a transferência de arquivos no formato texto, com a sofisticação da web, atualmente, o protocolo suporta vários tipos de formatos de arquivos conhecidos como MIME (Multipurpose Internet Mail Extension – para saber mais acesse:
http://www.iana.org/assignments/media-types/index.html).
Trata-se de um protocolo cliente-servidor que, por padrão, responde as requisições pela porta de comunicação 80. O processo de comunicação entre os hosts inicia-se a partir de uma requisição realizada pelo navegador web do cliente a URL (Uniform Resource Locators) do servidor HTTP. A mensagem composta pelo cliente deve conter o endereço completo do objeto solicitado (conhecido como URI - Uniform Resource Identifiers), a versão do protocolo HTTP e seu tipo MIME. Quando você acessa um site, por exemplo, a mensagem HTTP enviada pelo seu navegador seria semelhante a esta:
GET / HTTP/1.1
Host: www.minhaempresa.com.br
Neste caso, a instrução GET está solicitando o acesso a um site hospedado no host especificado (linha 2). Ao receber essa instrução, o servidor web buscará o arquivo principal do site. O servidor responde ao cliente com outra mensagem, informando a localização deste (URI). O cliente envia uma nova requisição informando este endereço e requisitando a transferência deste arquivo. O servidor responde enviando o arquivo solicitado. As mensagens de resposta do servidor são compostas pela versão do protocolo HTTP, um código de status (indicando se a operação foi bem sucedida ou não), informações de controle e o objeto solicitado. Veja a seguir um exemplo:
HTTP/1.1 /index.html 200 OK
Date: Mon, 23 May 2011 20:38:34 GMT
Server: Apache/2.2.11 (Unix)
Last-Modified: Wed, 08 Jan 2011 23:11:55 GMT
Content-Type: text/html; charset=UTF-8
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
... conteúdo do documento ...
</HTML>
Nesse exemplo, o servidor envia uma mensagem ao cliente, informando que encontrou o arquivo solicitado por meio do código de status 200. Além disso, ele insere mais algumas informações de controle como data, (linha2), versão do servidor (linha 3), versão do arquivo (linha 4) e o tipo MIME do arquivo transferido (linha 5).
Após, é claro, temos o conteúdo do documento que será encaminhado para o cliente. Com base no conteúdo do arquivo recebido pelo cliente, o navegador identificará se existem outros objetos (imagens, vídeos, etc.) que compõem esta página. Caso a página solicitada em questão possua mais objetos, o processo se repete até que todo o conteúdo da página seja transferido para o navegador do cliente. Para cada transferência o servidor informa um código de status. Os códigos mais comuns são:
Até a versão 1.0 o protocolo HTTP deveria criar uma nova conexão a cada objeto transferido. A partir da versão 1.1, o protocolo passou a trabalhar com conexões persistentes, onde é possível estabelecer uma única conexão, realizar a transferência dos arquivos e somente então encerrá-la.