R d de Redes d Computadores C t d Serviço world wide web Aplicação cliente-servidor Publicação de documentos (servidor) e a recuperação e visualização de documentos (cliente) Evoluiu para acesso a documentos multimídia Protocolo específico para interação cliente-servidor: HTTP (Hyper Text Transfer Protocol) O cliente li t se encarrega dde interpretar i t t o documento d t HTML (página) ( á i ) e exibir ibi para o usuário Aula 27 A. Ca arissimi -18-juin-15 HyperText Transfer Protocol Institu uto de Informática - U UFRGS Insttituto d de Info ormátic ca - UF FRGS Introdução ç Cliente Web Cache HTTP Servidor Web Documentos Web Páginas web (HTML) Redes de Computadores Página g web Tipos p de documentos web Documento web Páginas estáticas Descrito em HTML (Hyper Text Markup Language) Documentos de conteúdo fixo criados e armazenados no servidor Cliente Cli t obtém bté uma cópia ó i ddo ddocumento t Elaboradas com auxilio de linguagens (HTML, XML, XSL, ....) Composta por uma série de objetos Arquivo base HTML, imagens, applets, clipes de vídeo, etc e.x.: e x : página com texto e cinco imagens possui seis objetos Páginas dinâmicas Nome de um hospedeiro e porta Caminho para um recurso no sistema de arquivos do hospedeiro Protocolo (esquema) para buscar o recurso Protocolo://nome_máquina:porta/recurso http://www.inf.ufrgs.br/~asc/redes htt htpps, http, ht ft mailto, ftp, ilt news, telnet, t l t ldap, ld file fil Redes de Computadores 3 Criado, por demanda, pelo servidor através de um aplicativo ou script O conteúdo do documento varia de uma requisição q ç a outra Elaboradas com auxílio de linguagens (Java, JSP, ASP, CGI...) A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Acessível através de um URL (Uniforme Resource Locator) A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS 2 Páginas ativas Possuem um programa que executa do lado cliente Emprega linguagens de scripts como javascript ou applets java Redes de Computadores 4 Cliente Web Servidor web Servidor faz o armazenamento dos objetos Para o usuário, a web é conjunto de páginas Páginas são visualizadas por programas específicos: Ex: Apache, Microsoft Internet Information Server, Netscape Enterprise server Interação baseada em dois elementos: Browsers (Netscape, Mozilla Firefox, MS Internet Explorer, Chrome, etc) URL: Uniform Resource Locator HTTP: HyperText yp Transfer Protocol Redes de Computadores Cada site web possui um daemon (servidor web) Espera requisições de clientes (conexões TCP) A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Possui três componentes: controlador, protocolos clientes e Intepretadores (HTML, java, javascritp...) Permite carga e execução de páginas web de diferentes tipos A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Browser : 5 Redes de Computadores Hyper yp Text Transfer Protocol ((HTTP)) Usada nas versões 0.9, 1.0 e 1.1 Uma conexão para cada objeto Emprega p g conexões TCP na pporta 80 ((default)) Protocolo stateless (sem estado) e orientado a mensagens Servidor não mantém nenhuma informação ç sobre o cliente Possuem três versões: HTTP 0.9, HTTP 1.0 e HTTP 1.1 7 C Cada d conexão ã ttransporta t exatamente t t uma requisição/resposta i i ã / t Cliente abre a conexão, envia a requisição, o servidor envia a resposta e fecha a conexão (ex: uma página com 5 figuras envolve seis conexões, uma para página á i e uma para cada d fifigura)) Conexões podem ser feitas em paralelo para páginas com mais de um objeto Número máximo de conexões é uma configuração g ç do cliente Desvantagens: A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Determina apenas como os dados são transferidos: não indica, nem impõem tipos de dados e determina nenhum tipo de processamento Browser é que determina como os dados são processados A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS 6 Conexões não-persistentes p Protocolo de aplicação da web Define forma como clientes solicitam páginas web aos servidores e como esses as transferem para os clientes Redes de Computadores Cliente envia uma requisição ao servidor Servidor atende requisição e envia resposta Conexão é desfeita desfeita* Tempo para estabelecimento Consumo de recursos do sistema (memória e descritores) Cada conexão sofre o processo de partida lenta (slow start) do TCP Redes de Computadores 8 Conexões persistentes p Métodos HTTP Disponível na versão HTTP/1.1 Uma conexão pode atender várias requisições/respostas HTTP foi criado para ser genérico Tratamento de objetos e definições de métodos para manipulá-los Métodos suportados na versão 1.1 (visão do cliente) Sem paralelismo: cliente envia requisição i após ter recebido respostas da requisição i-1 Com paralelismo: envio de várias requisições sem esperar pela resposta Questão: quando encerrar? Por solicitação, time-out ou excesso de conexões abertas Redes de Computadores A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Duas versões: A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS A conexão é fechada pelo servidor em resposta a uma requisição de encerramento feita pelo cliente ou por time-out Configurado no servidor 9 Redes de Computadores Formatos da mensagem g HTTP Linha de requisição possui três campos: Requisição e resposta Mensagem M em ASC II ((exceto t o corpo dda mensagem em alguns l casos)) Tipo da requisição (métodos) GET, GET HEAD HEAD, POST, POST PUT, PUT PATCH, PATCH COPY, COPY MOVE, MOVE DELETE, DELETE LINK, LINK UPLINK, OPTION Uniform Resource Locator ((URL): ) [protocolo] [p ] :// [máquina] [ q ] : [p [porta]] / [[recurso]] Versão HTTP Genericamente, ambas possuem três seções: 11 Linha(s) de cabeçalho Conjunto de pares {nome de campo; valor} A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Linha de requisição ou de status Linhas de cabeçalho Corpo p de entidade A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS 10 Mensagem g de requisição q ç Dois formatos básicos: Redes de Computadores GET: usado para solicitar a recuperação de um objeto POST: similar ao GET, GET mas envia informações obtidas por formulários PUT: solicita gravação de um objeto no servidor PATCH: envia lista de modificações ç a serem feitas em um objeto j HEAD: solicita leitura apenas do cabeçalho da página MOVE, COPY, DELETE, LINK e UNLIK: similares aos comandos de movimentação, i t ã cópia, ó i remoção, ã criação i ã e remoção ã dde aliases li em um sistema i t de arquivos OPTION: consulta ppropriedades p do servidor ou de um objeto j Corpo da entidade Para métodos como POST que envia parâmetros para um formulário Redes de Computadores 12 Cabeçalhos ç da requisição q ç Mensagem g de requisição: q ç formato e exemplo p [nome; valor] Host: nome do servidor onde o objeto se encontra Connection: se servidor deve encerrar ou não a conexão após enviar objeto User-agent: tipo do cliente que está fazendo a requisição Accept-language: idioma de preferência do usuário .... Redes de Computadores [nome; valor] 13 Corpo (presente apenas em algumas mensagens) Mensagem de requisição - Método GET não possui corpo - Método POST envia aqui q as informações ç 14 Códigos g de status e cabeçalho ç de resposta p Códigos mais comuns Linha de status define: 200: requisição processada com sucesso 301: objeto solicitado foi movido 400: erro genérico no processamento 404: objeto solicitado não existe 505: versão requisitada não é suportada t d Versão HTTP Código Códi dde status t t Frase explicativa do código de status Institu uto de Informática - U UFRGS Conjunto de pares {nome, valor} Corpo da entidade A. Ca arissimi -18-juin-15 Objeto solicitado 15 A. Ca arissimi -18-juin-15 Linhas de cabeçalho Institu uto de Informática - U UFRGS Host: www.someschool.edu Connection: close User-agent: Mozilla/4.0 Accept-language: fr Redes de Computadores Mensagem g de resposta p Redes de Computadores GET /somedir/page.html HTTP/1.1 Linha em branco (CR/LF) A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Requisição Cabeçalhos A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Pares nome e valor Indicam ao servidor como realizar a requisição Exemplos: Redes de Computadores Cabeçalhos mais comuns Connection: informa ao cliente se o servidor encerrará ou não a conexão Date: hora e data do envio do objeto Last-modified: data e hora de criação ou modificação do objeto Server: tipo do servidor: Content-lenght: tamanho da mensagem em bytes b t Content-type: tipo do objeto que está sendo enviado 16 Mensagens de resposta: formato e exemplo Multipurpose p p Internet Mail Extensions ((MIME)) Nem toda página (documento) é um HTML Status Cabeçalhos Linha em branco (CR/LF) Corpo (presente apenas em algumas mensagens) O navegador possui um interpretador Necessário chamar um visualizador externo Connection: close Date: Thu, Thu 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon,22 jun 199809:23:24 GMT Content-Length: 6821 Content-Type: text/html (data data data .... Data data data data) Mensagem de resposta Redes de Computadores Estratégias para visualizadores externo A. Ca arissimi -18-juin-15 [Nome; valor] A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS ... Necessário interpretar o conteúdo de acordo com o tipo HTTP/1.1 200 OK Institu uto de Informática - U UFRGS [nome; valor] A mensagem HTTP de resposta informa o tipo (usa padrão MIME) 17 GET condicional Funcionamento baseado na cache cliente Cópia na cache pode estar desatualizada Acesso a página http://www.inf.ufrgs.br/~asc/redes/http.html Sessão wireshark Arquivo http 1.1 exemplo 19 GET Cliente Last-Modified: data Servidor ... A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Emprega cabeçalho If-modified-since A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS 18 Redes de Computadores Exemplo de sessão http Redes de Computadores Plug-in : extensão do navegador (plugin para PDF, PDF Flash, Flash Quicktime...) Quicktime ) Execução de programa específico (e.g. power-point) e.g.: application/vnd.ms-powerpoint GET If-Modified-Since: data HTTP/1.0 304 Not Modified Redes de Computadores 20 Interação ç usuário-servidor: autenticação ç Interação ç usuário-servidor: cookies Mecanismo para identificar usuários Armazenam informações dos usuários Criado e armazenado no servidor ao receber uma requisição http É um registro i t associando i d usuário á i ao cookie ki Cookie é enviado na resposta e armazenado em um diretório mantido pelo browser do usuário Exige a definição de um nome de usuário e uma senha Codificação C difi ã dde status t t e cabeçalhos b lh específicos ífi para ttall Servidor Authorization Redes de Computadores Usos de cookies Identificar usuários sem necessitar nome e senha Lembrar preferências de um usuário (carrinhos de compras, publicidade, etc) A. Ca arissimi -18-juin-15 Cliente Institu uto de Informática - U UFRGS 401 Authorization Required A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Requisição Servidor 22 Cache no cliente web Domínio: site de onde o cookie foi gerado Caminho: diretório no servidor onde o cookie é válido Conteúdo: valor Data expiração: cookies persistentes ou não (hora GMT) Segurança: enviar cookie apenas se conexão for via SSL (sim ou não) Existem s e coo cookies es que rastreiam as e a usuários usuá os e ssites es (spy (spyware) a e) 23 A. Ca arissimi -18-juin-15 Navegador web mantém uma cópia no disco das páginas (recursos) usadas recentemente Quando desconsiderar? Institu uto de Informática - U UFRGS A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS ... Set-cookie: 167843 Redes de Computadores Definido na RFC 2109 Um string de até 4 KB que o servidor cria e associa a um navegador Possui até 5 campos: Redes de Computadores Requisição Cliente Cookie: 1678453 21 Alguns g detalhes sobre cookies Problema: usuários nômades (armazenamento é local) Estratégia 1: Combinação Last-Modified Last Modified + Date Expires + Date Heurísticas Estratégia 2: Baseada em if-Modified + Etag + If-none-Match Diretiva no-cache para páginas dinâmicas e páginas com autenticação Redes de Computadores 24 Proxyy Web Hyper yp Text Transfer Protocol over SSL ((HTTPS)) Melhorar o desempenho realizando caching das páginas acessadas O HTTP não oferece nenhum tipo de segurança Reduz carga no servidor, diminui tráfego na rede, diminui latência As mensagens HTTP são em ASCII Não Nã garantias ti quanto t a sua autenticidade, t ti id d iintegridade t id d e confidencialidade fid i lid d Contribui para a segurança Protocolo de aplicação da web que utiliza criptografia reponse Cliente request servidor Proxyy web mais comum é o squid q (p (porta 3128)) http://www.squid-cache.org Redes de Computadores 25 Leituras complementares p Tanenbaum, A. Redes de Computadores (4a edição), Campus 2003. Capítulo 7, seção 7.3.4 Carissimi, A.; Rochol, J; Granville, L.Z; Redes de Computadores. Série Livros Didáticos. Bookman 2009. A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Capítulo 7, 7 seção 77.33 Redes de Computadores 27 Garante confidencialidade (pela cifragem de dados) Arquivo https exemplo Garante a identidade das ppartes envolvidas em uma transferência (p (pelo uso de chaves públicas e privadas) A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Proxy A. Ca arissimi -18-juin-15 Institu uto de Informática - U UFRGS Máquina cliente não é visível do exterior Possibilidade de monitorar sites, sites palavras chaves, chaves etc Emprega a porta 443/TCP invés da 80 https://nome_máquina/recurso Redes de Computadores 26