O protocolo
HTTP define como os navegadores Web (clientes) requisitam páginas de servidores Web. Quando um usuário requisita um objeto, por exemplo clicando em uma referência de uma
página Web, o navegador envia mensagens de requisição
HTTP para o servidor Web. O servidor
recebe a requisição e responde com uma mensagem de resposta
HTTP que contém os objetos solicitados.
Há duas versões do protocolo
HTTP implementadas pelos navegadores, o
HTTP/1.0
e o
HTTP/1.1 e ambas as versões usam como protocolo de transporte o TCP. Para requisitar uma
página Web, o cliente
HTTP primeiramente abre uma conexão TCP com o servidor. Uma vez aberta a conexão TCP o cliente e o servidor podem trocar mensagens através das suas portas de interface. A porta 80 é o padrão para a aplicação WWW.
O
HTTP/1.0 usa o que se chama conexões não persistentes, onde após a requisição de cada objeto, o servidor responde e encerra a conexão TCP. Por exemplo, para uma página Web composta de um arquivo base HTML e mais 5 imagens JPEG, após a recepção de cada arquivo, a conexão TCP é encerrada e deverá ser reaberta para cada novo objeto requisitado (isto é feito automaticamente pelo agente usuário).
O
HTTP/1.1 permitiu melhorar o desempenho dos navegadores Web através do uso de conexões
persistentes, onde o servidor mantém a conexão TCP aberta após o envio da resposta. Desta forma, as requisições e as respostas subsequentes entre o mesmo par cliente/servidor podem utilizar a mesma conexão já aberta, eliminando o tempo de abertura de conexão. Caso a conexão deixe de ser utilizada por um certo tempo o servidor se encarrega de liberar a conexão.
Formato das mensagens HTTP
O protocolo
HTTP é baseado no paradigma
pedido/resposta , havendo dois tipos de mensagens:
mensagens de requisição e
mensagens de resposta.
A
mensagens de requisição (
request) tem a seguinte estrutura:
GET /diretorio/pagina.html
Host: www.escolatecnica.edu.br
Connection: close
User-agent: Mozilla/4.0
Accept-language:pt
(extra carriage return, line feed)
A primeira linha apresenta o comando básico para requisição de uma página Web, seguido pela
parte do URL que indica o caminho e o nome do objeto que se deseja (GET /diretorio/pagina.html). As linhas seguintes, chamadas de cabeçalho, são opcionais. A segunda linha (Host: www.escolatecnica.edu.br) indica o nome computador onde reside o objeto; a terceira linha (Connection: close) informa para fechar a conexão após envio daresposta; a quarta linha (User-agent: Mozilla/4.0) indica o tipo do agente usuário utilizado e a linha (Accept-language:pt) indica que o português é a língua preferencial.
Do ponto de vista do usuário o mesmo só “enxerga” o endereço URL que digitou e o navegador monta e envia as mensagens HTTP de forma transparente.
A
mensagens de resposta (
response) tem a seguinte estrutura:
HTTP/1.1 200 OK
Connection: close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 09:23:24 GMT
Content-Length: 6821
Content-Type: text/html
(data data data data data...)
A resposta tem três partes, uma primeira linha informando o estado (status) da solicitação, seis
linhas de cabeçalho e os dados que compõe objeto solicitado. A primeira linha indica a versão do
protocolo, o código e estado da mensagem (HTTP/1.1 200 OK). A segunda linha (Connection:
close) indica que a conexão será encerrada; a terceira linha (Date: Thu, 06 Aug 199812:00:15 GMT)
informa a data da última modificação no objeto solicitado, utilizada por servidores proxy; a quarta linha (Server: Apache/1.3.0 (Unix)) indica o tipo do servidor, a quinta linha (Content-Length: 6821)
indica o tamanho do objeto em bytes e a última linha (Content-Type: text/html) informa o conteúdo da mensagem. Os dados vem em seguida.
Os códigos de estado (status) mais comuns são:
200 OK: Requisição OK e o objeto solicitado vai em anexo.
301 Moved Permanently: O objeto solicitado foi movido para outra URL.
400 Bad Request: Requisição não entendida pelo servidor.
404 Not Found: O objeto requisitado não existe no servidor.
505 HTTP Version Not Supported: Esta versão do protocolo HTTP não é suportada pelo servidor.
Fonte:
http://www.das.ufsc.br/~montez/Disciplinas/materialRedes/ApostilaCantu.pdf