Universidade Federal de Mato Grosso Programação III Curso de Ciência da Computação Prof. Thiago P. da Silva [email protected] Material basedado em [Kurose&Ross 2009] e [Gonçalves, 2007] Agenda Internet WWW Arquitetura de Aplicações de Rede Protocolos de Camada de Aplicação HTTP (Hypertext Transfer Protocol) Web Proxy| Internet Rede eletrônica de comunicação mundial. Gigantesca rede de redes, uma infraestrutura em rede. Conecta milhões de computadores globalmente (sistemas abertos), formando uma rede em que qualquer computador pode comunicar-se com qualquer outro computador deste que ambos estejam conectados à Internet. A informação que viaja pela Internet o faz por meio de uma variedade de linguagens conhecidas por protocolos. Internet Crescimento da Internet Internet Crescimento da Internet WWW – World Wide Web Maneira de acessar informação por meio da Internet. Modelo de compartilhamento de informações construído sobre a Internet. Usa o protocolo HTTP, que é apenas uma das linguagens utilizadas na Internet, para transmitir informações. Browsers (Chrome, Firefox, IE) Páginas (documentos) são ligados por meio de hyperlinks. Documentos Web também contém gráficos, sons, textos e vídeos. Diferença entre Internet e WWW ??? Internet - gigantesca rede de redes, uma infraestrutura em rede. coleção de redes de computadores interconectadas, ligadas por fibra ótica, conexões sem fio, fios de cobre, etc. WWW - uma coleção de documentos interconectados, acessados através de links e URLs e usand o a Internet para a transmissão dos documentos. É uma das maneiras pelas quais a informação pode ser disseminada pela Internet. Internet, não a Web, é utilizada ainda para e-mail, fóruns, Instant Messaging e transferência de arquivos. A Web é apenas uma parte da Internet, embora uma grande parte, mas os dois termos não são sinônimos e não devem ser confundidos. Conceitos Básicos Página – documento, conjunto de informações, objetos e hiperlinks. Hiperlink ou link - é uma referência num documento em hipertexto à outras partes deste documento ou a outro documento. Como uma citação na literatura. Permite "navegar" na Web. Permite interatividade. Conceitos Básicos Browser – programa que habilita seus usuários a interagirem com documentos virtuais da Web (páginas), que podem ser escritas em linguagens como HTML, ASP, PHP, com ou sem folhas de estilos em linguagens como o CSS e que estão hospedadas num Servidor WEb. Exemplos: Opera, Netscape, Internet Explorer, Safari, Mozilla Firefox, Google Chrome, Konqueror, ... Conceitos Básicos Website (site) – Conjunto de páginas. Cada site tem seu endereço eletrônico particular URL (Uniform Resource Location - Localizador-Padrão de Recursos) Conceitos Básicos URL – endereço de um recurso. Recurso:: arquivo, impressora, etc... protocolo://máquina/caminho/recurso Protocolo: implementa o serviço/recurso. Ex: HTTP, FTP. Máquina: designa o servidor que disponibiliza o documento ou recurso designado. Caminho: especifica o local (geralmente num sistema de arquivos) onde se encontra o recurso dentro do servidor. Servidor: sistema de computação que fornece serviços a uma rede de computadores. Cliente e Servidor Servidor: sistema de computação que fornece serviços a uma rede de computadores. Serviço: natureza diversa. Ex: arquivos, correio eletrônico. Cliente: computadores que acessam os serviços de um servidor. Termo Servidor - largamente aplicado a computadores completos. Software, partes de um sistema computacional, uma computador. Arquitetura de Aplicações de Redes Tipos de Servidores Servidor Web: Servidor responsável pelo armazenamento de páginas de um determinado site. Servidor de arquivos: Servidor que armazena arquivos de diversos usuários. Servidor de e-mail: Servidor responsável pelo armazenamento, envio e recebimento de mensagens de correio eletrônico. Servidor de banco de dados: Servidor que possui e manipula informações contidas em um banco de dados. Servidor DNS: Servidores responsáveis pela conversão de endereços de sites em endereços IP e vice-versa. Servidor de Aplicação: Gerenciam aplicaçoes que usam a infraestrutura de comunicação da Internet para prover seu serviços Protocolos de Camada de Aplicação Definem como processos distribuídos passam mensagem entre si Tipos de mensagens trocadas Sintaxe dos vários tipos de mensagens Semântica dos campos das mensagens Regras para determinar quando e como enviar mensagens HTTP Protocolo para WWW (World Wide Web) Utiliza TCP como protocolo de transporte Stateless (Sem estado) Ex. Requisitar várias vezes a mesma página Modelo cliente-servidor Existe uma resposta para cada requisição HTTP Situação: Conexão cliente-servidor (várias requisições/respostas trocadas) Para cada requisição/resposta uma nova conexão TCP – não persistente; requisições/respostas em uma mesma conexão TCP – persistente; Por padrão o HTTP 1.1 utiliza a conexão persistente Mensagens HTTP 2 tipos: requisição e resposta Codificadas em ASCII HTTP Conexão não persistente Padrão para versões anteriores ao HTTP 1.1 Cada conexão TCP transporta exatamente uma requisição e uma resposta Overhead do TCP Alocar buffers e variáveis TCP; pode sobrecarregar o servidor. Ex. página html com 10 imagens → são necessárioas 11 conexões (1 para o arquivo html e 10 para as imagens) Conexão persistente Padrão para HTTP 1.1 O servidor deixa a conexão TCP aberta - por um período de tempo – após enviar a resposta. Pq o servidor não pode deixar a conexão sempre aberta? Requisições/respostas subsequentes utilizam esta conexão No exemplo anterior os 11 objetos (html+10 imagens) podem ser enviados pela mesma conexão HTTP Requisição HTTP Utilizado pelo proxy Podem existir diversos domínio em um mesmo Host HTTP Médotos HTTP HTTP Resposta HTTP HTTP Código de respostas – status code 200 OK - requisição bem sucedida, objeto solicitado vem em seguida 301 Moved Permanently - objeto requisitado foi movido; a nova localização é especificada a seguir na mensagem 400 Bad Request - mensagem de requisição não entendida pelo servidor 404 Not Found - documento requisitado não encontrado neste servidor 505 HTTP Version Not Supported HTTP Cabeçalho HTTP Prática de HTTP no Wireshark Instale o Servidor Web Apache Tomcat ou qualquer outro servidor para baixá-lo e informações de como instalar: http://tomcat.apache.org/ pode ser qualquer versão Inicie o Servidor Web e crie uma página simples para fazer os testes Capture os pacotes da interface lookback (127.0.0.1) com o Wireshark Abra o browser e acesse o endereço 127.0.0.1:8080 onde 8080 é a porta que o Servidor Web está ”ouvindo” Analise os pacotes capturados pelo Wireshark. Agora utilize o telnet para abrir uma conexão com o Servidor Web e requisitar uma página qualquer Telnet 127.0.0.1 8080 Utilize o protocolo HTTP para recuperar a pagǵina de teste (GET) Prática de HTTP no Wireshark thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. GET / HTTP/1.1 GET / HTTP/1.1 Host: localhost Host: localhost O servidor envia a conteudo por partes HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charset=ISO-8859-1 Transfer-Encoding: chunked Date: Fri, 24 May 2013 19:20:17 GMT HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charset=ISO-8859-1 Transfer-Encoding: chunked Date: Fri, 24 May 2013 19:23:17 GMT 2000 <html>... dados... Prática de HTTP no Wireshark thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. POST /nnnn HTTP/1.1 POST /nnnn HTTP/1.1 Host: localhost Host: localhost HTTP/1.1 404 Not Found Server: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Content-Length: 959 Date: Fri, 24 May 2013 19:31:15 GMT <html>... HTTP/1.1 404 Not Found Server: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Content-Length: 959 Date: Fri, 24 May 2013 19:31:15 GMT <html>... Prática de HTTP no Wireshark thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. HEAD / HTTP/1.1 HEAD / HTTP/1.1 Host: localhost Host: localhost HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charset=ISO-8859-1 Transfer-Encoding: chunked Date: Fri, 24 May 2013 19:41:14 GMT HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charset=ISO-8859-1 Transfer-Encoding: chunked Date: Fri, 24 May 2013 19:41:14 GMT Prática de HTTP no Wireshark thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. OPTIONS * HTTP/1.1 OPTIONS * HTTP/1.1 Host: localhost Host: localhost HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS Content-Length: 0 HTTP/1.1 200 OK Date: Fri, 24 May 2013 19:55:10 GMT Server: Apache-Coyote/1.1 Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS Content-Length: 0 Date: Fri, 24 May 2013 19:55:10 GMT Prática de HTTP no Wireshark thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. TRACE / HTTP/1.1 TRACE / HTTP/1.1 Host: localhost Host: localhost HTTP/1.1 405 Method Not Allowed Server: Apache-Coyote/1.1 Allow: OPTIONS Content-Length: 0 Date: Fri, 24 May 2013 19:58:57 GMT Não está permitido o TRACE HTTP/1.1 405 Method Not Allowed Server: Apache-Coyote/1.1 Allow: OPTIONS Content-Length: 0 Date: Fri, 24 May 2013 19:58:57 GMT Prática de HTTP no Wireshark thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. DELETE /thiago.html HTTP/1.1 DELETE /thiago.html HTTP/1.1 Host: localhost Host: localhost HTTP/1.1 403 Forbidden Server: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Content-Length: 961 Date: Fri, 24 May 2013 20:03:34 GMT HTTP/1.1 403 Forbidden Server: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Content-Length: 961 Date: Fri, 24 May 2013 20:03:34 GMT Web Proxy Caches Web ou servidores proxy Servidor Web intermédiário entre os clientes e os servidores reais Mantém cópias de objetos recentemente requisitados ignora conteúdo marcado como non-cacheable (cabeçalho HTTP) Finalidades principais: reduzir o tempo de resposta para uma requisição reduzir o tráfego no enlace de acesso à Internet Funcionamemento básico: Navegador cliente conecta-se ao proxy Se proxy tem o conteúdo solicitado, envia resposta ao cliente imediatamente Senão, proxy conecta-se (como cliente!) ao servidor Web real e solicita o objeto Proxy guarda o objeto em sua cache Web Proxy HTTP e Web Proxy Como manter o objeto em cache atualizado? Objeto mantido no cache pode ter sido modificado no servidor Cliente faz uma requisição para o cache Cache proxy envia uma requisição ao servidor web: especifica data da versão armazenada no pedido HTTP GET /objeto HTTP/1.1 Host: www.aa.com.br If-modified-since: <data> Servidor web responde: resposta não contém objeto se a cópia do proxy está atualizada GET /objeto HTTP/1.1 HTTP/1.0 304 Not Modified Date: <data> Cache envia sua cópia para o cliente Para casa Investigar os tipos de MIME ( http://www.iana.org/assignments/media-types) Instalar Apache Tomcat 5.5 ou superior ( http://tomcat.apache.org/) Brincar com telnet e Tomcat Próxima Aula Definição dos Grupos Instalando o Tomcat Introdução ao Servlet