Peer-to-peer
![](https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/P2P-network.svg/200px-P2P-network.svg.png)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Server-based-network.svg/200px-Server-based-network.svg.png)
Peer-to-peer(em português,par a par,ou simplesmenteponto a ponto) ouP2Pé umaarquiteturaderedes de computadoresonde cada um dos pontos ou nós da rede funciona tanto comoclientequanto comoservidor,permitindo compartilhamentos de serviços e dados sem a necessidade de um servidor central ou hierárquica, mudando um paradigma existente. Uma redepeer-to-peeré mais conveniente para o armazenamento de objetos imutáveis. Seu uso em objetos mutáveis é mais desafiador, e pode ser resolvido com a utilização de servidores confiáveis para gerenciar uma sequência de versões e identificar a versão corrente. Pode ser usada para permitir a troca de dados (como músicas, vídeos, imagens, dados e etc), entre pares decomputadoresnão conectados à Internet por meio de umcabo crossover.Enfim, qualquer coisa com formato digital. Um exemplo detransmissão de dadosviapeer-to-peersão osTorrents.
Os sistemascliente-servidortradicionais gerenciam e fornecem acesso a recursos comoarquivos,páginaswebou outros objetos localizados em um único computadorservidor.Nesses projetos centralizados, são exigidas poucas decisões sobre a distribuição dos recursos ou sobre o gerenciamento dos recursos dehardware.Os sistemaspeer-to-peerfornecem acesso a recursos de informação localizados em computadores de toda a rede. Os algoritmos para a distribuição e recuperação de objetos são um aspecto importante do projeto do sistema. Seu projeto tem como objetivo distribuir um serviço totalmente descentralizado e organizado, equilibrando, automaticamente, as cargas de armazenamento e processamento de forma dinâmica entre todos os computadores participantes à medida que as máquinas entram e saem do serviço. Porém, um problema que acarreta perigo para esse tipo de rede são as ameaças cibernéticas que podem decorrer de falhas no servidor devido a falta de energia ou avarias de componentes internos. No entanto, as redes P2P objetivam contornar este problema ao interconectar logicamente os pares. Seguindo neste modelo, cada nó da rede pode atuar como cliente ou servidor, ou seja, pode compartilhar ou adquirir conteúdo ao mesmo tempo.[1]
Esse tipo dearquitetura de redeé muito conhecido pelo compartilhamento de arquivos. No entanto, as redes P2P são utilizadas para outras áreas, tais como, armazenamento distribuído em meios acadêmico, científico e de telecomunicações, por exemplo.
Um outro bom exemplo de rede rede peer-to-peer é o Torrent onde o cliente (pessoa que baixa o arquivo) recebe os dados do servidor (pessoa que tem o arquivo extraído do computador) e também o e-mail.
Vantagens
[editar|editar código-fonte]Por não se basear em uma arquitetura cliente-servidor, onde apenas o servidor é responsável pela execução de todas as funções da rede, o P2P tem uma enorme vantagem justamente por não depender de um servidor e por todos os nós estarem interconectados, permitindo o acesso a qualquer nó a partir de qualquer um desses. Por esse motivo, a rede tem uma elevadadisponibilidade.
Essa arquitetura depende da alta performance dainternet.Como os recursos necessários são distribuídos (carga computacional, tráfego de rede, espaço de armazenamento, etc.) entre os nós, é possível conseguir um melhor desempenho de forma econômica, diferentemente da rede cliente-servidor, onde a performance depende do desempenho do servidor.
A arquitetura P2P apresenta maior disponibilidade de dados, visto que o objeto pode ser disponibilizado em inúmeros nós da internet. Porém, a garantia da segurança é inferior aos outros projetos de compartilhamento de dados.
Em contexto geral, bons resultados em experiências de pesquisa são trazidos por essa tecnologia por usar métodos para intercâmbio de informações sem recursos adicionais.
Arquitetura P2P
[editar|editar código-fonte]Um sistemapeer-to-peerimplementa uma rede abstrata sobreposta, em cima da topologia da rede. Essa sobreposição é utilizada para descobrir e indexar os pares da rede, tornando o sistema P2P funcional, independente datopologiada rede física. O conteúdo é trocado diretamente sobre oprotocolo IP.Sistemaspeer-to-peeranônimos são exceções, pois implementam camadas extras de roteamento para ocultar sua identidade de origem ou de destino.
Em uma arquitetura P2P padrão, não existe a noção de cliente ou servidor, mas apenas pares de nós que funcionam tanto como cliente, quanto como servidor, para outros nós da rede. Um exemplo de transferência de arquivos que não utiliza o P2P é oFile Transfer Protocol(FTP),onde os programas de cliente e servidor são distintos.
A redeOverlayP2P consiste em uma forma em que todos os pares da rede funcionem como apenas um nó dessa. Existe uma ligação entre dois nós que se conhecem na rede. Isto é, um nó participante conhece a localização de outro nó da rede P2P. Então, existe uma aresta que liga o primeiro nó existente ao segundo na rede sobreposta. Com base em como os nós estão conectados na rede, podemos classificar a rede P2P como estruturada ou não estruturada.
Na estrutura P2P, os pares são organizados de acordo com critérios e algoritmos, que realizam a sobreposição com topologias específicas. Normalmente, usamtabelashashdistribuídas para indexação. Sistemas P2P estruturados são adequados para implementações em larga escala devido à alta escalabilidade e algumas garantias sobre o desempenho (normalmente, aproximando O(log N), onde N é o número de nós no sistema P2P).
Não é imposta pela rede P2P uma estrutura padrão para a redeOverlay(sobreposta). Na ideologia, não existe no sistema de estrutura P2P um elemento centralizador. Entretanto, na prática existe, em sistemas estruturados, vários graus de centralização. Três categorias se destacam:
- Peer-to-peerpura: toda rede consiste unicamente em pares equipotentes, existindo apenas uma camada de encaminhamento e nenhum sistema de infraestrutura especial.
- Peer-to-peercentralizada: é utilizado um servidor central para indexar as informações e iniciar o sistema inteiro. As conexões entre pares não são gerenciadas por qualqueralgoritmo.
- Peer-to-peerhíbrida: permite que os nós da infraestrutura coexistam.
O primeiro e popular sistemapeer-to-peerde compartilhamento de arquivos, oNapster,foi um exemplo do modelo centralizado.Freenete implementações iniciais do protocoloGnutella,por outro lado, são exemplos de modelo descentralizado. Implementações Gnutella modernas,Gnutella2,bem como a agora substituída redeKazaa,são exemplos do modelo híbrido.
A demanda por serviços na Internet vem crescendo a uma escala que só pode ser limitada pelo tamanho dapopulação mundial.Um dos objetivos dos sistemaspeer-to-peeré permitir o compartilhamento de dados e recursos numa larga escala, excluindo qualquer requisito por servidores gerenciados separadamente e a sua infraestrutura associada. Sistemaspeer-to-peertêm o propósito de suportar sistemas e aplicações distribuídas utilizando os recursos computacionais disponíveis emcomputadores pessoaiseestações de trabalhoem número crescente. Isso tem se mostrado bastante atrativo, já que a diferença de performance entredesktopse servidores tem diminuído e as conexões debanda largatêm proliferado.
Shirky[2]definiu as aplicações P2P como "aplicações que exploram recursos disponíveis nas bordas da Internet - armazenamento, ciclos, conteúdo, presença humana".[3]
Geralmente, uma redepeer-to-peeré constituída por computadores ou outros tipos de unidades de processamento que não possuem um papel fixo de cliente ou servidor. Pelo contrário, costumam ser consideradas de igual nível e assumem o papel de cliente ou de servidor dependendo da transação que será iniciada ou recebida de um a outro par da mesma rede.
Os nós da redepeer-to-peerpodem diferir em termos de configuração local, capacidade de processamento, capacidade de armazenamento, largura de banda, entre outras características particulares. O primeiro uso da expressãopeer-to-peerfoi em 1984, com o desenvolvimento do projetoAdvanced peer-to-peer Networking ArchitecturenaIBM.
Redes virtuais
[editar|editar código-fonte]O termo é utilizado em diferentes tecnologias que adotam um modelo conceitualpeer-to-peer(emPortugal,conhecido comopar-a-par), tal como o protocoloNNTP(paraUsenet News);SMTP(para envio de mensagens eletrônicas -e-mail); e sistemas de troca de mensagens instantâneas (ICQ,MSN). Porém, o termo tornou-se popular com o surgimento de aplicações de compartilhamento de arquivos. Em outras palavras, programas que possibilitam a distribuição de arquivos em rede, permitindo o acesso de qualquer usuário dessa a este recurso. Outros tipos de recursos podem ser compartilhados em redes par-a-par, tal como a capacidade de processamento de máquinas, espaço de armazenamento de arquivos, serviços de programas (software,em inglês) - analogamente aosWeb Services,entre outros.
Em 1999,Shawn Fanningcriou o Napster, para compartilhamento de arquivos de música (principalmenteMP3), e trouxe o conceito de par-a-par para a mídia, principalmente após tornar-se alvo de ataques jurídicos por parte das companhias fonográficas.
História dopeer-to-peer
[editar|editar código-fonte]O P2P é o resultado da tendência natural do desenvolvimento deengenharia desoftwarecom a disponibilidade de tecnologia para a criação de redes maiores.
A tendência das últimas décadas tem crescido com a necessidade das aplicações empresariais, o que resultou na substituição dossistemas monolíticosporsistemas distribuídos.As redes informáticas começaram a crescer, tornando-se cada vez maiores e mais poderosas; os utilizadores começaram a usá-las cada vez ser mais; e a banda larga tornou-se cada vez mais barata e poderosa, sendo fácil de aceder.
Neste campo, houve a necessidade de ter a disponibilidade de pontos interligados, e quantos mais recursos houvesse, mais poderosa se tornava essa rede. A Internet foi um claro exemplo e uma "explosão de utilizadores".
Enquanto as redes cresciam, as aplicações P2P desenvolveram-se, e a sociedade interessava-se pelo P2P. Aplicações como o Napster, Gnutella e Kazaa ficaram famosas, porque estas traziam um subconjunto da tecnologia P2P que estava ao alcance de milhares de utilizadores.
Na verdade, o P2P surgiu da tecnologia básica que utilizaram nos tempos daUsenete daFidoNet.Eram duas redes totalmente descentralizadas; e usavam sistemas como oDNS.
No início, eram trabalhos que dois estudantes tinham nalicenciatura.Não existia muita informação sobre a partilha, nem Internet como hoje em dia. Os arquivos eram trocados embatchnaslinhas telefónicas,porque os computadores eram ligados porcabos coaxiais,não tendo muito mais que dez computadores em cada rede, ligando-se por um terminador, passando virtualmente por cada nó.
No entanto, em 1979, como não havia maneira de centralizar, a Usenet era totalmente descentralizada, sendo o criador Jim Ellis (será explicado mais à frente o que é). A FidoNet também era descentralizada, mas servia para troca de mensagens. Esta aplicação foi criada em 1984, por Tom Jennings, para trocar mensagens de sistemas (BBS) diferentes.
O DNS tornou-se uma necessidade, pois em 1983 já existiam milhões dehostsna Internet.[carece de fontes]Na altura, a forma de navegar na Internet era através de um ficheiro.txt,nomeado dehosts.txt.O nome "cin"era associado a um determinado IP do ficheirohosts.txt.Como a Internet cresceu, este sistema tornou-se impossível, e foi então que surgiu o DNS. O conceito desse é comparado às aplicações de ficheiros atuais.
Mas foi nadécada de 1990que as redes P2P apareceram com toda a força, quando aplicações como o Napster e o Gnutella foram desenvolvidas. Cada nó neste tipo de rede é conhecido comopeer;e pode servir com os mesmos direitos de cadapeerda rede, servindo tanto como cliente quanto como servidor. Os recursos e as informações passaram a ser disponibilizados em escala mundial. Estas redes tinham características: quantos maispeersexistissem, mais estabilidade e mais autonomia tinham; e a rede tornava-se mais eficiente e rica em recursos com a comunicação direta que ospeerstinham. Nos dias de hoje, as redes de computadores são o que se trata mais salientando as redes ponto a ponto. Pelo seu baixo custo e fácil implementação no mercado técnico, as redes ponto a ponto chegam a ser um ganho. Visto pelo seu nome, é uma rede que não tem um gerenciador ou administrador de página.
Distribuição horizontal
[editar|editar código-fonte]A organização de uma aplicação cliente-servidor numa arquitetura multicamadas distribui o processamento colocando componentes logicamente diferentes em máquinas diferentes. A essa distribuição se dá o nome dedistribuição vertical.
Uma distribuição vertical facilita o gerenciamento dos sistemas, pois divide as funções lógica e fisicamente entre várias máquinas, onde cada uma é responsável por um grupo específico de funções.
Uma abordagem alternativa à distribuição vertical, bastante comum nas arquiteturas modernas, se baseia na distribuição dos clientes e dos servidores, o que se chama dedistribuição horizontal.Nessa distribuição, um cliente ou um servidor podem estar fisicamente divididos em partes logicamente equivalentes, onde cada uma opera sobre a sua própria porção dos dados, o que balanceia a carga. Os sistemaspeer-to-peerse baseiam na distribuição horizontal.
Olhando de uma perspectiva de alto nível, os processos que constituem um sistemapeer-to-peersão todos iguais. Isso significa que as funções necessárias devem estar em todos os processos que constituem o sistema distribuído. Como consequência, a maior parte da interação entre os processos é simétrica: cada processo atua como um "cliente" e um "servidor" ao mesmo tempo.[3]
Características
[editar|editar código-fonte]Sistemaspeer-to-peercompartilham essas características:
- O seudesigngarante que cada usuário contribua com recursos para o sistema.
- Apesar deles poderem diferir nos recursos que contribuem, todos os nós em um sistemapeer-to-peerpossuem as mesmas capacidades funcionais e responsabilidades.
Descentralização
[editar|editar código-fonte]A correta operação de sistemas P2P não depende da existência de um sistema de administração centralizado. Assim, sistemas P2P se confundem com sistemas descentralizados. Num sistema totalmente descentralizado, não só todos os hospedeiros são iguais, mas também nenhum deles tem atribuições especiais, como administração e descoberta de serviços. Na prática, construir sistemas totalmente descentralizados pode se tornar difícil, o que faz os projetistas geralmente adotarem paradigmas híbridos na construção de aplicações P2P. O DNS, por exemplo, é um protocolopeer-to-peer,porém com um senso embutido de hierarquia. Há outros exemplos de sistemas P2P no seu núcleo e com alguma organização semi-centralizada, como o Napster[4]e o BitTorrent[5]
Heterogeneidade
[editar|editar código-fonte]Em redespeer-to-peer,a heterogeneidade dos recursos envolvidos é uma preocupação que deve ser levada em conta durante o seu projeto. Computadores e conexões administrados por diferentes usuários e organizações não têm garantias de ficarem ligados, conectados ou sem falhas, o que os torna necessariamente recursos voláteis. Isso torna a disponibilidade dos nodos de uma redepeer-to-peerimprevisível. Essa imprevisibilidade não permite garantir acesso a recursos individuais, já que eles podem falhar. Para contornar isso, é possível lançar mão da técnica dereplicação,diminuindo consideravelmente a probabilidade de falha ao acessar um objeto replicado. A replicação pode também tornar o sistema mais confiável se utilizada para neutralizar a ação de nodos maliciosos, que interceptam o sistema e corrompem os dados, através de técnicas de tolerância a "falhas bizantinas".
Sistemas híbridos
[editar|editar código-fonte]Os sistemas centralizados são simples de implementar e gerenciar. Entretanto, são um "gargalo" em potencial, uma vez que o servidor central tem capacidade limitada e pode não suportar o aumento da demanda. Por outro lado, os sistemas descentralizados são escaláveis e robustos, mas isso demanda certa complexidade de implementação, principalmente nas questões de tolerância a falhas e descoberta de recursos. Muitos sistemas distribuídos combinam características das duas arquiteturas, parte do sistema no tradicional modelo cliente-servidor; e outra partepeer-to-peer.
híbridas são implantadas notavelmente em sistemas distribuídos colaborativos. A principal preocupação em muitos desses sistemas é como se juntar ao sistema, para o qual muitas vezes um esquema tradicional cliente-servidor é adotado. Uma vez que o nodo se junta ao sistema, ele pode utilizar um esquema totalmente descentralizado para colaboração. Um exemplo de servidor que utiliza essa abordagem é o BitTorrent.[5]
Para um usuário de um serviço de comunicação instantânea, a aplicação parecepeer-to-peerao enviar os dados diretamente ao amigo sendo contatado. Mas todos os serviços de comunicação instantânea possuem uma espécie de servidor por trás, que facilita a comunicação entre os nodos. Por exemplo, o servidor mantém uma associação entre o nome do usuário e o seuendereço IP,grava mensagens quando o usuário estáoff-linee roteia mensagens para usuários que estão atrás defirewalls.Um sistema totalmente descentralizado de comunicação instantânea não iria funcionar na Internet de hoje, mas existem grandes vantagens deescalabilidadeem permitir comunicação cliente-cliente, quando possível. Assim, grande parte dos sistemas utiliza um esquema de diretório centralizado enquanto a função é distribuída.
Requisitos de uma aplicaçãopeer-to-peer
[editar|editar código-fonte]Para funcionar eficientemente, sistemaspeer-to-peerdevem se preocupar com os seguintesrequisitos não funcionais:[6]
Escalabilidade global
[editar|editar código-fonte]Um dos objetivos das aplicaçõespeer-to-peeré explorar os recursos dehardwarede muitos hospedeiros conectados à Internet. Assim, essas aplicações devem ser projetadas de modo a suportar o acesso a milhões de objetos em dezenas ou centenas de milhares de hospedeiros.
Alcançado através da colocação aleatória de recursos, juntamente com a utilização de réplicas dos recursos mais utilizados.
Otimização de interações locais entre novos vizinhos
[editar|editar código-fonte]A "distância de rede" entre os nós que interagem tem um impacto substancial na latência das interações individuais, como por exemplo, clientes requisitando acesso a recursos. A carga do tráfego da rede também é impactada por isso. As aplicações devem colocar os recursos perto dos nós que mais os utilizam.
Disponibilidade
[editar|editar código-fonte]A maioria dos sistemaspeer-to-peersão constituídos de computadores hospedeiros que são livres para se juntar ou sair do sistema a qualquer hora. Além disso, os segmentos de rede utilizados não são gerenciados por alguma autoridade; nem possuem garantias de qualidade de serviço. Um grande desafio para os sistemaspeer-to-peeré prover um sistema confiável, apesar desses fatos. Quando novos hospedeiros se juntam, eles devem ser integrados ao sistema; e a carga deve ser redistribuída para explorar esses novos recursos. Quando eles saem do sistema voluntaria ou involuntariamente, esse deve detectar a partida deles; e redistribuir as suas cargas e os seus recursos.
Segurança dos dados
[editar|editar código-fonte]Em sistemas de escala global com participantes de origens diversas, a confiança deve ser construída com o uso deautenticaçãoe mecanismos decriptografia,para garantir aprivacidadedos dados e da informação.
Anonimidade, negabilidade e resistência à censura
[editar|editar código-fonte]Anonimidadeé uma preocupação legitima em muitas situações que demandam resistência àcensura.Um requisito relacionado é que hospedeiros que guardam dados devem ser capazes de negar plausivelmente a responsabilidade sobre a posse e o suprimento deles. A utilização de muitos hospedeiros em sistemaspeer-to-peerpode ser útil em alcançar essas propriedades.
Redes P2P estruturadas e não estruturadas
[editar|editar código-fonte]Rede sobreposta
[editar|editar código-fonte]Um conceito importante do paradigma P2P é a rede sobreposta, ou redeoverlay.Nela, os nós são formados pelos processos; e os enlaces são representados pelos possíveis canais de comunicação (que são tipicamente conexõesTCP). No geral, um processo não pode se comunicar diretamente com outro processo arbitrário, mas só pode enviar mensagens através dos canais de comunicação disponíveis. Nesse sentido, cada nó possui um conjunto de vizinhos, que por sua vez possuirão outros conjuntos de vizinhos. A figura abaixo ilustra a rede sobreposta sobre acamada de rede(p.e. Internet). Observe que dois nós que são vizinhos na redeoverlaynão são necessariamente vizinhos na rede física. Ainda que sejam observadas conexões físicas com topologias diferenciadas de P2P, a maneira como os dados são trocados obedecem a topologia ponto a ponto.
![](https://upload.wikimedia.org/wikipedia/commons/thumb/1/16/Overlay_p2p.jpg/250px-Overlay_p2p.jpg)
A localização de nós e objetos é realizada na redeoverlayatravés de um algoritmo de roteamento distribuído. Esse algoritmo é implementado sobre acamada de aplicação,não tendo nenhuma ligação com o roteamento implementado pelos roteadores da camada de rede. É através desse algoritmo que as requisições dos clientes são roteadas para um hospedeiro que possui o objeto pela qual a requisição está endereçada. Os objetos de interesse são colocados e relocados em qualquer nó na rede sem o envolvimento do cliente.
O roteamento garante que qualquer nó pode acessar qualquer objeto na redeoverlay,explorando o conhecimento de cada nó na rede para localizar o objeto de destino. Sistemaspeer-to-peergeralmente armazenam múltiplas réplicas de um mesmo objeto para garantir disponibilidade. Dessa forma, o algoritmo de roteamento mantém o mínimo de informação possível sobre a localização de todas as réplicas; e envia as requisições para o nó "vivo" (p.ex. não falho) mais próximo, que mantém uma cópia do objeto relevante.
Existem basicamente dois tipos de redes sobrepostas: as estruturadas e as não estruturadas.[7]
Arquiteturaspeer-to-peerestruturadas
[editar|editar código-fonte]Numa redepeer-to-peerestruturada, a rede sobreposta é construída através de um procedimento determinístico. O procedimento mais utilizado, de longe, é organizar os processos através de umatabelahashdistribuída (DHT).Num sistema baseado em DHTs, os dados recebem uma chave aleatória de um extenso espaço de identificadores, tipicamente um identificador de 128 ou 160bits.Os nodos da rede também recebem um identificador do mesmo espaço. O grande desafio num sistema baseado em DHT é implementar um esquema eficiente e determinístico que mapeia unicamente a chave de um item para o identificador do nodo responsável pelo item desejado. A partir disso, é possível retornar o endereço de rede do nodo responsável pelo item desejado, que pode ser contatado diretamente.
![](https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/DHT_en.svg/250px-DHT_en.svg.png)
Várias implementações e protocolos baseados em DHT foram desenvolvidos. Dentre eles, as mais populares são oChord[8];e o NodeWiz[9],que é um serviço de descoberta emgrids(GIS) que utiliza umaestrutura de árvorespara organizar os seus nós na rede sobreposta. Para tal, cada nó na árvore é responsável por um subespaço do espaço completo dos atributos. Assim, é possível realizar eficientemente consultas por faixas de valores, ao contrário do que acontece na DHT, onde as consultas se dão por valores exatos.
Arquiteturaspeer-to-peernão estruturadas
[editar|editar código-fonte]Sistemaspeer-to-peernão estruturados geralmente se baseiam em algoritmos aleatorizados para a construção da rede sobreposta. A ideia principal é que cada nó mantenha uma lista de vizinhos, que é construída mais ou menos de forma aleatória. Da mesma forma, se assume que os dados são colocados de forma aleatória nos nodos. Assim, quando um nó necessita localizar um item específico, a única coisa que pode fazer é inundar a rede com uma busca.[10]Uma desvantagem desse tipo de busca é que consultas podem não ser respondidas caso o cliente e o hospedeiro estejam muito afastados na rede. Isso acontece devido a mecanismos que impedem que mensagens se propaguem indefinidamente na rede (p. ex.TTL). Outra desvantagem é que mecanismos de inundação geralmente causam grande tráfego de sinalização, o que, muitas vezes, torna esse tipo de busca lenta.
Muitos sistemaspeer-to-peernão estruturados constroem redes sobrepostas que remetem a umgrafoaleatório. O modelo básico é que cada nó mantém uma lista comcvizinhos, onde idealmente cada um desses representa um nodo escolhido aleatoriamente dentre o conjunto dos nodos "vivos". Essa lista de nós pode ser chamada devisão parcial.
Dentre os sistemas P2P que utilizam arquiteturas não estruturadas, podemos citar o BitTorrent[5],que constrói suaoverlayde forma aleatória, asContent Delivery Networks(CDNs)e o Gnutella.
Plataformas,frameworkse aplicaçõespeer-to-peer
[editar|editar código-fonte]Inicialmente, as aplicaçõespeer-to-peersurgiram monolíticas, ou seja, o programa precisava implementar seu próprio protocolo de comunicaçãopeer-to-peerpara permitir a interoperabilidade entre os nós constituintes do seu sistema em rede. Porém, além de um grande re-trabalho, estes esforços em requisitos não funcionais das aplicações implicavam na impossibilidade de comunicação entre sistemas diferentes, mesmo que os serviços providos por eles fossem equivalentes. Por exemplo, arquivos compartilhados em sistemas como o Kazaa,eMulee Gnutella ficam acessíveis exclusivamente dentro de suas próprias redes, levando usuários a manterem instalados em suas máquinas clientes para cada um dos sistemas de compartilhamento de arquivos que pretendam usar.
Com a popularização deste tipo de aplicação, surgiu um esforço em prover plataformas para desenvolvimento de aplicaçõespeer-to-peer,de tal maneira que estas possam comunicar-se entre si. Entre elas, destacam-se oJXTA,o Windowspeer-to-peerNetworking e o XNap.
O JXTA e o Windowspeer-to-peerNetworking são especificações de protocolospeer-to-peere de uma API para utilização dos serviços, sendo o primeiro com implementações emJavae emC.
O XNap provê, além de umaAPIde serviçospeer-to-peer,também umframeworkpara desenvolvimento das aplicações em si, incluindo recursos deinterface gráficacom o usuário. Umframework peer-to-peer,portanto, vai além de uma plataforma para comunicaçãopeer-to-peer,provendo serviços adicionais não necessariamente relacionados com a comunicação em si, mas indispensáveis para o desenvolvimento rápido de aplicações baseadas nesta arquitetura.
Outros exemplos deframeworkspara desenvolvimento de aplicaçõespeer-to-peersão o Oog (Duke University), o Lancaster´s P2P Framework (University of Lancaster) e oCOPPEER(UFRJ), sendo os dois últimos abstrações construídas sobre o JXTA.
Kademlia
[editar|editar código-fonte]Kademliaé um conceito de rede altamente descentralizada baseada em "nós" de rede. Os próprios usuários constituem a estrutura da rede dispensando servidores. Várias redes utilizam o conceitoKademlia.
Overnet
[editar|editar código-fonte]A redeOverneté uma espécie deeDonkey"paga". É preciso comprar o programa da empresa que a desenvolveu. É uma variante do eDonkey totalmente descentralizada e mais rápida, seguindo o conceitoKademlia;e foi a primeira implementação da mesma.
Gnutella
[editar|editar código-fonte]Redeopen-sourcesurgida no final de 2000, utilizada inicialmente por usuários do sistemaLinux.Possui uma estrutura altamente descentralizada, não havendo absolutamente nenhum servidor central. Os usuários constituem a estrutura da própria rede. Entre os programas que a utilizam, estão oBearShare,LimeWire,AzureuseShareaza.
Gnutella 2
[editar|editar código-fonte]Segundo projeto da rede Gnutella, mas agora com servidores centrais otimizando buscas e o desempenho geral da rede. É conhecida principalmente no programaShareaza.Recebeu críticas quando foi desenvolvida pelos criadores da Gnutella original.
Kad Network
[editar|editar código-fonte]Rede paralela do programaeMule,introduzida pelo autor deste 2004, sendo uma implementação fiel ao conceitoKademlia.AKad Networktinha por objetivo inicial oferecer mais fontes aos usuários do programa; e mais tarde se tornar uma rede P2P completa.
OpenFT
[editar|editar código-fonte]OpenFTé um protocolo desenvolvido pelo projeto giFT. O nome "OpenFT" significa "Open FastTrack".Entretanto, o OpenFT é um protocolo completamente novo, então apenas algumas poucas funções vieram do pouco que se sabia sobre aFastTrackquando o OpenFT foi desenvolvido. Assim como aFastTrack,o OpenFT é uma rede onde nodos enviam listas de arquivos compartilhados para outros nodos. Isso reduz o consumo de banda necessário para a pesquisa, entretanto, consumindo mais recursos do processador e mémoria nos nodos.
AudioGalaxy
[editar|editar código-fonte]Projeto antigo da empresa de mesmo nome, oAudiogalaxycentralizava todo o seu acervo, indexando-o em seusítiooficialmente. Foi facilmente fechada por um processo judicial naInglaterra.Era uma implementação deFTPs,sendo mais superficial ao usuário.
SoulSeek
[editar|editar código-fonte]Rede introduzida para trocas de músicas em 2000. Utiliza programa de mesmo nome. Caracteriza-se pelo fato de ter um grande número de arquivos raros, e principalmente música alternativa. O programa cliente tem uma interface simplificada, e permite a adição de usuários em umahotlist,ou seja, uma lista de contatos que permite saber quando um usuário que tem arquivos relevantes está conectado à rede. Também há na redeSoulSeekum serviço de bate-papo (chat) parecido com oIRC,que possibilita uma melhor interação entre os usuários, que também podem criar seus próprios canais dechat.
ODNS(Domain Name System- Sistema de Nomes de Domínios) é um exemplo de sistema que mistura os conceitos de redepeer-to-peercom um modelo hierárquico de posse da informação. O mais incrível do DNS é quão bem ele tem escalado, dos poucos milhares de hospedeiros que ele foi projetado para suportar, em 1983, para as centenas de milhões de hospedeiros atualmente na Internet.
Os problemas encontrados pelas aplicações P2P atuais, tais como compartilhamento de arquivos, são os mesmos problemas que foram resolvidos pelo DNS há 10 ou 15 anos atrás. Assim, vários elementos-chave no projeto do DNS são replicados nos sistemas distribuídos atuais. Um elemento é que hospedeiros podem operar tanto como clientes quanto como servidores. O segundo elemento é um método natural de propagar as requisições de dados pela rede. A carga é naturalmente distribuída por essa, tanto que qualquer servidor individual de nomes só precisa servir as demandas dos seus clientes e o espaço de nomes que ele gerencia.
Torrent
[editar|editar código-fonte]BitTorrent[5]é um sistema dedownloadde arquivos P2P. A ideia básica é que quando um usuário procura por um arquivo, ele baixa "pedaços" desse de outros usuários, até que o arquivo fique completo. Um importante objetivo de projeto foi garantir colaboração. Na maioria dos sistemas de compartilhamento de arquivos, uma fração significante dos usuários somente os baixa; e contribuem pouco ou quase nada.[11][12][13]Para isso, um arquivo pode ser baixado somente quando o cliente que está baixando também está provendo conteúdo para alguém.
Infinit
[editar|editar código-fonte]Infinité uma tecnologia de compartilhamento de arquivos P2P originalmente desenvolvida por Julien Quintard, durante sua pesquisa como estudante de doutoramento (PhD), naUniversity of Cambridge.[14]Ao contrário da arquitetura com base em servidores centrais deCloud Computing,os dados são transmitidos diretamente entre máquinas na formapeer-to-peer.Tem sido relatado que o serviço é mais rápido do que outras soluções, incluindo o protocolo de transferênciaApple:AirDrop.[15]Além disso, os arquivos não são armazenados noCloude são sempre previamente criptografados. Ou seja, os arquivos são criptografados antes de deixar o computador doremetente,e só esse é capaz de decifrar o receptor.[16]
Redes, protocolos e aplicativos
[editar|editar código-fonte]- Ares:Ares Galaxy, Warez P2P, AlterGalaxy.
- Bitcoine a maioria dascriptomoedas.
- BitTorrent:AllPeers,ABC [Yet Another BitTorrent Client],Azureus,BitComet,BitSpirit,BitTornado,Bitlord,Burst!, G3 Torrent, KTorrent, mlMac, MLDonkey, QTorrent,Shareaza,Transmission,Tribler,µTorrent,Deluge.
- CSpace: Uma redepeer-to-peerbaseda em sistemas de comunicações.
- Direct Connect:DC++,NeoModus Direct Connect,BCDC++,ApexDC++,StrongDC++.
- Domain Name System (DNS).
- eDonkey:aMule,eDonkey2000(descontinuado),eMule,DreaMule,LMule,MLDonkey, mlMac,Shareaza,xMule,iMesh
- FastTrack:AlterGalaxy, giFT, Grokster,iMesh,iMesh Light (semadware),Kazaa,Kazaa Lite (semadware), KCeasy,Mammoth,MLDonkey, mlMac, Poisoned.
- Freenet:Entropy (em sua própria rede), Freenet.
- GNUnet: GNUnet, (GNUnet-gtk).
- Gnutella:AlterGalaxy, Acquisition,BearShare,Gnucleus, Grokster,iMesh,gtk-gnutella, Kiwi Alpha,LimeWire,FrostWire,MLDonkey, mlMac,Morpheus,Phex, Poisoned, Swapper,Shareaza,XoloX.
- Gnutella2:Adagio, Caribou, Gnucleus,iMesh,Kiwi Alpha, MLDonkey, mlMac,Morpheus,Shareaza,TrustyFiles.
- Infinit:Infinit.
- Kad (rede) (usando o protocoloKademlia):aMule,eMule,MLDonkey.
- MANOLITO/MP2P: Blubster,Piolet.
- MFPnet: Amicima.
- Napster:Napigator,OpenNap,WinMX.
- P2PTVtype networks:TVUPlayer, CoolStreaming, Cybersky-TV, TVants.
- Peercastingtype networks:PeerCast,IceShare, FreeCast.
- Pichatprotocolo: Pichat,Pidgin,Moonchat,C4.
- SoulSeek:SoulSeek,Nicotine.
- Usenet.
- WPNP:WinMX.
- ZPoC.
Direitos autorais
[editar|editar código-fonte]As redes P2P são acusadas no mundo todo de ferir osdireitos autorais,por disponibilizar arquivos sem a autorização dos proprietários docopyright.Muitos usuários destas redes P2P defendem que a ausência de lucro na reprodução docopyrightnão deveria ser criminalizado. NoBrasil,alei dos direitos autorais,proíbe qualquer tipo de reprodução de conteúdo protegido que não seja autorizado (art. 105).
Caso do Napster
[editar|editar código-fonte]Os desenvolvedores do Napster[4]argumentaram que eles não eram culpados pelo infringimento dos direitos autorais porque não participavam do processo de cópia, que foi inteiramente realizado por máquinas de usuários. Esse argumento foi derrubado porque os servidores de indexação foram anexados como parte essencial do processo. Como esses servidores eram localizados em endereços conhecidos, os seus operadores foram incapazes de se manterem anônimos, e então se tornaram alvos dos processos.
Um sistema de compartilhamento mais distribuído teria alcançado uma maior separação legal de responsabilidades, distribuindo a responsabilidade entre todos os usuários do Napster,[4]e tornando o processo muito difícil, senão impossível.
Qualquer que seja a visão que alguém tenha sobre a legitimidade de cópia de arquivos para o propósito de compartilhamento de material protegido por direitos autorais, existe uma legítima justificativa social e política para a anonimidade de clientes e servidores em alguns contextos de aplicações. A justificativa mais persuasiva é usada quando a anonimidade é utilizada para superar a censura e manter a liberdade de expressão para indivíduos em sociedades e organizações opressivas.[17]
Ver também
[editar|editar código-fonte]Referências
- ↑MACEDO, Ricardo Tombesi; et al. (2018).Rede de computadores1ª ed. ed. Santa Maria: UFSM, NTE. p. 58
- ↑Shirky, C. (2000) What's P2P and What's not, 24 novembro 2000. Internet Publication.
- ↑abTanenbaum, A. S., Steen, M. V. - Distributed Systems: Concepts and Design. 4ª Edição (2005).
- ↑abcOpenNap: Open Source Napster Server, Beta release 0.4, setembro 2001.
- ↑abcdCohen, B. (2003). Incentives Build Robustness in BitTorrent, maio 2003, Internet Publication.
- ↑Kubiatowicz, J. (2003). Extracting Guarantees from Chaos, Communications of the ACM, pp. 33-38, vol. 46, No. 2, February
- ↑Lua, E. K., Crowcroft, J., PIAS, M., SHARMA, R., and LIM, S.: "A Survey and Comparison of peer-to-peer Overlay Network Schemes." IEE Communications Surveys & Tutorials, (7)2:22-73, Apr. 2005.
- ↑Stoica, I., Morris, R., Liben-Nowell, D., Karger, D. R., Kaashoek, M.F., Dabek, F., e Balakrishnan, H.: "Chord: A Scalable peer-to-peer Lookup Protocol for Internet Applications." IEEE/ACM Trans. Netw., (11)1:17-32, Feb. 2003
- ↑Basu, S., Banerjee, S., Sharma, P., and Lee, S. 2005. NodeWiz: peer-to-peer resource discovery for grids. In Proceedings of the Fifth IEEE international Symposium on Cluster Computing and the Grid (Ccgrid'05) - Volume 1 (maio 9 - 12, 2005). CCGRID. IEEE Computer Society, Washington, DC, 213-220.
- ↑Risson, J. and Moors, T.: "Survery of Research towards Roubust peer-to-peer Netwroks: Search Methods." Comp. Netw., (50), 2006.
- ↑Adar, E. and Huberman, B.A.: "Free Riding on Gnutella." Hewlett Packart, Information Dynamics Lab, Jan.2000.
- ↑Saroiu, S., Gummadi, P.K., and Gribble, S.D.: "Measuring and Analyzing the Characteristics of Napster and Gnutella Hosts." ACM Multimedia Syst., (9)2:170-184, Aug. 2003.
- ↑Yang B. and Garcia-Molina, H.: "An Empirical Study of Free-Riding Behavior in the Maze P2P File-Sharing System" Proc. Fourth Int'l Workshop on peer-to-peer Systems, Lect. Notes Comp. Sc., (Ithaca, NY). Berlin: Springer-Verlag, 2005
- ↑Julien Quintard (12 de junho de 2012).«Towards a worldwide storage infrastructure».Consultado em 10 de agosto de 2013(em inglês)
- ↑«Infinit Makes File Transfers Between Macs Fast and Painless».Lifehacker(em inglês).Consultado em 25 de abril de 2022
- ↑«Infinit launches a new, fast file-transfer app for Mac OS»(em inglês)
- ↑Coulouris, G., Dollimore, J., Kindberg, T. Distributed Systems: Concepts and Design. 4ª Edição (2005).