GA-027 Redes de Computadores Camada de Aplicação Artur Ziviani LNCC/MCT Aplicação de rede Execução nos sistemas finais com comunicação via rede Processos no SO usando infra-estrutura de comunição Ex: software do navegador web se comunicando com servidor web Dispositivos do núcleo da rede não trabalham na camada de aplicação Fonte: Kurose e Ross, Computer Networking: A Top-Down Approach
Paradigmas de comunicação Cliente-Servidor Peer-to-peer (P2P) (detalhado mais tarde) Cliente - Servidor Cliente iniciativa da comunicação com servidor pode se conectar intermitentemente pode ter endereço dinâmico sem comunicação direta com outros clientes Fonte: Kurose e Ross, Computer Networking: A Top-Down Approach
Cliente - Servidor Servidor sempre ativo aguardando conexões fornece serviços solicitados pelo cliente endereço permanente Fonte: Kurose e Ross, Computer Networking: A Top-Down Approach Comunicação de processos Processo: programas em execução Comunicação entre dois processos no mesmo sistema final: comunicação interprocessos (definido pelo SO) em diferentes sistemas finais: troca de mensagens via rede Foco do curso
Comunicação de processos Tanto cliente quanto servidor precisam falar a mesma linguagem Protocolo de aplicação: conjunto de regras sintáticas e semânticas que governam a troca de mensagens domínio público proprietátios exs: skype, KaZaA definidos por RFCs para interoperabilidade exs: HTTP, SMTP, FTP,... Sockets Processo envia / recebe mensagens para / de seu socket Fonte: Kurose e Ross, Computer Networking: A Top-Down Approach Socket como uma porta entre camada de aplicação e transporte API: escolha do protocolo de transporte e passagem de parâmetros
Endereçamento de processos Para troca de mensagens, processo deve estar associado a um identificador Endereço (IP) do hospedeiro não basta? Além do endereço IP do hospedeiro, número da porta associada ao processo no hospedeiro Portas Portas bem conhecidas (well-known ports) convencionalmente associadas a serviços comuns - IANA Servidor http: 80 Servidor smtp: 25... Solicitadas pelos processos, atribuídas pelo SO
Serviços da camada de transporte UDP (User Datagram Protocol) não confiável sem conexão com detecção de erro TCP (Transmission Control Prot.) confiável com conexão orientado a bytes Serviço UDP Identificação de uma aplicação endereço IP + UDP + número da porta Características sem conexão não confiável messagens podem ser perdidas erros podem ser detectados, não recuperados não preserva seqüência
Serviço TCP Identificação de uma aplicação endereço IP + TCP + número da porta Características orientado a conexão bidirecional confiável orientado a fluxo de bytes Qual serviço de transporte a aplicação necessita? Métricas relevantes de qualidade perda de dados atraso variação do atraso (jitter) vazão
Perda de pacotes Congestionamento na rede Erros de transmissão Algumas aplicações podem tolerar perdas (ex. aúdio) Outras exigem transmissão confiável (ex. transferência de arquivos)? Atraso Fatores de atraso Atraso de fila Atraso de processamento Atraso de acesso ao meio Atraso de transmissão Atraso de propragação
Atraso Aplicações tolerantes a atrasos importância para integridade ex: transferência de arquivos Aplicações não tolerantes a atrasos interatividade / tempo real ex.: telefonia internet, jogos on-line Jitter Decorrente da variação do atraso entre pacotes consecutivos Afeta sincronia e interatividade ex: aúdio e vídeo
Vazão Capacidade efetiva de transmissão da aplicação throughput - vazão de dados goodput - vazão efetiva de dados (sem retransmissões) Vazão Algumas aplicações exigem vazão mínima para serem efetivas ex: multimídia Outras aplicações melhoram desempenho conforme vazão aumenta ex: aplicações elásticas (transferência de arquivos)
TCP x UDP Serviço TCP Orientado à conexão: conexão entre cliente e servidor Transporte confiável entre os processos de envio e recepção Controle de fluxo: o transmissor não sobrecarrega o receptor Controle de congestionamento: protege rede do excesso de tráfego Não oferece: garantias de temporização e de banda mínima Serviço UDP Transferência de dados não confiável entre transmissor e receptor Não oferece: estabelecimento de conexão, confiabilidade, controle de fluxo e de congestionamento, garantia de temporização e de banda mínima Nomes e endereços Pessoas: muitos identificadores RG, CPF, nome,... Internet (hosts, roteadores,...) Endereços IP (32 bits): endereçamento de datagramas nomes - ex: martin.lncc.br - usado por humanos
Nomes e endereços Como relacionar nomes e endereços? DNS - Domain Name System Base de dados distribuída implementada numa hierarquia de muitos servidores de nomes Protocolo de camada de aplicação comunicação com servidores de nomes para resolver nomes (mapeamento nome/endereço) Nota: função interna da Internet, implementada como protocolo! da!camada de aplicação Complexidade na borda da rede DNS Base distribuída e hierárquica Fonte: Kurose e Ross, Computer Networking: A Top-Down Approach Cliente quer o IP para www.amazon.com Cliente consulta um servidor de raiz para encontrar o servidor DNS com Cliente consulta o servidor DNS com para obter o servidor DNS amazon.com Cliente consulta o servidor DNS amazon.com para obter o endereço IP para www.amazon.com
DNS Existem 13 servidores de nome raiz no mundo Fonte: Kurose e Ross, Computer Networking: A Top-Down Approach Servidores de nome raiz São contatados pelos servidores de nomes locais que não podem resolver um nome Buscam servidores de nomes autorizados se o mapeamento do nome não for conhecido Conseguem o mapeamento Retornam o mapeamento para o servidor de nomes local DNS: exemplo Fonte: Kurose e Ross, Computer Networking: A Top-Down Approach
Web e HTTP HTTP: hypertext transfer protocol Protocolo da camada de aplicação da Web Modelo cliente/servidor Cliente: navegador que solicita, recebe e apresenta objetos da Web Servidor: envia objetos em resposta a requisições do(s) cliente(s) HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068 Fonte: Kurose e Ross, Computer Networking: A Top-Down Approach Conexões HTTP TCP entre o cliente e o servidor HTTP não persistente No máximo, um objeto é enviado sobre uma conexão TCP Múltiplas conexões para múltiplos objetos O HTTP/1.0 utiliza HTTP não persistente HTTP persistente Múltiplos objetos podem ser enviados sobre uma conexão O HTTP/1.1 utiliza conexões persistentes em seu modo padrão Fonte: Wikipedia
Cliente HTTP: faça você mesmo 1) Telnet para um servidor Web: telnet www.lncc.br 80 2) Digite um pedido GET HTTP: GET / HTTP/1.1 host: www.lncc.br 3) Examine a mensagem de resposta enviada pelo servidor HTTP!!! Abre conexão TCP para a porta 80 (porta default do servidor HTTP) em www.lncc.br Qualquer coisa digitada é enviada para a porta 80 em www.lncc.br Digitando isso (tecle carriage return duas vezes), você envia este pedido HTTP GET mínimo (mas completo) ao servidor HTTP Correio eletrônico Três componentes principais: Agentes de usuário Servidores de correio Simple mail transfer protocol: SMTP Agente de usuário leitor de correio Composição, edição, leitura de mensagens de correio Ex.: Outlook, Thunderbird,... Fonte: Kurose e Ross, Computer Networking: A Top-Down Approach
Correio eletrônico Servidores de correio Caixa postal contém mensagens que chegaram (ainda não lidas) para o usuário Fila de mensagens contém as mensagens de correio a serem enviadas Protocolo SMTP permite aos servidores de correio trocarem mensagens entre si Cliente : servidor de correio que envia Servidor : servidor de correio que recebe Fonte: Kurose e Ross, Computer Networking: A Top-Down Approach Alice envia email para Bob Fonte: Kurose e Ross, Computer Networking: A Top-Down Approach
Paradigmas de comunicação Cliente-Servidor Peer-to-peer (P2P) Peer-to-peer (P2P) Compartilhamento de recursos e serviços computacionais diretamente entre sistemas Software executado em cada elemento (peer) é equivalente em funcionalidade Cada participante age como cliente e servidor ao mesmo tempo (servent)
P2P Cada participante paga a sua participação fornecendo acesso a (alguns de) seus recursos exceções são comuns: freeriders como controlar? incentivo / reputação Sistemas P2P têm recebido grande atenção: usuários empresas meios acadêmicos 8000000 Consummer IP traffic growth 6000000 TB/month 4000000 2000000 0 2005 2006 2007 2008 2009 2010 2011 Web/Mail/FTP P2P Gaming VideoComm VoIP VideotoPC VideotoTV Fonte: Global IP Traffic Forecast and Methodology, 2006 2011
P2P puro : Características Sem coordenação central Sem base de dados central Sem ponto único de falha ou gargalo Nenhum peer tem visão global do sistema Todos os dados e serviços são acessíveis de qualquer peer Peers são autônomos Peers e conexões não são confiáveis P2P: Vantagens Escalabilidade Não há gargalo para crescimento Robustez Não há ponto de falha único Flexibilidade Auto-configuração / configuração dinâmica
P2P: Napster P2P: Gnutella
P2P: Super-nós P2P: KaZaA
Aplicações P2P Muitas aplicações recentes IM VoIP Video (Internet TV)... Compartilhamento de arquivos E outras nem tanto... roteadores servidores de email P2P: cenário recente Fonte: The absolute majority of all Internet traffic is p2p!filesharing, the liquidculture notebook, March 2008
P2P: cenário recente Fonte: The absolute majority of all Internet traffic is p2p!filesharing, the liquidculture notebook, March 2008