P2P
Origem: Wikipédia, a enciclopédia livre.
O P2P ou Peer-to-Peer é uma tecnologia para estabelecer uma espécie de rede de computadores virtual, onde cada estação possui capacidades e responsabilidades equivalentes. Difere da arquitetura cliente/servidor, no qual alguns computadores são dedicados a servirem dados a outros. Esta definição, porém, ainda é demasiado sucinta para representar todos os significados do termo Peer-to-Peer.
Índice |
[editar] Conceito
Geralmente, uma rede Peer-to-Peer (P2P) é 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 considerados de igual nível e assumem o papel de cliente ou de servidor dependendo da transação sendo iniciada ou recebida de um outro peer da mesma rede.
Os nós da rede Peer-to-Peer podem 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ão Peer-to-Peer foi em 1984, com o desenvolvimento do projeto Advanced Peer-to-Peer Networking Architecture na IBM.
O termo é utilizado em diferentes tecnologias que adotam um modelo conceitual "par-a-par", tal como o protocolo NNTP (para Usenet News), SMTP (para envio de 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 arquivo, em outras palavras, programas que possibilitam a distribuição de arquivos em rede, permitindo o acesso de qualquer usuário dessa rede a este recurso. Outros tipos de recursos podem ser compartilhandos em redes Peer-to-Peer, tal como capacidade de processamento de máquinas, espaço de armazenamento de arquivos, serviços de software (analogamente aos Web Services), entre outros.
Em 1999, Shawn Fanning criou o Napster, para compartilhamento de arquivos de música (principalmente MP3), e trouxe o conceito de Peer-to-Peer para a mídia, principalmente após tornar-se alvo de ataques jurídicos por parte das companhias discográficas.
Após o Napster, dezenas de outras aplicações Peer-to-Peer foram lançadas: Ares, LimeWire, iMesh, WinMX, AudioGalaxy, Kazaa, Gnutella, Freenet, Shareaza, eDonkey, eMule, aMule, Bearshare, ANts P2P, entre outros.
[editar] Arquitetura Peer-to-Peer
O Napster e outras aplicações intituladas Peer-to-Peer, tais como o IRC e o ICQ, são baseadas em uma arquitetura cliente/servidor, pelo menos para algumas tarefas críticas, como indexação de informação. Por outro lado, redes como Gnutella e Freenet usam uma arquitetura Peer-to-Peer pura, sem nenhuma centralização de tarefas.
Aparentemente mal empregado, o termo Peer-to-Peer, quando usado para aplicações como o Napster, ressaltam a importância do papel exercido pelos nós da rede. Estes passam a servir como provedores de informação, e não apenas consumidores passivos; ainda que de acordo com pesquisadores do Xerox PARC, 70% dos usuários não contribuem com nenhum arquivo, enquanto 1% dos peers é responsável por 50% dos arquivos disponíveis.
A arquitetura completamente descentralizada do Gnutella faz com que os usuários tenham o mínimo de contato com o servidor central, o que além de promover maior escalabilidade ao sistema, serve de estratégia para evitar os problemas judiciais que terminaram com o Napster.
No entanto, aplicações Peer-to-Peer “puras” são raras. A maioria das arquiteturas Peer-to-Peer é híbrida, utilizando alguns elementos centralizadores na execução de tarefas cujo desempenho é crítico. Redes completamente descentralizadas já foram usadas anteriormente em aplicações de propósito específico, como a USENET (1979) e FidoNet (1984). Porém, as questões de desempenho induzem a uma centralização parcial das atividades em peers de maior capacidade. Outras técnicas têm sido desenvolvidas visando o aperfeiçoamento de sistemas Peer-to-Peer.7i
[editar] Plataformas e Frameworks para Aplicações Peer-to-Peer
Inicialmente, as aplicações Peer-to-Peer surgiram monolíticas, ou seja, o programa precisava implementar seu próprio protocolo de comunicação Peer-to-Peer para 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 implicava na impossibilidade de comunicação entre sistemas diferentes, mesmo que o serviço provido por eles fossem equivalentes. Por exemplo, arquivos compartilhados em sistemas como o Kazaa, eMule e 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 pretenda usar.
Com a popularização deste tipo de aplicação, surgiu um esforço em prover plataformas para desenvolvimento de aplicações Peer-to-Peer, de tal maneira que estas possam comunicar-se entre si. Entre elas, destacam-se o JXTA, o Windows Peer-to-Peer Networking e o XNap.
O JXTA e o Windows Peer-to-Peer Networking são especificações de protocolos Peer-to-Peer e de uma API para utilização dos serviços, sendo o primeiro com implementações em Java e em C.
O XNap provê, além de uma API de serviços Peer-to-Peer, também um framework para desenvolvimento das aplicações em si, incluindo recursos de interface gráfica com o usuário. Um Framework Peer-to-Peer, portanto, vai além de uma plataforma para comunicação Peer-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 de frameworks para desenvolvimento de aplicações Peer-to-Peer são o Oog (Duke University), o Lancaster´s P2P Framework (University of Lancaster) e o COPPEER (UFRJ), sendo os dois últimos abstrações construídas sobre o JXTA.
[editar] Exemplos de Frameworks de Aplicações Peer-to-Peer
[editar] Exemplos de Aplicações Peer-to-Peer
[editar] Kademlia
Kademlia é conceito de rede altamente descentralizada baseada em "nós" de rede. Os proprios usuários constituem a estrutura da rede dispensando servidores. Várias redes utilizam o conceito Kademlia.
[editar] Overnet
A rede Overnet é uma espécie de eDonkey "paga" é preciso comprar o software da empresa que a desenvolveu. É uma variante do eDonkey totalmente descentralizada e mais rápida seguindo o conceito Kademila e foi a primeira implementação da mesma
[editar] Gnutella
Rede open-source surgida no final de 2000 utilizada incialmente por usuários do sistema Linux. Possui uma estrutura altamente descentralizada não havendo mesmo nenhum servidor central sequer. Os usuários constituem a estrutura da propria rede. Entre os programas que a utilizam, estão o BearShare , LimeWire e agora o Shareaza.
[editar] Gnutella 2
Segundo projeto da rede Gnutella mas agora com servidores centrais optimizando buscas e o desempenho geral da rede. É conhecida principalmente no programa Shareaza. Recebeu críticas quando foi criada pelos criadores da Gnutella original.
[editar] Kad Network
Rede paralela do software eMule introduzida pelo autor do mesmo em 2004 e é uma implementação fiel ao conceito Kademlia. Essa rede tinha por objetivo inicial, oferecer mais fontes aos usuários do programa e mais tarde se tornar numa rede P2P completa.
[editar] OpenFT
OpenFT é um protocolo desenvolvido pelo projeto giFT. O nome "OpenFT" significa "Open FastTrack". Entretanto, o OpenFT é um protocolo completamente novo, apenas algumas poucas vieram do pouco que se sabia sobre a FastTrack quando o OpenFT foi desenvolvido. Assim como a FastTack, 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.
[editar] AudioGalaxy
Projeto antigo da empresa de mesmo nome, o Audiogalaxy centralizava todo o seu acervo indexando-o em seu site oficialmente. Foi facilmente fechada por um processo judicial na Inglaterra. Era uma implementação de FTPs sendo mais superficial ao usuário.
[editar] SoulSeek
Rede introduzida para trocas de músicas em 2000. Utiliza software de mesmo nome. Caracteriza-se pelo fato de ter um grande número de arquivos raros, e principalmente música alternativa. O software cliente tem uma interface simplificada, e permite a adição de usuários em uma hotlist, ou seja, uma lista de contatos que permite saber quando um usuário que tem arquivos relevantes está conectado à rede. Também há na rede SoulSeek um serviço de chat parecido com o IRC, que possibilita uma melhor interação entre os usuários, que também podem criar seus próprios canais de bate-papo!
[editar] Redes, protocolos e aplicativos
- Ares: Ares Galaxy, Warez P2P
- BitTorrent: AllPeers, ABC [Yet Another BitTorrent Client], Azureus, BitComet, BitSpirit, BitTornado, BitLord, BitTorrent, BitTorrent.Net, Burst!, G3 Torrent, KTorrent, mlMac, MLDonkey, QTorrent, Shareaza, Transmission, Tribler, µTorrent
- CSpace: Uma rede peer-to-peer baseda em sistemas de comunicações
- Direct Connect: DC++, NeoModus Direct Connect, BCDC++, ApexDC++, StrongDC++
- Domain Name System
- eDonkey: aMule, eDonkey2000 (descontinuado), eMule, LMule, MLDonkey, mlMac, Shareaza, xMule, iMesh
- FastTrack: giFT, Grokster, iMesh, iMesh Light (sem adware), Kazaa, Kazaa Lite (sem adware), KCeasy, Mammoth, MLDonkey, mlMac, Poisoned
- Freenet: Entropy (em sua própria rede), Freenet
- GNUnet: GNUnet, (GNUnet-gtk)
- Gnutella: Acquisition, BearShare, Cabos, 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
- Kad (rede) (usando o protocolo Kademlia): aMule, eMule, MLDonkey
- MANOLITO/MP2P: Blubster, Piolet
- MFPnet: Amicima
- Napster: Napigator, OpenNap, WinMX
- P2PTV type networks: TVUPlayer, CoolStreaming, Cybersky-TV, TVants
- Peercasting type networks: PeerCast, IceShare, FreeCast
- Usenet
- WPNP: WinMX
[editar] Aplicativos multi-redes
- aMule (eDonkey (rede), Kad (rede)) (Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Windows and Solaris Operating Environment) (software livre)
- eMule (eDonkey (rede), Kad (rede)) (Windows) (software livre)
- FileScope (Gnutella, Gnutella2, eDonkey network, OpenNAP) (crossplatform) (open source)
- giFT (own OpenFT protocol, and with plugins - FastTrack, eDonkey and Gnutella) (open source)
- Gnucleus (Gnutella, Gnutella2) (Windows) (open source)
- iMesh (Fasttrack, eDonkey Network, Gnutella, Gnutella2) (Microsoft Windows) (closed source)
- KCeasy (Ares, FastTrack (plugin required), Gnutella, OpenFT) (open source)
- Kiwi Alpha (Gnutella, Gnutella2) (Windows) (closed source)
- MLDonkey (BitTorrent, eDonkey, FastTrack, Gnutella, Gnutella2, Kademlia) (Windows, Linux, Mac OS X) (open source)
- Morpheus (NEO Network, Gnutella, Gnutella2, BitTorrent) (Windows) (closed source)
- Napshare (MUTE, Key Network) (Linux, Windows) (open source)
- Shareaza (BitTorrent, eDonkey, Gnutella, Gnutella2) (Windows) (open source)
- WinMX (Windows) (closed source)
- Zultrax (Gnutella, ZEPP) (Windows) (closed source)