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
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!
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-to- Peer (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
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
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
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
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
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
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
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)
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
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
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
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 seu disco ou RAM, os passos em uma 1-5 mensagem devem ser de resposta HTTP e envia ao cliente repetidos!! 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 Para o recebimento do arquivo home.index: 2 RTT + tempo de transmissão do arquivo Para receber os 10 arquivos JPG Total: Adiciona 10*(2 RTT + tempo de transm. do arquivo) 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
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
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
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
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. Adiciona uma linha no arquivo de cookies 2. Essa linha possui o nome de hospedeiro e o n de identificação
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
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
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
Exemplo GET Condicional
Proxy faz consulta ao servidor 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: GET Condicional
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
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
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
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
SMTP Exemplo de mensagem Cliente: MAIL FROM: <user@bol.com.br> Server: 250 user@bol.com.br Sender ok Cliente: RCPT TO: <user2@ibest.com.br> Server: 250 user2@ibest.com.br 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
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
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.
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
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
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
Exemplo Funcionamento do DNS
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 armazenar 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
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
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
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
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
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!)
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
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
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.