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
DNS Domain Name System Pessoas: muitos identificadores: RG, nome, passaporte Internet hospedeiros, roteadores: Endereços IP (32 bits) - usados para endereçar datagramas nome, ex.: gaia.cs.umass.edu - usados por humanos P.: Relacionar nomes com endereços IP? Domain Name System: Base de dados distribuída implementada numa hierarquia de muitos servidores de nomes Protocolo de camada de aplicação hospedeiro, roteadores se comunicam com servidores de nomes para resolver nomes (translação nome/endereço) Nota: função interna da Internet, implementada como protocolo da camada de aplicação Complexidade na borda da rede 3
Serviço DNS DNS services Nome do hospedeiro para tradução de endereço IP Hospedeiro aliasing Nomes canônicos e alias mail server aliasing distribuição de carga Servidores Web replicados: estabelece o endereço IP para um nome canônico Por que não centralizar o DNS? Ponto único de falha Volume de tráfego Base centralizada de dados distante Manutenção Não é escalável! 4
Base de Dados Distribuída e hierárquica Cliente quer o IP para www.amazon.com; 1 a aprox.: Cliente consulta um servidor de raiz para encontrar o servidor DNS.com Cliente consulta o servidor DNS.com para obter o servidor DNS amazon.com Cliente consulta o servidor DNS amazon.com para obter o endereço IP para www.amazon.com 5
Servidores de Nomes Raiz (Root) São contatados pelos servidores de nomes locais que não podem resolver um nome Servidores de nomes raiz: Buscam servidores de nomes autorizados se o mapeamento do nome não for conhecido Conseguem o mapeamento Retornam o mapeamento para o servidor de nomes local Existem 13 servidores de nomes raiz no mundo 6
Servidores TLD e autorizados Servidores top-level domain (TLD): responsáveis pelos domínios com, org, net, edu etc. e todos os domínios top-level nacionais uk, fr, ca, jp. Network Solutions mantém servidores para o TLD com TLD Educause para o TLD edu Servidores DNS autorizados: servidores DNS de organizações, provêem nome de hospedeiro autorizado para mapeamentos IP para servidores de organizações (ex.: Web e mail). Podem ser mantidos por uma organização ou provedor de serviços 7
Servidor de nomes local Não pertence estritamente a uma hierarquia Cada ISP (ISP residencial, companhia, universidade) possui um servidor de nomes local Também chamado de servidor de nomes default Quando um hospedeiro faz uma pergunta a um DNS, a pergunta é enviada para seu servidor DNS local Age como um proxy, encaminhando as perguntas para dentro da hierarquia 8
Consultas recursivas Consulta recursiva: Transfere a tarefa de resolução do nome para o servidor de nomes consultado Carga pesada? Consulta encadeada: Servidor contatado responde com o nome de outro servidor de nomes para contato Eu não sei isto, mas pergunte a este servidor 9
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
Compartilhamento de arquivos P2P Sistemas finais arbitrários se comunicam diretamente peers são intermitentes (transitórios) conectados e mudam de endereços IP Três tópicos: Busca pela informação Distribuição de arquivo Estudo de caso: BitTorrent peer-peer
Sistemas P2P Compartilhamento de arquivos Napster, Kazza, Emule, BitTorrent Compartilhamento de CPU Seti@home, Gnome@home Sistema de armazenamento OceanStore, Freenet Streaming de Video ZigZag, PPLive Sistema anônimos TOR Muito além do Compartilhamento de arquivos
Busca pela informação em sistemas P2P Compartilhamento de arquivo (eg e-mule) Índice dinamicamente busca pelas localizações dos arquivos que os peers compartilham Peers precisam dizer ao índice o que eles possuem Peers buscam no índice para determinar onde os arquivos são encontrados Mensagens instatâneas Índice mapea os nomes dos usuários às localizações Quando o usuário inicia uma aplicação de mensagem instantanea, ele informa ao índice sua localização Peers buscam no índice para determinar o endereço IP do usuário
Rede Sobreposta Peers formam rede overlay (sobreposta) Rede formada por conexões fim-a-fim Vizinhos podem estar longe na rede real Comunicação feita nesta rede Por que Overlays? Mapear informação à localização dos peers (localização = IP + porta) Topologias customizadas Evita limitações da topologia IP 14
P2P: índice centralizado Projeto original do Napster 1) quando peer conectase, ele informa ao servidor central: Endereço IP conteúdo 2) Alice busca por Born to be wild 3) Alice requisita o arquivo a partir de Bob Diretório do servidor central 2 1 1 1 1 Alice 3 Bob peers 15
P2P: problemas com diretório centralizado Ponto único de falha Gargalo de desempenho Infração de copyright : alvo para ações legais é óbvio Transferência do arquivo é descentralizada, mas a localização do conteúdo é altamente centralizada 16
Estruturada Rede sobreposta construída com cuidado peers estabelecem roteamento pela rede Objetos ou serviços localizados em peers específicos Similar a tabela hash distribuída (DHT) Vantagem: Localização rápida, busca garantida Desvantagem: manutenção do overlay, localização baseado em similaridade Ex. Chord, CAN, Pastry, etc 17
Não-estruturada Rede sobreposta construída sem (muitos) cuidados Não há informação sobre localização Vantagem: manutenção do overlay (trivial) Desvantagem: baixo desempenho na localização, busca não garantida, Ex. Gnutella, BitTorrent, PPLive, etc Como localizar conteúdo? 18
Query flooding controlado Mensagem de consulta enviada sobre conexões TCP existentes peers repassam mensagem de consulta (Query) até número limite de saltos QueryHit é retornado no caminho reverso Query QueryHit File transfer: HTTP Query QueryHit Query Query QueryHit Escalabilidade: limitada Query 19
Semi-estruturada Rede overlay hierárquica Peers e super-peers (papéis diferentes) Peers se conectam apenas a super-peers Super-peers tem informação sobre peers Vantagem: manutenção do overlay (trivial), melhor desempenho na localização Desvantagem: busca não garantida Ex. Skype, Kazza, Gnutela (versão atual) 20
Overlay Hierárquico Cada peer é ao mesmo tempo super nodo ou associado a um super nodo Conexões TCP entre peer e seu super nodo. Conexões TCP entre alguns pares de super nodos. Super nodo busca conteúdo em seus nodos filhos Flooding controlado entre super-peers o r d i n a r y p e e r g r o u p l e a d e r p e e r n e i g h o r i n g r e l a t i o n s h i p s i n o v e r l a y n e t w o r k 21
BitTorrent 1/4 Aplicativo muito popular disseminação de conteúdo Arquitetura híbrida, mas não estruturada Torrent: peers interessados em um mesmo conteúdo (arquivo) Tracker: localiza peers participando da rede torrent Seeders: peers que tem conteúdo completo Leechers: peers que ainda não tem conteúdo completo Tracker Obtém a lista de peers peer Troca de dados 22
BitTorrent (2/4) Arquivo dividido em blocos (e.g. 256KB chunks) Um peer junta-se a rede torrent: Não tem blocos, mas vai acumular ao longo do tempo Registra com tracker para obter a lista dos pares, conectase a um subconjunto de peers ( vizinhos ) Peers trocam blocos com alguns vizinhos Upload/download simultâneo Peers vizinhos trocam mapa de blocos Quem tem o que (update periódico) Peer que termina vira seeder ou sai do sistema Assim que peer tiver o arquivo todo, ele pode abandonar (egoísta) ou pernanecer(altruisticamente) Por que ficar no sistema? Problema de incentivos!!! 23
Bittorrent (3/4) Solicitando Blocos Vizinhos que ofereceram downloads (unchoke) Recebe lista dos blocos Peer solicita bloco mais raro dentre estes peers Peer passa a oferecer este bloco Servindo Blocos Peer serve peers que oferecem as maiores taxas de download Política tit-for-tat (TFT) Periodicamente, escolher peer aleatório para servir (unchoke otimista) Permite encontrar peer com alta taxa de download 24
BitTorrent: (4/4) Tit-for-tat (1) Ana decide servir Bob via unchoke otimista envia mensagem de unchoke a Bob (2) Bob solicita blocos a Ana (3) Ana transmite blocos ao Bob (4) Ana passa a ser um dos peers que mais serve Bob (5) Bob então decide servir Ana (envia unchoke) (6) Ana solicita blocos ao Bob (7) Bob transmite blocos a Ana Com maiores taxas de upload pode encontrar melhores parceiros e conseguir o arquivo mais rapidamente! 25
Desempenho Questão : Quanto tempo para distribuir arquivo a partir de um servidor para N peers? File, size F Servidor u 1 d 1 u s u 2 d2 u s : banda de upload do servidor u i : peer i banda de upload d i : peer i banda de download d N u N Rede (com banda abundante ) 26
Tempo de distribuição: C/S Servidor envia sequencialmente N copias: NF/u s time cliente i leva F/d i tempo para download Tempo para distribuir F para N clientes usando abordagem C/S F Server d N u N u u 2 1 d 1 u d 2 s Rede com banda abundante d cs = max { NF/u s, F/min(d i ) } incrementa linearmente com N (para um N muito grande!!!) 27
Tempo de distribuição: P2P Servidor deve enviar uma cópia: Tempo: F/u s cliente i leva um tempo F/d i para fazer download Todos os clientes precisam receber arquivo: NF bits F Server d N u N u u 2 1 d 1 u d 2 s Rede com banda sobrando Taxa máxima de upload do sistema u s + Σ u i d P2P = max { F/u s, F/min(d i ), NF/(u s + Σ u i ) } 28
Exemplo comparativo C/S vs. P2P Taxa de upload do cliente = u, 3.5 F/u = 1 hora, u s = 10u, d min u s Minimum Distribution Time 3 2.5 2 1.5 1 0.5 P2P Client Server 0 0 5 10 15 20 25 30 35 N 29
Resumo do Capítulo 2 Arquiteturas de aplicação cliente-servidor P2P híbrida Requisitos de serviço para aplicação: Confiabilidade, banda e atraso Modelo de serviço de transporte da Internet Orientado a conexão, entrega confiável: TCP Datagramas e não confiável: UDP Protocolos específicos: HTTP DNS P2P: BitTorrent Troca de mensagens tipicamente request/reply Centralizado versus descentralizado Stateless versus stateful Complexidade na borda da rede 30