Protocolo HTTP

De Wiki Cursos IFPR Foz
Revisão de 11h45min de 4 de novembro de 2021 por Evandro.cantu (discussão | contribs) (→‎Pedido)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegaçãoIr para pesquisar

Protocolo HTTP

O protocolo HTTP usa o paradigma pedido/resposta para troca de mensagens entre o cliente e o servidor [1].

Versões

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 e são compatíveis entre si:

  • HTTP/1.0 (RFC 1945): Usa conexões TCP não persistentes, isto é, a conexão TCP entre o cliente e o servidor é fechada após a transferência de cada objeto. Por exemplo, caso uma página Web seja formada por uma página base HTML e mais alguns arquivos com imagens, para cada imagem uma nova conexão TCP deverá ser aberta.
  • HTTP/1.1 (RFC 2068): Usa conexões TCP persistentes, na qual a conexão TCP é mantida entre o cliente e o servidor, permitindo a troca de vários objetos pela mesma conexão. Para que haja conexões persistentes, tanto o cliente como o servidor devem implementar a versão HTTP/1.1 do protocolo.
Mensagens em formato ASCII

Uma característica importante das mensagens do Protocolo HTTP é que todas são codificadas no formato ASCII, ou seja, uma mensagem simples de texto.

Mensagens do Protocolo HTTP

Pedido

GET /index.html HTTP/1.1
Host: www.exemplo.com
Connection: close 
User-agent: Mozilla/4.0 
Accept-language:pt 
CRLF
A primeira linha apresenta o comando básico para requisição de uma página Web, seguido pela parte do URL que indica objeto que se deseja e a versão do protocolo (GET /index.html HTTP/1.1). As linhas seguintes, chamadas de cabeçalho, são opcionais. A segunda linha (Host: www.exemplo.com) indica o nome computador onde reside o objeto; a terceira linha (Connection: close) informa para fechar a conexão após envio da resposta; 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. A mensagem de pedido termina com CRLF (linha em branco).
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.
POST
Possui cabeçalho similar ao GET e mais um campo com dados, utilizados quando o cliente precisa enviar ao servidor, por exemplo, dados para o preenchimento de um formulário.
HEAD
Requisita do servidor apenas o cabeçalho da mensagem, sem dados, usada para testes.

Resposta

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 
A primeira linha indica a versão do protocolo, o código e estado (status) da mensagem (HTTP/1.1 200 OK). A segunda linha (Connection: close) indica que a conexão TCP será encerrada; a terceira linha (Date: Thu, 06 Aug 1998 12: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.
Outras respostas e códigos de status comuns
200 OK
301 Moved Permanently
400 Bad Request
404 Not Found
505 HTTP Version Not Suported
200 OK: requisição bem sucedida; 301 Moved Permanently: objeto requisitado foi removido permanentemente; 400 Bad Request: código de erro genérico indicando que o servidor não pode atender a requisição; 404 Not Found: documento procurado não existe no servidor; 505 HTTP Version Not Suported: versão do protocolo não suportada.

Referências

  1. KUROSE, J.F; ROSS K. W. Redes de Computadores e a Internet: Uma abordagem top-down, São Paulo: Pearson, 2010.

--Evandro.cantu (discussão) 10h32min de 12 de junho de 2014 (BRT)