Uma das características mais fortes da arquitetura
CAPÍTULO 2: CAMADA DE P2P é sua autoescalabilidade.
APLICAÇÃO. Embora cada par gere uma carga de trabalho
Aplicações de rede são a razão de ser uma rede solicitando arquivos, também acrescenta de computadores. Se não fosse possível capacidade de serviço ao sistema distribuindo inventar aplicações úteis, não haveria arquivos a outros pares. necessidade de projetar protocolos de rede Arquiteturas P2P em geral não requerem para suportá-las. infraestrutura e largura de banda de servidor significativas. PRINCÍPIOS DE APLICAÇÕES DE REDE O núcleo do desenvolvimente de aplicação de Entretanto, as futuras aplicações P2P estão diante rede é escrever programas que rodem em de três principais desafios: sistemas finais diferentes e se comuniquem 1. ISP amigável. A maioria dos residenciais foi entre si. dimensionados para uso de muito mais Portanto, ao desenvolver sua nova aplicação, tráfego de entrada do que de saída. você precisará escrever um software que rode 2. Segurança. Em razão de sua natureza em vários sistemas finais. altamente distribuída e exposta, as aplicações P2P podem ser um desafio para Equipamentos de núcleo de rede não proteger. funcionam na camada de aplicação. 3. Incentivos. O sucesso das futuras aplicações Arquiteturas de aplicação de rede P2P também depende de usuários participativos para oferecer largura de A arquitetura da aplicação é projetada pelo banda, armazenamento e recursos da programador e determina como aplicação é computação às aplicações. organizada nos vários sistemas finais. E um arquitetura cliente-servidor há um hospedeiro Comunicação entre processos sempre em funcionamento, denominado servidor, Não são programas mas processos que se que atende à requisições de muitos outros comunicam. hospedeiros, denominados cliente. Um processo pode ser imaginado como um Em aplicações cliente-servidor, muitas vezes programa que está rodando dentro de um sistema acontece de um úico hospdeiro servidor ser final. incapaz de atender a todas as requisições de seus Quando os processos rodam no mesmo sistema clientes. final, comunicam-se usando comunicação Um datacenter acomodando um grande número inteprocessos, cujas regras são determinadas pelo de hospedeiros é usado com frequência para criar sistema operacional do sistema final. um servidor virtual poderoso. Processos clientes e processos servidores Em uma arquitetura P2P há uma confiança mínima Uma aplicação de rede consiste em pares de ou nenhuma nos servidores dedicas nos centros de processos que enviam mensagens uns para os dados. Em vez disso, a aplicação utiliza a outros por meio de uma rede. comunicação direta entre duplas de hospdeiros conctados alternadamente, denominados pares. Para cada par de processos comunicantes normalmente rotulamos um dos dois processos de Como os pares se comunicam sem passar por cliente e outro, de servidor. nenhum servidor decicados, a arquitetura é denominada par a par. No compartilhamento de arquivo P2P, o par que O processo de envio também precisa identificar o envia o arquivo é rotulado de cliente e o que processo receptor executando no hospedeiro. recebe, servidor. Serviços de transporte disponíveis No contexto de uma sessão de comunicação entre um par de processos, aquele que inicia a para aplicações comunicação é rotulado de cliente. O que espera A aplicação do lado remetente envia mensagens para ser contatado para iniciar a sessão é o por meio de socket. Do outro lado, o protocolo de servidor. camada de transporte tem a responsabilidade de levar as mensagens pela rede até o socket do A interface entre o processo e a rede de processos destinatário. computadores Podemos classificar, de maneira geral, os possíveis Qualquer mensagem enviada de um processo para serviços segundo quatro dimensões: outro tem de passar pela rede subjacente. Transferência confiável de dados: se um Um processo envia mensagens para a rede e protocolo fornecer um serviço de recebe mensagens dela através de uma interface recebimentos de dados garantido, ele de softwares demoninada socket. fornecerá uma transferência confiável de Um processo é semelhante a uma casa e seu dados. Um importante serviço que o socket, à porta da casa. protocolo da cama de transporte pode oferecer para um aplicação é a Um socket é a interface entre a camada de transferência confiável de dados processo a aplicação e a de transporte dentro de um processo. hospedeiro. Vazão: é a taxa pela qual o processo É também denominado interface de programação remetente pode enviar bits ao processo de aplicação (API) entre a aplicação e a rede. destinatário. A vazão disponível pode oscilar com o tempo. A aplicação pode O programador da aplicação controla tudo o que solicitar uma vazão garantida de r bits/s, e existe no lado da camada de aplicação do socket, o protocolo de transporte garante, então, mas tem pouco controle do lado de sua camada de que a vazão disponível seja sempre r bits/s. transporte. Aplicações que possuam necessidade de O programador só controla a escolha do protocolo vazão são conhecidas como aplicações de transporte e , talvez, a capacidade de sensíveis à largura de banda. Aplicações derterminar alguns parâmetros. elásticas podem usar qualquer quantidade mpínima ou máxima que por acaso esteja Endereçando processos disponível. Temporização. De modo semelhante, para que um processo Segurança: um protocolo de transporte rodando em um hospedeiro envie pacotes a um consegue além do sigilo, fornecer outros processo rodando em outro hospedeiro, o serviços de segurança, incluindo receptor precisa de um endereço integridade dos dados e autenticação do Para identificar o processo receptor, duas ponto terminal. informações devem ser especificadas: o endereço do hospedeiro e um identificador que especifica o processo receptor no hospedeiro de destino. Serviços de transporte providos pela Um endereço IP é um quantidade de 32 bits que Internet podemos pensar como identificando um hospdeiro Serviços do TCP de forma exclusiva, O modelo de serviço TCP inclui um serviço Protocolos de camada de aplicação orientado para conexão e um serviço confiável de transferência de dados. Um protocolo de camada de aplicação define como processos de uma aplicação, que funcionam em Quando uma aplicação solicita o TCP como seu sistemas finais diferentes, passam mensagens protocolo de transporte, recebe dele ambos os entre si. serviços: Um protocolo de camada de aplicação define: Serviço orientado para conexão: 1. Os tipos de mensagens trocadas. O TCP faz o cliente e o servidor trocarem 2. A sintaxe dos vários tipos de mensagens, informações de controle de camada de transporte tais como os campos da mensagem e como antes que as mensagens de camada de aplicação os campos são delineados. comecem a fluir. Esse procedimento de 3. A semântica dos campos, isto é, o apresentação alerta o cliente e o servidor. significado da informação nos campos. Após a fase de apresentação, dizemos que existe 4. Regras para determinar quando e como um uma conexão TCP entre os sockets dos dois processo envia mensagem e responde processos. mensagens.
Serviço confiável de transporte: Muitos outros protocolos de camada de aplicação
são próprios e, de modo intencional, não estão Os processos comunicantes podem contar com o disponíveis ao público, ex: o Skype. TCP para a entrega de todos os dados enviados sem erro e na ordem correta. O HTTp, protocolo de camada de aplicação da Web, define o formato e a sequ~encia das O TCP também inclui um mecanismo de controle mensagens que são passadas entre o navegador e de congestionamento, um serviço voltado ao bem- o servidor. estar geral da internet e não ao benefício direto dos processos comunicantes. O SMTP é apenas um pedaço(embora importante) da aplicação de correio eletrônico. Serviços UDP O UDP é um protocolo de transporte simplificado, A WEB E O HTTP leve, com um modelo de serviço minimalista. É um Talvez o que mais atraia a maioria dos usuários da serviço não orientado para conexão. Web é que ela funciona por demanda. Usuários O UDP provê um um serviço não confiável de recebem o que querem, quando querem, o que é transferência de dados. diferente da transmissão de rádio e de televisão, que obriga a sintonizar quando o provedor O UDP não inclui um mecanismo de controle de disponibiliza o conteúdo. congestionamento . Descrição geral do HTTP Serviços não providos pelos protocolos de transporte da Internet O protocolo de Transferência de Hipertexto é o protocolo da camada da aplicação da Web, está no A Internet hoje pode oferecer serviços satisfatório coração da Web é definido por RFC 1945 e no RFC a aplicações sensíveis ao tempo, mas não garantias 2616. de temporização ou de largura de banda. O HTTp é executado em dois programas: um Na telefonia, em geral os programadores preferem cliente e um servidor. rodá-las em cima do UDP, contornando assim o mecanismo de controle de congestionamento do Os dois, executados em sistemas finais diferentes, TCP e evitando pacotes extras. conversam entre si por mensagens HTTP. O HTTP define a estrutura dessas mensagens e o modo A linha de requisição tem três campos: o do como o cliente e o servidor as trocam. método, o do URL e o da versão do HTTP. Uma página Web é constituída de objetos. A grande maioria das mensagens de requisição HTTP emprega o método GET, o qual é usado Um objeto é apenas um arquivo que se pode quando o navegador requisita um objeto e este é acessas com um único URL identificado no campo URL. A maioria das páginas Web é constituída de um Um navegador vai gerar linhas de cabeçalho em arquivo-base HTML que referencia os outros função de seu tipo e versão e se o navegador tem objetos na página com os URLs dos objetos. um versão do objeto possivelmente desatualizada Cada URL tem dois componentes: o nome do em sua memória. Servidores Web se comportam de hospedeiro(hostname) do servidor que abriga o maneira semelhante. objeto e o nome doo caminho. Interação usuário-servidor: cookies Os servidores Web que executam o lado servidor É sempre bom que um site identifique usuários, do HTTP, abrigam objetos Web, cada um seja porque o servidor deseja restringir acesso, seja endereçado por um URL. porque quer apresentar conteúdo em função da O HTTP define como os clientes requisitam páginas identidade do usuário. aos servidores e como eles as transferem aos Cookies definidos no RFC 6265 permitem que sites clientes. monitorem seus usuários. Sobre TCP, no lado cliente ela é a porta entre o A tecnologia dos cookis tem quatro componentes: processo servidor e a conexão TCP. O cliente envia um linha de cabeçalho de cookie na mensagem de mensagens de requisição HTTP para sua interface resposta HTTP; uma linha de cabeçalho de cookie socket e recebe mensagens de resposta HTTP. na mensagem de requisição; um arquivo de cookie Como o HTTP não mantém informação aluma mantido no sistema final do usuário e gerenciado sobre clientes, o HTTP é denominado um protocolo pelo navegador do usário e um banco de dados de sem estado. apoio no site.
O HTTP com conexões não Caches Web
Um cache Web – também chamado de proxy – é persistentes e persistentes uma entidade da rede que atende requisições A utilização de conexões paralelas reduz o tempo HTTP em nome de um servidor Web de origem. de resposta. Tem seu próprio disco de armazenagem e mantém O RTT é o tempo que leva para um pequeno pacote dentro del cópias de objetos recentemente viajar do cliente ao servidor e de volta ao cliente. requisitados. Em conexões persistentes o servidor deixa a Um cache é ao mesmo tempo servidor e cliente. conexão TCP aberta após enviar resposta. Caches Web podem reduzir bastante tráfego na Formato da mensagem HTTP Internet como um todo, melhorando, assim, o A primeira linha é denominada linha de requisição; desempenho para todas as aplicações. as subsequentes são denominadas linhas de cabeçalho.