Camada de Aplicação
Prof. Larissa Natália V. Carneiro carneiroln@gmail.com
A Web e o HTTP
Até1990: Internet somente no meio acadêmico.
HTTP
Protocolo de Transferência de Hipertexto (HyperText Transfer Protocol) é o
protocolo da camada de aplicação da Web.
Definido pela [RFC 1945] e no [RFC 2616].
Funcionamento do HTTP
É implementado em dois programas (cliente, servidor).
Trocam mensagens HTTP.
Define a estrutura e o modo de troca.
Página Web
Constituída por objetos (arquivos). URL tem dois componentes:
nome do hospedeiro; nome do caminho.
HTTP
O HTTP define:
como o cliente Web requisitam páginas Webs;
como o servidor transfere para clientes.
Passo-a-passo do HTTP
Utiliza TCP.
Estabelece uma conexão.
Os processos acessam o TCP pelo socket. O cliente envia mensagem de requisição HTTP.
O cliente recebe mensagem de resposta HTTP.
HTTP
Servidor envia arquivos sem
armazenar informações do cliente. HTTP é denominado Protocolo sem estado.
Conexões
Conexões TCP:
Conexões persistentes;
Conexões não persistentes.
O TCP utiliza conexões persistentes no modo padrão.
Conexões não persistentes
Exemplo: Uma página Web com um arquivo HTML e 10 imagens JPEG
com URL http://
www.someSchool.edu/
Conexões não persistentes
O processo cliente HTTP inicia conexão TCP para o servidorwww.someSchool.edu na porta 80.
O cliente HTTP envia uma mensagem de requisição HTTP ao servidor através de
seu socket. Essa mensagem inclui o nome de caminho /someDepartment/home.
Conexões não persistentes
O processo servidor HTTP recebe amensagem de requisição através de seu
socket, extrai o objeto /someDepartment/ home.index de seu armazenamento (RAM ou disco), encapsula o objeto em uma
Conexões não persistentes
O processo servidor HTTP ordena ao TCP que encerre a conexão TCP (O
TCP encerra após ter a certeza que o cliente recebeu toda mensagem).
Conexões não persistentes
O cliente HTTP recebe a mensagem de
resposta e a conexão TCP é encerrada. A
mensagem indica que o objeto encapsulado é um arquivo html. O cliente extrai o arquivo
da mensagem de resposta, analisa o arquivo HTML e encontra referências aos 10 objetos JPEG.
Conexões não persistentes
O usuário pode configurar o browser para controlar grau de conexões
paralelas.
O padrão utiliza de 5 a 10 conexões paralelas.
O número de conexões paralelas interfere na velocidade.
Conexões persistentes
A conexão é estabelecida e mantida. Para cada conexão é alocado:
buffers TCP;
Conexões persistentes
Desvantagem: sobrecarga.Encerra a conexão depois de um determinado tempo em desuso. Conexões persistentes em
Formato da mensagem HTTP
Tipos de mensagem HTTP: Mensagem de requisição; Mensagem de resposta.
Mensagem de requisição
GET /somedir/page.html HTTP/ 1.1 Host: www.someschool.edu conection: close User-agent: Mozilla/4.0 Accept-language: frMensagem de requisição
GET /somedir/page.html HTTP/ 1.1
Get: método (GET, POST, HEAD)
/somedir/page.html: URL (objeto) HTTP/1.1: versão do HTTP
Mensagem de requisição
Host: www.someschool.edu Especifica o hospedeiro.
Mensagem de requisição
conection: close
Indica para fechar a conexão. Não usa conexão persistente.
Mensagem de requisição
User-agent: Mozilla/4.0 Especifica o agente de usuário.
Pode diferenciar de acordo com o browser.
Mensagem de requisição
Accept-language: fr
Específica qual o tipo de linguagem preferencial.
Mensagem de resposta HTTP
HTTP/1.1 200 Ok
Connection: close
Date: Sat, 07 Jul 2007 12:00:15 GMT Server: Apache/1.3.0 (Unix)
Last-Modified: Sun, 6 May 2007 09:23:24 GMT
Content-Length: 6821
Mensagem de resposta HTTP
HTTP/1.1 200 Ok Linha de estado. Possui três campos: versão do protocolo (HTTP/1.1); código de estado;mensagem de estado correspondente (ok).
Mensagem de resposta HTTP
Connection: close Início do cabeçalho.
Mensagem de resposta HTTP
Date: Sat, 07 Jul 2007 12:00:15 GMT
Indica a hora e a data que a
resposta foi criada e enviada pelo servidor.
Mensagem de resposta HTTP
Server: Apache/1.3.0 (Unix) Indica o servidor.
Análogo à linha de cabeçalho User-agent da mensagem de requisição.
Mensagem de resposta HTTP
Last-Modified: Sun, 6 May 2007 09:23:24 GMT
Indica a hora e a data que o objeto foi modificado.
Mensagem de resposta HTTP
Content-Length: 6821
Mensagem de resposta HTTP
Content-Type: text/html Indica o tipo do objeto.
Mensagem de resposta HTTP
(data data data data...) Armazena os dados.
Códigos de estado
200 OK: requisição bem sucedida com informação entregue com a resposta. 301 Moved Permanently: objeto
requisitado foi removido
permanentemente; nova URL é
Códigos de estado
400 Bad Request: código genérico de erro que (requisição não entendida pelo servidor).
404 Not Found: documento não existe. 505 HTTP Version Not Support: a
versão do protocolo HTTP requisitado não é suportada.
HTTP
Quais linhas de cabeçalho incluir na mensagem de requisição?
Quais linhas de cabeçalho incluir na mensagem de resposta?
HTTP
Quais linhas de cabeçalho incluir na mensagem de requisição?
Quais linhas de cabeçalho incluir na mensagem de resposta?
As linhas são escolhidas em função do tipo e versão do browser.
Cookies
Necessidade de identificar conexões.
Questão de restrição.
Questão de sugestão de conteúdo. Mas como fazer isso??
Cookies
Utiliza Cookies (RFC 2965).
Tecnologia dos cookies
Possui quatro componentes:uma linha de cabeçalho de cookie na mensagem de resposta HTTP;
uma linha de cabeçalho de cookie na mensagem de requisição
Tecnologia dos cookies
um arquivo de cookie mantido no sistema final do usuário e
gerenciado pelo browser do usuário;
um banco de dados de apoio no site.
Tecnologia dos cookies
Exemplo: supomos que Teresa utiliza o
Internet Explore e esteja acessando o site da Amazon.com pela primeira vez, porém, no passado, ela tenha acessado o
eBay.com. Quando a requisição chega no
servidor da Amazon ele cria um número de identificação exclusivo e uma entrada no
Tecnologia dos cookies
Exemplo: com isso o servidorresponde a requisição adicionando a linha no cabeçalho Set-cookie.
Tecnologia dos cookies
Exemplo: ao receber a mensagem com o número de identificação do
cookie, o browser de Teresa adiciona uma linha ao arquivo de cookies que ele gerencia (o arquivo já possui a
Tecnologia dos cookies
Exemplo: toda vez que o Teresa faz uma requisição para o Amazon, seu browser consulta o arquivo de
cookie, extraí o número de
identificação e coloca na mensagem de requisição (Cookie: 1678).
Tecnologia dos cookie
Para que serve:identificar as páginas;
oferecer serviços e produtos;
Tecnologia dos cookies
Vantagem:
sempre que Teresa acessar a
Amazon será associado ao cookie; caso Teresa efetue um cadastro, as informações são associadas ao cookie.
Tecnologia dos cookies
Desvantagem:invasão de privacidade; insegurança.
Caches Web
Cache Web ou Servidor Proxy: é uma entidade da rede que atende
requisições HTTP em nome de um servidor Web de origem.
Caches Web
Propriedades:
possui um disco de armazenamento;
é consultado primeiramente;
armazena uma cópia do objeto caso não tenha.
Cache Web
Geralmente instalado por um ISP (Internet service provider).
Otimiza o tempo de resposta.
Reduz o tráfego no enlace de acesso do cliente à internet.
Cache Web
Problema da utilização do cache: desatualização de objetos.
Get condicional
Solução HTTP:Get condicional.
Definição: mecanismo que permite que um cache verifique se seus
Get condicional
Condição:usar o método GET;
possuir uma linha de cabeçalho If-Modified-Science;
Get condicional (Exemplo)
Servidor proxy envia uma mensagem de requisição:
GET /fruit/kiwi.gif HTTP/1.1 Host: www.exotiquecuisine.com
Get condicional (Exemplo)
Servidor web envia uma mensagem de resposta:
HTTP/1.1 200 Ok
Date: Sat, 7Jul2007 15:39:29 Server: Apache/1.3.0(Unix)
Last-Modified:Wed,4Jul 2007 09:23:24
Get condicional (Exemplo)
Servidor proxy envia uma verificação de atualização:
GET /fruit/kiwi.gif HTTP/1.1 Host: www.exotiquecuisine.com If-modified-since:Wed,4Jul
Get condicional (Exemplo)
Servidor web envia uma mensagem resposta:
HTTP/1.1 304 Not Modified Date: Sat, 13Agost2007
15:39:29
Get condicional
Mas não é feita uma requisição e obtém-se uma resposta? Isso não vai gerar custos?
Get condicional
Resposta:HTTP/1.1 304 Not Modified Date: Sat, 13Agost2007
15:39:29
Server: Apache/1.3.0(Unix) (Corpo de mensagem vazio)