·

Engenharia Eletrônica ·

Rede de Computadores

Send your question to AI and receive an answer instantly

Ask Question

Preview text

Capítulo 2 Camada de aplicação Introdução DNS Domain Name System Sistema de Nomes de Domínio World Wide Web Entrega de conteúdo Introdução Nessa camada em que são encontradas todas as aplicações As camadas situadas abaixo da camada de aplicação tem a função de oferecer um serviço de transporte mas na verdade elas não executam qualquer tarefa para os usuários Introdução Neste capitulo estudaremos algumas aplicações reais de redes No entanto mesmo na camada de aplicação existe a necessidade de protocolos de suporte a fim de permitir que as aplicações funcionem Introdução Examinaremos um desses protocolos antes de iniciarmos o estudo das aplicações em si O item em questão é o DNS Domain Name System que cuida da nomenclatura na Internet Depois disso examinaremos duas aplicações reais a World Wide Web e as redes de distribuição de conteúdo DNS Domain Name System Sistema de Nomes de Domínio Embora os programas teoricamente possam se referir a hosts caixas de correio e outros recursos utilizando seus endereços de rede por exemplo endereços IP esses endereços são difíceis de memorizar DNS Domain Name System Sistema de Nomes de Domínio Além disso navegar pelas paginas Web de uma empresa a partir de seu endereço IP por exemplo 1281112441 significa que se a empresa mudar o servidor Web para uma máquina diferente com um endereço IP diferente todos precisam ser informados sobre o novo endereço Por isso foram introduzidos nomes de alto nível legíveis a fim de desassociar os nomes das maquinas dos endereços dessas maquinas DNS Domain Name System Sistema de Nomes de Domínio Desse modo o servidor Web da empresa poderia ser reconhecido como wwwcswashingtonedu independente do seu endereço IP Todavia a rede só reconhece endereços numéricos portanto é necessário algum tipo de mecanismo para converter os strings ASCII em endereços de rede DNS Domain Name System Sistema de Nomes de Domínio Aqui estudaremos como esse mapeamento é feito na Internet Na ARPANET havia simplesmente um arquivo hoststxt que listava todos os nomes de computadores e seus endereços IP Toda noite esse arquivo era acessado por todos os hosts no local em que era mantido DNS Domain Name System Sistema de Nomes de Domínio Para uma rede de algumas centenas de grandes maquinas de tempo compartilhado essa estratégia funcionava razoavelmente bem No entanto bem antes que milhões de PCs estivesse conectados à Internet todos perceberam que essa estratégia não poderia continuar a ser utilizada DNS Domain Name System Sistema de Nomes de Domínio Em algum momento o arquivo acabaria por se tornar grande demais No entanto a razão mais importante é que poderia haver conflitos de nomes de hosts a menos que os nomes fossem gerenciados de uma forma centralizada algo totalmente fora de cogitação em uma enorme rede internacional devido a carga e a latência DNS Domain Name System Sistema de Nomes de Domínio Para resolver esses problemas foi criado o sistema de nomes de domínios ou DNS Domain Name System em 1983 Ele tem sido uma parte fundamental da Internet desde então A essência do DNS é a criação de um esquema hierárquico de atribuição de nomes baseado no domínio e de um sistema de banco de dados distribuído para implementar esse esquema de nomenclatura O DNS é definido nas RFCs 1034 1035 2181 DNS Domain Name System Sistema de Nomes de Domínio Em resumo o DNS é utilizado da forma descrita a seguir Para mapear um nome em um endereço IP um programa aplicativo chama um procedimento de biblioteca denominado resolvedor e repassa a ele o nome como um parâmetro DNS Domain Name System Sistema de Nomes de Domínio O resolvedor envia uma consulta contendo um nome para o servidor DNS local que procura o nome e retorna uma resposta contendo o endereço IP ao resolvedor As mensagens de consulta e resposta são enviadas usando o protocolo de transporte UDP Munido do endereço IP o programa pode então estabelecer uma conexão com o host DNS Domain Name System Sistema de Nomes de Domínio O Ambiente de Nomes DNS Gerenciar um grande conjunto de nomes que está em mudança constante não é um problema de fácil resolução Para a Internet o topo da hierarquia de nomes é controlado por uma organização chamada ICANN Internet Comporation for Assigned Names and Numbers DNS Domain Name System Sistema de Nomes de Domínio A ICANN foi criada para esta finalidade em 1998 como parte do amadurecimento da Internet para uma abrangência mundial Conceitualmente a Internet é dividida em mais de 250 domínios de nível superior em que cada domínio cobre muitos hosts Um domínio é dividido em subdomínios e estes são partidos ainda mais e assim por diante Todos esses domínios podem ser representados por uma árvore como mostra a figura 1 DNS Domain Name System Sistema de Nomes de Domínio Figura 1 Uma parte do espaço de nomes de domínios da Internet DNS Domain Name System Sistema de Nomes de Domínio As folhas representam domínios que não possuem subdomínios mas contém máquinas é claro Um domínio de folha pode conter um único host ou pode representar uma empresa e conter milhares de hosts Existem dois tipos de domínios de nível superior genéricos e de países Os genéricos listados na tabela 1 incluem domínios originais da década de 80 e domínios introduzidos por meios de solicitações à ICANN DNS Domain Name System Sistema de Nomes de Domínio Tabela1 Domínios genéricos de nível superior DNS Domain Name System Sistema de Nomes de Domínio Os domínios de nível superior são controlados pelos registradores apontados pela ICANN É fácil obter um domínio de segundo nível como nomeda empresacom Para obter um nome basta ir até um registrador correspondente nesse caso com para verificar se o nome desejado está disponível e não é marca registrada de outra pessoa DNS Domain Name System Sistema de Nomes de Domínio Se não houver nenhum problema o solicitante pagará uma taxa anual e conseguirá o nome Também há dinheiro envolvidos nos nomes A prática de registrar um domínio apenas para esperar e depois vender a parte interessada por um preço muito mais alto tem até mesmo um nome e é chamado de cybersquatting DNS Domain Name System Sistema de Nomes de Domínio Cada domínio tem seu nome definido pelo caminho ascendente entre ele e a raiz sem nome Esses componentes são separados por pontos Os nomes de domínios podem ser absolutos ou relativos DNS Domain Name System Sistema de Nomes de Domínio Um nome de domínio absoluto sempre termina com um ponto por exemplo engsumcom Os nomes relativos têm de ser interpretados em algum contexto para determinar exclusivamente seu verdadeiro significado Em ambos os casos um nome de domínio se refere a um nó especifico da árvore e de todos os nós abaixo dele DNS Domain Name System Sistema de Nomes de Domínio Os nomes de domínio não fazem distinção entre maiúsculas e minúsculas e podem ter até 63 caracteres e os nomes de caminhos completos não podem exceder 255 caracteres Em principio os domínios podem ser inseridos na árvore de domínios genéricos ou de pais Mas na prática quase todas as organizações dos EUA estão sob um domínio genérico e praticamente todas fora dos EUA estão sob o domínio do seu pais DNS Domain Name System Sistema de Nomes de Domínio Para que um novo domínio seja criado é necessária a permissão do domínio no qual ele será incluído Dessa forma os conflitos de nomes são evitados e cada domínio pode controlar seus subdomínios Uma vez que um novo domínio tenha sido criado e registrado ele poderá criar subdomínios sem que seja necessária a permissão de alguém que esteja em um nível mais alto na árvore DNS Domain Name System Sistema de Nomes de Domínio A atribuição de nomes leva em consideração as fronteiras organizacionais e não as redes físicas Por exemplo mesmo que os departamentos de ciência da computação e de engenharia elétrica estejam localizados no mesmo prédio e compartilhem a mesma LAN eles poderão ter domínios distintos DNS Domain Name System Sistema de Nomes de Domínio Da mesma forma mesmo que o departamento de ciência da computação esteja dividido em dois prédios normalmente todos os hosts instalados em ambos pertencerão ao mesmo domínio DNS Domain Name System Sistema de Nomes de Domínio Registros de recursos Todo domínio independente de ser um único host ou um domínio de nível superior pode ter um conjunto de registros de recursos associado a ele Para um único host o registro de recurso mais comum é apenas seu endereço IP mas também existem muitos outros tipos de registros de recursos DNS Domain Name System Sistema de Nomes de Domínio Quando um resolvedor repassa um nome de domínio ao DNS o que ele obtém são os registros de recursos associados aquele nome Portanto a principal função do DNS é mapear nomes de domínios em registros de recursos Um registro de recurso é composto de cinco campos DNS Domain Name System Sistema de Nomes de Domínio Apesar de serem codificados em binário para proporcionar maior eficiência na maioria das exposições os registros de recursos são mostrados como texto ASCII uma linha para cada registro de recurso O formato que utilizaremos é Nomedominio Tempodevida Classe Tipo Valor DNS Domain Name System Sistema de Nomes de Domínio Nome domínio informa o domínio ao qual esse registro se aplica Esse campo é a chave de pesquisa primária utilizada para atender as consultas TempodeVida fornece uma indicação da estabilidade do registro DNS Domain Name System Sistema de Nomes de Domínio Classe no caso de informações relacionadas a Internet ele é sempre IN Para informações não relacionadas a Internet podem ser empregados outros códigos porém esses raramente são encontrados na pratica O campo Tipo informa qual é o tipo do registro Os tipos mais importantes estão listados na tabela 2 DNS Domain Name System Sistema de Nomes de Domínio Tabela 2 Os principais tipos de registros de recursos DNS Domain Name System Sistema de Nomes de Domínio O tipo de registro mais importante é o registro A Address Ele contém um endereço IP de 32 bits de algum host O registro AAAA corresponde a um endereço IPv6 de 128 bits Cada host da Internet deve ter pelo menos um endereço IP de forma que outras maquinas possam se comunicar com ele DNS Domain Name System Sistema de Nomes de Domínio Servidores de nomes Para evitar os problemas associados a presença de uma única fonte de informações o espaço de nomes do DNS é dividido em zonas não superpostas Uma forma possível de dividir o espaço de nomes da Figura 1 é mostrado na Figura 2 Cada zona contém uma parte da arvore DNS Domain Name System Sistema de Nomes de Domínio Figura 2 Parte do espaço de nomes do DNS dividido em zonas que estão circuladas DNS Domain Name System Sistema de Nomes de Domínio A localização das fronteiras de uma zona fica a cargo de seu administrador Essa decisão é tomada principalmente com base no numero de servidores de nomes desejados e onde Cada zona também está associada a um ou mais servidores de nomes DNS Domain Name System Sistema de Nomes de Domínio Estes são hosts que mantém o banco de dados para a zona Normalmente uma zona terá um servidor de nomes primário que recebe sua informação de um arquivo em seu disco e um ou mais servidores de nomes secundários que recebem suas informações do servidor de nomes primário DNS Domain Name System Sistema de Nomes de Domínio Para melhorar a confiabilidade alguns dos servidores de nomes podem estar localizados fora da zona O processo de pesquisa de um nome e localização de um endereço é chamado resolução de nomes DNS Domain Name System Sistema de Nomes de Domínio Quando um resolvedor tem uma consulta sobre um nome de domínio ele passa a consulta para um servidor de nomes local Se o domínio buscado estiver sob a jurisdição do servidor de nomes ele retornará os registros de recursos oficiais Um registro oficial é aquele que vem da autoridade que controla o registro e portanto sempre está correto DNS Domain Name System Sistema de Nomes de Domínio Os registros oficiais contrastam com os registro em cache que podem estar desatualizados O que acontece quando o domínio é remoto como quando flitscsvunl deseja encontrar o endereço IP de robotcswashingtonedu em UW University of Washington DNS Domain Name System Sistema de Nomes de Domínio Nesse caso e se não houver informações sobre o domínio disponíveis localmente em cache o servidor de nomes inicia uma consulta remota Essa consulta segue o processo mostrado na Figura 3 DNS Domain Name System Sistema de Nomes de Domínio Figura 3 O modo como um resolvedor procura um nome remoto em 10 etapas DNS Domain Name System Sistema de Nomes de Domínio A etapa 1 mostra a consulta que é enviada ao servidor de nomes local Ela contém o nome de domínio buscado o tipo A e a classe IN A próxima etapa é começar no topo da hierarquia de nomes pedindo a um dos servidores de nomes raiz Esses servidores de nomes tem informações sobre cada domínio de alto nível etapa 2 da figura 3 DNS Domain Name System Sistema de Nomes de Domínio Existem 13 servidores de nomes raiz eles são computadores poderosos e altamente replicáveis O servidor de nome raiz provavelmente não saberá o endereço de uma máquina em UW e provavelmente também não conhece o servidor de nomes em UW Mas ele precisa conhecer o servidor de nomes para o domínio edu em que cswashingtonedu está localizado Ele retorna o nome e o endereço IP para parte da resposta na etapa 3 DNS Domain Name System Sistema de Nomes de Domínio O servidor de nomes local então continua sua busca Ele envia a consulta inteira para o servidor de nomes edu aedu serversnet Esse servidor de nomes retorna um servidor de nomes para UW etapas 4 e 5 Mais próximo agora o servidor de nomes local envia a consulta para o servidor de nomes UW etapa 6 A consulta retorna o nome e o endereço IP do servidor de nomes de ciência da computação de UW etapa 7 DNS Domain Name System Sistema de Nomes de Domínio Finalmente o servidor de nomes local consulta o servidor de nomes de ciência da computação de UW etapa 8 Esse servidor é oficial para o domínio cswashingtonedu de modo que deve ter a resposta Ele retorna a resposta final etapa 9 que o servidor de nomes local encaminha como resposta para flitscsvunl etapa 10 O nome foi resolvido DNS Domain Name System Sistema de Nomes de Domínio Esse mecanismo é chamado consulta recursiva figura 3 Nesse método de consulta recursiva quando o host flitscsvunl inicia sua consulta ao servidor de nomes local o servidor de nomes trata a resolução em favor do host até que tenha a resposta desejada para retornar DNS Domain Name System Sistema de Nomes de Domínio Ainda há um outro método de consulta que pode ser utilizado Chamado de método de consulta iterativa Nesse método se o servidor DNS não consegue resolver o nome ele retorna uma lista de outros servidores DNS que talvez possam resolver o nome pesquisado O cliente recebe esta lista e envia a consulta para os servidores DNS informados DNS Domain Name System Sistema de Nomes de Domínio Este processo esta interação continua até que o nome seja resolvido ou que uma resposta negativa seja recebida pelo cliente informando que o nome não pode ser resolvido Uma resolução de nomes pode envolver esses dois mecanismos DNS Domain Name System Sistema de Nomes de Domínio Uma consulta recursiva sempre pode parecer preferível mas muitos servidores de nomes especialmente o raiz não cuidarão disso As consultas iterativas colocam o peso sobre o originador O raciocínio para o servidor de nomes local que dá suporte a uma consulta recursiva é que ele está fornecendo um serviço para os hosts em seu domínio Esses hosts não precisam ser configurados para usar um servidor de nomes completo apenas alcançar o servidor local DNS Domain Name System Sistema de Nomes de Domínio Um outro ponto a ser considerado é o caching Todas as respostas incluindo todas as parciais retornadas são mantidas em cache Desse modo se outro host fizer a mesma procura a resposta será conhecida O uso de respostas em cache reduz bastante as etapas de uma consulta e melhora o desempenho DNS Domain Name System Sistema de Nomes de Domínio Porém as respostas em cache podem estar obsoletas Por esse motivo as entradas em cache não devem ter vida longa Esse é o motivo para o campo tempo de vida ser incluído em cada registro de recurso Ele diz aos servidores de nomes remotos por quanto tempo manter os registros em cache DNS Domain Name System Sistema de Nomes de Domínio Um terceiro ponto a considerar é o protocolo de transporte usado para consultas e respostas Ele é o UDP que estudaremos no capítulo 3 As mensagens DNS são enviadas em pacotes UDP com um formato simples para consultas respostas e servidores de nomes que podem ser usados para continuar a resolução DNS Domain Name System Sistema de Nomes de Domínio Se nenhuma resposta chegar em um curto período de tempo o cliente DNS repetirá a consulta escolhendo outro servidor para o domínio após um pequeno número de tentativas Embora sua finalidade seja simples deve ficar claro que o DNS é um sistema distribuído grande e complexo que compreende milhões de servidores de nomes que trabalham juntos Ele forma um elo importante entre os nomes de domínio que nós podemos entender e os endereços IPs das máquinas DNS Domain Name System Sistema de Nomes de Domínio E inclui replicação e caching para ganhar desempenho e confiabilidade sendo projetado para ser altamente robusto Não abordamos a segurança mas como você poderia imaginar a capacidade de mudar o mapeamento entre nome e endereço pode ter conseqüências devastadoras se isso for feito de forma maliciosa Por esse motivo extensões de segurança chamadas DNSSEC foram desenvolvidas para DNS DNS Domain Name System Sistema de Nomes de Domínio Há também demanda da aplicação para usar nomes de maneiras mais flexíveis por exemplo dando nome ao conteúdo e resolvendo para o endereço IP do host próximo que possui o conteúdo Isso se encaixa no modelo de busca e downloading de um filme É o filme que importa e não o computador que tem uma cópia dele de modo que tudo o que é necessário é o endereço IP de qualquer computador próximo que tenha uma cópia do filme DNS Domain Name System Sistema de Nomes de Domínio As redes de distribuição de conteúdo são uma forma de realizar esse mapeamento World Wide Web A Web como a World Wide Web é conhecida é uma estrutura arquitetônica que permite o acesso a documentos vinculados espalhados por milhões de máquinas na Internet Sua enorme popularidade se deve à interface gráfica colorida de fácil utilização World Wide Web A Web teve inicio em 1989 no CERN European Center for nuclear Research Uma demonstração pública na conferência Hypertext91 chamou a atenção de outros pesquisadores levando Marc Andreessen da Universidade de Illinois a desenvolver o primeiro navegador gráfico ele foi chamado Mosaic lançado em fevereiro de 1993 World Wide Web O Mosaic foi tão popular que um ano depois Andreessen saiu para formar sua própria empresa a Netscape Communications Corp cujo objetivo era desenvolver software para a Web Em 1994 o CERN e o MIT assinaram um acordo criando o W3C World Wide Web Consortium uma organização voltada para o desenvolvimento da Web a padronização de protocolos e para o incentivo a interoperabilidade entre os sites World Wide Web Desde então centenas de universidades e empresas juntaramse ao consórcio A homepage do consorcio está no endereço wwww3org World Wide Web Visão geral da arquitetura Do ponto de vista dos usuários a Web e uma vasta coleção mundial de documentos geralmente chamados páginas da Web ou apenas páginas As páginas geralmente são visualizadas com o auxilio de um programa denominado navegador Firefox Internet Explorer e Chrome são exemplos de navegadores conhecidos World Wide Web O navegador busca a página solicitada interpreta seu conteúdo e exibe a página formatada de modo apropriado na tela do computador A busca da página é feita pelo navegador sem nenhuma ajuda do usuário Assim a movimentação entre as máquinas enquanto o conteúdo é exibido é transparente World Wide Web O protocolo de solicitação e resposta para buscar páginas é o HTTP HyperText Transfer Protocol Quanto a página ela pode ser uma página estática se apresentar o mesmo documento toda vez que for exibida Ao contrário se ela foi gerada sob demanda por um programa ou se contém um programa é chamada de página dinâmica World Wide Web O lado cliente Vamos examinar o lado do navegador Web Basicamente um navegador é um programa que pode exibir uma página Web e capturar cliques do mouse em itens na página exibida Quando um item é selecionado o navegador segue o hiperlink e busca a página selecionada World Wide Web Cada página recebe um URL Uniform Resource Locators que efetivamente serve como um nome mundial da página Os URLs tem três partes o protocolo o nome DNS da máquina em que a página está localizada e o caminho que identifica exclusivamente a página específica um arquivo para ler ou um programa para rodar na máquina World Wide Web Por exemplo considere a página httpwwwcswashingtoneduindexhtml Esse URLs consiste em três partes o protocolo http o nome DNS do host wwwcswashingtonedu e o nome do caminho indexhtml Quando um usuário clica em um hiperlink o navegador executa uma serie de etapas em ordem para buscar a pagina indicada World Wide Web Vamos acompanhar as etapas que ocorrem quando esse link é selecionado 1 O navegador determina o URL verificando o que foi selecionado 2 O navegador pergunta ao DNS qual e o endereço IP de wwwcswshingtonedu 3 O DNS responde com 128208388 World Wide Web 4 O navegador estabelece uma conexão TCP com a porta 80 em 128208388 a porta conhecida para o protocolo HTTP 5 Ele envia um comando HTTP solicitando a página indexhtml 6 O servidor wwwcswashingtoneduorg envia a página como uma resposta HTTP por exemplo fornecendo o arquivo indexhtml World Wide Web 7 Se a página incluir URLs que são necessários para a exibição o navegador busca os outros URLs usando o mesmo processo Nesse caso os URLs incluem várias imagens inseridas também capturadas de wwwcswashingtonedu um vídeo inserido do youtubecom e um script de googleanalyticscom por exemplo 8 As conexões TCP são fechadas se não houver outras solicitações para os mesmos servidores por um curto período 9 O navegador busca e exibe todas as imagens que o arquivo contém World Wide Web O lado servidor Como vimos antes quando o usuário digita um URL ou clica em uma linha de hipertexto o navegador analisa o URL e interpreta a parte entre http e a barra seguinte como um nome DNS a ser pesquisado Munido do endereço IP do servidor o navegador estabelece uma conexão TCP para a porta 80 desse servidor World Wide Web Em seguida ele envia um comando contendo o restante do URL que e o nome de um arquivo nesse servidor O servidor então retorna o arquivo para ser exibido pelo navegador World Wide Web As etapas que o servidor executa em seu loop principal são 1 Aceitar uma conexão TCP de um cliente um navegador 2 Obter o caminho até a página que é o nome do arquivo solicitado 3 Obter o arquivo do disco 4 Enviar o conteúdo do arquivo ao cliente 5 Encerrar a conexão TCP World Wide Web Os servidores da Web modernos tem outras características mas basicamente é isso que um servidor da Web faz para o caso simples de conteúdo que está contido em um arquivo Para o conteúdo dinâmico a terceira etapa pode ser substituída pelo exemplo de um programa determinado pelo caminho que retorna o conteúdo World Wide Web No entanto os servidores Web são implementados com um projeto diferente para atender a mais solicitações por segundo Uma melhoria óbvia usada por todos os servidores da Web é manter um cache na memória com os n arquivos mais recentemente usados ou certo número de gigabytes de conteúdo Antes de ir ao disco para obter um arquivo o servidor verifica o cache Se o arquivo estiver lá ele poderá ser atendido diretamente da memóriaeliminando assim o acesso ao disco World Wide Web Cookies Navegar pela Web conforme descrevemos até aqui envolve uma série de buscas de páginas independentes Não existe o conceito de sessão de login O navegador envia uma solicitação a um servidor e recebe de volta um arquivo Depois o servidor esquece de ter visto esse cliente em particular World Wide Web Esse modelo é perfeitamente adequado para leitura de documentos disponíveis publicamente e funcionou bem quando a Web foi criada Porém ele não é adequado para retornar páginas diferentes para diferentes usuários dependendo do que eles já fizeram com o servidor World Wide Web Por exemplo alguns sites como o de jornais exigem que os clientes se registrem e talvez paguem algum dinheiro para usálos Isso faz surgir a questão de como os servidores podem distinguir entre solicitações de usuários registrados e todos os outros World Wide Web Um segundo exemplo são os portais personalizados da Web como o Yahoo Os usuários podem montar uma página inicial detalhada personalizada apenas com as informações que eles desejem por exemplo suas ações e seus times favoritos mas como o servidor pode exibir a página correta se ele não sabe quem é o usuário World Wide Web Um terceiro exemplo é o do comercio eletrônico ecommerce Se um usuário passear por uma loja virtual colocando itens em seu carrinho de compras de vez em quando como o servidor mantém o conteúdo do carrinho World Wide Web Em principio podese pensar que os servidores poderiam acompanhar os usuários observando seus endereços IP Porém essa idéia não funciona Muitos usuários compartilham computadores especialmente em casa e o endereço IP identifica apenas o computador e não o usuário World Wide Web Esse problema é solucionado com um mecanismo freqüentemente criticado chamado de cookies Os cookies foram implementados inicialmente pelo navegador Netscape em 1994 e agora são especificados na RFC 2109 Quando um cliente solicita uma página da Web o servidor pode fornecer informações adicionais na forma de cookie junto com a página solicitada World Wide Web O cookie é uma string nomeada bem pequena no máximo 4 kB que o servidor pode associar ao navegador Essa associação não é a mesma coisa que um usuário mas é muito mais próxima que um endereço IP Os navegadores armazenam os cookies oferecidos por um conjunto normalmente em um diretório de cookies no disco do cliente de modo que os cookies existem entre as chamadas do navegador a menos que o usuário os tenha desabilitado Os cookies são apenas strings e não programas executáveis World Wide Web Como eles são usados Antes que um navegador envie uma solicitação de uma pagina a algum site ele verifica seu diretório de cookies para ver se foram incluídas cookies pelo domínio para onde a solicitação está indo Nesse caso todos os cookies colocados por esse domínio são incluídos na mensagem de solicitação Quando o servidor os recebe ele pode interpretálos como desejar World Wide Web Um cookie por exemplo é usado para identificar o cliente Quando o cliente retornar na próxima semana por exemplo em uma página de compras para gastar mais dinheiro o navegador envia o cookie para que o servidor saiba quem ele é De posse do ID do cliente o servidor pode pesquisar o registro em um banco de dados e usar essa informação para montar uma página da Web apropriada para exibição World Wide Web Um outro cenário o cliente está passeando pela loja procurando coisas para comprar Quando ele encontra uma oferta e clica nela o servidor a acrescenta em seu carrinho de compra mantido no servidor e monta um cookie contendo o código de produto do item e o envia de volta ao cliente Quando o cliente continua a passear pela loja clicando em novos produtos o cookie é retornado ao servidor em cada nova solicitação de página World Wide Web À medida que mais compras são acumuladas o servidor as inclui no cookie assim o servidor sabe exatamente o que o cliente quer comprar World Wide Web Um uso controvertido do cookie tem a finalidade de reunir informações sobre os hábitos de navegação dos usuários Os operadores de site entendem como os usuários navegam e os anunciantes acumulam perfis de anúncios ou sites que determinado usuário visitou A controvérsia é que os usuários normalmente não sabem que a atividade está sendo monitorada até mesmo com perfis detalhados e por sites aparentemente não relacionados World Wide Web Apesar disso o rastreamento na Web é uma atividade muito grande Os cookies se tornaram o foco para o debate sobre a privacidade online devido ao comportamento de rastreamento A parte mais traiçoeira dessa atividade inteira é que muitos usuários estão completamente desavisados dessa coleta de informações e podem até pensar que estão seguros pois não clicaram em nenhum anúncio World Wide Web Por esse motivo os cookies que rastreiam os usuários são classificados como spyware Para manter alguma aparência de privacidade alguns usuários configuram seus navegadores para rejeitar todos os cookies Porém isso pode trazer problemas com sites legítimos que precisam usar cookies World Wide Web Páginas Web estáticas A base da Web e a transferência de páginas do servidor para o cliente Em sua forma mais simples elas são estáticas isto é são apenas arquivos que ficam armazenados em algum servidor da mesma maneira toda a vez que são buscadas A língua internacional da Web em que a maioria das páginas é escrita é o HTML HyperText Markup Language World Wide Web Páginas Web dinâmicas e aplicações Web O modelo de página dinâmicas tratava as páginas como documentos multimídia que são convenientemente interligados Esse foi um modelo útil nos primeiros dias da Web quando grandes quantidades de informações eram colocados online Atualmente grande parte do entusiasmo em torno da Web é seu uso para aplicações e serviços World Wide Web Alguns exemplos incluem a compra de produtos em sites de comercio eletrônico pesquisa em catálogos de biblioteca exibição de mapas leitura e envio de email e colaboração em documentos Esses novos usos são como o software de aplicação tradicional por exemplo leitores de correio e processadores de texto World Wide Web A diferença é que essas aplicações são executadas dentro do navegador com os dados do usuário armazenado em servidores no centro de dados da Internet Elas usam protocolos Web para acessar informações e o navegador para exibir uma interface com o usuário World Wide Web A vantagem dessa técnica é que os usuários não precisam instalar programas de aplicações separados e os dados do usuário podem ser acessados de diferentes computadores e apoiados pelo operador do serviço Ela provou ser tão bemsucedida que está competindo com o software tradicional Naturalmente o fato de que essas aplicações são oferecidas gratuitamente por grandes provedores ajuda World Wide Web Esse modelo é a forma prevalente de computação em nuvem em que a computação passa dos computadores de desktop individuais para cluster de servidores compartilhados na Internet Assim para atuar como aplicações as páginas da Web não podem mais ser estáticas Um conteúdo dinâmico é necessário O conteúdo dinâmico pode ser gerado por programas que são executados no servidor ou no navegador ou nos dois lugares World Wide Web Por exemplo considere um serviço de mapa que permite ao usuário inserir um endereço e apresenta um mapa correspondente ao local Como indicado na figura 5 World Wide Web Figura 5 Páginas dinâmicas World Wide Web Dada uma solicitação por um local o servidor Web precisa usar um programa para criar uma página que mostre o mapa para o local a partir de um banco de dados de ruas e outras informações geográficas A solicitação etapa 1 faz com que o programa seja executado no Servidor o programa consulta um banco de dados para gerar a página apropriada etapa 2 e retorna ao navegador etapa 3 World Wide Web Em nosso exemplo de mapa o programa permitiria ao usuário encontrar rotas e explorar as áreas vizinhas em diferentes níveis de detalhes etapa 4 Para lidar com algumas interações o programa pode precisar de mais dados do servidor Nesse caso ele enviará uma solicitação ao servidor etapas 56 e 7 World Wide Web HTTP HyperText Transfer Protocol O protocolo que é usado para transportar toda a informação entre os servidores e os clientes na Web é o HTTP HyperText Transfer Protocol especificado na RFC 2616 HTTP é um protocolo simples do tipo solicitaçãoresposta que roda sobre o protocolo de transporte TCP World Wide Web Ele especifica quais mensagens os clientes podem enviar aos servidores e quais respostas recebem de volta O HTTP é um protocolo de camada de aplicação e está bastante associado a Web World Wide Web Porém em outro sentido o HTTP está se tornando mais um protocolo de transporte que oferece um meio para os processos comunicarem conteúdo entre os limites de diferentes redes Esses processos não precisam ser um navegador Web nem um servidor Web Um player de mídia poderá usar HTTP para falar com o servidor e solicitar informação do álbum World Wide Web Conexões O modo habitual de um navegador entrar em contato com um servidor é estabelecer uma conexão TCP para a porta 80 da maquina servidora Há três tipos de conexões as conexões não persistes as conexões persistentes sem paralelismo e as conexões persistentes com paralelismo World Wide Web Conexões não persistentes Antigamente na Web com o HTTP 10 depois que a conexão era estabelecida uma única solicitação era enviada e uma única resposta era devolvida e então a conexão TCP era encerrada figura 6 Em um mundo no qual as paginas da Web típicas consistiam inteiramente em texto HTML esse método era adequado World Wide Web Figura 6 Conexões não persistentes World Wide Web Rapidamente uma página comum continha grandes números de links inseridos para conteúdo como ícones e outros atrativos visuais O estabelecimento de uma conexão TCP separada para transportar um único ícone se tornou um modo de operação muito dispendioso World Wide Web Essa observação levou ao lançamento do HTTP 11 que admite conexões persistentes Que podem ser de dois tipos Conexões persistentes sem paralelismo e Conexões persistentes com paralelismo World Wide Web conexões persistentes sem paralelismo É possível estabelecer uma conexão TCP enviar uma solicitação e obter uma resposta e depois enviar solicitações adicionais e receber respostas adicionais na mesma conexão TCP Como indicado na figura 7 World Wide Web Figura 7 Conexões persistentes sem paralelismo World Wide Web Conexões persistentes com paralelismo Ainda para melhorar o desempenho é possível enviar a solicitação 2 antes de chegar a resposta a solicitação 1 por exemplo Como indicado na figura 8 World Wide Web Figura 8 Conexão persistente com paralelismo World Wide Web Alguns comentários Nas conexões persistentes a busca completa é mais rápida Existem dois motivos para o ganho de velocidade Primeiro não é gasto tempo no estabelecimento de conexões adicionais e segundo a transferência das mesmas imagens prossegue mais rapidamente E nas conexões persistentes com paralelismo melhora ainda mais o desempenho World Wide Web Caching As pessoas normalmente retornam às páginas Web que já viram antes e páginas relacionadas quase sempre tem os mesmos recursos internos Guardar as páginas que são buscadas para uso subseqüente é chamado de caching A vantagem que quando uma página em cache pode ser reutilizada não é necessário repetir a transferência World Wide Web O HTTP possui suporte interno para ajudar os clientes a identificar quando eles podem reutilizar as páginas com segurança e isso melhora o desempenho reduzindo tanto o tráfego quanto a latência na rede A desvantagem é que o navegador agora precisa armazenar páginas mas isso quase sempre compensa pois o armazenamento local é barato World Wide Web As páginas normalmente são mantidas em disco para que possam ser usadas quando o navegador for executado em outro momento A questão difícil com o caching HTTP é como determinar que uma cópia previamente mantida em cache representa a mesma página que seria exibida se fosse buscada novamente no servidor O HTTP usa duas estratégias para resolver esse problema World Wide Web Elas são mostradas na figura 9 como forma de processamento entre a solicitação etapa 1 e a resposta etapa 5 Figura 9 Caching HTTP World Wide Web A primeira estratégia é a validação da página etapa 2 O cache é consultado e se tiver uma cópia de uma página para o URL solicitado sabese que ela é recente ou seja ainda válida e não é preciso buscála novamente do servidor e assim as páginas em cache podem ser retornadas diretamente World Wide Web Na segunda estratégia o servidor responde se a cópia em cache ainda é válida Essa solicitação é um GET condicional e pode ser vista na etapa 3 da figura 9 Se o servidor souber que a cópia em cache ainda é válida ele poderá enviar uma resposta curta para dizer isso etapa 4a Caso contrário ele precisará enviar a resposta completa etapa 4b World Wide Web Outros campos do cabeçalho são usados para permitir que o servidor verifique se uma cópia em cache ainda é válida O cliente tem a hora em que uma página em cache foi atualizada pela ultima vez através do cabeçalho LastModified Ele pode usar essa hora ao servidor usando o cabeçalho If ModifiedSince para solicitar a página somente se ela tiver sido alterada depois dessa hora World Wide Web Por fim observe que essas duas estratégias de caching são anuladas pelas diretivas transportadas no cabeçalho Cache Control ou seja quando se precisa restringir o caching por exemplo nocache Um exemplo é uma página dinâmica que será diferente da próxima vez que for capturada As páginas que exigem autorização também não são mantidas em cache World Wide Web Há duas observações importante a serem feitas em relação ao caching Primeiro ele pode ser realizado em outros lugares além do navegador No caso geral as solicitações HTTP podem ser roteadas por uma série de caches e isso é chamado de caching por proxy World Wide Web Segundo os caches oferecem um aumento importante de desempenho mas não tanto quanto de poderia esperar ou seja os caches na Web provavelmente sempre deverão ser capazes de lidar com menos da metade das solicitações Entrega de conteúdo Houve uma época em que a Internet era toda comunicação como a rede telefônica No inicio os acadêmicos se comunicavam com máquinas remotas fazendo login pela rede para realizar suas tarefas As pessoas usavam o email para se comunicarem umas com as outras por um longo período de tempo e agora também usam vídeo e voz sobre IP Entrega de conteúdo Porém como a Web cresceu a Internet tornouse mais relativa a conteúdo do que a comunicação Muitas pessoas usam a Web para buscar informações e existe uma vasta quantidade de compartilhamentos de arquivos peertopeer controlada para acesso a filmes músicas e programas Entrega de conteúdo A passagem para conteúdo foi tão pronunciada que a maior parte da largura de banda da Internet agora é usada para entrega de vídeo armazenados Como a tarefa de distribuir conteúdo é diferente daquela da comunicação ela impõe diferentes requisitos sobre a rede Entrega de conteúdo As técnicas que são usadas para a distribuição de conteúdo foram desenvolvidas com o tempo Quantidades grandes de largura de banda foram providas no núcleo da Internet e a conectividade de banda larga mais rápida foi implementada na borda da rede Essa largura de banda foi essencial para melhorar o desempenho Entrega de conteúdo Mas também foram desenvolvidas diferentes arquiteturas para usar a largura de banda para distribuir conteúdo Para projetar e preparar redes que funcionam bem precisamos entender o tráfego que elas precisam transportar Com a mudança para conteúdo por exemplo os servidores migraram de escritórios da empresa para centro de dados na Internet que oferecem grande quantidade de máquinas com excelente conectividade de rede Entrega de conteúdo Hoje para usar até mesmo um servidor pequeno é mais fácil e mais barato alugar um servidor virtual hospedado em um centro de dados da Internet do que operar uma máquina em casa ou no escritório com conectividade de banda larga com a Internet Entrega de conteúdo Não importa quanta largura de banda uma máquina tenha ela só pode atender a muitas solicitações da Web enquanto a carga não for muito grande A solução nesse caso é usar mais de um computador para criar um servidor Web isso nos leva ao modelo de parque de servidores Entrega de conteúdo Parque de Servidores O modelo de parque de servidores está indicado na figura 10 Entrega de conteúdo Figura 10 Um parque de servidores Entrega de conteúdo A dificuldade com esse modelo aparentemente simples é que o conjunto de computadores que compõem o parque de servidores precisa se parecer com um único site lógico para os clientes Senão teremos simplesmente montado diferentes sites que funcionam em paralelo Entrega de conteúdo Existem várias soluções possíveis para fazer com que o conjunto de servidores pareça ser um único site Todas as soluções assumem que qualquer um dos servidores pode lidar com uma solicitação de qualquer cliente Para fazer isso cada servidor precisa de uma cópia do site Entrega de conteúdo Os servidores aparecem como conectados a uma banco de dados backand comum por meio de uma linha tracejada para essa finalidade como indicado na figura 10 repetida abaixo Entrega de conteúdo Uma solução é usar DNS para espalhar as solicitações pelos servidores no parque de servidores figura 11 Figura 11 Proxy cache entre browsers e servidores Web Entrega de conteúdo Assim diferentes clientes fazem contato com diferentes servidores para acessar o mesmo site As outras soluções são baseadas em um frontand que espalha as solicitações que chegam pelo pool de servidores no parque de servidores figura 10 O frontand normalmente é um switch da camada de enlace ou um roteador IP ou seja um dispositivo que trata de quadros ou datagramas Entrega de conteúdo Figura 10 Um parque de servidores Entrega de conteúdo Parque de servidores e proxies Web ajudam a criar grandes sites e melhorar o desempenho da Web mas eles não são suficientes para sites verdadeiramente populares que precisam enviar conteúdo em escala global YouTube é um exemplo clássico Assim como o Netflix Entrega de conteúdo Nenhum servidor isolado é poderoso ou confiável o bastante para lidar com um nível de demanda desse tipo Para esses sites uma técnica diferente é necessária Em vez disso o YouTube e outros grandes provedores de conteúdo montam suas próprias redes de distribuição de conteúdo as chamadas CDNs Content Delevery Networks Entrega de conteúdo Essas redes usam centro de dados espalhados pelo mundo inteiro para atender com conteúdo a um numero extremamente grande de clientes com bom desempenho e disponibilidade As redes de entrega de conteúdo ou CDNs fazem com que ao invés dos clientes procurarem uma cópia da página solicitada em um cache próximo é o provedor que coloca uma cópia da página solicitada em um conjunto de nós em diferentes locais e instrui o cliente a usar um nó vizinho como servidor Entrega de conteúdo Nessa arquitetura CDN o provedor estabelece uma coleção distribuída de máquinas em locais dentro da Internet e as utiliza para enviar conteúdo aos clientes Um exemplo de caminho que os dados seguem quando são distribuídos por uma CDN pode ser visto na figura 12 Entrega de conteúdo Figura 12 Árvore de distribuição da CDN Entrega de conteúdo O servidor de origem na CDN distribui uma cópia do conteúdo para outros nós na CDN em Sidney Boston e Amsterdã nesse exemplo figura 12 Isso é mostrado com linhas tracejadas Os clientes então buscam página do nó mais próximo na CDN o que é mostrado como linhas sólidas Entrega de conteúdo Desse modo os clientes em Sidney buscam uma cópia da página que está armazenada em Sidney nenhum deles busca a página do servidor de origem que pode estar na Europa O método DNS está no núcleo das redes CDNs A figura 13 mostra um exemplo Entrega de conteúdo Figura 13 Clientes na vizinhaça direta de nós CDN usando DNS Entrega de conteúdo Nem todos podem montar uma CDN de mil nós em locais do mundo inteiro para distribuir seu conteúdo Porém há uma alternativa que é simples de usar e pode distribuir uma quantidade tremenda de conteúdo è uma rede P2P Peerto Peer As redes P2P entraram em cena a partir de 1999 e hoje o protocolo BitTorrent é o protocolo P2P mais popular Entrega de conteúdo Ele é muito usado para compartilhar vídeo e outros conteúdos sendo responsável por um grande fração de todo o tráfego na Internet A idéia básica de uma rede de compartilhamento de arquivos P2P PeertoPeer é que muitos computadores se juntam e compartilham seus recursos para formar um sistema de distribuição de conteúdo Entrega de conteúdo Ou seja uma coleção de computadores compartilha seus recursos para atender uns aos outros com conteúdo sem servidores separados ou sem ponto de controle central algum Os computadores normalmente são apenas computadores domésticos ou seja não precisam ser máquinas nos centro de dados da Internet Entrega de conteúdo Os computadores são chamados peers pares porque cada um pode alternadamente atuar como cliente para outro peer buscando seu conteúdo e como servidor fornecendo conteúdo para outros peers O que torna o sistema P2P interessante é que não existe uma infraestrutura dedicada diferente de uma CDN Qualquer um participa na tarefa de distribuir conteúdo e normalmente não existe um ponto de controle central Entrega de conteúdo Exemplo de aplicações que usam o BitTorrent 1 Atualizações de jogo e Downloads Algumas empresas distribuem software através do protocolo BitTorrent Quando você compra um dos jogos da empresa e faz o download na verdade você está apenas baixando um cliente BitTorrent que irá fazer o resto do trabalho Entrega de conteúdo 2 Transferência de grandes arquivos internamente O Facebook e o Twitter usam BitTorrent internamente para mover arquivos No caso do Facebook a ideia de usar o BitTorrent surgiu depois de explorar várias soluções e não conseguir resolver o problema de ter que mover arquivos enormes entre seus inúmeros servidores Como o BitTorrent é muito bom para propagação de arquivos grandes ao longo de um grande número de servidores diferentes a solução serviu para resolver o problema da empresa de rede social