Área de Ciências Exatas e Engenharias
Redes de Computadores
Protocolo HTTP
Professora:
Maria de Fátima Webber do Prado Lima
Protocolo HTTP
http: hypertext transfer
protocol
htt
• protocolo da camada de preq
PC rodando htt ues
aplicação da Web. pr t
Explorer e sp
• modelo cliente/servidor ons
e
– cliente: browser que
solicita, recebe e e st
eq u
r Servidor
apresenta objetos da t tp o nse
h p rodando
Web r es
tp NCSA Web
ht
– server: envia objetos em server
resposta a pedidos
• http1.0: RFC 1945 Mac rodando
Navigator
• http1.1: RFC 2068
Protocolo HTTP
http: protocolo de transporte http é “sem estado”
TCP:
• o servidor não mantém
• cliente inicia conexão TCP informação sobre os
(cria socket) para o pedidos passados pelos
servidor na porta 80. clientes.
• servidor aceita uma
conexão TCP do cliente. Protocolos que mantém
• mensagens http informações de estado são
complexos!
(mensagens do protocolo
de camada de aplicação) • necessidade de organizar
são trocadas entre o informações passadas.
browser (cliente http) e o • se ocorrer um crash as
servidor Web (servidor informações podem ser
http). perdidas ou gerar
• A conexão TCP é fechada. inconsistências entre o
cliente e o servidor.
Exemplo de Operação
Usuário entra com a URL: (contém referência a
[Link]/someDepartment/[Link] 10 imagens jpeg)
1a. cliente http inicia conexão TCP
ao servidor http (processo)
em [Link]. 1b. servidor http no host
Porta 80 é a default para o [Link] esperando
servidor http . pela conexão TCP na porta 80.
“aceita” conexão, notificando o
cliente
2. cliente http client envia http
request message (contendo a URL)
para o socket da conexão TCP 3. servidor http recebe mensagem de
pedido, forma response message
contendo o objeto solicitado
(someDepartment/[Link]),
envia mensagem para o socket
tempo
Exemplo (cont.)
4. servidor http fecha conexão TCP.
5. cliente http recebe mensagem
de resposta contendo o
arquivo html, apresenta o
conteúdo html. Analisando o
arquivo html encontra 10
tempo objetos jpeg referenciados
6. Passos 1-5 são repetidos para cada
um dos 10 objetos jpeg.
Conexões persistentes e não-
persistentes
Não-persistente Persistente
• http/1.0: servidor analisa • modo default para htp/1.1.
pedido, envia resposta e • na mesma conexão TCP são
fecha a conexão TCP . trazidos vários objetos.
• 2 RTTs para obter um objeto • o cliente envia pedido para
– Conexão TCP. todos os objetos.
– solicitação e transferência referenciados tão logo ele
do objeto. recebe a página HTML
básica .
• cada transferência sofre por
causa do mecanismo da • poucos RTTs, menor tempo
lenta inicialização do TCP. de inicialização.
• muitos browser abrem várias
conexões paralelas.
Mensagem de Requisição
As mensagens de solicitação ao processo servidor e
resposta ao processo cliente são semelhantes.
A mensagem de solicitação é formada por:
• Linha de solicitação
• Cabeçalho
• Corpo
linha de pedido
(comandos GET GET /somedir/[Link] HTTP/1.0
, POST,HEAD ) User-agent: Mozilla/4.0
Accept: text/html, image/gif,image/jpeg
linhas de
cabeçalho
Accept-language:fr
Carriage return,
(extra carriage return, line feed)
line feed
indica fim da mensagem
Mensagem de Requisição
Mensagem de Requisição
• A primeira linha em uma mensagem de solicitação
define o tipo de requisição realizada pelo cliente ao
servidor.
• Esta linha possui o seguinte formato:
Método <espaço> URL <espaço> Versão do HTTP
• Onde:
– Método: tipo de solicitação realizada ao servidor;
– URL: String de caracteres que identifica o endereço
da página na Internet;
– Versão do protocolo HTTP.
Mensagem de Requisição - Métodos
Método Ação
(Comando)
GET Solicita um documento ao servidor.
HEAD Solicita informações sobre um documento, mas
não o documento em si.
POST Envia informações do cliente para o servidor.
PUT Envia um documento do servidor para o cliente.
TRACE Ecoa a solicitação enviada.
CONNECT Reservado.
OPTION Solicita detalhamento sobre opções disponíveis.
Mensagem de Requisição
Depois da primeira linha (requisição), várias
informações adicionais podem ser trocadas através
do cabeçalho.
Formato do cabeçalho de solicitação:
Nome do cabeçalho: <espaço> Valor do cabeçalho
Exemplos de cabeçalho de requisição:
Accept: exibe o formato de mídia que o cliente aceita;
Accept-language: exibe a linguagem que o cliente pode
aceitar;
From: exibe o endereço de e-mail do usuário;
If-match: transmite o documento apenas se ele não
coincidir com a tag fornecida;
User-agent: identifica o programa cliente.
Mensagem de Resposta
linha de status
(protocolo
código de status HTTP/1.0 200 OK
frase de status) Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
linhas de
Content-Length: 6821
cabeçalho
Content-Type: text/html
data data data data data ...
dados, e.x.,
arquivo html
Mensagem de Resposta
• A primeira linha em uma mensagem de resposta
indica o status da realização da solicitação no
servidor.
• Esta linha possui o seguinte formato:
Versão <espaço> Código de Status <espaço> Frase de Status
• Onde:
– Versão do protocolo HTTP;
– Código de Status: formado por 3 dígitos indicam a
resposta enviada pelo servidor;
– Frase de Status: expande o código de status,
mostrando as mensagens de forma mais detalhada na
forma de texto.
Mensagem de Resposta
200 ok Solicitação bem-sucedida.
201 Created Nova URL criada.
202 Accepted Requisição aceita, mas vai ser executada depois.
204 No content Conteúdo inexistente no corpo da solicitação.
Redirecionamento
Moved
301 permanently O objeto não está mais armazenado no servidor.
302 Moved temporarily O objeto foi temporariamente movido.
304 Not modified O documento não foi modificado.
Mensagem de Resposta
Código Frase Significado
Erros no Cliente
400 Bad request Erro de sintaxe na solicitação.
A requisição não tem autorização para ser
401 Unauthorized executado.
403 Forbidden Serviço negado.
404 Not found Documento não encontrado.
Method not O método solicitado não é suportado pelo
405 allowed servidor.
406 Not acceptable Formato solicitado não é aceitável
Erros no Servidor
Internal Server
500 Error Existe um erro no servidor.
501 Not implemented A ação solicitada não pode ser executada.
Service
503 unavailable O serviço está temporariamente indisponível.
Mensagem de Resposta
O cabeçalho de resposta notifica sobre as
informações da requisição realizada e configurações
do servidor.
Formato do cabeçalho de resposta:
Nome do cabeçalho: <espaço> Valor do cabeçalho
Exemplos de cabeçalho de resposta:
Age: exibe a idade do documento;
Public: exibe a lista de métodos suportados;
Server: exibe o nome e a versão do servidor;
Accept-range: mostra se o servidor aceita ou não o
intervado solicitado pelo cliente;
Retry-after: especifica a data que o servidor estará
disponível.
Cookies
• gerados e lembrados
pelo servidor, usados cliente servidor
mais tarde para: ação
usual http request msg
– autenticação. específica
usual http response +
– lembrar preferências Set-cookie: # do cookie
dos usuários ou
prévias escolhas. usual http request msg
ação
• servidor envia “cookie” cookie: #
específica
ao cliente na resposta usual http response msg do cookie
HTTP
Set-cookie: 1678453 usual http request msg
ação
• cliente apresenta o cookie: #
específica
cookie em pedidos usual http response msg do cookie
posteriores
cookie: 1678453
GET Condicional: armazenando no
cliente
• Razão: não enviar cliente servidor
objeto se a versão que http request msg
o cliente já possui está If-modified-since:
objeto
<date>
atualizada. não
• cliente: specifica data http response modificado
HTTP/1.0
da versão armazenada 304 Not Modified
no pedido HTTP.
If-modified-since: http request msg
<date> If-modified-since:
• servidor: resposta não <date> objeto
modificado
contém objeto se a http response
cópia é atualizada: HTTP/1.1 200 OK
<data>
HTTP/1.0 304 Not
Modified
Web Caches (servidor proxy)
Objetivo: atender o cliente sem envolver o servidor
Web originador da informação.
servidor
• usuário configura o original
browser: acesso Web é
feito através de um proxy. h tt
Proxy
pr server u e st
• cliente envia todos os equ req
cliente http es t
htt
p
o nse
res p
pedidos http para o web pon p res
cache:
se htt
est
equ
– se o objeto existe no p r ns e
h tt po
web cache: web cache r es
tp
retorna o objeto ht
– ou o web cache solicita cliente
objeto do servidor servidor
original
original, então envia o
objeto ao cliente.
Porque Web Caching?
servidores
• armazenamento está originais
“perto” do cliente (ex., Internet
na mesma rede). pública
• menor tempo de
resposta.
enlace de acesse
• reduz o tráfego para 1.5 Mbps
servidor distante: rede
– links externos podem ser institucional
10 Mbps LAN
caros e facilmente
congestionáveis.
cache
institucional
Slides retirados do material do livro Redes de
Computadores de James Kurose