Objetivos ! Conceitual, aspectos de implementao de protocolos de aplicao de redes ! Modelos de servio da camada de transporte ! Paradigma cliente-servidor ! Paradigma peer-to-peer ! Aprender sobre protocolos examinando protocolos da camada de aplicao populares: ! HTTP ! FTP ! SMTP/POP3/IMAP ! DNS So exemplos de aplicaes de rede ! E-mail ! Web ! Mensagem instantnea ! Login remoto ! Compartilhamento de arquivos P2P ! Jogos de rede multiusurio ! Streaming vdeos ! Telefonia via Internet ! Videoconferncia em tempo real ! Computao paralela massiva Aplicaes de rede ! Escrever programas que ! Executem sobre diferentes sistemas finais e ! Se comuniquem atravs de uma rede. Ex.: Web software de servidor Web se comunicando com software do browser. ! Nenhum software escrito para dispositivos no ncleo da rede ! Dispositivos do ncleo da rede no trabalham na camada de aplicao ! Esta estrutura permite um rpido desenvolvimento de aplicao Arquiteturas de aplicao ! Cliente-servidor ! Peer-to-Peer (P2P) ! Hbrida de cliente-servidor e P2P Arquitetura cliente-servidor ! Servidor: ! Host sempre ativo ! Endereo de IP permanente ! Fornece servios solicitados pelo cliente ! Clientes: ! Comunicam-se com o servidor ! Podem ser conectados intermitentemente ! Podem ter endereo IP dinmico ! No se comunicam diretamente uns com os outros Arquitetura Peer to Peer (P2P) pura ! Nem sempre no servidor ! Sistemas finais arbitrrios comunicam-se diretamente ! Pares so intermitentemente conectados e trocam endereos IP ! Ex: Gnutella (shareaza) Altamente escalveis mas difceis de gerenciar Hbrida de cliente-servidor e P2P ! Napster ! Transferncia de arquivo P2P ! Busca Centralizada de arquivos: ! Contedo de registro dos pares no servidor central ! Consulta pares no mesmo servidor central para localizar o contedo ! Instant messaging ! Bate-papo entre dois usurios P2P ! Deteco/localizao centralizada de presena: ! Usurio registra seu endereo IP com o servidor central quando fica on-line ! Usurio contata o servidor central para encontrar endereos IP vizinhos Comunicao de processos ! Processo: Programa executando em um host. ! Dentro do mesmo host, dois processos se comunicam usando comunicao interprocessos (definido pelo SO) ! Processos em diferentes hosts se comunicam por meio de troca de mensagens ! Processo cliente: processo que inicia a comunicao ! Processo servidor: processo que espera para ser contatado Nota: aplicaes com arquiteturas P2P possuem processos cliente e processos servidor Sockets ! 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 recepo ! Um processo envia/ recebe mensagens para/de seu socket ! O socket anlogo a uma porta ! O processo de envio empurra a mensagem para fora da porta Processos de endereamento ! Para um processo receber mensagens, ele deve ter um identificador ! Um hospedeiro possui um nico endereo IP de 32 bits ! P.: O endereo IP do hospedeiro onde o processo est executando suficiente para identificar o processo? ! R.: No, muitos processos podem estar em execuo no mesmo hospedeiro ! O identificador inclui o endereo IP e o nmero da porta associada ao processo no hospedeiro (Socket) ! Exemplos de nmeros de porta: ! Servidor HTTP: 80 ! Servidor de Correio: 25 Protocolo da camada de aplicao define ! Tipo de mensagens trocadas, mensagens de requisio e resposta ! Sintexe dos tipos de mensagem: os campos nas mensagens e como so delineados ! Semntica dos campos, ou seja, significado da informao nos campos ! Regras para quando e como os processos enviam e respondem s mensagens Protocolos de domnio pblico: ! Definidos por RFCs ! Recomendados para interoperabilidade ! Ex: HTTP, SMTP Protocolos proprietrios: ! Ex: KaZaA Aplicao e protocolos de transporte Aplicao Protocolo de aplicao Protocolo de transporte e-mail smtp [RFC 821] TCP acesso de terminais remotos telnet [RFC 854] TCP Web http [RFC 2068] TCP transferncia de arquivos ftp [RFC 595] TCP streaming multimdia RTP ou proprietrio TCP ou UDP servidor de arquivos remoto NSF/SMB TCP ou UDP telefonia pela Internet RTP ou proprietrio tipicamente UDP Web e HTTP Web e HTTP Primeiro alguns jarges ! Pgina Web consiste de objetos ! Objeto pode ser arquivo HTML, imagem JPEG, Java applet, arquivo de udio, ! A pgina Web consiste de arquivo-HTML base, que inclui vrios objetos referenciados ! Cada objeto endereado por uma URL (Uniform Resource Locators) Viso geral do HTTP HTTP: hypertext transfer protocol ! Protocolo da camada de aplicao da Web ! Modelo cliente/servidor ! Cliente: browser que solicita, recebe e apresenta objetos da Web ! Servidor: envia objetos em resposta a pedidos ! HTTP 1.0: RFC 1945 ! HTTP 1.1: RFC 2068 PC Executando Explorer Mac executando Safari Utiliza TCP: ! Cliente inicia conexo TCP (cria socket) para o servidor na porta 80 ! Servidor aceita uma conexo TCP do cliente ! mensagens HTTP (mensagens do protocolo de camada de aplicao) so trocadas entre o browser (cliente HTTP) e o servidor Web (servidor HTTP) ! A conexo TCP fechada HTTP stateless ! O servidor no mantm informao sobre os pedidos passados pelos clientes Protocolos que mantm informaes de estado so complexos! ! Histrico do passado (estado) deve ser mantido ! Se o servidor/cliente quebra, suas vises de estado podem ser inconsistentes, devendo ser reconciliadas Viso geral do HTTP HTTP: viso do lado cliente Browser = interpretador de HTML ! HTML so documentos texto ou hiperlinks (URLs) para outras pginas ! Pode-se vincular ao HTML outros documentos (PDF), imagens (GIF, JPEG), vdeos (MPEG) = problema pra browser interpretar ! Indicado pelo campo: Content-Type ! Soluo = Plug-in e aplicaes auxiliares URLs Trs perguntas tem de ser respondida para uma pgina ser exibida: 1) Qual o nome da pgina? 2) Onde a pgina est localizada? 3) Como a pgina pode ser acessada? Assim como pelo nmero da identidade pode-se saber distinguir duas pessoas de nomes iguais, mas no saber o seu endereo. Da mesma forma a internet. Ento as URLs so formadas por 3 partes: 1) Protocolo 2) O nome DNS da mquina (onde ela reside) 3) O nome local (indica a pgina especfica) URLs Trs perguntas tem de ser respondida para uma pgina ser exibida: 1) Qual o nome da pgina? 2) Onde a pgina est localizada? 3) Como a pgina pode ser acessada? Assim como pelo nmero da identidade pode-se saber distinguir duas pessoas de nomes iguais, mas no saber o seu endereo. Da mesma forma a internet. Ento as URLs so formadas por 3 partes: 1) Protocolo 2) O nome DNS da mquina (onde ela reside) 3) O nome local (indica a pgina especfica) http://www.someschool.edu/someDept/pic.gif Nome do hospedeiro Nome do caminho Protocolo HTTP no persistente ! No mximo, um objeto enviado sobre uma conexo TCP ! O HTTP/1.0 utiliza HTTP no persistente HTTP persistente ! Mltiplos objetos podem ser enviados sobre uma conexo TCP entre o cliente e o servidor ! O HTTP/1.1 utiliza conexes persistentes em seu modo padro Conexes HTTP HTTP no persistente Usurio entra com a URL: www.someSchool.edu/someDepartment/index.html (contm texto, referncias a 10 imagens jpeg) HTTP no persistente Usurio entra com a URL: www.someSchool.edu/someDepartment/index.html Tempo (contm texto, referncias a 10 imagens jpeg) HTTP no persistente Usurio entra com a URL: www.someSchool.edu/someDepartment/index.html 1a. Cliente HTTP inicia conexo TCP ao servidor HTTP (processo) em www.someSchool.edu. Porta 80 a default para o servidor HTTP Tempo (contm texto, referncias a 10 imagens jpeg) HTTP no persistente Usurio entra com a URL: www.someSchool.edu/someDepartment/index.html 1a. Cliente HTTP inicia conexo TCP ao servidor HTTP (processo) em www.someSchool.edu. Porta 80 a default para o servidor HTTP 1b. Servidor HTTP no host www.someSchool.edu esperando pela conexo TCP na porta 80. Aceita conexo, notificando o cliente Tempo (contm texto, referncias a 10 imagens jpeg) HTTP no persistente Usurio entra com a URL: www.someSchool.edu/someDepartment/index.html 1a. Cliente HTTP inicia conexo TCP ao servidor HTTP (processo) em www.someSchool.edu. Porta 80 a default para o servidor HTTP 2. Cliente HTTP envia HTTP request message (contendo a URL) para o socket da conexo TCP 1b. Servidor HTTP no host www.someSchool.edu esperando pela conexo TCP na porta 80. Aceita conexo, notificando o cliente Tempo (contm texto, referncias a 10 imagens jpeg) HTTP no persistente Usurio entra com a URL: www.someSchool.edu/someDepartment/index.html 1a. Cliente HTTP inicia conexo TCP ao servidor HTTP (processo) em www.someSchool.edu. Porta 80 a default para o servidor HTTP 2. Cliente HTTP envia HTTP request message (contendo a URL) para o socket da conexo TCP 1b. Servidor HTTP no host www.someSchool.edu esperando pela conexo TCP na porta 80. Aceita conexo, notificando o cliente 3. Servidor HTTP recebe mensagem de pedido, forma response message contendo o objeto solicitado (someDepartment/ index.html), envia mensagem para o socket Tempo (contm texto, referncias a 10 imagens jpeg) HTTP no persistente Usurio entra com a URL: www.someSchool.edu/someDepartment/index.html 1a. Cliente HTTP inicia conexo TCP ao servidor HTTP (processo) em www.someSchool.edu. Porta 80 a default para o servidor HTTP 2. Cliente HTTP envia HTTP request message (contendo a URL) para o socket da conexo TCP 1b. Servidor HTTP no host www.someSchool.edu esperando pela conexo TCP na porta 80. Aceita conexo, notificando o cliente 3. Servidor HTTP recebe mensagem de pedido, forma response message contendo o objeto solicitado (someDepartment/ index.html), envia mensagem para o socket Tempo (contm texto, referncias a 10 imagens jpeg) HTTP no persistente Tempo HTTP no persistente Tempo 4. Servidor HTTP fecha conexo TCP HTTP no persistente Tempo 5. Cliente HTTP recebe mensagem de resposta contendo o arquivo html, apresenta o contedo html. Analisando o arquivo html, encontra 10 objetos jpeg referenciados 4. Servidor HTTP fecha conexo TCP HTTP no persistente Tempo 5. Cliente HTTP recebe mensagem de resposta contendo o arquivo html, apresenta o contedo html. Analisando o arquivo html, encontra 10 objetos jpeg referenciados 6. Passos 1-5 so repetidos para cada um dos 10 objetos jpeg 4. Servidor HTTP fecha conexo TCP Caractersticas do HTTP no persistente: ! SO deve manipular e alocar recursos do hospedeiro para cada conexo TCP. Mas os browsers freqentemente abrem conexes TCP paralelas para buscar objetos referenciados HTTP persistente ! Servidor deixa a conexo aberta aps enviar uma resposta ! Mensagens HTTP subseqentes entre o mesmo cliente/servidor so enviadas pela conexo Persistente sem pipelining (paralelismo): ! O cliente emite novas requisies apenas quando a resposta anterior for recebida Persistente com pipelining (paralelismo): ! Padro no HTTP/1.1 ! O cliente envia requisies assim que encontra um objeto referenciado HTTP no persistente X persistente Modelagem do tempo de resposta Dois tipos de mensagens HTTP: request, response HTTP request message ! ASCII (formato legvel para humanos) Mensagem HTTP request Carriage return, line feed indica fim da mensagem GET /diretorio/pagina.html HTTP/1.1 Connection: close Hostname: nomedoservidor 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 cabealho Mensagem HTTP request: formato geral usado no mtodo POST ! Envia informaes para o servidor ! No busca pgina esttica ou objeto no servidor Mtodo Post: ! Pgina Web freqentemente inclui entrada de formulrio (dados enviar ao servidor) ! A entrada enviada para o servidor no corpo da entidade Mtodo URL: ! Utiliza o mtodo GET ! A entrada enviada no campo de URL da linha de requisio: Entrada de Formulrio http://www.algumsite.com.br/procura?palavra=web&navegador=chrome ! CGI = Comum Gateway Interface ! ASP, Perl, PHP, JSP Entrada de Formulrio HTTP/1.0 ! GET ! Solicita arquivo/objeto ! POST ! Envia informaes ao servidor no corpo da entidade ! HEAD ! Pede informaes do objeto sem o corpo (contedo deste) usado por desenvolvedores para depurao Tipos de mtodos HTTP/1.1 ! GET, POST, HEAD ! PUT ! Envia o arquivo no corpo da entidade para o caminho especificado no campo de URL ! DELETE ! Apaga o arquivo especificado no campo de URL ! OPTIONS ! Requisita informaes disponveis para URL ! COPY/MOVE ! Copia/move da URL para o local especificado no Entity-Header ! TRACE ! Requisita ao servidor para retornar o corpo da entidade recebido para uso em diagnstico/teste. Tipos de mtodos Mensagens HTTP response 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 cdigo de status frase de status) Linhas de cabealho Dados, ex.: arquivo html Na primeira linha da mensagem de resposta: servidor -> cliente. Alguns exemplos de cdigos: 200 OK ! Requisio bem-sucedida, objeto requisitado a seguir nesta mensagem 301 Moved permanently ! Objeto requisitado foi movido, nova localizao especificada a seguir nesta mensagem (Location:) 400 Bad request ! Mensagem de requisio no compreendida pelo servidor 404 Not Found ! Documento requisitado no encontrado neste servidor 505 HTTP version not supported Cdigos de status das respostas A maioria dos grandes sites Web utiliza cookies Quatro componentes: 1. Linha de cabealho do cookie na mensagem HTTP response 2. Linha de cabealho de cookie na mensagem HTTP request 3. Arquivo de cookie mantido no hospedeiro do usurio e manipulado pelo browser do usurio 4. Banco de dados backend no site Web Exemplo: ! Lilica acessa a Internet sempre do mesmo PC ! Ela visita um site especfico de e-commerce pela primeira vez ! Quando a requisio HTTP inicial chega ao site, este cria um ID nico e uma entrada no banco de dados backend para este ID Estado usurio-servidor: cookies Cookies: mantendo estado Cliente Servidor amazon usual HTTP request msg usual HTTP response + Set-cookie: 1678 usual HTTP request msg cookie: 1678 usual HTTP response msg usual HTTP request msg cookie: 1678 usual HTTP response msg especificao do cookie especificao do cookie servidor cria o ID 1678 para o usurio e n t r a d a
n o
b a n c o d e
d a d o s
b a c k e n d a c e s s o a c e s s o Cookie amazon: 1678 ebay: 8734 Cookie ebay: 8734 Cookie amazon: 1678 ebay: 8734 Uma semana depois: O que os cookies podem trazer: !Autorizao !Carrinhos de compra !Recomendaes !Estado de sesso do usurio (Web e-mail) Do lado cliente Cookies e privacidade: !Cookies permitem que sites saibam muito sobre voc !Voc pode fornecer nome e e-mail para os sites !Mecanismos de busca usam redirecionamento e cookies para saberem mais sobre voc !Companhias de propaganda obtm informaes por meio dos sites Cookies ! Usurio configura o browser: acesso Web feito por meio de um proxy. ! Cliente envia todos os pedidos HTTP para o Web cache. ! Se o objeto existe no Web cache: Web cache retorna o objeto ! Ou o Web cache solicita objeto do servidor original e ento envia o objeto ao cliente Web caches (proxy server) Objetivo: atender o cliente sem envolver o servidor Web originador da informao ! O cache atua tanto no servidor (buscando informaes) como no cliente (entregando informaes) ! Tipicamente, o cache instalado pelo ISP (universidade, empresa, ISP residencial) Por que Web caching? ! Reduz o tempo de resposta para a requisio do cliente ! Reduz o trfego num enlace de acesso de uma instituio ! A densidade de caches na Internet habilita os fracos provedores de contedo a efetivamente entregarem o contedo (mas fazendo P2P file sharing) Mais sobre Web caching ! Atraso total de uma requisio = atraso da Internet + atraso de acesso + atraso da LAN Exemplo de caching Exemplo de caching ! Atraso total de uma requisio = atraso da Internet + atraso de acesso + atraso da LAN Exemplo de caching ! Atraso total de uma requisio = atraso da Internet + atraso de acesso + atraso da LAN Exemplo de caching ! Atraso total de uma requisio = atraso da Internet + atraso de acesso + atraso da LAN ! Atraso total de uma requisio com cache = atraso da LAN Exemplo de caching Exemplo de caching Razo: no enviar objeto se a verso que o cliente j possui est atualizada ! Cliente: especifica data da verso armazenada no pedido HTTP ! If-modified-since: <date> ! Servidor: resposta no contm objeto se a cpia atualizada: ! HTTP/1.0 304 Not Modified GET condicional Cliente Servidor HTTP request msg If-modified-since: <date> HTTP response HTTP/1.0 304 Not Modified Objeto no modificado HTTP request msg If-modified-since: <date> HTTP response HTTP/1.1 200 OK <data> Objeto modificado FTP ! Transferncia de arquivos de e para o computador remoto ! Modelo cliente servidor ! Cliente: lado que inicia a transferncia (seja de ou para o lado remoto) ! Servidor: hospedeiro remoto ! FTP: RFC 959 ! FTP servidor: porta 21 FTP: o protocolo de transferncia de arquivos ! Cliente FTP contata o servidor FTP na porta 21 especificando o TCP como protocolo de transporte ! Cliente obtm autorizao pela conexo de controle ! Cliente procura o diretrio remoto enviando comandos pela conexo de controle ! Quando o servidor recebe um comando para uma transferncia de arquivo, ele abre uma conexo de dados TCP para o cliente ! Aps a transferncia de um arquivo, o servidor fecha a conexo ! Servidor abre uma segunda conexo de dados TCP para transferir outro arquivo ! Conexo de controle: fora da banda ! Servidor FTP mantm estado: diretrio atual, autenticao anterior FTP: controle separado, conexes de dados Modo ativo ! O cliente requisita o servidor usando uma porta aleatria, por exemplo, a porta 10000, endereando o pacote porta 21 do servidor. ! O servidor imediatamente contata o cliente de volta, usando a porta seguinte(do cliente) para enviar dados. Seguindo o exemplo anterior, porta 10001. Modo passivo ! O cliente abre a conexo contatando a porta 21 do servidor, entretanto, o servidor responde avisando que o cliente pode contat-lo numa segunda porta, escolhida aleatoriamente (a 1050, por exemplo). ! O cliente inicia uma nova conexo na porta especificada e o servidor responde enviando os dados. FTP: ativo e passivo FTP: ativo e passivo ! Modo ativo FTP: ativo e passivo ! Modo ativo FTP: ativo e passivo ! Modo passivo Exemplos de comandos: ! Envia um texto ASCII sobre canal de controle ! USER username ! PASS password ! LIST retorna listagem do arquivo no diretrio atual ! RETR filename recupera (obtm) o arquivo ! STOR filename armazena o arquivo no hospedeiro remoto Exemplos de cdigos de retorno ! Cdigo de status e frase (como no HTTP) ! 331 Username OK, password required ! 125 data connection already open; transfer starting ! 425 Cant open data connection ! 452 Error writing file FTP: ativo e passivo Clientes FTP FileZilla LeechFTP Correio eletrnico: SMTP, POP3, IMAP Trs componentes principais: ! Agente de usurio ! Servidores de correio ! Simple Mail Transfer Protocol: SMTP Agente de usurio ! Leitor de correio ! Composio, edio, leitura de mensagens de correio ! Mensagens de entrada e de sada so armazenadas no servidor Correio eletrnico Exemplo de leitores de email Thunderbird Mail Sevidores de correio ! Caixa postal contm mensagens que chegaram (ainda no lida) para o usurio ! Fila de mensagens contm 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 Correio eletrnico: servidores de correio ! Usa TCP para transferncia confivel de mensagens de correio do cliente ao servidor, porta 25 ! Transferncia direta: servidor que envia para o servidor que receber ! Trs fases de transferncia: ! Handshaking (apresentao) ! Transferncia de mensagens ! Fechamento ! Interao comando/resposta ! Comandos: texto ASCII ! Resposta: cdigo de status e frase ! Mensagens devem ser formatadas em cdigo ASCII de 7 bits Correio eletrnico: SMTP Cenrio: Alice envia mensagem para Bob 1) Alice usa o agente de usurio (UA) para compor a mensagem e para bob@natal.br 2) O agente de usurio 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 conexo TCP com o servidor de correio do Bob. 4) O cliente SMTP envia a mensagem de Alice pela conexo TCP. 5) O servidor de correio de Bob coloca a mensagem na caixa de correio de Bob. 6) Bob executa seu agente de usurio para ler a mensagem. Exemplo de interao SMTP S: 220 natal.br C: HELO parnamirim.com.br S: 250 Hello parnamirim.com.br, pleased to meet you C: MAIL FROM: <alice@parnamirim.com.br> S: 250 alice@parnamirim.com.br... Sender ok C: RCPT TO: <bob@natal.br> S: 250 bob@natal.br ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: voc gosta de guaran? C: e de pizza? C: . S: 250 Message accepted for delivery C: QUIT S: 221 natal.br closing connection ! SMTP usa conexes persitentes ! SMTP exige que as mensagens (cabealho e corpo) estejam em ASCII de 7 bits ! Servidor SMTP usa CRLF.CRLF para indicar o final da mensagem Comparao com HTTP: ! HTTP: pull (recebimento) ! E-mail: push (envio) ! Ambos usam comandos e respostas ASCII, interao comando/ resposta e cdigos de status ! HTTP: cada objeto encapsulado na sua prpria mensagem de resposta ! SMTP: mltiplos objetos so enviados numa mensagem multiparte SMTP: palavras finais Formato da mensagem de correio header body linha em branco ! SMTP: protocolo para trocar mensagens de e-mail ! Linhas de cabealho, ex.: ! To: ! From: ! Subject: diferente dos comandos HTTP ! Corpo ! a mensagem, ASCII somente com caracteres Formato das mensagens: extenses multimdia From: alice@parnamirim.com.br To: bob@natal.com Subject: Foto do guarana :) MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data
! MIME: multimedia mail extension, RFC 2045, 2056 ! Linhas adicionais no cabealho declaram o tipo de contedo MIME Dados multimdia tipo, subtipo, declarao de parmetro Mtodo usado para codificar dados Verso da MIME Dados codificados Protocolos de acesso ao correio ! SMTP: entrega e armazena no servidor do destino ! Protocolo de acesso: recupera mensagens do servidor ! POP: Post Office Protocol [RFC 1939] ! Autorizao (agente <-->servidor) e download ! IMAP: Internet Mail Access Protocol [RFC 1730] ! Mais recursos (mais complexo) ! Manipulao de mensagens armazenadas no servidor ! HTTP: Hotmail, Yahoo! Mail, Gmail, etc. Protocolo POP3 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 POP3 server signing off S: +OK POP3 server ready C: user alice S: +OK C: pass hungry S: +OK user successfully logged on Fase de autorizao ! comandos do cliente: ! user: declara nome do usurio ! pass: password ! respostas do servidor ! +OK ! -ERR Fase de transao, cliente: ! list: lista mensagens e tamanhos ! retr: recupera mensagem pelo nmero ! dele: apaga ! quit ! Mais sobre POP3 (porta 110) ! O exemplo anterior usa o modo download-and-delete ! Bob no pode reler o e-mail se ele trocar o cliente ! download-and-keep: cpias das mensagens em clientes diferentes ! POP3 stateless atravs das sesses ! IMAP (porta 143) ! Mantm todas as mensagens em um lugar: o servidor ! Permite que o usurio organize as mensagens em pastas ! IMAP mantm o estado do usurio atravs das sesses: ! Nomes das pastas e mapeamentos entre os IDs da mensagem e o nome da pasta POP3 (mais) e IMAP DNS Pessoas: muitos identificadores: ! RG, nome, passaporte Internet hospedeiros, roteadores: ! Endereos IP (32 bits) - usados para enderear datagramas ! nome, ex.: ifrn.edu.br - usados por humanos Como Relacionar nomes com endereos IP? Domain Name System: ! Base de dados distribuda implementada numa hierarquia de muitos servidores de nomes ! Protocolo de camada de aplicao hosts, roteadores se comunicam com servidores de nomes para resolver nomes (traduo nome/endereo) ! Nota: funo interna da Internet, implementada como protocolo da camada de aplicao ! Complexidade na borda da rede DNS: Domain Name System 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 endereo IP para www.amazon.com Base de dados distribuda e Hierrquica Por que no centralizar o DNS? ! Ponto nico de falha ! Volume de trfego ! Base centralizada de dados distante ! Manuteno No cresce junto com a rede! DNS: Domain Name System ! So contatados pelos servidores de nomes locais que no podem resolver um nome ! Servidores de nomes raiz: ! Buscam servidores de nomes autorizados se o mapeamento do nome no for conhecido ! Conseguem o mapeamento ! Retornam o mapeamento para o servidor de nomes local DNS: Servidores de nome raiz Existem 13 servidores de nome raiz no mundo Servidores top-level domain (TLD): responsveis pelos domnios com, org, net, edu etc. e todos os domnios top-level nacionais br, uk, fr, ca, jp. ! Network Solutions mantm servidores para o TLD com TLD ! Educause para o TLD edu Servidores DNS autorizados: servidores DNS de organizaes, provem nome de hospedeiro autorizado para mapeamentos IP para servidores de organizaes (ex.: Web e mail). ! Podem ser mantidos por uma organizao ou provedor de servios Servidores TLD e autoritrios ! No pertence estritamente a uma hierarquia ! Cada ISP (ISP residencial, companhia, universidade) possui um ! Tambm 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 Servidores de nomes local Consultas recursivas Consulta recursiva: ! Transfere a tarefa de resoluo do nome para o servidor de nomes consultado ! Carga pesada? Consultas interativas Consulta interativa: ! Servidor contatado responde com o nome de outro servidor de nomes para contato ! Eu no sei isto, mas pergunte a este servidor Exemplo ! O hospedeiro em cis.poly.edu quer o endereo IP para gaia.cs.umass.edu ! Uma vez que um servidor de nomes aprende um mapeamento, ele armazena o mapeamento num registro do tipo cache ! Registros do cache tornam-se obsoletos (desaparecem) depois de um certo tempo ! Servidores TLD so tipicamente armazenados em cache nos servidores de nome locais DNS: armazenando e atualizando registros Tipos de RR ! A: Registro com nome e endereo de um host ! NS: Armazena o nome de um domnio e o servidor com autoridade para responder por esse domnio ! CNAME: Nesse tipo de registro fica um apelido para algum nome cannico (o nome real) de um host. ! MX: Tipo de registro para identificar o servidor de correio para um domnio. Registros do DNS DNS: base de dados distribuda que armazena registros de recursos (RR) Cabealho da msg ! Identificao: nmero de 16 bits para consulta, resposta usa o mesmo nmero ! Flags: ! Consulta ou resposta ! Recurso desejada ! Recurso disponvel ! Resposta com autoridade DNS: protocolo e mensagem Protocolo DNS: mensagem de consulta e resposta, ambas com o mesmo formato de mensagem DNS: protocolo e mensagem DNS e camada de transporte ! Diferente da maioria dos outros protocolos da camada de aplicao, o DNS utiliza ambos protocolos da camada de transporte TCP e UDP. Sendo da sequinte forma: ! Com consultas de tradues (perguntando por RR), o UDP preferencial. (padro) ! Quando uma resposta DNS maior que 512 Bytes, ele utilizar o TCP para realizar essa consulta ! Para transferncia de zonas entre servidores primrios e secundrios o TCP tambm usado ! Para ambos os casos as portas utilizadas so as 53 (53/UDP ou 53/TCP)