O que são redes P2P e como funcionam?

Redes P2P (Peer-to-Peer em inglês, Ponto-a-Ponto em português) é uma topologia cujas principais características são:

	- Descentralização da maior parte das funções da rede, isto é, 
	  cada nó pode realizar funções de cliente e/ou servidor. 
	- O principal objetivo de uma rede P2P é compartilhar dados e dispositivos. 
	- A informação trafega da origem ao destino, ignorando os nós intermediários,
          que simplesmente servem de “ponte” entre a origem e o destino. 
	- As características do nó também influem na rede como um todo. 
          Características como: Largura de banda, fontes de determinado arquivo, 
          capacidade de armazenamento ou de processamento.

Uma vantagem do P2P é que, como cada nó não atua como um servidor fixo, o desligamento ou má funcionalidade de algum nó atuando como servidor não invalida a rede.

Um ponto importante de ser mencionado é que a idéia da rede P2P é de uma rede totalmente descentralizada. Porém, são raras as redes que possuem uma arquitetura 100% descentralizada (chamada P2P ‘pura’). A maior parte das redes P2P possui um nó centralizador, por mais insignificante que seja, para executar tarefas que são melhores executadas em servidores centrais, voltados para isso e não em cada nó da rede. As redes P2P sem uma centralização têm como vantagem a dificuldade de se mover um processo contra ela, já que não existe um órgão centralizador que possa ser processado. Ainda assim, os próprios usuários podem ser processados em alguns casos. Uma desvantagem desse tipo de rede é que não existe uma moderação adequada para diminuir problemas e poluição na rede, como será visto mais adiante. Para redes centralizadas, as vantagens e desvantagens são exatamente o contrário das descentralizadas. Exemplos de redes totalmente descentralizadas são Gnutella e Freenet e de redes com alguma centralização há o Napster e alguns softwares de mensagens instantâneas como ICQ ou canais IRC. A maioria das redes é considerada híbrida: um servidor central é responsável por gerir os nós, ou seja, controlam os “pedidos” de arquivos dos usuários, verificam disponibilidade e mantém informação sobre cada nó que está na rede, mas são os nós (usuários) que armazenam as fontes e disponibilizam os arquivos na rede. Um exemplo de protocolo híbrido é o JXTA, utilizado no Soulseek, por exemplo. Ainda existem as redes parcialmente centralizadas, que se diferenciam das híbridas pelo fato de os nós "centralizados" (chamados super-nós) possuirem grande largura de banda, muitos arquivos e controle sobre índices. Usuários comuns com PCs potentes podem tornar-se super-nós em redes desse tipo, como é o caso da rede FastTrack, utilizada no KaZaA. Esses super-nós são os alvos principais de buscas feitas por usuários comuns na rede e cada nó comum conecta-se em um super nó, como pode ser observado na imagem de uma rede parcialmente centralizada.

Uma Rede P2P

Uma Rede Centralizada

Uma Rede parcialmente centralizada ou uma rede híbrida

O termo Peer-to-Peer foi inventado pela IBM em 1984 com o projeto Advanced Peer-to-Peer Networking Architecture. Porém, as redes P2P começaram a ser conhecidas em 1999, com o surgimento do Napster. Embora a idéia de P2P já tivesse sido “inventada” anteriormente, foi o Napster que a tornou famosa. O Napster foi inventado por um estudante norte-americano de 18 anos, Shawn Fanning, após deixar sua faculdade no primeiro semestre de estudos. O Napster foi o pontapé inicial para as redes P2P ficarem conhecidas mundialmente e se tornarem praticamente um padrão para compartilhamento de arquivos.

Alguns exemplos de redes ou protocolos P2P são: Ares, eDonkey, FastTrack, PDTP, Soulseek, AudioGalaxy, Kademlia, Hamachi, OverNet.

É importante explicar como funcionam as redes P2P para o usuário e o que são versões e cópias de um determinado arquivo. Suponha que uma rede totalmente descentralizada possua as músicas X.mp3, X2.mp3 e Y.mp3. X e X2 correspondem à mesma música, porém são versões diferentes, isto é, se X2 possui alguma característica diferente de X, uma versão diferente é criada na rede. Por exemplo, se X2 possui uma letra errada no nome do álbum ou uma tag diferente de X, uma nova versão é criada, com um novo Hash correspondente a ela. Os Hashes são códigos que identificam os arquivos. O número de cópias pode variar muito , dependendo da versão. Por exemplo, X.mp3 pode ter 180 cópias. Isto significa que 180 usuários possuem essa música. Quanto maior o número de cópias, mais visada (em relação a outras versões) pelo usuário é a música. Um dos grandes objetivos do envenenamento de redes P2P é que o número de cópias de um arquivo poluído aumente bastante, de forma que o usuário decida baixar ela.

O funcionamento da rede hipotética citada acima acontece da seguinte forma:

- O usuário faz uma busca com uma palavra chave.

- Os resultados são exibidos na tela. Isto é, os nós (usuários) que possuem músicas com aquela palavra chave exibem seus resultados.

- O usuário decide qual versão baixar.

- Em algumas redes (como o Soulseek), ele baixará a música diretamente do usuário (que funcionará como servidor). E o processo dependerá da disponibilidade dos usuários e da velocidade da conexão de ambos. Em outros casos, ele baixará a música de diferentes usuários (fontes). A forma como o arquivo será baixado depende muito da rede em questão. Em torrent, por exemplo, o arquivo é baixado por partes de usuários diferentes que estejam fazendo upload do arquivo naquele momento.