Prévia do material em texto
1 UNIDADE 3: CAMADA DE APLICAÇÃO 3.1 Conceitos de Camada de Aplicação 2 • Escrever programas que Executem em diferentes sistemas finais, e Se comuniquem através de uma rede ‒ Ex.: Web – É um software de servidor Web se comunicando com software do browser • Não é preciso escrever software para dispositivos do núcleo da rede Dispositivos do núcleo da rede não executam aplicações do usuário As aplicações nos sistemas finais permitem rápido desenvolvimento e propagação Criando uma nova aplicação de Rede 3 Definições de protocolo da camada de aplicação • Tipos de mensagens trocadas ‒P. ex.: Requisição, resposta • Sintaxe da mensagem ‒Quais são os campos nas mensagens, e como os campos são delineados • Semântica da mensagem ‒Significado da informação nos campos Definições de protocolo da camada de aplicação • Regras de quando e como processos enviam e respondem às mensagens • Protocolos de domínio público ‒Definidos em RFCs ‒Provê interoperabilidade * P. ex.: HTTP, SMTP, BitTorrent • Protocolos proprietários ‒P. ex.: Skype, ppstream 4 Algumas aplicações de rede • E-mail • Web • Mensagem instantânea • Login remoto • Compartilhamento de arquivos P2P • Jogos em rede multiusuários • Clipes de vídeo armazenados em fluxo contínuo • Redes sociais • Voice over IP • Vídeoconferência em tempo real • Computação em grade Top 8 Tendências de Desenvolvimento Web de 2019 • 1. AI or Bots • 2. JavaScript • 3. Progressive Web App • 4. Single Page Application • 5. Mobile-Friendly Website • 6. Motion UI • 7. Blockchain Technology • 8. Cybersecurity https://www.codingdojo.com/blog/web‐development‐trends‐of‐2019 5 As 10 principais linguagens de programação do mundo - 2019 https://www.geeksforgeeks.org/top-10- programming-languages-of-the-world- 2019-to-begin-with/ https://hackernoon.com/best-coding- languages-to-learn-in-2019- b49b49250a25 https://hackernoon.com/top-3- programming-language-to-watch-out-in- 2019-95995e81ad2b 1. JavaScript 2. Python 3. Java 4. C/CPP 5. PHP 6. Swift 7. C# 8. Ruby 9. Objective – C 10. SQL Arquiteturas de aplicação • Cliente-servidor ‒Incluindo Centros de dados/Cloud computing • Peer-to-peer (P2P) • Híbrida de cliente-servidor e P2P 6 • Servidor: Hospedeiro sempre ligado Endereço IP permanente Fornece serviços solicitados pelo cliente ‒ Server farms por expansão • Clientes: Comunicam-se com o servidor Pode ser conectado intermitentemente Pode ter endereço IP dinâmico Não se comunicam diretamente uns com os outros Arquitetura Cliente-Servidor Modelo Cliente Servidor 7 • Vantagens: Segurança Controle central de arquivos Servidores dedicados e otimizados Os usuários não se preocupam com a administração • Desvantagens: Custo ‒ Hardware ‒ Software É necessário um administrador Baixa escalabilidade Baixa disponibilidade Arquitetura Cliente-Servidor Centros de dados da Google • Custo estimado de construção do centro de dados em The Dalles, Oregon: US$ 1,2 bilhões* • Google gastou US$10,2 bilhões com centros de dados em 2016* • Cada centro de dados usa valores aproximados de 50 a 100 megawatts de potência * http://www.datacenterknowledge.com/google-data-center-faq-part-2/; ** http://static.panoramio.com/photos/large/27111050.jpg 8 • Nenhum servidor está sempre ligado • Sistemas finais arbitrários se comunicam diretamente • Pares são conectados intermitentemente e mudam endereços IP Altamente escaláveis, mas difíceis de administrar. Arquitetura P2P pura • Vantagens Sem investimento extra com servidores Alta escalabilidade Alta disponibilidade Sem administrador • Desvantagens Sem organização central ‒ Difícil localização de arquivos ‒ Duplicações desnecessárias Os usuários são os administradores Sem segurança Arquitetura P2P pura 9 Híbrida de cliente-servidor e P2P • Híbrida: Integra os conceitos da arquitetura cliente-servidor com P2P ‒ Cliente Servidor: Normalmente um servidor para autenticação e localização ‒ P2P: Depois de localizado, troca direta entre os pares • Exemplos: ‒ Skype * Aplicação P2P voice-over-IP P2P * Servidor centralizado: achando endereço da parte remota * Conexão cliente-cliente: direta (não através de servidor) ‒ Mensagem instantânea * Bate-papo entre dois usuários é P2P * Serviço centralizado: detecção/localização da presença do cliente • Usuário registra seu endereço IP com servidor central quando entra on-line • Usuário conecta servidor central para descobrir endereços IP dos parceiros 3.2 Comunicação de processos 10 Comunicação de processos • Processo: Abstração de um programa que está em execução em um hospedeiro ‒ Dentro do mesmo hospedeiro: Dois processos se comunicam usando comunicação interprocesso (definido pelo Sistema Operacional) ‒ Processos em diferentes hospedeiros: Processos se comunicam por meio de troca de mensagens • Processo cliente: Processo que inicia a comunicação • Processo servidor: Processo que espera para ser contatado • Nota: Aplicações com arquiteturas P2P possuem processos cliente e processos servidor • Um processo envia/recebe mensagens para/de seu socket • É a interface de comunicação entre a camada de aplicação e camada de transporte • Socket análogo a uma “porta de casa” 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 Socket 11 De qual serviço de transporte uma aplicação necessita? • 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 • Temporização ‒ Algumas aplicações (ex.: telefonia Internet, jogos interativos) exigem baixos atrasos para serem “efetivos” • Banda passante / Vazão ‒ Algumas aplicações (ex.: multimídia) exigem uma banda mínima para serem “efetivas” ‒ Outras aplicações (“aplicações elásticas”) melhoram quando a banda disponível aumenta” • Segurança ‒ criptografia, integridade de dados,… Serviços dos protocolos de transporte da Internet • Serviço TCP ‒ Orientado à conexão * Conexão requerida entre processos cliente e servidor ‒ Transporte confiável entre os processor de envio e recepção ‒ Controle de fluxo * O transmissor não sobrecarrega o receptor ‒ Controle de congestionamento * Protege a rede do excesso de tráfego ‒ Não oferece: * Garantias de temporização (atrasos) e de banda mínima 12 Serviços dos protocolos de transporte da Internet • 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 fluxo e de congestionamento, garantia de temporização e de banda mínima Serviços dos protocolos de transporte da Internet • Serviço TCP ‒ Orientado à conexão * Conexão requerida entre processos cliente e servidor ‒ Transporte confiável entre os processor de envio e recepção ‒ Controle de fluxo * O transmissor não sobrecarrega o receptor ‒ Controle de congestionamento * Protege a rede do excesso de tráfego ‒ Não oferece: * Garantias de temporização (atrasos) e de banda mínima • 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 fluxo e de congestionamento, garantia de temporização e de banda mínima Pergunta: Por que ambos? Por que existe o UDP? 13 Aplicação Transf. Arquivos E-mailDocumentos web Áudio/vídeo Tempo real Áudio/vídeo Armazenado Jogos interativos Mensagem Instantânea Perda de dados Sem perda Sem perda Sem perda Tolerante a perda Tolerante a perda Tolerante a perda Sem perda Vazão Elástica Elástica Elástica Áudio: 5 kbps-1 mbps Vídeo:10 kbps-5 mbps O mesmo que antes Poucos kbps ou mais Elástica Sensível ao tempo Não Não Não Sim, centenas de ms Sim, alguns seg Sim, centenas de ms Sim e não Requisitos de serviço de transporte das aplicações comuns Aplicação E-mail Acesso remoto Web Transf. Arquivos Multimídia com fluxo contínuo Telefonia da internet Tradução de nomes Gerenciamento de redes Protocolo da camada de aplicação SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] HTTP (p. e., Youtube), RTP [RFC 1889] SIP, RTP, proprietário (p. e., Skype) DNS [RFC 1035] SNMP Protocolo de transporte básico TCP TCP TCP TCP TCP ou UDP normalmente UDP tipicamente UDP tipicamente UDP Aplicações da Internet: aplicação, protocolos de transporte 14 Protocolos de aplicação e transporte 3.3 Protocolos relevantes para aplicações Internet 15 O que é Rede de Computadores?Serviço Web e Protocolo HTTP Serviço World Wide Web • Serviço World Wide Web ‒Serviço de rede de documentos em hipermídia que são interligados, através dos links, e executados na Internet ‒Documentos hipermídia são as páginas web ‒Utiliza o protocolo HTTP (Hypertext Transfer Protocol) * Transporta apenas texto, qualquer arquivo que não seja texto deve ser transformado em texto ‒Órgão regulamentador: W3C Consortium – http://www.w3.org 16 Serviço World Wide Web • Serviço World Wide Web ‒Serviço cliente-servidor ‒Cliente * Navegador (browser), ex.: Chrome, Edge, Firefox, Opera, Safari, etc... ‒Servidor * Servidor Web, ex.: Apache HTTP Server, IIS, etc... Web Services • Evolução → Web Services ‒Solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes ‒SOAP e REST permitem que você crie sua própria API (Application Programming Interface) ‒Isso possibilita a transferência de dados de um aplicativo para outros aplicativos ‒Uma API recebe solicitações e envia respostas por meio de protocolos da Internet, como HTTP, SMTP e outros 17 Web Services • SOAP (Simple Object Access Protocol) ‒Protocolo padronizado (W3C) que envia mensagens usando outros protocolos, como HTTP e SMTP ‒Vem com regras rígidas e recursos de segurança avançados, como conformidade e autorização do ACID ‒Permite apenas XML como formato de mensagens ‒https://www.w3.org/TR/soap/ https://raygun.com/blog/soap-vs-rest-vs-json/ Web Services • REST (Representational State Transfer) ‒Não é um protocolo, mas um estilo arquitetural ‒Conjunto de diretrizes a seguir ‒Criado para resolver os problemas do SOAP ‒Mais flexível, apenas diretrizes soltas e permite aos desenvolvedores implementar recomendações à sua maneira ‒Diferentes formatos de mensagens, como HTML, JSON, XML e texto simples ‒Serviços da Web criados seguindo REST são RESTful https://raygun.com/blog/soap-vs-rest-vs-json/ 18 https://docs.oracle.com/cd/E76467_01/alloc/pdf/141/html/operations_guide/alloc-og_restful-impl.htm https://www.oreilly.com/library/view/restful-net/9780596155025/ch04.html Web e HTTP • Página Web formada por objetos ‒ Objeto pode ser arquivo HTML, áudio, imagem JPEG, Java applet,… ‒ Página Web consiste de arquivo-HTML base que inclui vários objetos referenciados • Cada objeto endereçado por uma URL ‒ Estrutura: protocolo://máquina:porta/caminho/recurso ‒ Exemplo: http://www.resultado.com.br:80/final/2010/aprovados.htm Protocolo Máquina Porta Caminho Recurso 19 • HTTP: Hypertext Transfer Protocol Protocolo da camada de aplicação da Web Até HTTP/2 utiliza protocolo de transporte TCP • Modelo cliente/servidor Cliente: browser que solicita, recebe e apresenta objetos da Web Servidor: envia objetos em resposta a pedidos • Versões HTTP 1.0 (1996): RFC 1945 HTTP 1.1 (1999): RFC 2616 HTTP/2 (2015): RFC 7540 HTTP/3 (2018): draft-ietf-quic-http-17 Visão geral do HTTP Visão geral do HTTP :: Funcionamento básico do HTTP :: 1.Cliente inicia conexão TCP (via socket) para o servidor na porta 80 2.Servidor aceita uma conexão TCP do cliente 3.Cliente envia mensagens HTTP de requisição(mensagens do protocolo de camada de aplicação) através do browser (cliente HTTP) para o servidor Web (servidor HTTP). O servidor envia o objeto solicitado através de mensagens de resposta. 4.A conexão TCP é fechada • HTTP é “stateless”: Servidor não mantém informação sobre os pedidos passados pelos clientes ‒ Protocolos que mantêm informações de “estado” são complexos! 20 Conexões HTTP • HTTP não persistente ‒ No máximo, um objeto é enviado sobre uma conexão TCP * Cada objeto é solicitado e enviado através de uma única conexão TCP ‒ O HTTP/1.0 utiliza HTTP não persistente Conexões HTTP • 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 ‒O HTTP persistente tem duas variantes * Persistente sem pipelining: • O cliente emite novas requisições apenas quando a resposta anterior for recebida * Persistente com pipelining: • O cliente envia requisições assim que encontra um objeto referenciado, respeitando o limite configurado no browser • O servidor pode estar configurado para responder a um limite máximo de conexões de uma mesma origem 21 1a. Cliente HTTP inicia conexão TCP ao servidor HTTP (processo) em www.unicarioca.edu.br. Porta 80 é a default para o servidor HTTP. 2. Cliente HTTP envia HTTP mensagem de requisição (contendo a URL) para o socket da conexão TCP 1b. Servidor HTTP no hospedeiro www.unicarioca.edu.br esperando pela conexão TCP na porta 80. “Aceita” conexão, notificando o cliente 3. Servidor HTTP recebe mensagem de pedido, forma uma mensagem de resposta contendo o objeto solicitado (graduacao/index.html), envia mensagem para o socket Tempo (contém texto,referências a 10 imagens jpeg) Usuário entra com a URL: www.unicarioca.edu.br/graduacao/index.html 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. 4. Servidor HTTP fecha conexão TCP. Tempo 22 Mensagem HTTP request: formato geral Carriage return, line feed indica fim da mensagem •Dois tipos de mensagens HTTP: Request, Response • HTTP Request Message: ‒ ASCII (Formato de texto legível para humanos – HTTP 1.0 e 1.1) GET /somedir/page.html HTTP/1.0 User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr (extra carriage return, line feed) Linha de pedido (comandos GET, POST, HEAD ) Linhas de cabeçalho Mensagem HTTP request 23 Tipos de métodos Método HTTP 1.0 HTTP 1.1 GET Método que solicita algum recurso ou objeto ao servidor HEAD Solicita informações de um determinado objeto sem que esse seja enviado ao cliente apenas para testa a validade do último acesso POST Método usado para envio de arquivo dados ou formulário HTML ao servidor OPTIONS Por meio desse método o cliente obtém as propriedades do servidor DELETE Informa por meio do URL o objeto a ser deletado TRACE Para enviar mensagem do tipo loopback para teste PUT Aceita criar ou modificar algum objeto do servidor CONNECT Comunicar com servidores Proxy Entrada de formulário • Em entradas de formulários: Método POST: ‒ Página Web frequentemente inclui entradade formulário ‒ A entrada é enviada para o servidor no corpo da entidade Método GET: ‒ A entrada é enviada no campo de URL da linha de requisição: www.carioca.br/procuraaluno.php?matricula=1234&nome=jose 24 HTTP/1.0 200 OK 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 ... Linha de status (protocolo código de status frase de status) Linhas de cabeçalho Dados, ex.: arquivo html Mensagem HTTP response Códigos de status das respostas • Na primeira linha da mensagem de resposta servidor -> cliente. • Séries de código existentes: ‒ 100: Informational (Informação) * Utilizada para enviar informações para o cliente de que sua requisição foi recebida e está sendo processada ‒ 200 * 200 OK * Sucesso: Requisição bem-sucedida, objeto requisitado a seguir nesta mensagem ‒ 300 * 301 Moved permanently • Redirecionamento: Objeto requisitado foi movido, nova localização especificada a seguir nesta mensagem (Location:) ‒ 400 * 400 Bad request • Erro no cliente: Mensagem de requisição não compreendida pelo servidor * 404 Not Found • Documento requisitado não encontrado neste servidor ‒ 500 * 505 HTTP version not supported • Erro no servidor: ocorreu um erro no servidor ao cumprir uma requisição válida. • Mais exemplos em http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6 25 HTTP Request Cabeçalho Corpo da mensagem Campos de informações com seus valores HTTP Reply 200 ok Cabeçalho Corpo da mensagem 26 HTTP Reply 304 Not Modified Cabeçalho Corpo da mensagem HTTP Request – Envio Informações Cabeçalho Corpo da mensagem Envio de informações pelo método Get GET /cert/hit.dll?sitio_id=20607&path=/capa/‐ &referer=&size=1280&colors=32&java=true&flash=9 27 Estado usuário-servidor: cookies • Muitos sites importantes usam cookies Quatro componentes: 1) linha de cabeçalho de cookie da mensagem de resposta HTTP 2) linha de cabeçalho de cookie na mensagem de requisição HTTP 3) arquivo de cookie na máquina do usuário, controlado pelo navegador do usuário 4) banco de dados de apoio no site Web Exemplo: • Usuário sempre acessa a Internet pelo PC • visita um site de comércio eletrônico pela primeira vez • quando as primeiras requisições HTTP chegam ao site, este cria: ID exclusivo entrada no banco de dados de apoio para o ID cliente servidor resposta http normal resposta http normal arq. de cookie uma semana depois: requisição http normalcookie: 1678 ação específica do cookie acessa ebay 8734 requisição http normal servidor Amazon cria ID 1678 para usuário cria entrada resposta http normal Set-cookie: 1678 ebay 8734 amazon 1678 requisição http normalcookie: 1678 ação específica do cookie acessa ebay 8734 amazon 1678 banco de dados de apoio Estado usuário-servidor: cookies já existe 28 Estado usuário-servidor: cookies O que os cookies podem ter: • Autorização • Carrinhos de compras • Recomendações • Estado da sessão do usuário (e-mail da web) Cookies e privacidade: r Cookies permitem que os sites descubram muito sobre você r Você pode fornecer nome e e-mail aos sites aparte Como manter o “estado”: r Extremidades do protocolo: mantêm estado no emissor/receptor por múltiplas transações r Cookies: mensagens HTTP transportam estado Caches Web (servidor proxy) • Objetivo do Cache Web: Satisfazer a requisição do cliente sem envolver servidor de origem • Usuário prepara navegador: acessos à Web via cache • Navegador envia todas as requisições HTTP ao cache Objeto no cache: cache retorna objeto Ou cache requisita objeto do servidor de origem, depois retorna objeto ao cliente cliente servidor proxy cliente servidor de origem servidor de origem 29 Mais sobre caching Web • Cache atua como cliente e servidor • Normalmente, cache é instalado por ISP (da universidade, empresa, residencial) • Por que caching Web? Reduz tempo de resposta à requisição do cliente Reduz tráfego no enlace de acesso de uma instituição GET condicional • Objetivo: não enviar objeto se o cache tiver versão atualizada • cache: especifica data da cópia em cache na requisição HTTP If-modified-since: <data> • servidor: resposta não contém objeto se a cópia em cache estiver atualizada: HTTP/1.0 304 Not Modified cache servidor msg requisição HTTP If-modified-since: <data> resposta HTTP HTTP/1.0 304 Not Modified objeto não modificado msg requisição HTTP If-modified-since: <data> resposta HTTP HTTP/1.0 200 OK <dados> objeto modificado 30 Hyper Text Transfer Protocol over SSL (HTTPS) • Protocolo de aplicação da web que utiliza criptografia ‒Protocolo de criptografia: Transport Layer Security (TLS), anteriormente chamado Secure Sockets Layer (SSL) • Garante privacidade (criptografia) • Garante a identidade das partes envolvidas em uma transferência • Porta 443/TCP https://nome_máquina/recurso HTTP/2 • HTTP/2 foi desenvolvido a partir do protocolo experimental SPDY (“Speedy”), criado pelo Google • Benefícios incluem: ‒ Multiplexação e concorrência: Várias requisições podem ser enviadas sucessivamente em uma mesma conexão TCP, eliminando a necessidade de múltiplas conexões entre o cliente e o servidor ‒ Priorização de fluxo: O cliente pode indicar ao servidor que alguns recursos são mais importantes que outros ‒ Compressão de cabeçalho: O Cabeçalho HTTP é reduzido drasticamente ‒ Server push: O servidor pode enviar ao cliente recursos que ainda não foram solicitados 31 HTTP/2 • HTTP/2 é um protocolo binário ao invés de textual • Com isso temos os conceitos de: ‒Quadro: é a nova unidade básica de comunicação, que substitui o tradicional formato cabeçalho e corpo da mensagem de requisições/respostas ‒Fluxo: é uma comunicação lógica simples de requisição e resposta HTTP/2 https://hpbn.co/http2/; https://http2.akamai.com/ Camada de enquadramento binário Multiplexação 32 O que é Rede de Computadores? Transferência de arquivos e protocolo FTP • 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: O protocolo de transferência de arquivo 33 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 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” (dados são enviados pela porta 20) Servidor FTP mantém “estado”: diretório atual, autenticação anterior FTP: Controle separado, conexões de dados Comandos e respostas FTP Exemplos de comandos: • enviado como texto ASCII pelo canal de controle • USER nome-usuário • PASS senha • LIST retorna lista de arquivos no diretório atual • RETR nome-arquivo recupera (apanha) arquivo • STOR nome-arquivo armazena (coloca) arquivo no hospedeiro remoto Exemplos de códigos de retorno: • código e frase de estado (como no HTTP) • 331 Username OK, password required • 125 data connection already open; transfer starting • 425 Can’t open data connection • 452 Error writing file 34 O que é Redede Computadores?Acesso Remoto • Telnet é um protocolo cliente-servidor usado para permitir a comunicação entre computadores ligados numa rede (exemplos: rede local / LAN, Internet), Telnet é um protocolo de login/acesso remoto Utiliza o protocolo de transporte TCP Utiliza porta 23 Os dados/comandos são trafegados em claro, inclusive a login/senha • O serviço SSH é a alternativa para acesso remoto que implementa criptografia ‒ Utiliza porta 22 Terminal Remoto 35 Exemplo de Telnet O que é Rede de Computadores? Serviço de correio eletrônico e protocolos SMTP, POP3 e IMAP 36 Três componentes principais: 1. Agentes de usuário 2. Servidores de correio 3. Simple mail transfer protocol: SMTP 1. Agente de usuário: “Leitor de correio” Composição, edição, leitura de mensagens de correio ‒ Ex.: Eudora, Outlook, elm, Mozilla Thunderbird Mensagens de entrada e de saída são armazenadas no servidor caixa de entrada do usuário fila de msg. de saída mail server agente usuário serv. correio serv. correio SMTP SMTP agente usuário agente usuário agente usuário agente usuário Correio Eletrônico - Componentes agente usuário 2. 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 3. Protocolo SMTP Permite aos servidores de correio trocarem mensagens entre si Cliente: servidor de correio que envia “Servidor”: servidor de correio que recebe Correio Eletrônico - Componentes caixa de entrada do usuário fila de msg. de saída mail server agente usuário serv. correio serv. correio SMTP SMTP agente usuário agente usuário agente usuário agente usuário agente usuário 37 Correio eletrônico: SMTP • SMTP usa TCP para transferência confiável de mensagens de correio do cliente ao servidor, porta 25 • Transferência direta: servidor envia direto para o servidor de destino • 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 1.Alice usa o agente de usuário (UA) para compor a mensagem e “para” bob@someschool.edu 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 agente usuário serv. correio serv. correio agente usuário 1 2 3 4 5 6 Cenário: Alice envia mensagem para Bob 38 Exemplo de interação SMTP o S: 220 hamburger.edu o C: HELO crepes.fr o S: 250 Hello crepes.fr, pleased to meet you o C: MAIL FROM: <alice@crepes.fr> o S: 250 alice@crepes.fr... Sender ok o C: RCPT TO: <bob@hamburger.edu> o S: 250 bob@hamburger.edu ... Recipient ok o C: DATA o S: 354 Enter mail, end with "." on a line by itself o C: Você gosta de ketchup? o C: Que tal picles? o C: . o S: 250 Message accepted for delivery o C: QUIT o S: 221 hamburger.edu closing connection Formato da mensagem de correio • Correio eletrônico formado por: ‒Envelope * Encapsula uma mensagem * Contém as informações necessárias para o transporte da mensagem • Como no correio comum ‒Mensagem * Composta por cabeçalho e corpo 39 • Linhas de cabeçalho, ex.: To: From: Subject: diferente dos comandos HTTP • Corpo A “mensagem”, ASCII somente com caracteres header body linha em branco Formato da mensagem de correio Exemplo de mensagem Received: from cliente.br by servidor.br; 16 Jul 06 10:30:01 GMT Received: from maquina.cliente.br by cliente.br; 16 Jul 06 10:29:58 GMT From: usuario@cliente.br To: usuario@servidor.br Subject: Teste Teste de envio de correio. 40 • MIME: Multimedia Mail Extension • Permite transmitir os arquivos que não são texto pelo serviço de correio eletrônico Ex: imagens, vídeos, documentos do MS Office, etc... • Linhas adicionais no cabeçalho declaram o tipo de conteúdo MIME From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data Dados multimídia tipo, subtipo, declaração de parâmetro Método usado para codificar dados Versão da MIME Dados codificados Formato da mensagem: Extensão Multimídia • SMTP: Realiza a entrega e armazenamento no servidor do destino • Protocolos de acesso: Recuperam mensagens do servidor POP: Post Office Protocol [RFC 1939] ‒ Autorização (agente <-->servidor) e download IMAP: Internet Mail Access Protocol [RFC 1730] ‒ Maiores recursos (mais complexo) ‒ Manipulação de mensagens armazenadas no servidor HTTP: Hotmail , Yahoo! Mail etc. Protocolos de Acesso 41 Protocolo POP3 fase de autorização • comandos do cliente: user: declare “username” pass: senha • respostas do servidor +OK -ERR fase de transação, cliente: • list: lista números de msg. • retr: recupera mensagem por número • dele: exclui • quit C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> S: . C: dele 1 C: retr 2 S: <message 1 contents> S: . C: dele 2 C: quit S: +OK serv. POP3 desconectando S: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK usuário logado com sucesso O que é Rede de Computadores?Servidor de Nomes de Domínios (DNS) 42 • DNS –Domain Name System Base de dados distribuída, implementada numa hierarquia de muitos servidores de nomes que é organizado em uma hierarquia de domínios Protocolo de camada de aplicação ‒ Dispositivos se comunicam com servidores de nomes para resolver nomes (tradução nome -> endereço) O uso de nomes facilita a memorização do usuário ao invés de decorar números IPs ou MAC address Servidor de Nomes de Domínios (DNS) Componentes do serviço DNS • Composto de: 1. Três tipos (classes) de servidores de nomes a. Raiz b. De domínio de alto nível (Top-Level Domain – TLD) c. Com autoridade 2. Servidores DNS locais 43 Componentes do serviço DNS 1. Classes de servidores de nomes a. Raiz * São contatados pelos servidores de nomes locais que não podem resolver um nome b. De domínio de alto nível (Top-Level Domain – TLD) * gTLD (generic TLD): Responsáveis pelos domínios genéricos – .com, .org, .net, .edu, .arpa, ... * ccTLD (country code TLD): Domínios top-level nacionais (conforme norma iso 3166) – .uk, .fr, .ca, .jp, .br, ... c. Com autoridade * Servidores DNS de organizações Servidor de nomes local 2. Servidor DNS local ‒ Não pertence estritamente a uma hierarquia ‒ Cada ISP (ISP residencial, companhia, universidade) possui um ‒ Também chamado de “servidor de nomes default” • Quando um hospedeiro faz uma pergunta a um DNS, a pergunta é enviada para seu servidor DNS local ‒ Age como um proxy, encaminhando as perguntas para dentro da hierarquia 44 Como a consulta DNS funciona • O nome absoluto correspondente ao conjunto das etiquetas dos nós, separados por pontos, e terminado por um ponto final, é chamado Nome de Domínio totalmente Qualificado (FQDN - Fully Qualified Domain Name) Comunicação entre Servidores • Para consulta ‒Porta 53 e protocolo UDP • Para transferência de zona ‒Porta 53 e protocolo TCP 45 hospedeiro solicitante cis.poly.edu gaia.cs.umass.edu servidor DNS raiz serv. DNS local dns.poly.edu1 2 3 4 5 6 serv. DNS com autoridade dns.cs.umass.edu 78 servidor DNS TLD Exemplo de resolução de nome DNS (1) • Hospedeiro em cis.poly.edu quer endereço IP para gaia.cs.umass.edu • Consulta iterativa ou repetida: Servidor chamado responde com nome do servidor a contactar ‒ “Não conheço esse nome, mas pergunte a este servidor” hospedeiro solicitante cis.poly.edu gaia.cs.umass.edu serv. DNS raiz serv. DNS local dns.poly.edu 1 2 45 6 serv. DNS com autoridade dns.cs.umass.edu 7 8 serv. DNS TLD 3 • Consulta recursiva: Transfere a resolução de nome para o servidor de nomes contactado Exemplo de resolução de nome DNS (2) 46 Tipos de Zonas • As informações sobre o DNS são armazenadas em zonas • Em uma zona, poderão haver informações sobre um ou mais domínios • Zona de pesquisa Direta ‒ Primárias ‒ Secundárias • Zona de pesquisa Reversa ‒ Primárias ‒ Secundárias Zona de Pesquisa Direta • Zona de pesquisa direta ‒O tipo de resolução de nomes mais utilizada ‒Nesse tipo de resolução de nome, o cliente possui o nome DNS e precisa localizar o endereço IP associado em esse nome 47 Zona de Pesquisa Reversa • Zona de pesquisa reversa • Cliente informa endereço IP e solicita o nome DNS ‒Uma pesquisa inversa assume a forma de pergunta, como "Pode me informar o nome DNS do computador que usa o endereço IP 192.168.1.20"? * Utiliza-se o domínio in-addr.arpa * Para criar o espaço para nome inverso, os subdomínios dentro do domínio in- addr.arpa são formados usando a ordem inversa dos números na notação decimal com pontos dos endereços IP. • 1.168.192. in-addr.arpa Zona Primária, secundária • Zona primária ‒Zona autoritativa para um domínio ‒ É chamada primária porque ela ainda não existe e está sendo criada para conter as informações do domínio – p.ex., o domínio xyz.com.br • Zona secundária ‒Zona “espelho” de uma zona primária ‒Precisa ser atualizada freqüentemente para manter a consistências entre zonas 48 Tipos de registros • As zonas têm como base um conceito de autoridade de servidor • Quando um servidor DNS é configurado para carregar uma zona, ele usa dois tipos de REGISTROS DE RECURSOS para determinar as propriedades de autoridade da zona ‒ Primeiro, o Registro de Recurso de Início de Autoridade (SOA)indica: * O nome da ORIGEM da zona * O nome do servidor que é a origem primária das informações sobre a zona * Ele também indica outras propriedades básicas da zona Tipos de registros ‒Em seguida, o Registro de Recurso do Servidor de Nomes (NS) é usado para notificar quais servidores DNS são designados como autorizados para a zona * Listando um servidor no RR (Registro de Recurso) NS, ele se torna conhecido para outros como um servidor autorizado para a zona * Isso significa que todo servidor especificado no RR NS deve ser considerado uma origem autorizada por outros e é capaz de responder com segurança todas as consultas feitas para nomes incluídos na zona 49 Registros SOA e NS • Os registros de recursos SOA e NS ocupam uma função especial na configuração da zona • Eles são registros obrigatórios para qualquer zona e são normalmente o primeiro dos registros de recursos listados nos arquivos Registros SOA e NS • Exemplos ‒SOA * @ IN SOA nameserver.example.microsoft.com. postmaster.example.microsoft.com. ( 1 ; serial number 3600 ; refresh [1h] 600 ; retry [10m] 86400 ; expire [1d] 3600 ) ; min TTL [1h] ‒NS * example.microsoft.com. IN NS nameserver1.example.microsoft.com 50 Tipos de Registros • Após criar uma zona, os registros de recursos adicionais necessários precisam ser adicionados a ela. A maioria dos registros de recursos (RRs) a serem adicionados são: ‒ Host(A) * Faz o mapeamento de um nome DNS para um endereço IPv4, ex.: • srv01.abc.com.br IN A 100.100.200.150 ‒ Alias - Canonical Name (CNAME) * Mapeia um alias (apelido) ou nome DNS alternativo, ex.: • www.abc.com.br. CNAME srv01.abc.com.br ‒ Servidor de Mensagens (MX) * Mapeia um nome de domínio DNS para o nome de um computador que troca ou encaminha mensagens eletrônicas (servidor de email) ‒ Ponteiro (PTR) * É utilizado em zonas reversas, para fazer o mapeamento reverso • 10.20.20.10.in-addr.arpa. PTR host.example.microsoft.com ‒ Outros registros de recursos conforme necessário DNS: Armazenando e atualizando registros • Uma vez que um servidor de nomes apreende um mapeamento, ele armazena o mapeamento num registro do tipo cache ‒ Registro do cache tornam-se obsoletos (desaparecem) depois de um certo tempo ‒ Servidores TLD são tipicamente armazenados em cache nos servidores de nome locais • Mecanismos de atualização e notificação estão sendo projetados pelo IETF ‒ RFC 2136 ‒ http://www.ietf.org/html.charters/dnsind-charter.html