Redes de Computadores Camada de Aplicação Profa. Priscila Solís Barreto Criando uma nova aplicação de rede Escrever programas que • Executem sobre diferentes sistemas finais e • Se comuniquem através de uma rede. • Por exemplo, Web – software de servidor Web se comunicando com software do browser • Os dispositivos do núcleo da rede não trabalham na camada de aplicação • Esta estrutura permite um rápido desenvolvimento de aplicação Arquiteturas de aplicação • Cliente-servidor • Peer-to-peer (P2P) • Híbrida de cliente-servidor e P2P Arquitetura cliente-servidor Servidor: • Hospedeiro sempre ativo • Endereço IP permanente • Fornece serviços solicitados pelo cliente Clientes: • Comunicam-se com o servidor • Podem ser conectados intermitentemente • Podem ter endereço IP dinâmico • Não se comunicam diretamente uns com os outros Arquitetura cliente-servidor Exemplos de aplicações que utilizam arquitetura clientesevidor: • • • • • WEB Transferência de arquivos Login remoto Email Blogs Arquitetura P2P • Nem sempre há um servidor • Sistemas finais arbitrários comunicamse diretamente • Pares são intermitentemente conectados e podem trocar seus endereços IP cada vez que forem ligados • Ex.: Emule, Gnutella Arquitetura P2P • Altamente escaláveis mas difíceis de gerenciar : Milhões de pares podem participar da comunidade de compartilhamento de arquivos, sendo que cada um deles funciona como um servidor e contribui com recursos para a comunidade. Cada par adicional não apenas aumenta a demanda, mas também aumenta a capacidade de serviço. Híbrida de cliente-servidor e P2P Exemplo : Napster – Extinto – Compartilhamento de arquivos MP3 • Transferência de arquivo P2P - Arquivos eram trocados diretamente entre pares. • Busca centralizada de arquivos: Um par consultava um servidor central para determinar quais pares que estavam em funcionamento tinham um arquivo MP3 desejado. • Conteúdo de registro dos pares no servidor central • Consulta de pares no mesmo servidor central para localizar o conteúdo Híbrida de cliente-servidor e P2P Instant messaging • Bate-papo entre dois usuários é P2P - O texto enviado entre dois usuários não passa pelo servidor. • Detecção/localização centralizada de presença: • Usuário registra seu endereço IP com o servidor central quando fica online • Usuário contata o servidor central para encontrar endereços IP dos amigos on-line. Comunicação de processos • Programas que rodam em vários sistemas finais comunicamse por processos. • Quando os processos estão rodando no mesmo sistema final, eles comunicam-se entre si usando comunicação interprocessos, cujas regras são determinadas pelo sistema operacional. Comunicação de processos Processo: programa executando num hospedeiro • Dentro do mesmo hospedeiro: dois processos se comunicam usando comunicação interprocesso (definido pelo Sistema Operacional) • Processos em diferentes hospedeiros se comunicam por meio de troca de mensagens • Processo cliente: processo que inicia a comunicação • Processo servidor: processo que espera para ser contatado Comunicação de processos Processo: programa executando num hospedeiro • Por exemplo, na aplicação Web, o processo browser de um cliente troca mensagens com o processo de um servidor Web. • Em um sistema de compartilhamento de arquivos P2P, um arquivo é transferido de um processo que está em um par para outro que está em outro par. Sockets • Um processo envia/recebe mensagens para/de seu socket. • O socket é análogo a uma porta. • O processo de envio empurra a mensagem para fora da porta. • O processo de envio confia na infra-estrutura de transporte no outro lado da porta que leva a mensagem para o socket no processo de recepção. • É também denominado API (Interface de Programação da Aplicação): (1) escolha do protocolo de transporte; (2) habilidade para fixar poucos parâmetros (Tamanho do buffer e segmentos). Camada de aplicação - Sockets • É também denominado API (Interface de Programação da Aplicação): • Os únicos controles que o desenvolvedor da aplicação tem do lado da camada de transporte são: • (1) escolha do protocolo de transporte; • (2) Talvez a habilidade para fixar poucos parâmetros (Tamanho do buffer e segmentos). Camada de aplicação-Processos de endereçamento • Para um processo receber mensagens, ele deve ter um identificador. • Um hospedeiro possui um único endereço IP de 32 bits (IPV-4). • O endereço IP do hospedeiro onde o processo está executando é suficiente para identificar o processo? • Não, muitos processos podem estar em execução no mesmo hospedeiro. • O identificador inclui o endereço IP e o número da porta associada ao processo no hospedeiro • Exemplos de números de porta: • Servidor HTTP: 80 • Servidor de Correio (SMTP) : 25 • O protocolo da camada de aplicação Um protocolo de camada de aplicação é apenas um pedaço de aplicação da rede. Exemplo: 1- Aplicação WEB e o protocolo de aplicação WEB, HTTP. Este define o formato e a seqüência das mensagens que são passadas entre o browser e o servidor WEB. 2- Correio eletrônico e o protocolo SMTP (RFC – 5321). Protocolo da camada de aplicação • Tipo das mensagens trocadas, mensagens de requisição e resposta. • Sintaxe dos tipos de mensagem: os campos nas mensagens e como são delineados. • Semântica dos campos, ou seja, significado da informação nos campos. • Regras para quando e como os processos enviam e respondem às mensagens. Protocolos de domínio público: • Definidos nas RFCs - IETF • Recomendados para interoperabilidade • Ex.: HTTP (RFC 2616), SMTP (5321) Protocolos proprietários: • Ex.: KaZaA Camada de aplicação De qual serviço de transporte uma aplicação necessita? TCP UDP Camada de aplicação Os serviços podem ser classificados segundo quatro dimenções: • • • • Transferência confiável de dados ( TCP ) Vazão (TCP e UDP não implementam) Temporização (TCP e UDP não implementam) Segurança (SSL (camada de sockets seguros implementam) Camada de aplicação Transferência confiável de dados: Perda de dados • Algumas aplicações (ex.: áudio) podem tolerar alguma perda. • Outras aplicações (ex.: transferência de arquivos, telnet) exigem transferência de dados 100% confiável. Camada de aplicação Vazão : Banda passante (TCP e UDP não implementam este serviço) • Algumas aplicações (ex.: multimídia) exigem uma banda mínima para serem “efetivas”. • Exemplo: Se uma aplicação de telefonia por Internet codifica voz a 32 bits/s, ela precisa enviar dados para a rede e fazer com que sejam entregues na aplicação receptora a essa mesma taxa. • Outras aplicações (“aplicações elásticas- Correio eletrônico, transferência de arquivos”) melhoram quando a banda disponível aumenta. Camada de aplicação Segurança (Fornecido pela camada de aplicação) • Codificação e decodificação de dados • Autenticação do ponto terminal. • Aperfeiçoamento do TCP : SSL – Camada de Sockets Seguros • Oferece serviços de segurança processo a processo incluindo, codificação, integridade dos dados e autenticação do ponto de chegada. • o SSL não é um terceiro protocolo no mesmo nível do TCP e do UDP, mas um aperfeiçoamento do TCP implementado na camada de aplicação. Camada de aplicação Serviço da camada de transporte: TCP Serviço Orientado à conexão • Apresentação • Envio full-duplex (simultânea) Serviço confiável de transporte • Quando um lado da aplicação passa uma cadeia de bytes para dentro de um socket, pode contar com o TCP para entregar a mesma cadeia de dados ao socket receptor sem falta de bytes nem bytes duplicados. Camada de aplicação Serviço da camada de transporte : TCP TCP Serviço Orientado à conexão • Apresentação • Envio full-duplex (simultânea) Serviço confiável de transporte • Quando um lado da aplicação passa uma cadeia de bytes para dentro de um socket, pode contar com o TCP para entregar a mesma cadeia de dados ao socket receptor sem falta de bytes nem bytes duplicados. Camada de aplicação Serviço do TCP • O TCP inclui um mecanismo de controle de congestionamento,voltado ao bem-estar geral da Internet e não ao benefício direto dos processos comunicantes. Este mecanismo limita a capacidade de transmissão de um processo quando a rede está congestionada. • A limitação da velocidade de transmissão pode ter um efeito muito prejudicial sobre aplicações de áudio e vídeo em tempo real que imponham uma limitação de largura de banda mínima. Camada de aplicação Serviço TCP: • Orientado à conexão: conexão requerida entre processos cliente e servidor • Apresentação • Transporte confiável: entre os processos de envio e recepção • Controle de congestionamento: protege a rede do excesso de tráfego Não oferece: garantias de temporização e de banda mínima. Ou seja, o TCP garante a entrega de todos os dados, mas não dá nehuma garantia quanto à velocidade de entrega ou aos atrasos experimentados. Serviço UDP: • Transferência de dados não confiável entre os processos transmissor e receptor • Não oferece: estabelecimento de conexão, confiabilidade, controle de congestionamento, garantia de temporização e de banda mínima. P.: Por que ambos? Por que existe o UDP? Camada de aplicação Aplicação acesso de terminais remotos Web transferência de arquivos telefonia Internet Correio eletrônico Protocolo de aplicação Protocolo de transporte Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] RTP ou proprietário (por exemplo, Skype) TCP TCP TCP tipicamente UDP SMTP (RFC 5321) TCP Camada de aplicação : WEB e HTTP • Página Web consiste de objetos • Objeto pode ser arquivo HTML, uma imagem JPEG, uma imagem GIF, applet Java, arquivo de áudio,… • A página Web consiste de arquivo- base HTML, que inclui vários objetos referenciados. • Cada objeto é endereçado por uma URL • Exemplo de URL: Web e HTTP • O protocolo da camada de aplicação HTTP define como cliente WEB os browsers (navegadores) requisitam páginas Web aos servidores WEB (Apache, Microsoft Internet Information Server). • Portanto a aplicação WEB consiste em: • Um padrão para o formato do documento – HTML. • Browsers Web - Firefox – Microsoft Internet Explore. • Servidores WEB- Apache, Microsoft Internet Information Server. • Protocolo da Camada de Aplicação – HTTP. 29 Visão geral do HTTP HTTP: HyperText Transfer Protocol • Protocolo da camada de aplicação da Web. Define o formato e a sequência das mensagens que são passadas entre o browser e o servidor Web. • Modelo cliente/servidor • Cliente: browser que solicita, recebe e apresenta objetos da Web • Servidor: envia objetos em resposta a pedidos • HTTP define a estrutura de menagens e o modo como o cliente e o servidor as trocam. • HTTP 1.0: RFC 1945 até 1997 • HTTP 1.1: RFC 2616 a partir de 1998 30 Web e HTTP HTTP utiliza TCP: • Cliente inicia conexão TCP (cria socket) para o servidor na porta 80. • Servidor aceita uma conexão TCP do cliente. • mensagens HTTP (mensagens do protocolo de camada de aplicação) são trocadas entre o browser (cliente HTTP) e o servidor Web (servidor HTTP). Web e HTTP HTTP utiliza TCP: • A conexão TCP é fechada. • Vantagem da arquitetura de camadas: O HTTP não precisa se preocupar com dados perdidos ou com detalhes de como o TCP recupera a perda de dados ou os reordena dentro da rede. Esta é tarefa do TCP e dos protocolos das camadas mais inferiores da pilha de protocolos. Web e HTTP HTTP é “um protocolo sem estado” • O servidor não mantém informação sobre os pedidos passados pelos clientes • Se um cliente solicita o mesmo objeto duas vezes em um intervalo de poucos segundos, o servidor não responde dizendo que acabou de enviar o objeto; em vez disso,envia novamente o objeto, pois não armazenou o estado do solicitação anterior. Conexões HTTP HTTP não persistente ( A conexão não persiste para outros objetos) • No máximo, um objeto é enviado sobre uma conexão TCP • O HTTP/1.0 utiliza HTTP não persistente HTTP persistente • Múltiplos objetos podem ser enviados sobre uma conexão • TCP entre o cliente e o servidor • O HTTP/1.1 utiliza conexões persistentes em seu modo padrão HTTP não persistente Usuário entra com a URL: www.dominio.br/pagina/home.index 1a. Cliente HTTP inicia conexão TCP ao servidor HTTP (processo) em www.dominio.br Porta 80 é a default para o servidor HTTP 2. Cliente HTTP envia HTTP request message (contendo a URL) para o socket da conexão TCP Tempo 1b. Servidor HTTP no hospedeiro www.dominio.br esperando pela conexão TCP na porta 80. “aceita” conexão, notificando o cliente 3. Servidor HTTP recebe mensagem de pedido, forma response message contendo o objeto solicitado (pagina/home.index), envia mensagem para o socket HTTP não persistente 4. Servidor HTTP fecha conexão TCP Tempo 5. Cliente HTTP recebe mensagem de resposta contendo o arquivo html, apresenta o conteúdo html. Analisando o arquivo html, encontra 10 objetos jpeg referenciados 6. Passos 1-5 são repetidos para cada um dos 10 objetos jpeg Note que cada conexão TCP transporta exatamente uma mensagem de requisição e uma mensagem de resposta. Nesse exemplo, quando um usuário solicita a página Web, são geradas 11 conexões TCP. HTTP não persistente Para estimar o tempo que transcorre entre a requisição e o recebimento de um arquivo-base HTTP por um cliente define-se (Round-Trip time – RTT ) como tempo de viagem de ida e volta. Tempo de resposta Definição de RRT (Round-Trip Time- Tempo de viagem de ida e volta: tempo para enviar um pequeno pacote que vai do cliente para o servidor e retorna Tempo de resposta: • Um RTT para iniciar a conexão TCP • Um RTT para requisição HTTP e primeiros bytes da resposta HTTP para retorno • Tempo de transmissão de arquivo Total = 2RTT+ tempo de transmissão 38 Mensagem HTTP request • Dois tipos de mensagens HTTP: request, response • HTTP request message: Linha de requisição (métodos) (comandos GET, POST, HEAD ) Linhas de cabeçalho O Browser esta dizendo ao servidor que não quer usar conexões persistentes: quer que o servidor feche a conexão após o envio do objeto requisitado. GET /somedir/page.html HTTP/1.1 Host: www.dominio.br Conection: close User-agent: Mozilla/4.0 Accept-language:fr O usuário prefere receber uma versão em francês do objeto, se existir.Caso contrário receberá o default 39 Mensagem HTTP request • Dois tipos de mensagens HTTP: request, response • HTTP request message: Linha de requisição (métodos) (comandos GET, POST, HEAD ) GET /somedir/page.html HTTP/1.1 Host: www.dominio.br Conection: open User-agent: Mozilla/4.0 Linhas de Accept-language:fr cabeçalho O usuário prefere receber uma versão em francês do objeto, se existir.Caso contrário receberá o default Mensagem HTTP request: formato geral 41 Entrada de formulário Método Post: • Página Web freqüentemente inclui entrada de formulário. O usuário preenche um formulário.Pode-se usar o modo GET também. • A entrada é enviada para o servidor no corpo da entidade Método URL – Utiliza o GET: • Inclue os dados digitados(nos campos dos formulários) no URL requisitado.Por exemplo, se um formulário usar tiver 2 campos e as entradas desses campos forem aaaa e bbbb, então a estrutura do URL será: www.somesite.com/animalsearch?aaaa&bbbb • • Utiliza o método GET • A entrada é enviada no campo de URL da linha de requisição: Tipos de métodos HTTP/1.0 • GET • POST • HEAD (utilizado para depuração) • Pede para o servidor deixar o objeto requisitado fora da resposta HTTP/1.1 • GET, POST, HEAD • PUT (edição) • O Cliente envia o arquivo no corpo da entidade para o caminho especificado no campo de URL. • DELETE (edição) • O cliente apaga o arquivo especificado no campo de URL. Mensagem HTTP response Linha de estado Linhas de cabeçalho Dados, ex.: arquivo html HTTP/1.1 200 OK Conection:close (indica que o servidor encerrará a conexão) Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html data data data data data ... Data e hora em que foi feito o envio do arquivo Códigos de status das respostas Na primeira linha da mensagem de resposta servidor cliente. Alguns exemplos de códigos: 200 OK • Requisição bem-sucedida, objeto requisitado a seguir nesta mensagem 301 Moved permanently • Objeto requisitado foi movido, nova localização especificada a seguir nesta mensagem (Location:) 400 Bad request • Mensagem de requisição não compreendida pelo servidor 404 Not Found • Documento requisitado não encontrado neste servidor 505 HTTP version not supported • a versão do protocolo HTTP requisitada não é suportada pelo servidor. Caches Web (Servidor Proxy - Proxy Server) Objetivo: atender o cliente sem envolver o servidor Web originador da informação • Usuário configura o browser: acesso Web é feito por meio de um proxy • Cliente envia todos os pedidos HTTP para o Cache Web • Se o objeto existe no Web cache: Web cache retorna o objeto • Ou o Cache Web solicita objeto do servidor original e então envia o objeto ao cliente Web caches (proxy server) • O cache atua tanto no servidor como no cliente • Tipicamente, o cache é instalado pelo ISP (universidade, empresa, ISP residencial). Por que Caching Web? • Reduz o tempo de resposta para a requisição do cliente • Reduz o tráfego num enlace de acesso de uma instituição. • Reduz o custo e o tráfego de dados de uma instituição à Intenet. FTP: o protocolo de transferência de arquivos • Transferência de arquivos de e para o computador remoto • Modelo cliente servidor • Cliente: lado que inicia a transferência (seja de ou para o lado remoto) • Servidor: hospedeiro remoto • FTP: RFC 959 • FTP servidor: porta 21 FTP: controle separado, conexões de dados • Os protocolos FTP e HTTP utilizam o TCP. No entanto, o FTP usa duas conexões TCP paralelas para transferir um arquivo: • Uma Conexão de Controle • Uma Conexão de Dados FTP: controle separado, conexões de dados • Cliente FTP contata o servidor FTP na porta 21 especificando o TCP como protocolo de transporte. • Cliente obtém autorização pela conexão de controle. • Cliente procura o diretório remoto enviando comandos pela conexão de controle. 50 FTP: controle separado, conexões de dados • Quando o servidor recebe um comando para uma transferência de arquivo, ele abre uma conexão de dados TCP para o cliente. • Após a transferência de um arquivo, o servidor fecha a conexão. • Servidor abre uma segunda conexão de dados TCP para transferir outro arquivo. • Conexão de controle: “fora da banda”. • Servidor FTP mantém “estado”: diretório atual, autenticação anterior. FTP: controle separado, conexões de dados • Assim, com o FTP, a conexão de controle permanece aberta durante toda a sessão do usuário, mas uma nova conexão de dados é criada para cada arquivo tranferido dentro de uma sessão. FTP comandos, respostas Exemplos de comandos na conexão de controle: • Envie um texto ASCII sobre canal de controle • USER username • PASS password • LIST retorna listagem do arquivo no diretório atual do servidor • RETR filename extrai o arquivo do servidor. Ativa o servidor para que abra uma conexão de dados e envie o arquivo requisitado por esta conexão. • STOR filename armazena o arquivo no hospedeiro remoto FTP comandos, respostas Cada comando é seguido de uma resposta, que é enviada do servidor ao cliente Exemplos de códigos de retorno • Código de status e frase (como no HTTP) • 331 Username OK, password required • 125 Conexão de dados já aberta; iniciando transferência • 425 Não é possível abrir a conexão de dados • 452 Erro ao escrever o arquivo Correio eletrônico SMTP Transfere mensagens de servidores de correio remetentes para servidores de correio destinatários. Três componentes principais: • Agentes de usuário • Servidores de correio • Simple mail transfer protocol: SMTP RFC 5321 Agente de usuário •“leitor de correio” • Composição, edição, leitura de mensagens de correio • Ex.: gmail Correio eletrônico: servidores de correio 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 Cenário: Alice envia mensagem para Bob HTTP 1) Alice usa o agente de usuário (UA) para compor a mensagem e enviar “para” [email protected] 2) O agente de usuário dela envia a mensagem para o seu servidor de correio; a mensagem é colocada na fila de mensagens. 3) O lado cliente do SMTP abre uma conexão TCP com o servidor de correio do Bob. 4) O cliente SMTP envia a mensagem de Alice pela conexão TCP. 5) O servidor de correio de Bob coloca a mensagem na caixa de correio de Bob. 6) Bob invoca seu agente de usuário para ler a mensagem. Cenário: Alice envia mensagem para Bob HTTP O STMP não usa servidores de correios intermediários para enviar a mensagem. Correio eletrônico: SMTP [RFC 2821] • Usa TCP para transferência confiável de mensagens de correio do cliente ao servidor, porta 25 • Transferência direta: servidor que envia para o servidor que recebe • Três fases de transferência • Handshaking (apresentação) • Transferência de mensagens • Fechamento • Interação comando/resposta • Comandos: texto ASCII • Resposta: código de status e frase • Mensagens devem ser formatadas em código ASCII de 7 bits SMTP é um protocolo de envio de informação (push), não servindo para obter dados. Protocolos de acesso ao correio HTTP • SMTP: entrega e armazena no servidor do destino • Protocolos de acesso: TRANSFEREM MENSAGENS DO SERVIDOR DE CORREIO PARA O PC LOCAL • POP3: Post Office Protocol [RFC 1939] • Autorização (agente <-->servidor) e download • Porta 110 • IMAP: Internet Mail Access Protocol [RFC 3501] • Mais recursos (mais complexo) • Manipulação de mensagens armazenadas no servidor • HTTP: Hotmail, Yahoo! Mail etc. POP3 e IMAP POP3 • Usa o modo “ler e aapgar” e “ler e guardar” • Não permite manipular pastas no servidor de correio. IMAP • Mantém todas as mensagens em um lugar: o servidor • Permite que o usuário organize as mensagens em pastas HTTP • Meio de enviar e acessar email mais utilizado. • Lançado pelo Hotmail em meados da década de 1990.