cap2-Kurose - MAURO OLIVEIRA

Server: Apache/2.0.52 (CentOS)\r\n. Last-Modified: Tue ...... ex., chave = hash(“Led Zeppelin IV”); é por isto que é chamada de tabela de “hash” distribuída. 91.
展开查看详情

1.Capítulo 2: Camada de Aplicação suruagy@cin.ufpe.br Baseado nos slides de Kurose e Ross 2: Camada de Aplicação 1

2.2: Camada de Aplicação 2 Capítulo 2: Roteiro 2.1 Princípios de aplicações de rede 2.2 A Web e o HTTP 2.3 Transferência de arquivo: FTP 2.4 Correio Eletrônico na Internet 2.5 DNS: o serviço de diretório da Internet 2.6 Aplicações P2P 2.7 Programação e desenvolvimento de aplicações com TCP 2.8 Programação de sockets com UDP

3.2: Camada de Aplicação 3 Capítulo 2: Camada de Aplicação Metas do capítulo: aspectos conceituais e de implementação de protocolos de aplicação em redes modelos de serviço da camada de transporte paradigma cliente servidor paradigma peer-to-peer aprender sobre protocolos através do estudo de protocolos populares da camada de aplicação: HTTP FTP SMTP/ POP3/ IMAP DNS Criar aplicações de rede programação usando a API de sockets

4.2: Camada de Aplicação 4 Algumas aplicações de rede Correio eletrônico A Web Mensagens instantâneas Login em computador remoto como Telnet e SSH Compartilhamento de arquivos P2P Jogos multiusuários em rede Streaming de vídeos armazenados ( YouTube , Hulu , Netflix ) Telefonia por IP (Skype) Videoconferência em tempo real Busca ... ...

5.2: Camada de Aplicação 5 Criando uma aplicação de rede Programas que Executam em (diferentes) sistemas finais Comunicam-se através da rede p.ex., servidor Web se comunica com o navegador Programas não relacionados ao núcleo da rede Dispositivos do núcleo da rede não executam aplicações dos usuários Aplicações nos sistemas finais permite rápido desenvolvimento e disseminação aplicação transporte rede enlace física aplicação transporte rede enlace física aplicação transporte rede enlace física

6.2: Camada de Aplicação 6 Arquiteturas das aplicações de rede Estruturas possíveis das aplicações: Cliente-servidor Peer-to-peer (P2P)

7.2: Camada de Aplicação 7 Arquitetura cliente-servidor Servidor: Sempre ligado Endereço IP permanente Escalabilidade com data centers Clientes: Comunicam-se com o servidor Podem estar conectados intermitentemente Podem ter endereços IP dinâmicos Não se comunicam diretamente com outros clientes cliente / servidor

8.2: Camada de Aplicação 8 Arquitetura P2P Não há servidor sempre ligado Sistemas finais arbitrários se comunicam diretamente Pares solicitam serviços de outros pares e em troca proveem serviços para outros parceiros: Autoescalabilidade – novos pares trazem nova capacidade de serviço assim como novas demandas por serviços. Pares estão conectados intermitentemente e mudam endereços IP Gerenciamento complexo peer-peer

9.2: Camada de Aplicação 9 Comunicação entre Processos Processo: programa que executa num sistema final processos no mesmo sistema final se comunicam usando comunicação interprocessos (definida pelo sistema operacional) processos em sistemas finais distintos se comunicam trocando mensagens através da rede Processo cliente: processo que inicia a comunicação Processo servidor: processo que espera ser contactado Nota: aplicações com arquiteturas P2P possuem processos clientes e processos servidores

10.Sockets Os processos enviam/ recebem mensagens para/dos seus sockets Um socket é análogo a uma porta Processo transmissor envia a mensagem através da porta O processo transmissor assume a existência da infra-estrutura de transporte no outro lado da porta que faz com que a mensagem chegue ao socket do processo receptor 2: Camada de Aplicação 10 Internet controlado pelo SO Controlado pelo desenvolvedor da aplicação transporte aplicação física enlace rede processo transporte aplicação física enlace rede processo socket

11.2: Camada de Aplicação 11 Endereçamento de processos Para que um processo receba mensagens, ele deve possuir um identificador Cada hospedeiro possui um endereço IP único de 32 bits P: o endereço IP do hospedeiro no qual o processo está sendo executado é suficiente para identificar o processo? Resposta: Não, muitos processos podem estar executando no mesmo hospedeiro O identificador inclui tanto o endereço IP quanto os números das portas associadas com o processo no hospedeiro . Exemplo de números de portas: Servidor HTTP: 80 Servidor de Correio: 25 Para enviar uma msg HTTP para o servidor Web gaia.cs.umass.edu Endereço IP: 128.119.245.12 Número da porta: 80 Mais sobre isto posteriormente.

