22/05/2014 REDES DE COMPUTADORES Camada de Aplicação Alexandre Augusto Giron ROTEIRO • Revisão • Princípios e Arquiteturas das aplicações de rede • Camada de Aplicação – Aplicações e seus Protocolos • Aplicações P2P • Resumo Revisão – TCP/IP 1 22/05/2014 Revisão – TCP/IP • Cada protocolo pertence a uma das camadas • Cada camada fornece serviços e utiliza serviços das camadas imediatamente inferiores à ela Revisão – TCP/IP • Camada de aplicação: onde residem as aplicações de rede e seus protocolos • Camada de transporte: recebe as mensagens da camada de aplicação e as transporta entre os lados cliente e servidor (da aplicação!) • Assim, uma aplicação de rede “escolhe” algum protocolo da camada de transporte para o envio das mensagens – Mas como escolher o protocolo? Depende da arquitetura da aplicação Princípios das Aplicações de Rede • Aplicações de rede são a razão de ser de uma rede de computadores • Ao desenvolver uma aplicação é necessário que: – Software que execute em diferentes sistemas finais comunicantes – Escolha da arquitetura da aplicação • É necessário desenvolver programas também para os roteadores e switches (núcleo da rede)? – Não! Arquitetura em camadas! 2 22/05/2014 Princípios das Aplicações de Rede Arquiteturas das aplicações de rede • Não confundir com arquitetura de rede! – Arquitetura de aplicação de rede ≠ arquitetura de rede • Determina como a aplicação é organizada nos sistemas finais • Mais utilizadas: Cliente-Servidor; Peer-toPeer (P2P); Híbrida Arquiteturas das aplicações de rede – Cliente-Servidor • Servidor: – Sempre em funcionamento – Atende requisições – Endereço IP fixo • Cliente: – Não necessitam estar sempre em funcionamento – Envia requisições ao servidor – Endereço IP dinâmico 3 22/05/2014 Arquiteturas das aplicações de rede – Cliente-Servidor Arquiteturas das aplicações de rede – Cliente-Servidor • Vantagens – Recursos centralizados – Armazenamento centralizado mais fácil de gerenciar – Clientes requerem pouca administração • Desvantagens – Um servidor sozinho não atende a todas as requisições – Assim, é necessário um conjunto de servidores (Datacenter), aumentando o custo – Se os servidores falharem, requisições não serão atendidas Arquiteturas das aplicações de rede – Peer-to-Peer (P2P) • Arquitetura de pares arbitrários que se comunicam entre si • Comunicação direta entre os pares – Cada nó funciona como cliente e como servidor • Arquitetura distribuída e descentralizada – Pouca (ou nenhuma) interação com servidor 4 22/05/2014 Arquiteturas das aplicações de rede – Peer-to-Peer (P2P) Arquiteturas das aplicações de rede – Peer-to-Peer (P2P) • Vantagens principais – Auto-escalabilidade: Aumento na quantidade de nós gera mais demanda mas também maior capacidade de serviço ao sistema – Não requerem infraestrutura significativa – Confiabilidade: falha em um par não afeta a rede • Desvantagens – Complexidade maior na gerência da rede – Segurança: arquitetura distribuída e exposta dificulta a proteção Arquiteturas das aplicações de rede – Híbrida • Arquitetura Híbrida: combina conceitos de Cliente-Servidor com P2P • Muitas aplicações de mensagem instantânea são híbridas • Ex: Napster – Servidor central identificava quais pares tinham determinado arquivo – Troca de arquivos então ocorria entre os pares, sem passar por um servidor central 5 22/05/2014 Comunicação entre processos • Como a aplicação vai se comunicar entre os diferentes sistemas finais? • Programas executando em sistemas finais: Processos • Processos executando no mesmo sistema final: – Regras de comunicação definidas pelo SO • Processos executando em sistemas finais diferentes: – SOs podem ser diferentes! – Comunicação por troca de mensagens Comunicação entre processos • Um processo de uma aplicação deseja enviar uma mensagem para outro processo (em outro sistema final) • Se é um processo que inicia a comunicação: Processo cliente • Se é um processo que espera ser contatado: Processo servidor • A mensagem de um processo deve passar pela rede • Mas por onde o processo envia a mensagem? – Através do Socket! Socket • É a interface entre o processo e a rede de computadores • Mais especificamente: interface entre a camada de aplicação e a camada de transporte – Processo cliente “empurra” a mensagem pelo socket – Processo servidor recebe a mensagem a partir do socket – Socket análogo a uma porta de uma casa 6 22/05/2014 Socket • Nesse caso, o protocolo escolhido foi o TCP da camada de transporte Serviços da camada de transporte • Quais são os serviços disponíveis para as aplicações de rede? 1. Transferência confiável de dados 2. Vazão 3. Temporização 4. Segurança Transferência confiável • Um pacote pode se perder dentro de uma rede – Ser descartado por um roteador, exceder um buffer • Muitas aplicações requerem que não haja perda de dados • Objetivo da Transferência confiável: garantir que os dados cheguem ao seu destino de forma correta 7 22/05/2014 Vazão • Emissores/Receptores compartilham largura de banda da rede – Vazão pode oscilar com o tempo • Se o protocolo da camada de transporte pode garantir uma taxa mínima de r bits/s • Então o protocolo garante vazão disponível seja sempre r bits/s (pelo menos) • Aplicações multimídia que possuem necessidade de vazão são conhecidas como sensíveis à largura de banda Temporização • Objetivo: garantir o envio de um bit (desde o socket emissor até o socket destino) com tempo máximo pré-fixado – Por exemplo, em menos de 100 milissegundos • Serviço interessante para aplicações em tempo real – Telefonia por internet, teleconferência, jogos multijogadores Segurança • Um protocolo de transporte pode oferecer vários serviços relacionados à segurança – Sigilo, integridade dos dados, autenticação, entre outros • Ex: um protocolo codifica os dados de um processo emissor antes de enviar ao processo receptor 8 22/05/2014 Serviços da camada de transporte • Quais são os serviços disponíveis para as aplicações de rede? 1. Transferência confiável de dados 2. Vazão 3. Temporização 4. Segurança • Não são disponíveis na Internet atualmente Serviços oferecidos na prática • Protocolo TCP (Transmission Control Protocol): 1. Serviço Orientado para conexão 1. Conexão TCP entre os sockets do processo 2. Serviço confiável de transporte 1. TCP é capaz de enviar sem erros e na ordem correta: Transferência confiável de dados 3. Mecanismo de controle de congestionamento 1. Limita a capacidade de transmissão de um processo quando a rede está congestionada Serviços oferecidos na prática • Protocolo UDP (User Datagram Protocol): um protocolo simplificado 1. Não orientado para conexão 2. Não fornece transporte confiável de dados 1. Protocolo não dá nenhuma garantia que os dados chegarão ao destino 3. Não inclui mecanismo de controle de congestionamento 1. Processo pode enviar dados à taxa que quiser 9 22/05/2014 Serviços oferecidos na prática • Comparativo entre a utilização dos protocolos Endereçamento de processos • SOs normalmente possuem vários processos em execução • Como um processo “sabe” qual o processo que ele quer se comunicar? • Na internet, um sistema final é identificado por um endereço IP (32 bits) • Para identificar o processo, são utilizados números de porta Endereçamento de processos • Portas comuns: Protocolo Porta FTP 20 e 21 SSH 22 Telnet 23 SMTP 25 DNS 53 Web 80 Pop3 110 IMAP 143 (http://www.iana.org/assignments/service-names-portnumbers/service-names-port-numbers.xhtml) 10 22/05/2014 Aplicações e Protocolos da camada de aplicação • Um protocolo da camada de aplicação define como os processos (de sistemas finais diferentes) passam mensagens entre si 1. Tipos de mensagens trocadas (Ex: requisição, resposta) 2. Sintaxe: campos da mensagem, cabeçalho 3. Semântica: qual o significado de cada campo da mensagem 4. Regras para determinar quando e como é o envio e resposta das mensagens Aplicações e Protocolos da camada de aplicação • • • • Protocolos públicos (definidos em RFCs): Web e o HTTP Transferência de arquivos: FTP Correio Eletrônico: – SMTP, POP3 e IMAP • Serviço de diretório: DNS • Compartilhamento de arquivos P2P Web e o HTTP • Relembrando: até a década de 1990, Internet era usada por pesquisadores • No inicio de 1990, surge a Web • Protocolo HTTP como parte do coração da Web 11 22/05/2014 Termos da Web • Página Web: composta de objetos • Um objeto é um arquivo qualquer (HTML, JPEG, GIF, applet Java, vídeo...) • Forma de acesso: com um único URL • Arquivo-base HTML e objetos nele referenciados • URL (endereço web) HTTP • HTTP (HyperText Transfer Protocol) • Protocolo de aplicação da Web • Possui arquitetura cliente-servidor – – – – Browser (navegador) solicita documentos Browser implementa o lado cliente do protocolo HTTP Servidor trata requisições de objetos que ele abriga Servidores Web populares: Apache e Microsoft IIS • HTTP define como se dão as requisições e a transferência das páginas Web HTTP • HTTP utiliza TCP como protocolo de transporte de mensagens • Cliente realiza uma requisição HTTP para seu socket • Uma conexão TCP é iniciada • Servidor envia uma resposta HTTP 12 22/05/2014 HTTP • Vale ressaltar que o servidor HTTP não mantém informações de estado de seus clientes – Se um mesmo cliente fizer a mesma solicitação duas vezes, serão enviadas duas respostas iguais • HTTP é um protocolo sem estado – Simplifica o projeto do servidor – Gerência de maior número de conexões simultâneas HTTP: tipos de conexão • Duas configurações disponíveis • HTTP com conexão não-persistente (HTTP 1.0): – Cada solicitação de objeto requer uma nova conexão – Com a transferência concluída, a conexão é desfeita • HTTP com conexão persistente (HTTP 1.1): – Vários objetos podem ser transferidos com a mesma conexão – Normalmente, a conexão é fechada após um tempo predeterminado de inutilização da conexão – Dois tipos: Paralela e Serial HTTP com conexão não-persistente • RTT (Round-Trip Time): Tempo de viagem de ida e volta 13 22/05/2014 HTTP com conexão não-persistente • Exemplo: http://someSchool.edu/someDepartment/h ome.index • Suponha que neste arquivo possua referência para 10 arquivos JPG • Utilizando RTT como medida de tempo, qual o tempo necessário para a transferência desses arquivos? HTTP com conexão não-persistente Exemplo • Fluxo: 1. Cliente HTTP inicia conexão TCP ao servidor HTTP (processo) em www.someSchool.edu. Porta 80 é a default para o servidor HTTP 2. O cliente HTTP envia uma mensagem de requisição HTTP ao servidor através de seu socket 3. Servidor HTTP no hospedeiro www.someSchool.edu encapsula o objeto requerido (home.index), localizado no seu disco ou RAM, em uma mensagem de resposta HTTP e envia ao cliente 4. Servidor HTTP ordena ao protocolo TCP o fechamento da conexão (na realidade o TCP só fechará após o cliente receber a mensagem descrita em 3 intacta – Transferência confiável!) 5. O cliente recebe a resposta HTTP e a conexão é encerrada. HTTP com conexão não-persistente Exemplo • Fluxo: 1. Cliente HTTP inicia conexão TCP ao servidor HTTP (processo) em www.someSchool.edu. Porta 80 é a default para o servidor HTTP 2. O cliente HTTP envia uma mensagem de requisição HTTP ao servidor através de seu socket 3. Servidor HTTP no hospedeiro www.someSchool.edu Para cada um dos 10 arquivos, encapsula o objeto requerido (home.index), localizado no os passos 1-5 devem ser seu disco ou RAM, em uma mensagem de resposta HTTP repetidos!! e envia ao cliente 4. Servidor HTTP ordena ao protocolo TCP o fechamento da conexão (na realidade o TCP só fechará após o cliente receber a mensagem descrita em 3 intacta – Transferência confiável!) 5. O cliente recebe a resposta HTTP e a conexão é encerrada. 14 22/05/2014 HTTP com conexão não-persistente Exemplo • Para o recebimento do arquivo home.index: 2 RTT + tempo de transmissão do arquivo • Para receber os 10 arquivos JPG Adiciona 10*(2 RTT + tempo de transm. do arquivo) • Total: 22*RTT + 11*Tempo transmissão • Note que a conexão não-persistente do HTTP pode sobrecarregar servidores por esgotamento de recursos – Cada conexão TCP requer alocação de buffers, manutenção de variáveis HTTP com conexão persistente • Servidor deixa a conexão TCP aberta após a transferência – Novas requisições podem ser enviadas pela mesma conexão • Serial: Permite apenas uma nova requisição apenas se a resposta anterior tiver sido recebida – 1 RTT por arquivo (requisição e recebimento) – Ociosidade do cliente/servidor: aguarda recebimento HTTP com conexão persistente • Paralela: Cliente envia requisições sem esperar pela resposta de cada requisição – Padrão no HTTP 1.1 – Menor ociosidade da conexão – Menor espera (1 RTT é dividido por várias solicitações) • É permitido ao usuário configurar o grau de paralelismo no navegador – Por default, os navegadores abrem de 5 a 10 conexões TCP paralelas 15 22/05/2014 Formato de mensagem HTTP • Especificação na RFC 2616 • Dois tipos: Requisição e Resposta • Exemplo de requisição HTTP: GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu Connection: close User-agent: Mozilla/4.0 Accept-language: fr Formato de mensagem HTTP • Especificação na RFC 2616 • Dois tipos: Requisição e Resposta • Exemplo de requisição HTTP: Linha de requisição Linhas de cabeçalho GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu Connection: close User-agent: Mozilla/4.0 Accept-language: fr Formato de mensagem HTTP 16 22/05/2014 Formato de mensagem HTTP • Linha de requisição: • Método – GET, POST, HEAD – HTTP 1.1: PUT, DELETE, TRACE, OPTIONS, CONNECT • URL: identificação do objeto • Versão: – Especifica o último campo da linha de requisição – Versão do HTTP em uso • Linhas de cabeçalho: • Host – indica o hospedeiro do objeto • Connection – close -> indica que a conexão não é persistente! Corpo de entidade? • Fica vazio com método GET • Quando um usuário preenche um formulário, normalmente utiliza o método POST – Dados do formulário embutidos no corpo de entidade • Formulários com GET – Dados do formulário contidos na URL – URL mais extensa: www.somesite.com/animalsearch?monkeys&bananas Formato de mensagem de resposta HTTP 17 22/05/2014 Formato de mensagem de resposta HTTP • Linha de Estado + cabeçalho + corpo da entidade HTTP/1.1 200 OK Connection: close Date: Sat, 07 Jul 2007 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Sun, 06 May 2007 09:23:24 GMT Content-Lenght: 6821 Content-Type: text/html (dados............................ ) Códigos de estado da mensagem de resposta HTTP • Indicam o resultado da requisição • Códigos comuns: – 200 OK: requisição bem-sucedida e informação entregue com a resposta – 301 Moved Permanently: o objeto foi removido permanentemente e o caminho é especificado no campo Location. Automaticamente o software que fez a requisição recupera o novo URL. – 400 Bad Request: código de erro indicando que a requisição não pode ser atendida pelo servidor – 404 Not Found: Objeto não foi encontrado no servidor – .... Cookies • HTTP: protocolo sem informações de estado • Porém essas informações podem ser necessárias! – Restrições de acesso a determinados usuários – Apresentação de conteúdo compatível com idade dos usuários • Cookies permitem o monitoramento de informações do usuário • Maioria dos sites da Web utilizam cookies 18 22/05/2014 Cookies • Qual a função?? Monitorar informações do usuário, manter informações de comunicação sobre um protocolo sem estado (HTTP) • Necessidade de suporte no servidor HTTP – Banco de dados • Componentes: 1. Linha de cabeçalho de cookie na mensagem de resposta HTTP 2. Linha de cabeçalho de cookie na requisição HTTP 3. Um arquivo de cookie mantido no sistema do usuário 4. Um banco de dados de apoio no servidor Cookies Exemplo • Suponha um acesso de um cliente ao site amazon.com, através de um navegador • Anteriormente o mesmo cliente já havia acessado o site ebay Cookies Exemplo 1. Mensagem normal de requisição HTTP (acesso ao site amazon) 2. Quando a requisição chega ao servidor da amazon, ele cria um n° de identificação exclusivo (ID) para o cliente 1. e armazena no banco de dados de apoio 3. O servidor envia a resposta contendo: 1. Set-cookie: n° de identificação 4. Quando o cliente recebe a mensagem de resposta, o navegador do cliente: 1. 2. Adiciona uma linha no arquivo de cookies Essa linha possui o nome de hospedeiro e o n° de identificação 19 22/05/2014 Cookies Exemplo Cookies Exemplo 5. Cada nova requisição ao site amazon, o navegador do cliente insere o ID na requisição • Assim, o servidor pode monitorar quais páginas foram acessadas, em qual ordem, em quais horários • Sites de compra guardam informações dos interesses, itens acessados pelos usuários – Anúncios personalizados 6. Com o cliente retornando ao site após uma semana, o servidor pode consultar o cookie e realizar ações específicas – Anúncios personalizados! Cookies • Na prática, muitas informações do usuário (além do ID) são relacionadas ao cookie – Registro no site: Nome completo, endereço, n° do cartão de crédito incluídas no banco de dados – Serviço de “compras com um só clique”: dados são recuperados • Apesar de simplificarem processos de compra, cookies são uma ameaça à privacidade 20 22/05/2014 Caches Web (servidor proxy) • Cache Web: servidor proxy • Atende requisições HTTP em nome de um servidor de origem • Intermediário entre a conexão do cliente e servidor – Cliente envia requisições HTTP para o proxy – Se o objeto existe no proxy: o proxy retorna o objeto – Se o objeto não existe no proxy: o proxy faz uma requisição HTTP ao servidor original (que contém o objeto) e após o recebimento, envia o objeto ao cliente Caches Web (servidor proxy) • Um proxy atua como cliente e servidor • Dessa forma, um proxy tende a reduzir o tempo de resposta Caches Web (servidor proxy) • Depende da taxa de acertos • Proxy além de reduzir o tempo de resposta, podem diminuir o tráfego no enlace de acesso a uma instituição • Com redução de tráfego, a instituição não necessita ampliar sua largura de banda da conexão – Diminuindo custos – Mas requer a instalação do proxy 21 22/05/2014 E se o arquivo estiver desatualizado no proxy?? • Mecanismo do HTTP para verificação dos objetos • Comando GET “Condicional” – Linha de cabeçalho da requisição: If-Modified-Since GET Condicional • Exemplo GET Condicional • Proxy faz consulta ao servidor 22 22/05/2014 GET Condicional • Servidor responde ao proxy GET Condicional • Proxy envia o objeto ao cliente e armazena. • Suponha que haja um novo acesso – Após uma semana • Como saber se o arquivo no proxy é atualizado?? GET Condicional • GET condicional: 23 22/05/2014 GET Condicional • Se o arquivo não foi atualizado, o servidor responde ao proxy: – 304 Not Modified – Sem o objeto na resposta • Se não foi modificado, o proxy envia o objeto que ele possui ao cliente • O Get condicional tem esse objetivo: apenas retorne o objeto se este foi modificado FTP (File Transfer Protocol) • Protocolo da camada de aplicação para transferência de arquivos pela rede • Acesso através de usuário e senha • Utiliza o TCP como protocolo de transporte FTP • FTP utiliza duas conexões TCP paralelas para transferência de arquivos • Conexão de controle: – Trocar informações de controle: usuário, senha, comandos FTP específicos – Conexão persistente • Conexão de dados: – Utilizada para o envio do arquivo – É uma conexão não persistente 24 22/05/2014 FTP • Dessa forma, FTP mantém informações de estado sobre o usuário • Como se dá o acesso a um servidor ftp? – ftp://[username]:[password]@[servidor] • Existem servidores FTP gratuitos na web – www.serversfree.com Comandos FTP • user nomeUser: nome de usuário • pass password: senha • list: listagem de arquivos no servidor remoto • retr nomeArquivo: obtenção de um arquivo no servidor remoto • stor nomeArquivo: comando que armazena um arquivo no diretório atual Comandos FTP • Outros comandos para mudança de diretório, modo da transferência, tipo (ASCII ou binário...) • Códigos de erro FTP disponíveis na RFC 959 25 22/05/2014 FTP • Problemas de segurança – Informações de usuário/senha não são codificadas – Usuário mal intencionado pode interceptar pacotes e “ler” a senha • FTPS (“FTP Secure”): a adição de mecanismos de segurança – TLS e SSL para criptografia dos dados • SFTP (Secure File Transfer Protocol): – Transferência de dados criptografados – Não é baseado no FTP, mas sim no SSH (Secure Shell) Correio Eletrônico • Envio assíncrono de mensagens pela rede • Três componentes principais – Agentes de usuário – Servidores de correio – SMTP (Simple mail transfer protocol) • Fluxo: A envia uma mensagem para B – Agentes de usuário: leitura, resposta, composição e armazenamento de mensagens – Agente de usuário envia a mensagem ao servidor de correio – Quando B quer ler suas mensagens, seu agente de correio extrai de sua caixa de correio localizada no servidor Correio Eletrônico 26 22/05/2014 Correio Eletrônico • Servidores de correio formam o “núcleo” da infraestrutura do correio eletrônico • Cada um dos destinatários contem uma caixa postal localizada no servidor • A troca de mensagens é de servidor para servidor! • Se o servidor de correio de A não puder entregar a mensagem no servidor de B – Mantém uma fila de mensagens – Tentará o envio mais tarde SMTP • É o principal protocolo de emails – Porém é antigo • Utiliza TCP como protocolo da camada de transporte • Envia mensagens do servidor de correio do remetente até o servidor de correio do destinatário – Portanto, SMTP tem dois lados: lado cliente (remetente) e lado servidor (destinatário) – Quando um servidor de correio envia mensagem, age como um cliente SMTP – Quando um servidor de correio recebe mensagem, age como um servidor SMTP SMTP • Características – Utiliza porta TCP 25 – SMTP utiliza conexões persistentes – Apenas envia as mensagens entre os servidores de correio dos usuários 27 22/05/2014 SMTP • Exemplo de mensagem Cliente: MAIL FROM: <[email protected]> Server: 250 [email protected] Sender ok Cliente: RCPT TO: <[email protected]> Server: 250 [email protected] Recipient ok Cliente: DATA Server: 354 Enter mail, end with “.” on a line by itself Cliente: Olá user2, ... cont. da mensagem ... . Server: 250 Message accepted for delivery Cliente: QUIT SMTP • Em geral, o servidor de correio é mantido pelo ISP (empresa, universidade) • Como se dá o acesso através do agente de usuário?? Como obter as mensagens que estão no servidor de correio?? – Não pode usar SMTP: protocolo de envio (push) não de recuperação (pull) – PROTOCOLOS DE ACESSO: POP3, IMAP e HTTP POP3 • Post Office Protocol • Protocolo de acesso simples – Porém limitado • Utiliza TCP porta 110 • Três fases após a conexão TCP 1. Autorização: agente de usuário envia nome e senha para autenticação 2. Transação: as mensagens são recuperadas e podem ser marcadas/desmarcadas para serem apagadas 3. Atualização: servidor apaga as mensagens e o cliente é desconectado 28 22/05/2014 POP3 • O POP3 trabalha no modo “ler-e-apagar” ou “ler-e-guardar” • O segundo é indicado quando é necessário ler emails de diferentes máquinas • Protocolo sem estado entre sessões – Armazena pouca informação de estado: mensagens marcadas para apagar – Simplifica a implementação – Não há como manter uma hierarquia de pastas entre diferentes máquinas com o POP3: não há servidor remoto. IMAP • Internet Mail Access Protocol • Protocolo de acesso com mais recursos que o POP3 – Implementação é mais complexa • IMAP associa uma mensagem a uma pasta – Quando a mensagem chega a um servidor, é associada a uma pasta INBOX do destinatário – Destinatário pode transferir a mensagem para uma nova pasta – IMAP também permite a obtenção de apenas o cabeçalho de uma mensagem Mas e na prática? Usamos IMAP ou POP3?? • Na prática, atualmente se utilizam mais emails através da web: protocolo HTTP (ou HTTPS) – Emails lidos e enviados através dos browsers – Hotmail, Yahoo! Mail... – Usuário se comunica com sua caixa postal remota via protocolo HTTP – Contudo, o envio de emails de servidor de correio para servidor pode usar SMTP 29 22/05/2014 DNS (Domain Name System) • Conceito de facilidade de identificação (e memorização) – Hostname: www.g1.com.br ou – IP: 186.192.90.5 • Hospedeiros são identificados das duas formas DNS: o que é? 1. Um banco de dados distribuído implementado em uma hierarquia de servidores de nome 2. Protocolo que fornece o serviço de diretório da Internet 1. Permite que hospedeiros consultem o banco de dados DNS • Serviço principal do DNS: – Traduzir o nome do host para um IP válido • Outros serviços – Apelidos de Hospedeiro: um host com nome complicado pode ter um ou mais apelidos: relay1.west-coast.enterprise.com pode ter apelidos como enterprise.com e www.enterprise.com • relay1.west-coast.enterprise.com é o nome canônico • DNS pode obter o nome canônico – Apelidos de servidor de correio: mesma situação anterior, DNS pode ser utilizado para obter o nome canônico do servidor de correio – Distribuição de carga: auxiliam a realizar distribuição de carga servidores Web “movimentados”. O DNS associa um conjunto de endereços IP (servidores) a um único nome canônico. Assim, o DNS faz um rodízio de tradução de nome, usando um dos IPs do conjunto. 30 22/05/2014 DNS • Protocolo DNS utiliza porta UDP 53 • Esse protocolo é comumente usado por outros protocolos da camada de aplicação – HTTP, FTP, SMTP... – De que forma? DNS – Aplicação obtendo endereço IP 1. A própria máquina do usuário executa o lado cliente da aplicação DNS 2. Navegador (exemplo HTTP) extrai o hostname (www.someschool.edu) e o repassa para o lado cliente da aplicação DNS 3. Cliente DNS envia uma consulta contendo o nome do hospedeiro para um servidor DNS 4. Cliente recebe a resposta que inclui o endereço IP correspondente 5. Navegador pode iniciar uma conexão com o IP obtido • Note que o DNS insere um atraso nas aplicações! Funcionamento do DNS • DNS é constituído de um grande n° de servidores ao redor do mundo • Abordagem de DNS centralizada não é adequada para a Internet – – – – Único ponto de falha Volume de tráfego Banco de dados centralizado distante Manutenção • Assim, é utilizada abordagem distribuída e hierárquica 31 22/05/2014 Funcionamento do DNS • Mapeamentos distribuídos entre os servidores de nomes • Três classes de servidores – Servidores de nome raiz – DNS de alto nível (TLD) – DNS com autoridade Funcionamento do DNS Funcionamento do DNS • Servidores de nomes raiz – “13 servidores” na Internet – Na realidade, cada um dos 13 formam um conglomerado de servidores (para fins de confiabilidade e segurança) • Serv. de nomes TLD – Responsáveis pelos domínios de alto nível como com, org, net, edu e gov; – E também por todos os domínios de alto nível de países como fr, uk, br... • Serv. de nomes com autoridade – Entidades desejam que seus endereços sejam acessíveis publicamente na Internet – Devem fornecer registros DNS acessíveis – Esses registros são abrigados pelos Servidores de nome com autoridade – Uma instituição pode implementá-lo ou pagar por algum provedor desse serviço 32 22/05/2014 Funcionamento do DNS http://www.root-servers.org/ Funcionamento do DNS • “Fora da hierarquia” existem os DNS locais: • Cada ISP tem um (ou mais) servidor DNS local – Para descobrir, basta acessar os detalhes da conexão no Windows ou Linux... – DNS “abertos” surgiram como alternativa aos DNS locais dos ISPs (OpenDNS, Google Public DNS...) • Quando um usuário faz uma pergunta ao DNS, a pergunta é enviada para o DNS local – E então encaminhada para dentro da hierarquia Funcionamento do DNS • Exemplo 33 22/05/2014 Funcionamento do DNS (hierarquia) 1. Hospedeiro cis.poly.edu primeiramente envia uma mensagem de consulta ao servidor DNS local 2. O servidor DNS local transmite a mensagem a um servidor raiz 3. Servidor raiz percebe o sufixo (edu) e retorna uma lista de IPs contendo servidores DNS TLD, responsáveis pelo sufixo 4. Servidor de nomes local retransmite a mensagem de consulta a um servidor DNS TLD 5. TLD percebe o sufixo (umass.edu) e responde com o servidor de nomes com autoridade (dns.umass.edu) 6. Por fim, o serv. De nomes com autoridade responde com o endereço IP de gaia.cs.umass.edu Funcionamento do DNS • 4 mensagens de consulta; 4 de resposta • Consultas recursivas e iterativas • Normalmente as consultas seguem esse padrão • Nem sempre o servidor DNS TLD conhece o servidor de nomes com autoridade – Nesse caso, pode acontecer de ocorrerem 100% de consultas recursivas • Como diminuir a quantidade de consultas DNS?? – Cache DNS! Cache DNS • Ideia é reduzir o atraso inserido nas aplicações, por causa das buscas pelo endereço IP – Reduzir a quantidade de consultas DNS • Quando um servidor DNS recebe uma resposta DNS, o servidor armazena essas informações por um período determinado – Normalmente servidores locais guardam por 2 dias • Com o cache, o servidor local pode retornar o IP imediatamente, sem necessidade de consultar nos outros servidores 34 22/05/2014 Registro DNS • Mensagem de resposta carrega um registro • Consiste em uma tupla: (Name, Value, Type, TTL) • TTL é o tempo de vida útil do registro • Exemplo (ignorando TTL): (relay1.bar.foo.com, 145.37.93.126,A) • Type=A significa que Name é um hostname e Value é um IP • Type‘s: – NS (Name é um domínio, Value um servidor DNS com autoridade), – CNAME (nome canônico) – MX (Value é um nome canônico e seu apelido está em Name) DNS na prática • Como obter um endereço IP? – nslookup – Utilizando API de programação (java InetAddress, JNDI) • Como os endereços são inseridos no DNS?? Quem mantém o DNS?? – Através de entidades registradoras – Registram domínios nos bancos de dados do DNS (e cobra uma taxa) – No Brasil: • A. Telecom S/A • Locaweb Serviços de Internet S/A • ... Aplicações P2P • Aplicações vistas até agora – Todas na arquitetura cliente/servidor • P2P (Peer-to-Peer): Pares se conectam diretamente entre si • Com P2P há dependência mínima (se houver) de servidores funcionais 35 22/05/2014 Aplicações P2P • Segurança como principal problema • Administração é descentralizada: mais difícil de gerenciar • Aplicações P2P – Distribuição de arquivos: BitTorrent – Telefonia P2P da internet: Skype Distribuição de arquivos P2P • Cada Par pode redistribuir qualquer parte de um arquivo para outros pares – Auxiliando no processo de distribuição • Arquiteturas P2P possuem autoescalabilidade – Cada par aumenta a demanda por arquivos, mas também aumenta a capacidade de redistribuição • Protocolo P2P mais popular: BitTorrent BitTorrent • Normalmente, os blocos dos arquivos tem tamanho igual de 256 Kbytes • Torrent: coleção de pares que participam da distribuição de determinado arquivo • Quando um novo par “chega” ao torrent, ele se registra com o rastreador – Assim o rastreador mantem registro dos pares do torrent 36 22/05/2014 BitTorrent BitTorrent • Quais blocos solicitar – Técnica rarest first (o mais raro primeiro): Blocos mais raros dentre os seus vizinhos, para proporcionar maior rapidez na redistribuição desses blocos mais raros • Quais pedidos atender – A faz identificação de 4 pares com maior taxa (pares “unchoked”) – Novo vizinho B aleatoriamente escolhido (“optimistically unchoked”) para envio de dados (a cada 30 segundos) – Se A e B estão “satisfeitos” com a troca, A adiciona B em sua lista de 4 pares (e B adiciona A) – A prioridade é dada a vizinhos que fornecem dados com a maior taxa de upload Aplicações P2P • Métodos de consulta de arquivo para P2P – Diretório centralizado – Inundação de consultas 37 22/05/2014 Diretório Centralizado • Troca de arquivos se dá diretamente entre os pares Diretório Centralizado • Depende da estrutura do servidor – Pode acarretar em um gargalo de desempenho • Violação dos direitos autorais Inundação de consultas • Gnutella: aplicação de compartilhamento de arquivos • Abordagem completamente distribuída • Não utiliza servidor centralizado • Formam uma rede de sobreposição 38 22/05/2014 Inundação de consultas Inundação de consultas • No Gnutella, pares enviam mensagens aos pares próximos • Conexões TCP já existentes montando a rede de sobreposição • Mensagem é retransmitida para cada vizinho – Inundação de consultas na rede! • Quando o arquivo é encontrado, forma-se uma conexão direta entre os pares (fora da rede de sobreposição) – Objetos transferidos com HTTP! Inundação de consultas • Muitas consultas: tráfego significativo na rede • Solução parcial: inundação de escopo limitado • Inundação com esse controle era limitada a um campo de pares. – Ao chegar no limite, o par não retransmitia a consulta, reduzindo o tráfego (mas o arquivo poderia nunca ser encontrado!) 39 22/05/2014 Skype • Serviços de mensagens instantâneas – Pares se comunicam em tempo real • Aplicações: – Telefonia de PC para telefone – Telefone para PC – Videoconferência PC a PC Skype • Skype usa técnicas P2P de diversas formas – Vão além da distribuição de conteúdo e compartilhamento de arquivos • Protocolos proprietários, dados criptografados Skype – Funcionamento geral • Nós no Skype organizados em uma rede sobreposta – Classificados em pares “Superpar” ou par comum • Como é feita a descoberta de pares? • Skype mantém um índice que mapeia usuários a endereços IP – Índice é distribuído entre os Superpares • Quando há uma chamada de A para B, o cliente Skype de A procura o índice distribuído para determinar o endereço IP de B 40 22/05/2014 RESUMO • Desenvolvimento de aplicações de rede requer – software que execute em sistemas finais diferentes – Escolha da arquitetura (cliente-servidor, P2P) • Socket é a interface entre o processo da camada de aplicação e o protocolo da camada de transporte • Serviços da camada de transporte podem ser – Transferência confiável, Segurança, Vazão, Temporização – Apenas os dois primeiros são disponíveis na Internet RESUMO • Protocolo HTTP: protocolo da Web – Cliente-servidor – Cliente solicita documentos, servidor responde – Protocolo simples, sem estado • Cookies permitem o monitoramento das informações de usuário • Comando GET Condicional verifica se objetos estão desatualizados no proxy • FTP: protocolo de transferência de arquivos – Conexão de controle e conexão de dados RESUMO • SMTP: protocolo de envio de emails – Utiliza TCP, envia mensagens entre os servidores de correio – POP3 e IMAP (e HTTP) como protocolos de acesso aos emails • DNS: traduz nome de hospedeiro para IP – Banco de dados distribuído – Protocolo que fornece o serviço de consultas ao banco de dados • Aplicações P2P: conexão direta entre pares comunicantes – BitTorrent, Skype • Consulta por diretório centralizado ou por Inundação de consultas 41 22/05/2014 Para Casa • Leitura do cap. 2 (Livro do Kurose) • Lista de Exercícios 2 (Camada de Aplicação) Bibliografia 1. Kurose, James F.; Ross, Keith W.; Redes de Computadores e a Internet (preferencialmente a 5ª Edição). São Paulo, SP: Pearson Addison Wesley, 2010. 2. Tanenbaum, Andrew S. Redes de computadores (3ª edição) Rio de Janeiro, RJ : Campus, 1997. 42