Redes de Computadores e a Internet Magnos Martinello Universidade Federal do Espírito Santo - UFES Departamento de Informática - DI Laboratório de Pesquisas em Redes Multimidia - LPRM 2010 Camada de Aplicação • 2.1 Princípios de aplicações de rede • 2.2 Web e HTTP • 2.3 FTP • 2.4 Correio eletrônico • SMTP, POP3, IMAP • 2.5 DNS • 2.6 Compartilhamento de arquivos P2P • 2.7 Programação de socket com TCP • 2.8 Programação de socket com UDP • 2.9 Construindo um servidor Web Web e HTTP Primeiro alguns jargões • Página Web consiste de objetos • Objeto pode ser arquivo HTML, imagem JPEG, Java applet, arquivo de áudio,… • A página Web consiste de arquivo-HTML base, que inclui vários objetos referenciados • Cada objeto é endereçado por uma URL • Exemplo de URL: www.someschool.edu/someDept/pic.gif Nome do hospedeiro Prof . Magnos Martinello - UFES Nome do caminho 3 Visão geral do HTTP HTTP: hypertext transfer protocol • Protocolo da camada de aplicação da Web • Modelo cliente/servidor • Cliente: browser que solicita, recebe e apresenta objetos da Web • Servidor: envia objetos em resposta a pedidos • HTTP 1.0: RFC 1945 • HTTP 1.1: RFC 2068 Prof . Magnos Martinello - UFES 4 Visão geral do HTTP Utiliza TCP: • Cliente inicia conexão TCP (cria socket) para o servidor na porta 80 • Servidor aceita uma conexão TCP do cliente • mensagens HTTP (mensagens do protocolo de camada de aplicação) são trocadas entre o browser (cliente HTTP) e o servidor Web (servidor HTTP) • A conexão TCP é fechada HTTP é “stateless” • O servidor não mantém informação sobre os pedidos passados pelos clientes Protocolos que mantêm informações de “estado” são mais complexos! • Histórico do passado (estado) deve ser mantido • Se o servidor/cliente quebra, suas visões de “estado” podem ser inconsistentes, devendo ser reconciliadas Prof . Magnos Martinello - UFES 5 Conexões HTTP HTTP não persistente • No máximo, um objeto é enviado sobre uma conexão TCP • O HTTP/1.0 utiliza HTTP não persistente HTTP persistente • Múltiplos objetos podem ser enviados sobre uma conexão • TCP entre o cliente e o servidor • O HTTP/1.1 utiliza conexões persistentes em seu modo padrão Prof . Magnos Martinello - UFES 6 HTTP não persistente Usuário entra com a URL: www.someSchool.edu/someDepartment/home.index 1a. Cliente HTTP inicia conexão TCP ao servidor HTTP (processo) em www.someSchool.edu. Porta 80 é a default para o servidor HTTP 2. Cliente HTTP envia HTTP request message (contendo a URL) para o socket da conexão TCP Tempo 1b. Servidor HTTP no hospedeiro www.someSchool.edu esperando pela conexão TCP na porta 80. “Aceita” conexão, notificando o cliente 3. Servidor HTTP recebe mensagem de pedido, forma response message contendo o objeto solicitado (someDepartment/home.inde x), envia mensagem para o socket Prof . Magnos Martinello - UFES 7 HTTP não persistente 4. Servidor HTTP fecha conexão TCP 5. Cliente HTTP recebe Tempo mensagem de resposta contendo o arquivo html, apresenta o conteúdo html. Faz o “parsing” analisando o arquivo html, encontra 10 objetos jpeg referenciados 6. Passos 1-5 são repetidos para cada um dos 10 objetos jpeg Prof . Magnos Martinello - UFES 8 Modelagem do Tempo de Resposta Definição de RTT: tempo de ida e volta, para enviar um pequeno pacote que vai do cliente para o servidor e retorna Tempo de resposta: • Um RTT para iniciar a conexão TCP • Um RTT para requisição HTTP e primeiros bytes da resposta HTTP para retorno • Tempo de transmissão de arquivo Total = 2RTT+ tempo de transmissão Prof . Magnos Martinello - UFES 9 HTTP Persistente Características do HTTP persistente: • Requer 2 RTTs por objeto • OS deve manipular e alocar recursos do hospedeiro para cada conexão TCP. Mas os browsers freqüentemente abrem conexões TCP paralelas para buscar objetos referenciados HTTP persistente • Servidor deixa a conexão aberta após enviar uma resposta • Mensagens HTTP subseqüentes entre o mesmo cliente/servidor são enviadas pela conexão Persistente sem pipelining: • O cliente emite novas requisições apenas quando a resposta anterior for recebida • Um RTT para cada objeto referenciado Persistente com pipelining: • Padrão no HTTP/1.1 • O cliente envia requisições assim que encontra um objeto referenciado • Tão pequeno como um RTT para todos os objetos referenciados Prof . Magnos Martinello - UFES 10 Mensagens HTTP • Dois tipos de mensagens HTTP: request, response • HTTP request message: • ASCII (formato legível para humanos) Linha de pedido (comandos GET, POST, HEAD ) Linhas de cabeçalho GET /somedir/page.html HTTP/1.0 User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/j Accept-language:fr (extra carriage return, line feed) Carriage return, line feed indica fim da mensagem Prof . Magnos Martinello - UFES 11 Arquitetura Web C/S ■ Figura mostrando uma mensagem de um cliente (web browser) para um servidor web Prof . Magnos Martinello - UFES 12 Conexões não persistentes x persistentes ■ http 1.0 x Prof . Magnos Martinello - UFES http 1.1 13 Tempo de download de páginas web ■ Um projetista web deseja avaliar rapidamente o tempo de download de duas alternativas de projeto. ■ O primeiro projeto usa uma página web de 15650 bytes e tem 10 imagens de 4200 bytes cada. ■ O segundo projeto, muito mais elaborado, usa a mesma página html mas tem 20 imagens de maiores resoluções com cerca de 20000 bytes cada. ■ Calcule o tempo de download de uma página web para conexões persistentes e não persistentes supondo os seguintes parâmetros: ● RTT: 0,05 seg, B=125 KB/seg Prof . Magnos Martinello - UFES 14 Calcular o Overhead do Protocolo ■ ■ ■ ■ ■ http header: número de bytes do http header (aprox. 290) NObj: número de objetos embutidos na página Oi : tamanho em bytes do objeto i (i = 0,...,NObj) RTT : Round Trip Time em segundos B: Banda efetiva entre o browser e o servidor web em bytes/sec. PageSize = NObj ∑ (O + httpHeader) i i= 0 Prof . Magnos Martinello - UFES 15 ■ Conexões persistes x nãopersistentes Projeto 1 ● ● ■ Projeto 2 ● ● ■ ■ PageSize = 60840 bytes NObj = 10 PageSize = 421740 bytes NObj = 20 B = 125 000 bytes /s RTT = 0,05 segundos Prof . Magnos Martinello - UFES 16 Tempo de download Projeto página simples ■ Tempo de Download ( Resposta ) para conexões não- persistentes ● ■ PDT = 1,59 seg Tempo de Download ( Resposta ) para conexões persistentes ● PDT = 1,09 seg Projeto página elaborada ■ Tempo de Download ( Resposta ) para conexões não- persistentes ● ■ Tempo de Download ( Resposta ) para conexões persistentes ● ■ PDT = 5,47 seg PDT = 4,47 Por que a diferença entre o tempo de download de Persistente x Não-persistente não é significativa ? Prof . Magnos Martinello - UFES 17 Desempenho C/S HTTP Desempenho C/S HTTP 45 40 Tempo de Download (segundos) 35 30 25 Column E 20 Column F 15 10 5 0 10 20 30 40 50 70 90 150 Número de Objetos Prof . Magnos Martinello - UFES 18