12.2: Camada de Aplicação 12 Os protocolos da camada de aplicação definem Tipos de mensagens trocadas: ex. mensagens de requisição e resposta Sintaxe das mensagens: campos presentes nas mensagens e como são identificados Semântica das msgs : significado da informação nos campos Regras para quando os processos enviam e respondem às mensagens Protocolos abertos: definidos em RFCs Permitem a interoperação ex , HTTP e SMTP Protocolos proprietários: Ex., Skype

13.2: Camada de Aplicação 13 De que serviços uma aplicação necessita? Integridade dos dados (sensibilidade a perdas) algumas apls (p.ex., transf . de arquivos, transações web) requerem uma transferência 100% confiável outras ( p.ex . áudio) podem tolerar algumas perdas Temporização (sensibilidade a atrasos) algumas apls (p.ex., telefonia Internet, jogos interativos) requerem baixo retardo para serem “viáveis” Vazão ( throughput ) algumas apls (p.ex., multimídia) requerem quantia mínima de vazão para serem “viáveis” outras apls (“ apls elásticas”) conseguem usar qq quantia de banda disponível Segurança Criptografia, integridade dos dados, ...

14.2: Camada de Aplicação 14 Requisitos de aplicações de rede selecionadas Aplicação transferência de arqs correio documentos Web áudio/vídeo em tempo real áudio/vídeo gravado jogos interativos mensagem instantânea Perdas sem perdas sem perdas sem perdas tolerante tolerante tolerante sem perdas Vazão elástica elástica elástica áudio: 5kbps-1Mbps vídeo:10kbps-5Mbps Igual acima Alguns kbps-10Mbps elástica Sensibilidade ao atraso não não não sim, 100’s mseg sim , alguns segs sim, 100’s mseg sim e não

15.2: Camada de Aplicação 15 Serviços providos pelos protocolos de transporte da Internet Serviço TCP: transporte confiável entre processos remetente e receptor controle de fluxo: remetente não vai “afogar” receptor controle de congestionamento: estrangular remetente quando a rede estiver carregada não provê: garantias temporais ou de banda mínima orientado a conexão: apresentação requerida entre cliente e servidor Serviço UDP: transferência de dados não confiável entre processos remetente e receptor não provê: estabelecimento 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?

16.2: Camada de Aplicação 16 Apls Internet: seus protocolos e seus protocolos de transporte Aplicação correio eletrônico acesso terminal remoto Web transferência de arquivos streaming multimídia telefonia Internet Protocolo da camada de apl SMTP [RFC 2821] telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] HTTP (ex. Youtube ) RTP [RFC 1889] SIP, RTP, proprietário (ex., Skype) Protocolo de transporte usado TCP TCP TCP TCP TCP ou UDP TCP ou UDP

17.Tornando o TCP seguro TCP & UDP Sem criptografia Senhas em texto aberto enviadas aos sockets atravessam a Internet em texto aberto SSL Provê conexão TCP criptografada Integridade dos dados Autenticação do ponto terminal SSL está na camada de aplicação Aplicações usam bibliotecas SSL, que “falam” com o TCP API do socket SSL Senhas em texto aberto enviadas ao socket atravessam a rede criptografadas Vide Capítulo 7 2: Camada de Aplicação 17

18.2: Camada de Aplicação 18 Capítulo 2: Roteiro 2.1 Princípios de aplicações de rede 2.2 A Web e o HTTP 2.3 Transferência de arquivo: FTP 2.4 Correio Eletrônico na Internet 2.5 DNS: o serviço de diretório da Internet 2.6 Aplicações P2P 2.7 Programação e desenvolvimento de aplicações com TCP 2.8 Programação de sockets com UDP

19.2: Camada de Aplicação 19 A Web e o HTTP Primeiro uma revisão... Páginas Web consistem de objetos um objeto pode ser um arquivo HTML, uma imagem JPEG, um applet Java, um arquivo de áudio,… Páginas Web consistem de um arquivo base HTML que inclui vários objetos referenciados Cada objeto é endereçável por uma URL Exemplo de URL: www.someschool.edu/someDept/pic.gif nome do hospedeiro nome do caminho

20.2: Camada de Aplicação 20 Protocolo HTTP HTTP: hypertext transfer protocol protocolo da camada de aplicação da Web modelo cliente/servidor cliente: browser que pede, recebe (usando o protocolo HTTP) e “visualiza” objetos Web servidor: servidor Web envia (usando o protocolo HTTP) objetos em resposta a pedidos PC executando Explorer Servidor executando servidor Web Apache iphone executando o navegador Safari pedido http pedido http resposta http resposta http

