16/01/13 Camada de Aplicação Protocolos Mário Meireles Teixeira. UFMA-DEINF Tópicos & Objetivos Objetivos principais: • conceitual, aspectos de implementação de protocolos de aplicação para redes – paradigma clienteservidor – modelos de serviço • exemplos de aplicações Outros objetivos: • protocolos específicos: – – – – – http ftp smtp pop dns • programação de aplicações de rede – API de sockets 1 16/01/13 Aplicações e Protocolos de Aplicação Aplicações: processos distribuídos comunicando-se aplicação transporte rede enlace física – executam nos computadores da rede (hosts) como programas de usuário – trocam mensagens para realização da aplicação – vários componentes relacionados – ex: email, ftp, Web Protocolos de aplicação: – definem os tipos e sintaxe das mensagens trocadas – definem a semântica das mensagens – definem as ações tomadas – usam serviços de comunicação das camadas inferiores aplicação transporte rede enlace física aplicação transporte rede enlace física Aplicações de Rede Processo: programa executando num host • dentro do mesmo host: interprocess communication (definido pelo SO) • processos executando em diferentes hosts se comunicam através de passagem de mensagens, obedecendo a um protocolo da camada de aplicação Agente usuário: software que interage com o usuário, de um lado e com a rede, de outro – implementa um protocolo da camada de aplicação – Web: browser – E-mail: leitor de correio – streaming audio/video: media player • Aplicação vs. Protocolo 2 16/01/13 Paradigma Cliente-Servidor Aplicações de rede típicas têm duas partes: cliente e servidor Cliente: aplicação transporte rede enlace física pedido • inicia comunicação com o servidor • tipicamente solicita serviços do servidor, • Web: cliente implementado no browser; e-mail: leitor de correio resposta Servidor: • fornece os serviços solicitados ao cliente • ex: servidor web envia a página web solicitada, servidor de e-mail envia as mensagens, etc. • um host pode atuar como cliente ou servidor aplicação transporte rede enlace física Interfaces de Programação (APIs) API: application programming interface • define a interface entre as camadas de aplicação e transporte • socket: Internet API – dois processos se comunicam enviando dados para o socket e lendo dados do socket, como se fosse um descritor de arquivo • Como um processo identifica o outro processo com o qual ele deseja se comunicar? – End. IP do computador no qual o processo remoto executa – port number - permite ao computador receptor determinar o processo local para o qual a mensagem deve ser entregue – binder – informa o “endereço” de um serviço, a partir de um nome descritivo 3 16/01/13 Requisitos das Aplicações Confiabilidade • algumas aplicações (aúdio e vídeo) podem tolerar alguma perda de dados • outras aplicações (transferência de arquivos, telnet, web) exigem transferência de dados 100% confiável Temporização • algumas aplicações (telefonia na Internet, jogos interativos) exigem baixos atraso e jitter para operar Largura de Banda • algumas aplicações (multimídia) impõem um limiar inferior de banda para funcionar (aplicações inelásticas) • outras aplicações (aplicações elásticas: ftp, correio, web) melhoram quando a banda disponível aumenta, mas podem operar com um valor muito baixo Requisitos de Aplicações Comuns Perdas Banda Sensível ao Atraso transf. arquivos e-mail páginas web A/V tempo real sem perdas sem perdas sem perdas tolerante não não não sim, décimos de seg A/V armazenado jogos interativos e-business tolerante tolerante sem perdas elástica elástica elástica aúdio: 5Kb-1Mb vídeo:10Kb-5Mb idem 1Kb-10Kb elástica Applicação sim, segundos sim, décimos de seg sim 4 16/01/13 Serviços de Transporte da Internet Serviço TCP: Serviço UDP: • orientado a conexão: conexão requerida entre cliente e servidor • transporte confiável: dados perdidos na transmissão são recuperados • controle de fluxo: compatibilização de velocidade entre o transmissor e o receptor • controle de congestionamento: protege a rede do excesso de tráfego • não orientado a conexão • transferência de dados não confiável entre os processos transmissor e receptor • não oferece: estabelecimento de conexão, confiabilidade, controle de fluxo e de congestionamento (responsabilidade das aplicações) • ambos não oferecem: garantias de temporização e de taxa de transmissão (banda) mínima Aplicações vs. Protocolos de Transporte Aplicação e-mail terminal remoto Web transf. arquivos streaming multimedia serviço arquivos remoto telefonia Internet Protocolo de Aplicação Protocolo de Transporte smtp [RFC 821] telnet [RFC 854] http [RFC 2068] ftp [RFC 959] RTP ou proprietário (ex: RealNetworks) NFS RTP ou proprietário (ex: Vocaltec) TCP TCP TCP TCP TCP ou UDP TCP ou UDP tipicamente UDP 5 16/01/13 DNS: Domain Name System Pessoas: muitos identificadores – RG, nome, passporte Hosts da Internet, roteadores: – endereços IP (32 bits) usados para endereçar datagramas – nomes - usados por humanos • Como relacionar nomes de hosts com endereços IP? Domain Name System: • base de dados distribuída: implementado numa hierarquia de vários servidores de nomes • protocolo da camada de aplicação: hosts, roteadores comunicam-se com servidores de nomes para resolver nomes (tradução nome/endereço) – função interna da Internet, implementada como um protocolo da camada de aplicação – complexidade na “borda” da rede – outros serviços: aliases de host e servidor de email, load balancing • máquinas Unix: Bind, porta 53, udp • RFCs 1034, 1035 Servidores de Nomes DNS Por que não usar um DNS centralizado? • • • • ponto único de falha volume de tráfego base de dados distante manutenção Não tem escalabilidade! Solução distribuída, hierárquica: nenhum servidor tem todos os mapeamentos de nomes para endereços IP servidor de nomes local: – cada empresa/instituição tem um servidor de nomes local (default) – Consultas dos computadores locais ao DNS vão primeiro para o servidor de nomes local servidor de nomes com autoridade: – para um computador: sempre contém o nome e o endereço IP daquele computador – muitos servidores de nomes locais também são authoritative 6 16/01/13 DNS: Servidores de Nomes Raiz • São contactados pelos servidores de nomes locais quando estes não conseguem resolver um nome • Funcionalidades: – buscam servidores de nomes com autoridade se o mapeamento do nome não for conhecido; – realizam o mapeamento; – retornam o mapeamento para o servidor de nomes local. a NSI Herndon, VA c PSInet Herndon, VA d U Maryland College Park, MD g DISA Vienna, VA h ARL Aberdeen, MD k RIPE London i NORDUnet Stockholm m WIDE Tokyo j NSI (TBD) Herndon, VA e NASA Mt View, CA f Internet Software C. Palo Alto, CA Existem 13 servidores de nomes raiz no mundo b USC-ISI Marina del Rey, CA l ICANN Marina del Rey, CA DNS: exemplo simples servidor de nomes raiz • host pc01.deinf.ufma.br quer o endereço IP de 2 5 3 4 xingu.icmc.usp.br 1. contacta seu servidor DNS local, caetano.deinf. ufma.br 2. caetano.deinf.ufma.br contacta o servidor de nomes raiz, se necessário 3. o servidor de nomes raiz contata o servidor de nomes autoritativo, dns.usp.br, se necessário servidor de nomes local caetano.deinf.ufma.br 1 servidor de nomes autoritativo dns.usp.br 6 computador solicitante pc01.deinf.ufma.br xingu.icmc.usp.br 7 16/01/13 DNS: exemplo servidor de nomes raiz Servidor de nomes raiz: 3 7 • pode não conhecer o servidor de nomes com autoridade para um certo nome • pode conhecer apenas o servidor de nomes intermediário, aquele que deve ser contactado para encontrar o servidor de nomes com autoridade 6 2 servidor de nomes local servidor de nomes intermediário dns.usp.br caetano.deinf.ufma.br 1 4 8 5 servidor de nomes autoritativo dns.icmc.usp.br computador solicitante pc01.deinf.ufma.br xingu.icmc.usp.br DNS: consultas iterativas servidor de nomes raiz consulta recursiva: • transfere a tarefa de resolução do nome para o servidor de nomes consultado • mais mensagens 2 consulta iterativa 3 4 7 consulta iterativa: • servidor contactado responde com o nome de outro servidor de nomes para contato • diminui a carga na rede e nos servidores servidor de nomes local caetano.deinf.ufma.br 1 8 servidor de nomes intermediário dns.usp.br 5 6 servidor de nomes autoritativo dns.icmc.usp.br computador solicitante pc01.deinf.ufma.br caches DNS: • guarda mapeamentos recentes xingu.icmc.usp.br 8 16/01/13 Registros do DNS DNS: base de dados distribuída que armazena registros de recursos (RR) formato dos RR: (Name, • Type=A – name é o nome do computador – value é o endereço IP • Type=NS – name é um domínio (ex: deinf. ufma.br) – value é o endereço IP do servidor de nomes com autoridade para este domínio Value, Type, TTL) • Type=CNAME – name é um “apelido” – value é o nome “canônico” (o nome real) – www.deinf.ufma.br é realmente caetano.deinf.ufma.br • Type=MX – value é o nome do servidor de correio associado com name – (deinf.ufma.br,caetano.deinf. ufma.br,MX) DNS: protocolo e mensagens protocolo DNS: mensagens de consulta e resposta , ambas com o mesmo formato cabeçalho: • identificação: número de 16 bits identifica consulta; resposta usa o mesmo número • flags: – consulta ou resposta – recursão desejada – recursão disponível – resposta é autoritativa 9 16/01/13 DNS: protocolo e mensagens Campos de nome e tipo para uma consulta RRs de resposta a uma consulta registros para servidores autoritativos informação adicional que pode ser útil FTP – Protocolo de Transferência de Arquivos usuário transferência de arquivos FTP FTP FTP interface cliente servidor de usuário sistema de arquivos local sistema de arquivos remoto • transferência de arquivos de/para um host remoto • modelo cliente servidor: – cliente: lado que inicia a transferência (em qualquer sentido) – servidor: host remoto • FTP: RFC 959 (de 1971) • servidor ftp: porta 21 10 16/01/13 ftp: controle separado, conexões de dados • cliente ftp contacta o servidor ftp na porta 21, especificando TCP como protocolo de transporte • duas conexões TCP paralelas são abertas: – controle: troca de comandos e respostas entre cliente e servidor (controle “out of band”) – dados: dados trocados com o servidor (porta 20); não persistente • servidor ftp mantém o estado: diretório corrente, autenticação anterior TCP conexão de controle porta 21 cliente FTP TCP conexão de dados porta 20 servidor FTP ftp: comandos, respostas Exemplos de comandos: • envio de um texto ASCII sobre canal de controle • USER username • PASS password • LIST retorna lista de arquivos no diretório corrente • RETR filename recupera (obtém) o arquivo • STOR filename armazena o arquivo no host remoto Códigos de retorno: • código de status e explicação (como no http) • 331 Username OK, password required • 125 data connection already open; transfer starting • 425 Can’t open data connection • 452 Error writing file 11 16/01/13 Correio Eletrônico fila de saída de mensagem caixa postal Três componentes principais: • agentes de usuário • servidores de correio • simple mail transfer protocol: smtp Agente de usuário • leitor de correio • composição, edição, leitura de mensagens • ex: Eudora, Outlook, mail, pine … • mensagens de entrada e de saída são armazenadas no servidor de correio (smtp) agente usuário servidor de correio agente usuário SMTP mail server SMTP SMTP agente usuário agente usuário servidor de correio agente usuário agente usuário Correio eletrônico: servidores de correio agente usuário Servidores de Correio • caixa postal: contém mensagens que chegaram (ainda não lidas) para o usuário • fila de mensagens: contém as mensagens de correio a ser enviadas • protocolo smtp: permite aos servidores de correio trocar mensagens entre eles – cliente: servidor de correio que envia – servidor: servidor de correio que recebe servidor de correio agente usuário SMTP SMTP SMTP servidor de correio mail server agente usuário agente usuário agente usuário agente usuário 12 16/01/13 Correio Eletrônico: SMTP [RFC 821] • SMTP usa TCP para transferência confiável de mensagens de correio do cliente ao servidor, pela porta 25 • transferência direta: servidor de origem envia para o servidor de destino; não usa servidores intermediários • na sua forma padrão, as mensagens SMTP devem ser formatadas em código ASCII de 7 bits (legado dos primórdios da Internet) --> codificação/decodificação • três fases de transferência: – apresentação: troca de endereços de origem/destino – transferência de mensagens (via TCP); conexões persistentes – encerramento • interação comando/resposta – comandos: texto ASCII – resposta: código de status e frase de explicação Exemplo de interação SMTP S: C: S: C: S: C: S: C: S: C: C: C: S: C: S: 220 hamburger.edu HELO crepes.fr 250 Hello crepes.fr, pleased to meet you MAIL FROM: <[email protected]> 250 [email protected]... Sender ok RCPT TO: <[email protected]> 250 [email protected] ... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Do you like ketchup? How about pickles? . 250 Message accepted for delivery QUIT 221 hamburger.edu closing connection 13 16/01/13 SMTP: comentários • SMTP usa conexões persistentes • SMTP exige que as mensagens (cabeçalho e corpo) estejam em ASCII de 7 bits • Algumas seqüências de caracteres não são permitidas nas mensagens (ex., CRLF.CRLF). Dados binários têm que ser codificados em ASCII • CRLF.CRLF indica o final da mensagem Comparação com http: • http: pull (recuperação) • smtp: push (envio) • Ambos usam comandos e respostas em ASCII, interação comando / resposta e códigos de status • http: cada objeto encapsulado na sua própria mensagem de resposta • smtp: múltiplos objetos são enviados numa mensagem “multipart” Formato das Mensagens SMTP: protocolo para troca de mensagens RFC 822: define formato das mensagens tipo texto. • linhas de cabeçalho: header linha em branco body – To: – From: – Subject: • corpo: – a mensagem em ASCII, somente com caracteres 14 16/01/13 Formato das Mensagens: extensões multimídia • MIME: Multipurpose Internet Mail Extensions – para transmitir textos que não estão no padrão ASCII. Ex: imagens, outro idioma que não o Inglês • linhas adicionais no cabeçalho declaram o tipo de conteúdo From: [email protected] To: [email protected] Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg versão MIME método usado para codificação (RFC 2045) dados multimídia: tipo, subtipo, parâmetro base64 encoded data ..... ......................... ......base64 encoded data . dados codificados terminador Tipos MIME (RFC 2046) Content-Type: type/subtype; parameters Text Video • text/plain, text/html • text/plain; charset=“ISO-8859-1” (lín guas latinas) • video/mpeg, video/ quicktime Image • image/jpeg, image/gif Audio • audio/basic (8 bits), audio/32kadpcm (32 Kbps) Application • dados que precisam ser processados por uma aplicação antes de serem apresentados • application/msword, application/octet-stream (dados binários genéricos) 15 16/01/13 Tipo Multipart From: [email protected] To: [email protected] Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 delimitador --98766789 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Dear Bob, Please find a picture of a crepe. --98766789 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data --98766789-- Protocolos de acesso a correio SMTP SMTP agente usuário servidor de correio de origem POP3 ou IMAP agente usuário servidor de correio de destino • SMTP: entrega e armazena mensagens no servidor de destino • Protocolo de acesso: recupera mensagens do servidor de correio – POP: Post Office Protocol [RFC 1939] • autorização (agente <--> servidor), download, atualização – IMAP: Internet Mail Access Protocol [RFC 2060] • maiores recursos (mais complexo) • manipulação de caixas postais remotas (criação de pastas, leitura parcial de mensagens, busca, etc.) – HTTP: Hotmail , Yahoo, BOL (http: browser <--> servidor) 16 16/01/13 Protocolo POP3 fase de autorização • comandos do cliente: – user: nome do usuário – pass: senha • respostas possíveis do servidor: – +OK – -ERR fase de transação, cliente: • list: lista mensagens e tamanhos • retr: recupera mensagem pelo número • dele: apaga • quit • POP3 não mantém estado entre sessões dos clientes S: C: S: C: S: +OK POP3 server ready user alice +OK pass hungry +OK user successfully logged C: S: S: S: C: S: S: C: C: S: S: C: C: S: list 1 498 2 912 . retr 1 <message 1 contents> . dele 1 retr 2 <message 1 contents> . dele 2 quit +OK POP3 server signing off on World Wide Web • Permite o acesso a documentos interligados, espalhados pela Internet • Tornou-se tão popular que se confunde com a própria Internet • 1945 - Vannevar Bush: conceito de hipertexto • 1965 - Ted Nelson: cunhou o termo • 1989 - Tim Berners-Lee: no CERN, criou a Web e o protocolo http • 1994 – Marc Andreesen: desenvolveu o Mosaic; links para diferentes mídias • Em 1995, a Web tornou-se responsável pela maior parte do tráfego na Internet, porém foi ultrapassada pelas redes P2P em 2004 • Sistema hipermídia em escala global • Sistema de nomenclatura: URLs • Interações entre os componentes: paradigma C/S • A Web funciona sobre dois padrões principais: – Linguagem HTML – Protocolo HTTP 17 16/01/13 Sistema de Nomenclatura – URLs • URLs permitem que os usuários acessem páginas web e outros serviços como FTP, telnet e notícias, a partir do próprio navegador: – – – – – – – http - Hipertexto (HTML) ftp - Transferência de arquivos file - Acesso a arquivos locais news - Grupos de notícias e artigos gopher - recuperar informações pelo gopher mailto - Enviar e-mail telnet - Login remoto Protocolo 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 – server: envia objetos em resposta a pedidos • HTTP 1.0: RFC 1945 • HTTP 1.1: RFC 2616 htt p PC com Explorer htt p req ues t res pon se st ue eq r p nse po htt s e r tp ht Servidor com Apache web server Mac com Navigator 18 16/01/13 Protocolo HTTP http: protocolo de aplicação sobre TCP • cliente inicia conexão TCP (cria socket) com o servidor na porta 80 • servidor aceita uma conexão TCP do cliente • mensagens http 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ções sobre os pedidos dos clientes Protocolos que mantêm informações de estado são complexos: • necessidade de organizar informações passadas • se ocorrer uma falha, as informações podem ser perdidas ou gerar inconsistências entre o cliente e o servidor • baixa escalabilidade Exemplo de Operação HTTP (1) Usuário digita a URL: www.deinf.ufma.br/prof/index.html (referencia 10 imagens) 1a. cliente http inicia conexão TCP com o servidor http (processo) em www.deinf. ufma.br, pela porta 80 (default) 2. cliente http client envia http request, contendo a URL, ao servidor web 1b. servidor http no host www.deinf.ufma.br, aguardando pela conexão TCP na porta 80, aceita a conexão, notificando o cliente 3. servidor http recebe mensagem de pedido, recupera o objeto e envia uma http response, contendo o objeto solicitado, ao cliente tempo 19 16/01/13 Exemplo (2) 4. servidor http fecha conexão TCP (http 1.0) tempo 5. cliente http recebe mensagem de resposta contendo o arquivo html e o apresenta ao usuário 5a. ao analisar o arquivo html, cliente encontra 10 objetos jpeg referenciados 6. cliente repete Passos 1-5 para cada um dos 10 objetos jpeg Conexões persistentes e nãopersistentes Não-persistente • http/1.0: servidor analisa pedido, envia resposta e fecha a conexão TCP • 2 RTTs para obter um objeto: – estabelecimento de conexão TCP – solicitação e transferência do objeto • cada transferência sofre ainda por causa do mecanismo de slow-start do TCP • muitos browsers abrem várias conexões paralelas Persistente • modo default para http/1.1 • na mesma conexão TCP, são recuperados vários objetos • o cliente solicita todos os objetos referenciados, tão logo ele receba a página HTML básica (pipelining) • poucos RTTs, menos slow start 20 16/01/13 Cliente-servidor na Web (duas camadas) Cliente-servidor na Web (três camadas) 21 16/01/13 HTTP request: formato geral <método> <id. recurso> <versão HTTP> <crlf> [<Header>: <valor>] <crlf> ... [<Header>: <valor>] <crlf> <crlf> [Entity body] Mensagens HTTP: request • Dois tipos de mensagens HTTP: request, response • Formato ASCII (legível para humanos) linha de pedido (comandos GET, POST,HEAD ) GET /dir/page.html HTTP/1.0 User-agent: Mozilla/4.0 Accept: text/html, image/gif, image/jpeg linhas de Accept-language: fr cabeçalho (linha em branco) Carriage return, line feed Corpo da mensagem indica fim da mensagem 22 16/01/13 HTTP response: formato geral <versão HTTP> <cód. status> [<explicação>] <crlf> [<Header>: <valor>] <crlf> ... [<Header>: <valor>] <crlf> <crlf> [Entity body] Mensagens HTTP: response linha de status (protocolo código de status frase de status) linhas de cabeçalho dados, p.ex., arquivo html HTTP/1.0 200 OK Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 ... Content-Length: 6821 Content-Type: text/html dados dados dados dados ... 23 16/01/13 Métodos HTTP • GET – Solicita o objeto identificado pela URL • HEAD – Obtém informações sobre o objeto sem que o mesmo seja retornado ao cliente (depuração) • POST – Envia informações adicionais ao servidor web (p.ex., dados de formulários) • OPTIONS – Obtém opções de comunicação disponíveis ou os requisitos associados ao objeto solicitado • PUT – Cria ou modifica um objeto no servidor web • DELETE – Remove um objeto do servidor web • TRACE – Envia mensagem de teste (loopback) ao servidor • CONNECT – Reservado para comunicação com servidores proxy Códigos de Status • 1xx – Informational • 2xx – Success – 200 OK • 3xx – Redirection – 301 Moved Permanently – 304 Not Modified – 307 Temporary Redirect • 4xx – Client Error – 400 Bad Request – 401 Unauthorized – 404 Not Found • 5xx – Server Error – 503 Service Unavailable – 505 HTTP Version Not Supported 24 16/01/13 Cookies • Gerados e lembrados pelo servidor (RFC 2109), usados mais tarde para: – autenticação – lembrar preferências dos usuários ou escolhas prévias • Servidor envia “cookie” ao cliente na resposta HTTP cliente http request msg http response + Set-cookie: # http request msg Cookie: # http response msg Set-cookie: 1678453 http request msg • Cliente apresenta “cookie” em pedidos posteriores Cookie: 1678453 servidor Cookie: # usual http response msg ação específica do cookie ação específica do cookie ação específica do cookie GET Condicional: caches no cliente • servidor: só envia o objeto solicitado se sua versão for mais atual que a do cliente • cliente: especifica, na requisição HTTP, a data da versão armazenada no cache local: If-Modified-Since: <date> • servidor: resposta não contém o objeto se a cópia do cliente estiver atualizada: 304 Not Modified servidor cliente http request If-Modified-Since: <date> http response objeto não modificado HTTP/1.0 304 Not Modified http request If-Modified-Since: <date> http response objeto modificado HTTP/1.1 200 OK <data> 25 16/01/13 Web Caches Objetivo: atender o cliente sem envolver o servidor Web, detentor da informação original • usuário configura o browser: – acesso à Web é feito através de um servidor proxy • cliente envia todos os pedidos http para o proxy: – se o objeto existe no cache, o proxy retorna o objeto – senão, o proxy solicita o objeto ao servidor original e o envia ao cliente htt p cliente http req ues t servidor original Proxy server res pon se st e u eq pr nse t t po h s e r tp ht t ues req e p htt ons esp r p htt cliente Por que Web Caching? servidores originais • armazenamento fica “perto” do cliente (p.ex., na mesma Internet rede) pública • menor tempo de resposta • reduz o tráfego para /media/dados/documentos/Disciplinas/ servidores distantes: enlace de acesso Grad/Redes II/aulas/05_aplicacao.ppt – links externos podem ser caros e facilmente congestionáveis • caches hierárquicos e cooperativos (NLANR) • ICP (RFC 2186) – Internet Caching Protocol, suportado pelo Squid 1,5 Mbps rede institucional 10 Mbps LAN cache institucional 26 16/01/13 Compartilhamento dede arquivos P2P Compartilhamento Arquivos P2P Exemplo • Alice executa a aplicação cliente P2P em seu notebook • intermitentemente, conecta-se à Internet; obtém novos endereços IP para cada conexão • pede por “Hey Jude” • a aplicação exibe outros pares que possuem uma cópia de Hey Jude • Alice escolhe um dos pares, Bob • o arquivo é copiado do PC de Bob para o notebook de Alice: HTTP • enquanto Alice faz o download, outros usuários fazem upload de Alice • o par de Alice é tanto um cliente Web como um servidor Web transiente Todos os pares são servidores = altamente escaláveis! 2 - 53 P2P: diretório centralizado P2P: Diretório centralizado Projeto original “Napster” 1) Quando um par se conecta, ele informa ao servidor central: • Endereço IP • Conteúdo 2) Alice procura por “Hey Jude” 3) Alice requisita o arquivo de Bob 2 - 54 27 16/01/13 P2P: problemas com diretório centralizado Desvantagens do diretório centralizado • Ponto único de falhas • Gargalo de desempenho • Infração de copyright Transferência de arquivo é descentralizada, mas a localização de conteúdo é altamente centralizada 2 - 55 Query flooding: Gnutella Inundação de consultas Gnutella • Totalmente distribuído • Sem servidor central • Protocolo de domínio público • Muitos clientes Gnutella implementando o protocolo Rede de cobertura: grafo • Aresta entre o par X e o Y se houver uma conexão TCP • Todos os pares ativos e arestas estão na rede de sobreposição • aresta não é um enlace físico • Um determinado par será tipicamente conectado a <10 vizinhos na rede de sobreposição 2 - 56 28 16/01/13 Gnutella: protocolo Protocolo Gnutella • • Mensagem de consulta (Query) é enviada pelas conexões TCP existentes • Os pares encaminham a mensagem de consulta • QueryHit (acerto) é enviado pelo caminho reverso • Download do arquivo é feito via HTTP Escalabilidade: flooding de alcance limitado (num. hops < 7) 2 - 57 Gnutella: conectando pares Protocolo Gnutella 1. Para se conectar, o par X precisa encontrar algum outro par na rede Gnutella: utiliza a lista de pares candidatos 2. X, seqüencialmente, tenta fazer conexão TCP com os pares da lista até estabelecer conexão com Y 3. X envia mensagem de Ping para Y; Y encaminha a mensagem de Ping 4. Todos os pares que recebem a mensagem de Ping respondem com mensagens de Pong 5. X recebe várias mensagens de Pong. Ele pode então estabelecer conexões TCP adicionais 2 - 58 29 16/01/13 Explorando heterogeneidade: KaZaA KaZaA • Cada par é ou um líder de grupo ou está atribuído a um líder de grupo (supernó/ultranó) • Conexão TCP entre o par e seu líder de grupo • Conexões TCP entre alguns pares de líderes de grupo (rede sobreposta) • O líder de grupo acompanha o conteúdo em todos os seus “discípulos” 2 - 59 KaZaA KaZaA • Cada arquivo possui um hash e um descritor • O cliente envia a consulta de palavra-chave para o seu líder de grupo • O líder de grupo responde com os acertos: • Para cada acerto: metadados do arquivo, hash, endereço IP • Se o líder de grupo encaminha a consulta para outros líderes de grupo, eles também respondem com os acertos • O cliente então seleciona os arquivos para download • Requisições HTTP usando hash como identificador são enviadas aos pares que contêm o arquivo desejado 2 - 60 30 16/01/13 Artifícios do KaZaA Artifícios do KaZaA • Limitações em transferências simultâneas • Requisita enfileiramento de requisições • Incentiva prioridades (> para peers que contribuem com arquivos para a rede) • Realiza downloads em paralelo 2 - 61 31