Capítulo 2: Camada de Aplicação Metas do capítulo: Mais metas do capítulo aspectos conceituais e de protocolos específicos: implementação de protocolos de aplicação em redes paradigma cliente servidor modelos de serviço dns 2: Camada de Aplicação 1 Aplicações e protocolos da camada de aplicação Aplicação: processos distribuídos em comunicação executem em hospedeiros no “espaço de usuário” trocam mensagens para implementar aplicação p.ex., correio, transf. de arquivo, WWW Protocolos da camada de apl. uma “parte” da aplicação define mensagens trocadas por apls e ações tomadas usam serviços providos por protocolos de camadas inferiores aplicação transporte rede enlace física aplicação transporte rede enlace física aplicação transporte rede enlace física 2: Camada de Aplicação 2 Aplicações de rede: algum jargão Um processo é um programa que executa num hospedeiro. 2 processos no mesmo hospedeiro se comunicam usando communicação entre processos definida pelo sistema operacional (SO). 2 processos em hospedeiros distintos se comunicam usando um protocolo da camada de apalicação. Um agente de usuário (UA) é uma interface entre o usuário e a aplicação de rede. WWW: browser Correio: leitor/compositor de mensagens streaming audio/video: tocador de mídia 2: Camada de Aplicação 3 Paradigma cliente-servidor (C-S) Apl. de rede típica tem duas partes: cliente and servidor Cliente: inicia contato com o servidor (“fala primeiro”) tipicamente solicita serviço do servidor para WWW, cliente implementado no browser; para correio no leitor de mensagens Servidor: provê ao cliente o serviço requisitado p.ex., servidor WWW envia página solicitada; servidor de correio entrega mensagens aplicação transporte rede enlace física pedido resposta aplicação transporte rede enlace física 2: Camada de Aplicação 4 Protocolos da camada de aplicação (cont). API: interface de P: como um processo pode programação de “identificar”o outro aplicações processo com o qual quer se comunicar? define interface entre endereço IP do aplicação e camada de hospedeiro do outro transporte processo socket (= tomada) : API “número de porta” da Internet permite que o hospedeiro 2 processos se comunicam enviando dados para um socket ou lendo dados de um socket receptor determine a qual processo deve ser entregue a mensagem … voltamos mais tarde a este assunto. 2: Camada de Aplicação 5 De que serviço de transporte uma aplicação precisa? Perda de dados algumas apls (p.ex. áudio) podem tolerar algumas perdas outras (p.ex., transf. de arquivos, telnet) requerem transferência 100% confiável Largura de banda algumas apls (p.ex., multimídia) requerem quantia mínima de banda para serem “viáveis” outras apls (“apls elásticas”) conseguem usar qq quantia de banda disponível Temporização algumas apls (p.ex., telefonia Internet, jogos interativos) requerem baixo retardo para serem “viáveis” 2: Camada de Aplicação 6 Requisitos do serviço de transporte de apls comuns Aplicação transferência de arqs correio documentos WWW áudio/vídeo de tempo real áudio/vídeo gravado jogos interativos apls financeiras Sensibilidade temporal Perdas Banda sem perdas sem perdas sem perdas tolerante elástica elástica elástica áudio: 5Kb-1Mb vídeo:10Kb-5Mb como anterior > alguns Kbps elástica tolerante tolerante sem perdas não não não sim, 100’s mseg sim, alguns segs sim, 100’s mseg sim e não 2: Camada de Aplicação 7 Serviços providos por protocolos de transporte Internet serviço TCP: orientado a conexão: setup controle de congestionamento: requerido entre cliente, servidor transporte confiável entre processos remetente e receptor controle de fluxo: remetente não vai “afogar” receptor estrangular remetente quando a rede carregada não provê: garantias temporais ou de banda mínima serviço UDP: transferência de dados não confiável entre processos remetente e receptor não provê: setup da conexão, confiabilidade, controle de fluxo, controle de congestionamento, garantias temporais ou de banda mínima P: Qual é o interesse em ter um UDP? 2: Camada de Aplicação 8 Apls Internet: seus protocolos e seus protocolos de transporte Aplicação correio eletrônico accesso terminal remoto WWW transferência de arquivos streaming multimídia servidor de arquivo remoto telefonia Internet Protocolo da camada de apl Protocolo de transporte usado smtp [RFC 821] telnet [RFC 854] http [RFC 2068] ftp [RFC 959] proprietário (p.ex. RealNetworks) NSF proprietário (p.ex., Vocaltec) TCP TCP TCP TCP TCP ou UDP TCP ou UDP tipicamente UDP 2: Camada de Aplicação 9 DNS: Domain Name System Pessoas: muitos identificadores: base de dados distribuída protocolo de camada de aplicação CPF, nome, no. de Passaporte hospedeiros, roteadores Internet : Domain Name System: endereço IP (32 bit) usado p/ endereçar datagramas “nome”, e.g., jambo.ic.uff.br - usado por gente P: como mapear entre nome e endereço IP? implementada na hierarquia de muitos servidores de nomes permite hospedeiros, roteadores, servidores de nomes communicarem para resolver nomes (tradução endereço/nome) note: função imprescindível da Internet implementada como protocolo de camada de aplicação complexidade na borda da rede 2: Camada de Aplicação 10 Servidores de nomes DNS Por quê não centralizar o Nenhum servidor mantém todos os mapeamento nomeDNS? para-endereço IP ponto único de falha servidor de nomes local: volume de tráfego cada provedor, empresa tem base de dados servidor de nomes local (default) centralizada e distante pedido DNS de hospedeiro vai primeiro ao servidor de nomes manutenção (da BD) local Não é escalável! servidor de nomes autoritativo: p/ hospedeiro: guarda nome, endereço IP dele pode realizar tradução nome/endereço para este nome 2: Camada de Aplicação 11 DNS: Servidores raíz procurado por servidor local que não consegue resolver o nome servidor raíz: procura servidor autoritativo se mapeamento desconhecido obtém tradução devolve mapeamento ao servidor local ~ uma dúzia de servidores raíz no mundo (+ espelhos) 2: Camada de Aplicação 12 Exemplo simples do DNS hospedeiro manga.ic.uff.br requer endereço IP de www.cs.columbia.edu 2 3 5 1. Contata servidor DNS local, pitomba.ic.uff.br servidor local 2. pitomba.ic.uff.br pitomba.ic.uff.br contata servidor raíz, se necessário 1 6 3. Servidor raíz contata servidor autoritativo cs.columbia.edu, se solicitante necessário manga.ic.uff.br servidor de nomes raíz 4 servidor autoritativo cs.columbia.edu www.cs.columbia.edu 2: Camada de Aplicação 13 Exemplo de DNS Servidor raíz: 2 pode não conhecer o 7 servidor de nomes autoritativo pode conhecer servidor de nomes intermediário: a quem contactar para descobrir o servidor de nomes autoritativo servidor de nomes raíz 6 servidor local pitomba.ic.uff.br 1 8 3 servidor intermediário saell.cc.columbia.edu 4 5 servidor autoritativo solicitante cs.columbia.edu manga.ic.uff.br www.cs.columbia.edu 2: Camada de Aplicação 14 DNS: consultas iteratadas consulta recursiva: transfere a responsabilidade de reolução do nome para o servidor de nomes cntatado carga pesada? consulta iterada: 2 3 4 7 servidor intermediário servidor local pitomba.ic.uff.br saell.cc.columbia.e 5 6 1 8 servidor consultado responde com o nome de um servidor de contato “Não conheço este nome, mas pergunte para esse servidor” servidor de nomes raíz consulta iterrada servidor autoritativo cs.columbia.edu solicitante manga.ic.uff.br www.cs.columbia.edu 2: Camada de Aplicação 15 DNS: uso de cache, atualização de dados uma vez um servidor qualquer aprende um mapeamento, ele o coloca numa cache local futuras consultas são resolvidas usando dados da cache entradas no cache são sujeitas a temporização (desaparecem depois de certo tempo) ttl = time to live (sobrevida) estão sendo projetados pela IETF mecanismos de atualização/notificação dos dados RFC 2136 http://www.ietf.org/html.charters/dnsind-charter.html 2: Camada de Aplicação 16