Redes de Computadores 2 - Camada de Aplicação (HTTP) – Paulo Roberto Freire Cunha prfc@cin.ufpe.br
Redes de Computadores 2 (baseado nos slides do Kurose) Visão Geral HTTP - HyperText Transfer Protocol protocolo da aplicação WEB documentos RFC 1945 (http 1.0) RFC 2616 (http 1.1) Browser servidor web http request aplicação transport rede enlace física aplicação transport rede enlace física http response Redes de Computadores 2 (baseado nos slides do Kurose)
Visão Geral o HTTP usa o protocolo TCP da camada de transporte etapas de funcionamento estabelece uma conexão TCP (cria um socket) com o servidor na porta 80 envia request recebe response fecha a conexão TCP Aplicação Transporte Rede Enlace 80/TCP get http://www.cin.ufpe.br Aplicação Transporte Rede Enlace 80/TCP 80/TCP página html http 1.0 (não persistente) cada objeto é transferido fazendo-se uma nova conexão http 1.1 (persistente) todos os objetos são transferidos em uma única conexão TCP Redes de Computadores 2 (baseado nos slides do Kurose)
Formato da Mensagem - request GET /somedir/page.html HTTP/1.0 User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr \n Mensagens HTTP request reply tipo da mensagem request|response cabeçalho da mensagem cabeçalho geral cabeçalho de request cabeçalho de response cabeçalho da entidade corpo da mensagem Redes de Computadores 2 (baseado nos slides do Kurose)
Formato da Mensagem - request método sp URL sp versão cr lf campo:valor cr lf campo: valor cr lf campo: valor cr lf cr lf Corpo Redes de Computadores 2 (baseado nos slides do Kurose)
Formato da Mensagem - request GET (request) GET sp http://... sp http 1.0 cr lf Host:www.cin.ufpe.br cr lf Connection: close cr lf Accept-language: fr cr lf cr lf Redes de Computadores 2 (baseado nos slides do Kurose)
Formato da Mensagem - request POST (request) POST sp http://... sp http 1.0 cr lf Host:www.cin.ufpe.br cr lf Connection: close cr lf Accept-language: fr cr lf cr lf Infra-Comunicacao+http Redes de Computadores 2 (baseado nos slides do Kurose)
Formato da Mensagem - request HEAD (request) HEAD sp http://... sp http 1.0 cr lf Host:www.cin.ufpe.br cr lf Connection: close cr lf Accept-language: fr cr lf cr lf similar ao GET desconsidera o objeto solicitado usado para depuração Redes de Computadores 2 (baseado nos slides do Kurose)
Formato da Mensagem - response versão sp cod status sp mes. status cr lf campo: valor cr lf campo: valor cr lf campo:valor cr lf cr lf Corpo da Mensagem Redes de Computadores 2 (baseado nos slides do Kurose)
Formato da Mensagem - response GET http://... sp http 1.0 cr lf Host:www.cin.ufpe.br Connection: close Accept-language: fr GET /somedir/page.html HTTP/1.0 Host:www.cin.ufpe.br Connection: close User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr \n http/1.1 sp 200 sp OK cr lf 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 (Dado Dado Dado) Connection: close cr lf Date: Thu, 06 Aug 1998 12:00:15 GMT cr lf ... cr lf cr lf DADO Redes de Computadores 2 (baseado nos slides do Kurose)
Formato da Mensagem - response Código Mensagem Significado 200 ok solicitção realizada com sucesso 301 Moved Permanently nova localização especificada no corpo da mensagem 400 Bad Request mensagem de request não entendida pelo servidor 404 Not Found documento não encontrado 505 HTTP Version Not Supported Versões Incompatíveis telnet www.cin.ufpe.br 80 Redes de Computadores 2 (baseado nos slides do Kurose)
Redes de Computadores 2 (baseado nos slides do Kurose) Exemplo interface com o protocolo telnet www.cin.ufpe.br 80 troca de mensagens com o protocolo GET http://www.cin.ufpe.br/~prfc/aulas/index.html HTTP/1.1 Redes de Computadores 2 (baseado nos slides do Kurose)
Interação com o servidor autenticada cliente servidor objetivo da autenticação: controle de acesso aos documentos do servidor stateless: o cliente deve apresentar a autorização a cada request autorização: nome + passwd authorization: linha do cabeçalho se a autorização não é apresentada o servidor recusa o acesso request normal 401: authorization req. WWW authenticate: request normal + Authorization:valor rsponse normal request normal + Authorization:valor tempo response normal Redes de Computadores 2 (baseado nos slides do Kurose)
Interação com o servidor com Cookies cliente servidor o servidor envia o cookie para o cliente Set-cookie: 1678453 o cliente apresenta o cookie em um acesso posterior cookie: 1678453 o servidor casa o cookie autenticação preferências request normal response normal + Set-cookie: # request normal cookie: # ação específica para o cookie response normal request normal cookie: # ação específica para o cookie response normal Redes de Computadores 2 (baseado nos slides do Kurose)
Interação com o servidor: GET condicional cliente servidor objetos não modificados não são enviados o cliente especifica a data If-modified-since: <data> o servidor responde sem um objeto caso a cópia não tenha sido atualizado HTTP/1.0 304 Not Modified request If-modified-since: <date> objeto não modificado response HTTP/1.0 304 Not Modified request If-modified-since: <date> objeto modificado response HTTP/1.1 200 OK … <data> Redes de Computadores 2 (baseado nos slides do Kurose)