7. Camada de Aplicação DIN/CTC/UEM 2008
Principais Funções Oferece serviços de rede aos processos da aplicação Identifica e estabelece a disponibilidade dos recursos para a comunicação Sincroniza comunicação entre as aplicações Estabelece procedimentos para o caso de falhas Exemplos de protocolos: Transferência de arquivos File Transfer Protocol (FTP) Network File System (NFS) E-mail Simple Mail Transfer Protocol (SMTP) Internet Message Access Protocol (IMAP) Post Office Protocol (POP) Remote login Terminal Emulation Protocol (TELNET) Gerência de rede Simple Network Management Protocol (SNMP) Gerência de nomes Domain Name System Protocol (DNS)
The Big Picture
Domain Name System (DNS) A Internet é construída utilizando um esquema de endereçamento hierárquico Roteamento é baseado em classes de endereços ao invés de endereços individuais Problema: como associar o nome de um sítio na Internet ao seu endereço na rede? Solução: Domain Name System associa o nome de um domínio (domain) ao seu endereço Domínio é um grupo de máquinas que estão associadas ou geograficamente ou funcionalmente Um nome de domínio é uma cadeia de caracteres (letras e números) que representam um nome ou uma abreviação Todo domínio tem uma autoridade que controla a atribuição de nomes de seus sub-domínios Exemplo: www.registro.br controla a atribuição de endereços terminados com.br
Domain Name System (DNS) Nome de domínio é hierárquico Primeira parte carrega o nome da máquina Última parte carrega o nome do domínio de mais alto nível Exemplo: robot.ai.cs.yale.edu
Domain Name System (DNS) Alguns domínios no Brasil gov.br: entidades do governo org.br: entidades não governamentais, sem fins lucrativos com.br: atividades comerciais ind.br: indústrias mil.br: entidades militares edu.br: entidades de ensino g12.br: entidades de ensino fundamental e médio.br: entidades de ensino superior art.br: artes: música, pintura, folclore esp.br: entidades esportivas inf.br: provedores de informação (meios de comunicação, etc.) psi.br: provedores de serviçõs de Internet tmp.br: eventos temporários (feiras, etc.) can.br: candidatos am.br, fm.br, tv.br: emisoras de rádio e televisão Lista completa: registro.br/info/dpn.html
Domain Name System (DNS) Componentes Resolver: cliente que solicita as requisições Name Server: servidor que processa requisições e envia resposta Tipos de servidores Primário Informações criadas pelo administrador do domínio Único por domínio Secundário Mantém cópia das informações do domínio Periódicamente atualiza as informações Tipos de requisições Não Recursiva (Interativa) Servidor utiliza apenas as suas informações Retorna informação que mais se aproxima daquela requisitada Recursiva Servidor utiliza as suas informações e pode requisitar informações de outros servidores Retorna informação solicitada pela requisição
Domain Name System (DNS) Tipos de respostas Authoritative Servidor possui autoridade sobre o domínio Respostas sempre corretas Non-Authoritative Servidor não possui autoridade sobre o domínio Informação obtida a partir da cache Informações podem estar incorretas Diálogo típico
Domain Name System (DNS) Tipos de mapeamentos Direto Traduz nome da máquina para o seu endereço IP Reverso Traduz o endereço IP para o nome da máquina Domínio in-addr.arpa realiza o mapeamento inverso Exemplo: 52.0.2.10.in-addr.arpa contém informação sobre endereço 10.2.0.52 Outras informações Utiliza UDP nas comunicações Servidores operam seguindo a hierarquia dos nomes Nomes de domínios não diferenciam maiúsculo e minúsculo Cada componente do nome pode ter até 63 caracteres, e nomes completos até 255 caracteres Nomes de domínios seguem divisões poĺıticas e organizacionais e não existe relação entre hierarquia DNS e endereços IP Somente o nível mais alto é globalmente regulamentado Por exemplo, Nova Zelândia e Grã Bretanha utilizam.ac em vez de.edu e.co em vez de.com
Domain Name System (DNS) Servidor DNS Aceita requisições para tradução de nomes Cada servidor tem informação segura sobre certos nomes (configurados pelo administrador) e insegurança sobre outros (armazenados em cache) Um servidor deve ter informação segura sobre todos os sub-domínios da sua zona ou conhecer o endereço de outros servidores que a tenham Servidores cobrem regiões não sobrepostas no espaço de nomes Todos os servidores podem encontrar o servidor raiz Caching Todo servidor (e clientes também) devem armazenar informação obtida de transasões anteriores Essa prática funciona bem porque a informação é relativamente estática e em geral utilizada várias vezes Recursivo ou interativo? Clientes normalmente utilizam recursivo Servidores (atuando como clientes) utilizam interativo
Domain Name System (DNS) Resource Records Todos os domínios têm informação associada a eles Um resource record consiste de: nome do domínio tempo de vida (time to live) em segundos classe (sempre IN para Internet) tipo de registro (record) valor do registro
Domain Name System (DNS) Resource Records Start of Authority (SOA) domain ttl IN SOA origin contact (serial refresh retry expire minimum) domain: nome desse domínio ttl: tempo (em segundos) que clientes devem armazenar a informação desse registro origin: nome do servidor que mantém esse registro contact: e-mail do administrador desse domínio serial: versão do registro refresh: intervalo (em segundos) de atualização do servidor DNS secundário retry: intervalo (em segundos) de retentativa de atualização do servidor DNS secundário expire: validade (em segundos) da informação mantida pelo servidor DNS secundário minimum: tempo que o servidor DNS secundário mantém a informação desse registro
Domain Name System (DNS) Resource Records Name Server (NS) domain ttl IN NS server server: nome do servidor com informação segura sobre esse domínio Address v4 (A) e v6 (AAAA) host ttl IN A address host ttl IN AAAA address host: nome da máquina address: endereço IP da máquina Main Exchanger (MX): define o servidor de e-mail domain ttl IN MX preference host preference: prioridade do servidor Canonical Name (CNAME): define um apelido nickname ttl IN CNAME host nickname: apelido (alias)
Domain Name System (DNS) Resource Records Pointer (PTR): converte endereço IP em nome de máquina name ttl IN PTR host name: endereço IP no formato in-addr.arpa Well Known Services (WKS): identifica serviços disponíveis host ttl IN WKS address protocol service protocolo: protocolo de transporte (exemplo, TCP) service: lista de serviços (exemplo, snmp ftp www) Host Information (HINFO) host ttl IN HINFO hardware software hardware: identifica o hardware da máquina software: identifica o sistema operacional da máquina Notações especiais Símbolo @ substitui domínio origem Nomes completos no 1 o campo são terminados com ponto Nomes terminados sem ponto devem ser complementados com domínio de origem (exemplo, rowboat = rowboat.cs.vu.nl.)
Domain Name System (DNS) Exemplo de Resource Records
Domain Name System (DNS) Berkeley Internet Name Domain (BIND) Implementação mais utilizada em sistemas UNIX Componentes: Resolver, Name Server e arquivos de dados do domínio (resource records) Configuração do Resolver Contém nome do domínio padrão (default) Contém nome do(s) servidor(es) de nomes utilizado(s) Armazenada no arquivo /etc/resolv.conf Exemplo domain redes.unb.br domínio default nameserver 164.41.67.130 servidor de nomes 1 nameserver 164.41.67.131 servidor de nomes 2
Domain Name System (DNS) Berkeley Internet Name Domain (BIND) Configuração do Name Server Armazenada no arquivo /etc/named.boot Algumas linhas de exemplo (para BIND 8.2) options { directory "/var/named"; forwarders {10.0.0.1;10.0.0.2;}; forward first; allow-recursion {192.168.3.0/24;}; }; zone "." { type hint; file "root.servers"; }; zone "example.com" in { type master; file "master/master.example.com"; allow-transfer {192.168.23.1;}; }; diretório dos arquivos de dados para onde encaminhar perguntas encaminha antes de tentar resolver recursão só para hosts locais informação sobre um domain informação sobre root domain onde informação está
Correio Eletrônico Uma das primeira aplicações a se beneficiarem da interconexão de computadores em redes Atualmente ubíquo (onipresente) Muitas semelhanças com o sistema postal (snail mail) Especificação da Internet prevaleceu apesar de esforços para padronização internacional (com X.400) Caracteristicas do serviço Confiável, com confirmação de recebimento opcional Serviço sem conexão (exemplo de serviço sem conexão usando protocolo orientado a conexão, por exemplo TCP) Protocolos especificam transferência de arquivos, formato e codificação da mensagem, e formato do endereço Funções: compor, transferir, reportar, mostrar e dispor Outras funções: auto-encaminhar, responder em férias, mailing lists, alta prioridade, filtrar, etc. Dois subsistemas: User Agent e Message Transfer Agent
Correio Eletrônico Especificação RFCs 821 e sucessor 2821: protocolo de transmissão RFCs 822 e sucessor 2822: formato da mensagem Arquitetura
Correio Eletrônico User Agent Composição e exibição da mensagem Disposição da mensagem (eliminação, arquivamento, encaminhamento) Comunicação com o MTA local Espera endereço no formato: username@domain Muitos exemplos: Outlook, Thunderbird, Eudora, etc. Message Transfer Agent Mantém mensagens ainda não lidas Controla fila de mensagens a serem enviadas Protocolo SMTP (Simple Message Transfer Protocol) permite troca de mensagens entre MTAs
Correio Eletrônico SMTP Cliente SMTP estabelece conexão TCP com os servidores SMTP destinatários utilizando porta 25 Diálogo composto de 3 fases: Handshaking, Transferência de mensagens, e Fechamento Mensagem (corpo e cabeçalho) deve utilizar apenas codificação ASCII de 7 bits Exemplo de diálogo: S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <alice@crepes.fr> S: 250 alice@crepes.fr... Sender ok C: RCPT TO: <bob@hamburger.edu> S: 250 bob@hamburger.edu... Recipient ok C: DATA S: 354 Enter mail, end with "."on a line by itself C: Do you like ketchup? C: How about pickles? C:. S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection
Correio Eletrônico SMTP Utiliza conexões persistentes (vários request-reply em uma mesma conexão) Fim da mensagem indicada por CRLF. CRLF Tente usar o SMTP você mesmo (como enviar um e-mail sem ter o cliente): Digite telnet servername 25 Deve aparecer uma resposta 220 do servidor Utilize os comandos HELO, MAIL FROM, RCPT TO, DATA, QUIT l Formato da mensagem Originalmente apenas texto ASCII Definido o Multipurpose Internet Mail Extension (MIME) para multimídia, outros idiomas que não o inglês, etc. Conteúdos em diversos formatos definidos na RFC 1521
Correio Eletrônico Cabeçalho (header) da mensagem
Correio Eletrônico MIME Protocolo que permite a transmissão de dados não-texto Cabeçalho indica conteúdo do tipo MIME Cabeçalho MIME Exemplo de cabeçalho
Correio Eletrônico MIME Tipos e subtipos
Correio Eletrônico Protocolos de acesso SMTP (ou ESMT) entrega e armazena no servidor do destino Como o usuário acessa e recupera as mensagens? Utilizando um protocolos de acesso Post Office Protocol (POP): usuários apenas fazem o download de mensagens; oferece funcionalidade reduzida; difícil para o usuário móvel Internet Mail Access Protocol (IMAP): mais complexo; permite manipulação de mensagens armazenadas no servidor HTTP (exemplo, Hotmail, Yahoo!Mail, etc.)
Correio Eletrônico POP3 Permite que o UA contacte o MTA para copiar mensagens Após conexão, diálogo passa por 3 estados: Autorização, Transação, e Atualização Alguns comandos USER: especifica usuário PASS: especifica senha STAT: obtém quantidade de mensagens LIST: obtém lista e tamanhos das mensagens RETR: recupera mensagem DELE: marca mensagem para descarte QUIT: descarta mensagens marcadas e fecha conexão TCP
Correio Eletrônico Exemplo de diálogo POP
Correio Eletrônico Comparação POP e IMAP
Transferência de Arquivos File Transfer Protocol (FTP) Transferência de arquivo de/para host remoto (veja RFC 959) Modelo cliente-servidor (cliente inicia transferência) Diálogo: Cliente contacta servidor utilizando TCP na porta 21 e estabelece conexão de controle Cliente obtém autorização para acesso Cliente navega pelo sistema remoto de diretórios Ao receber um um pedido de transferência de arquivo, servidor estabele uma conexão de dados com o cliente utilizando TCP na porta 20 Após transferência de arquivo, conexão de dados é fechada Servidor mantém estado da conexão Dados e controle utilizam canais separados
Transferência de Arquivos File Transfer Protocol (FTP) Comandos enviados como texto ASCII pelo canal de controle USER username PASS password LIST: lista de arquivos no diretório atual RETR filename: retrieve STOR filename: store Respostas Código seguido de frase (similar ao HTTP) 331 Username OK, password required 125 data connection already open; transfer starting 425 Can t open data connection 452 Error writing file
Transferência de Arquivos File Transfer Protocol (FTP) FTP original é inseguro porque senhas, arquivos, comandos e respostas são enviados sem encriptação (podem ser captados por um packet sniffer) A solução usual a esse problema é utilizar SFTP (SSH File Transfer Protocol) ou FTPS (FTP over SSL) (veja RFC 4217) FTP utiliza múltiplas conexões TCP: 1 para controle e 1 para cada download, upload ou listing Alta latência devido ao número de comandos para iniciar a transferência Não existe verificação de integridade no receptor; se a transferência é interrompida o receptor não consegue saber se o arquivo está completo ou não Alguns servidores utilizam checksum
World Wide Web (WWW) Ou simplesmente Web Estrutura para acesso de documentos conectados e espalhados pelo globo Milhões de máquinas conectadas
World Wide Web (WWW) Uma página da Web é composta de objetos A base é um arquivo HTML (Hypertext Markup Language) que inclui referência a vários outros objetos Objetos podem ser arquivo HTML, imagem JPEG, applet Java, arquivo de áudio, etc. Cada objeto tem um endereço URL (Uniform Resource Locator) Exemplo URL: http://www.uem.br/din/pics/pic.gif protocolo html, domínio www.uem.br, diretório din/pics, e arquivo pic.gif Lado do cliente (browser) Interpretador HTML Páginas não HTML com uso de helpers, plug-ins Lado do servidor Otimização para acesso rápido: server farms, multithreading, etc.
World Wide Web (WWW) Uniform Resource Locator (URL)
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Especifica regras para a interação cliente-servidor Cliente utiliza browser que faz pedidos, recebe e mostra objetos Servidor envia objetos em resposta aos pedidos Camada de aplicação da Web HTTP/1.0: veja RFC 1945 HTTP/1.1: veja RFC 2616 Tipicamente utiliza TCP como protocolo de transporte Operações HTTP são denominadas métodos Requisição consiste de 1 ou mais linhas de texto ASCII especificando o método na primeira linha Resposta consiste de linha de status (com código de 3 dígitos) e possivelmente informação adicional
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Utiliza TCP porta 80 Cliente inicia conexão e solicita objetos Servidor aceita conexão e responde às requisições Ao final conexão TCP é fechada Conexão HTTP não tem estados Servidor não mantém qualquer informação sobre as requisiões dos clientes
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Exemplo de operação Usuário entra com a URL www.uem.br/home.html Cliente HTTP inicia conexão TCP, porta 80, para servidor HTTP de www.uem.br Cliente envia request message (contendo a URL) para servidor Cliente recebe resposta contendo objeto e apresenta o conteúdo Servidor HTTP em www.uem.br espera conexões TCP na porta 80 Servidor aceita conexão e avisa cliente Servidor recebe pedido, monta response message contendo o objeto solicitado e envia Servidor fecha conexão
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Não-persistente 1 objeto é enviado por conexão TCP Servidor analisa pedido, envia resposta e fecha conexão TCP HTTP/1.0 opera dessa maneira 2 RTT (Round Trip Time) para obter 1 objeto Sofre com slow start do TCP Browsers usualmente abrem várias conexões paralelas Persistente Na mesma conexão TCP vários objetos são trazidos Persistent sem pipelining Nova requisição enviada sómente após receber resposta anterior 1 RTT por objeto Persistent com pipelining Requisições enviadas assim que objetos referenciados são encontrados Com sorte, 1 RTT por todos os objetos Modo default para HTTP/1.1
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Mensagens: request e response Formato ASCII para leitura por humanos Mensagem de requisição: formato
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Mensagem de requisição: exemplo
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Mensagem de requisição: métodos (ou verbos) HEAD: mesma resposta obtida com o GET mas sem o corpo da mensagem de resposta GET: requisita o objeto especificado POST: submete dados para serem processados (por exemplo, formulário HTML) PUT: upload objeto especificado DELETE: apaga o objeto especificado TRACE: ecoa a requisição recebida OPTIONS: retorna os métodos HTTP respaldados pelo servidor CONNECT: converte conexão em um túnel TCP/IP (usualmente para converter para conexão encriptada)
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Mensagem de resposta: exemplo
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Mensagem de resposta: códigos de status 1xx: informação; requisição recebida e sendo processada 2xx: sucesso; requisição recebida, entendida e aceita 3xx: redireção; cliente necessita procedimentos adicionais para completar requisição 4xx: erro do cliente; sintaxe ruim ou requisição não pode ser atendida pelo servidor 5xx: erro do servidor; requisição válida mas que não pode ser atendida 100 Continue servidor recebeu cabeçalho da requisição e precisa do corpo da mensagem 200 OK requisição foi bem-sucedida 301 Moved Permanently objeto requisitado foi movido permanentemente; nova URL no campo Location da mensagem de resposta 400 Bad Request requisição não pode ser atendida 404 Not Found documento requisitado não existe 505 HTTP Version Not Supported versão HTTP não é respaldada pelo servidor
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Faça Você Mesmo Conecte-se a um servidor HTTP e abra uma conexão TCP na porta 80 telnet www.din.uem.br 80 Digite um pedido GET e tecle 2 vezes carriage return GET /~elvio/index.html HTTP/1.0 Verifique a resposta
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Autenticação Objetivo: controlar acesso ao servidor Sem estados: cliente apresenta autorização a cada requisição Autorização: tipicamente nome e senha l authorization colocada em linha no cabeçalho Se ausente, servidor recusa acesso e envia WWW authenticate Browser mantém nome e senha em cache para evitar que usuário tenha que digitá-los seguidamente
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) Cookie l Servidor envia cookie ao cliente em uma mensagem de resposta Exemplo: Set-cookie: 1678453 Cliente apresenta o cookie em requisições futuras Exemplo: cookie: 1678453 Servidor compara informação recebida com informação armazenada para: autenticação; lembrar preferências do usuário, escolhas anteriores, etc. Desvantagens: permitem obter informação sobre usuário (nome, e-mail, etc.)
World Wide Web (WWW) Hypertext Transfer Protocol (HTTP) GET Condicional l Objetivo: evitar que servidor envie objeto que já está armazenado no cliente (em cache) Cliente especifica data do objeto armanezando na requisição If-modified-since: date Resposta do servidor não contém dados se o objeto armazenado está atualizado HTTP/1.0 304 Not Modified
World Wide Web (WWW) Proxy Server (Web Cache) Objetivo: atender o cliente sem envolver o servidor de Web originador da informação Usuário configura browser para realizar acesso através de um proxy Cliente envia todas as requisições HTTP para proxy server Se o objecto existe na cache ele é retornado Ou proxy server solicita do servidor original
World Wide Web (WWW) ll Proxy Server (Web Cache) Porque Web Caching? Armazenamento perto do cliente Menor tempo de resposta Reduz tráfego com servidor distante Menor custo com enlaces externos
Peer to Peer (P2P) l Rede do tipo ad-hoc Presença do servidor nem sempre necessária Computadores finais podem comunicar-se diretamente Peers (parceiros) estão conectados intermitentemente (nem sempre com o mesmo endereço IP) Fácil de ser expandido mas difícil de ser gerenciado
Peer to Peer (P2P) Procura extrair vantagem da grande quantidade de recursos disponíveis na borda da rede Operação básica é de compartilhamento de arquivos Afilia-se a rede Publica e compartilha arquivos Procura por arquivos Obtém arquivo Aplicações: Compartilhamento de arquivos (áudio, vídeo, código) Telefonia (Skype) Comunicação (Instant Messaging) Jogos TV (Joost)
Peer to Peer (P2P) Questão: Quanto tempo seria necessário para 1 servidor distribuir um arquivo para N parceiros?
Peer to Peer (P2P) Distribuição de arquivos: BitTorrent
Peer to Peer (P2P) Distribuição de arquivos: BitTorrent Arquivo é dividido em pedaços com 256KB Peer entrando na torrent: Não tem nenhum pedaço; vai acumulá-los ao longo do tempo Registra-se com tracker e consegue uma lista de peers Conecta-se a subconjundo de peers (denominados vizinhos) Peer recebe e envia pedaços ao mesmo tempo Uma vez que o arquivo completo foi obtido, peer pode deixar torrent ou permanecer ajudando outros Obtendo pedaços Em um instante qualquer, cada peer pode ter um subconjunto diferente de pedaços do arquivo Cada peer pergunta aos vizinhos quais pedaços eles têm e solicita primeiro transferência daqueles mais raros Enviando pedaços Peer envia a 4 vizinhos na mais alta taxa de que capáz e espera o mesmo tratamento A posição desses 4 vizinhos é reavalizada a cada 10 segundos A cada 30 segundos um outro peer é escolhido aleatoriamente
Peer to Peer (P2P) Busca por informação Index: relaciona informação a localização do peer (endereço IP e número de porta) Compartilhamento de arquivos (e-mule) Index rastreia localização dos arquivos compartilhados Peers precisam comunicar index o que eles têm Peers procuram no index arquivos que eles querem Comunicação (Instant messaging, IM) Index relaciona nomes a localizações Quando um usuário começa a aplicação IM ele informa a sua localização Peers buscam no index o endereço IP dos usuários
Peer to Peer (P2P) l Index centralizado Arquitetura do Napster original 1. Quando peer conecta-se, ele informa ao servidor central o seu endereço IP e o seu conteúdo 2. Alice pergunta por um artigo 3. Alice pede arquivo a Bob Problemas: Ponto único de falha Possível engarrafamento no servidor Pirataria: alvo é óbvio
Peer to Peer (P2P) Index descentralizado: Query flooding Sem servidor central; totalmente descentralizado Usado por Gnutella Cada peer indexa os arquivos que ele mantém para compartilhamento Utiliza rede em grafo construída sobre rede física Enlace entre peers X e Y significa que existe uma conexão TCP entre eles Cada peer está conectado a até 10 vizinhos Query flooding Mensagem de Query enviada por TCP ao vizinhos Vizinhos encaminham adiante Query Quando ítem é encontrado, mensagem QueryHit é encaminada no sentido inverso
Peer to Peer (P2P) Query flooding