21.2: Camada de Aplicação 21 Mais sobre o protocolo HTTP Usa serviço de transporte TCP: cliente inicia conexão TCP (cria socket ) ao servidor, porta 80 servidor aceita conexão TCP do cliente mensagens HTTP (mensagens do protocolo da camada de apl) trocadas entre browser (cliente HTTP) e servidor Web (servidor HTTP) encerra conexão TCP HTTP é “sem estado” servidor não mantém informação sobre pedidos anteriores do cliente Protocolos que mantêm “estado” são complexos! história passada (estado) tem que ser guardada Caso caia servidor/cliente, suas visões do “estado” podem ser inconsistentes, devem ser reconciliadas Nota

22.2: Camada de Aplicação 22 Conexões HTTP HTTP não persistente No máximo um objeto é enviado numa conexão TCP A conexão é então encerrada Baixar múltiplos objetos requer o uso de múltiplas conexões HTTP persistente Múltiplos objetos podem ser enviados sobre uma única conexão TCP entre cliente e servidor

23.2: Camada de Aplicação 23 Exemplo de HTTP não persistente Supomos que usuário digita a URL www.algumaUniv.br/algumDepartmento/inicial.index 1a . Cliente http inicia conexão TCP a servidor http (processo) a www.algumaUniv.br. Porta 80 é padrão para servidor http. 2. cliente http envia mensagem de pedido de http (contendo URL) através do socket da conexão TCP. A mensagem indica que o cliente deseja receber o objeto algumDepartamento / inicial.index 1b. servidor http no hospedeiro www.algumaUniv.br espera por conexão TCP na porta 80. “aceita” conexão, avisando ao cliente 3. servidor http recebe mensagem de pedido, formula mensagem de resposta contendo objeto solicitado e envia a mensagem via socket tempo (contém texto, referências a 10 imagens jpeg)

24.2: Camada de Aplicação 24 Exemplo de HTTP não persistente (cont.) 5 . cliente http recebe mensagem de resposta contendo arquivo html, visualiza html. Analisando arquivo html, encontra 10 objetos jpeg referenciados 6. Passos 1 a 5 repetidos para cada um dos 10 objetos jpeg 4. servidor http encerra conexão TCP . tempo

25.2: Camada de Aplicação 25 Modelagem do tempo de resposta Definição de RTT (Round Trip Time ) : intervalo de tempo entre a ida e a volta de um pequeno pacote entre um cliente e um servidor Tempo de resposta: um RTT para iniciar a conexão TCP um RTT para o pedido HTTP e o retorno dos primeiros bytes da resposta HTTP tempo de transmissão do arquivo total = 2RTT+tempo de transmissão do arquivo tempo para transmitir o arquivo Inicia a conexão TCP RTT solicita arquivo RTT arquivo recebido tempo tempo

26.HTTP persistente Problemas com o HTTP não persistente: requer 2 RTTs para cada objeto SO aloca recursos do hospedeiro ( overhead ) para cada conexão TCP os browser freqüentemente abrem conexões TCP paralelas para recuperar os objetos referenciados HTTP persistente o servidor deixa a conexão aberta após enviar a resposta mensagens HTTP seguintes entre o mesmo cliente/servidor são enviadas nesta conexão aberta o cliente envia os pedidos logo que encontra um objeto referenciado pode ser necessário apenas um RTT para todos os objetos referenciados 2: Camada de Aplicação 26

27.2: Camada de Aplicação 27 Mensagem de requisição HTTP Dois tipos de mensagem HTTP: requisição , resposta mensagem de requisição HTTP: ASCII (formato legível por pessoas) linha da requisição (comandos GET, POST, HEAD) linhas de cabeçalho Carriage return, line feed indicam fim de mensagem GET /index.html HTTP/1.1 Host: www-net.cs.umass.edu User-Agent: Firefox/3.6.10 Accept: text/ html,application / xhtml+xml Accept-Language: en-us,en;q =0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7 Keep-Alive: 115 Connection: keep-alive

28.2: Camada de Aplicação 28 Mensagem de requisição HTTP: formato geral

29.Enviando conteúdo de formulário Método POST : Páginas Web frequentemente contêm formulário de entrada Conteúdo é enviado para o servidor no corpo da mensagem Método URL: Usa o método GET Conteúdo é enviado para o servidor no campo URL: 2: Camada de Aplicação 29 www.somesite.com/animalsearch?key=monkeys&bananas