As redes P2P ou Peer-to-Peer são um tipo de rede descentralizada composta por centenas e até milhões de computadores localizados em todo o mundo. Todos eles trabalhando sob o mesmo protocolo de comunicação, com o objetivo de criar uma enorme rede para compartilhar informações de qualquer tipo. Se hoje podemos comprar bitcoins é graças a esse tipo de rede.
Unuma rede P2Pum peer-to-peer, é uma rede em que um grupo de pessoas ou máquinas participa de forma totalmente descentralizada. Quer dizer, é uma rede onde não existe um ponto central de conexão ou controle, e onde as partes atuam de forma autônoma respondendo a um protocolo comum de comunicação e consenso. Desta forma, os membros da rede podem trocar informações diretamente e sem intermediários.
Para conseguir isso, as redes P2P são construídas em protocolos que funcionam sobre os protocolos da Internet (também conhecidos como TCP / IP). Portanto, os protocolos P2P são chamados protocolos de aplicação ou camada 7, de acordo com o modelo Interconexão de sistemas abertos ou OSI. Isso significa que os protocolos P2P precisam do uso de outros protocolos mais abstratos para funcionar, mas que, ao mesmo tempo, os torna mais fáceis de construir e operar.
Graças a isso, os protocolos P2P têm sido amplamente utilizados desde a sua criação para diferentes fins. Algumas legais, outras um pouco cinzentas, mas apesar disso, há uma coisa muito clara, Os protocolos P2P são muito poderosos e permitem a criação de estruturas descentralizadas, dificilmente questionáveis e de uso livre. Por esse motivo, criptomoedas como Bitcoin eles foram construídos com base em protocolos P2P.
Origem e história do P2P
A origem da primeira rede P2P, podemos rastreá-la até a criação do protocolo UUCP o Protocolo de cópia de Unix para Unix, em 1980. Este protocolo simples deu origem à conhecida rede USENET e para BBS, redes que ainda estão ativas e funcionando hoje. Um bom exemplo disso é, BBS EffectLinux, que continua ativo para os nostálgicos deste sistema de comunicação.
O princípio de operação desses sistemas é simples: a máquina fez uma chamada de conexão (conexão dial-up) usando um modem, comunicou-se com a máquina de destino e eles puderam compartilhar informações ponto a ponto sem intermediários. Após o término da chamada de conexão, o usuário pode iniciar outra conexão com outra máquina iniciando o processo novamente. Vale ressaltar que tudo isso era possível sem uma estrutura como a Internet que conhecemos hoje, uma rede e uma tecnologia que ainda estava em desenvolvimento naquela época.
Na época, a USENET e o protocolo UUCP eram o auge das comunicações. Na verdade, o movimento cypherpunk começou com o uso deste protocolo. Personagens como St. Jude, Eric Hughes, Timothy C May, David Chaum, fez uso desses sistemas para compartilhar informações nos fóruns BBS da comunidade Cypherpunks. Eram os primeiros anos da informática e, nessa altura, já se vislumbravam muitas das possibilidades futuras deste tipo de protocolos e de computadores muito mais poderosos e capazes.
Mais tarde, em 1983, o Protocolo TCP / IP. Basicamente, esse novo protocolo buscava flexibilizar a criação de grandes redes globais, aliás, é a base para a construção do que hoje conhecemos como Internet. Este último tornou-se realmente possível quando o Sistema ou modelo OSI (definindo as sete camadas de abstração que temos atualmente na Internet) em 1989 e, finalmente, com a chegada do Protocolo WWW (World Wide Web) em 1990.
Tipos de redes P2P
Entre os tipos de redes P2P existentes, podemos especificar o seguinte:
- Rede descentralizada e estruturada. Esses tipos de rede são conhecidos como Redes P2P híbridas. Neste tipo de rede não existe um diretório em um servidor central, mas sim uma série de nós ou peers, que têm a capacidade de receber solicitações de informações e respondê-las para facilitar o acesso aos recursos. Para evitar a centralização desta funcionalidade, os nós ou peers especiais podem ser instalados e configurados por qualquer pessoa, buscando assim que uma mesma comunidade de usuários amplie a funcionalidade da rede e permita seu correto funcionamento. Um bom exemplo desse tipo de rede são as redes federadas, como Diáspora o Mastodonte.
- Rede descentralizada e não estruturada. Neste tipo de rede P2P não existem computadores ou nós que funcionem como controladores centrais de requisições. Pelo contrário, cada nó dentro da rede tem as mesmas funções que o resto dos nós, então cada novo nó exerce a mesma autoridade que o resto. Nesse ponto, redes como o Bitcoin atendem a essas características, já que cada nó conectado possui os mesmos recursos que os demais.
Como funciona uma rede P2P?
A operação de uma rede P2P é relativamente simples. Basicamente, o que se faz é construir um protocolo de comunicação (linguagem) que permita que as pessoas que utilizam o referido software se comuniquem diretamente e sem intermediários com outros computadores. No entanto, o maior problema enfrentado na construção desses sistemas é: Como projetar um sistema que não precise de um diretório centralizado para se comunicar com outros computadores rodando o mesmo software?
Um problema complexo, mas a situação pode ser resolvida de forma bastante eficaz com duas medidas bem definidas:
- Primeiro, torne o software capaz de compartilhar informações de conexão sobre aqueles que o executam. Assim, cada computador que executa o software é capaz de ter um diretório de computadores conectados e utilizá-los para se conectar ao nó que desejar.
- Incentivar a maior descentralização possível da rede. Ou seja, faça com que muitas pessoas executem o software criando seus próprios nós e, portanto, aumentando o tamanho da rede. Desta forma, seu escopo e suas possibilidades são aprimorados.
Ou seja, quanto mais pares ou pares (computadores rodando software P2P) a rede tiver, mais chances haverá de que a rede não possa ser censurada, sua operação será mais resistente e seus recursos serão melhores. Nos primeiros sistemas P2P, como USENET ou IRC, os sistemas e suas conexões foram tornados conhecidos por meios escritos, chamadas ou o mesmo sistema que tinha uma placa de pares para se conectar. Assim, cada novo membro da rede tinha acesso à lista de pares e se acrescentava para que outros pudessem estabelecer comunicação com eles, se necessário. Não só isso, esse novo par poderia ser a porta de entrada para informações de pares que poderiam ser bloqueadas.
Mas a criação de redes maiores como IRC, DCC, DC ++, Napster, Gnutella, BitTorrent e ainda Bitcoin mudou drasticamente isso. Agora, cada nó foi conectado a um ponto, eles recebem uma lista de peers iniciais (ou nós de semente). E a partir daí, cada nó é capaz de recriar sua própria lista de nós que pertencem à rede. O resultado é uma melhor resistência à censura e a rede pode crescer mais rápido.
Claro, a operação de cada protocolo é diferente. O IRC, por exemplo, é um sistema distribuído (quase centralizado) de servidores que podem fornecer a capacidade de se conectar ponto a ponto com uma pessoa. Mas DC + e Gnutella são completamente descentralizados, suas redes são projetadas de forma que a rede se ajuste automaticamente com a entrada e saída de novos nós na rede.
O mesmo é verdade no Bitcoin, onde a rede começou com uma única semente, aquela iniciada por Satoshi Nakamotoe, desde então, a rede cresceu gradualmente para se tornar uma rede com um tamanho maior que 10 mil nós ativos. Claro, o objetivo do Bitcoin é diferente daquele de uma rede como a Gnutella, mas os princípios do protocolo permanecem: comunicar a duas partes sem intermediários.
Vantagens e desvantagens desta tecnologia
Vantagens
- Uma rede P2P é resistente à censura. Uma rede P2P altamente descentralizada é praticamente impossível de censurar.
- Eles oferecem resiliência incomparável. Se um nó cair, outro nó pode tomar seu lugar. É por isso que dizem que as redes P2P podem sobreviver a uma catástrofe nuclear, porque podem destruir muitos nós, mas se apenas um sobreviver, a rede pode ser totalmente reconstruída.
- As redes P2P podem levar a soluções de escalabilidade poderosas para apresentar serviços exclusivos com alcance global.
- Por não depender de entidades centrais, o P2P gera mais confiança em seus usuários.
- Eles oferecem um alto nível de largura de banda. Isso graças ao fato de aproveitarem a largura de banda de cada participante, para transformá-la na própria rede.
- Eles servem para transmitir informações digitais de qualquer tipo. Da sua música favorita a centenas de milhões de dólares, em segundos.
Desvantagens
- Uma rede P2P é resistente à censura, mas não o torna anônimo, a menos que seja projetada para isso, mesmo que essa rede use criptografia. O melhor exemplo é o BitTorrent, onde os ISPs podem detectar o uso do protocolo e, assim, avisar as autoridades sobre o download ilegal por um usuário.
- O projeto de redes P2P significa que quanto maior o tamanho, a latência aumenta. Em outras palavras, para que as informações cheguem a todas as partes da rede, levará mais tempo em uma grande rede P2P do que em uma menor. Assim, novos algoritmos e protocolos estão sendo procurados para ajudar a superar esse problema.
- Os protocolos P2P têm vários problemas estruturais conhecidos. Casos como ataques MITM para assumir o controle de nós, porque estes devem estar publicamente conectados o tempo todo, são uma dessas falhas. Além disso, os protocolos são suscetíveis a ataques de roteamento ou coisas tão furtivas como ataque de eclipse ou um Ataque Erebus.
Bitcoin, uma rede P2P para gerenciar valor
Bitcoin é uma das maiores redes P2P que existem hoje, com seus mais de 10 mil nós ativos, Bitcoin é uma rede global que permite que seus usuários gerenciem valor sem intermediários. Basta baixar um software que permita interagir com esta rede e você poderá utilizá-lo.
A construção do Bitcoin como uma rede P2P responde à necessidade de descentralizar suas capacidades. É inútil criar uma moeda com criptografia, se ela for administrada por uma entidade central. Isso seria simplesmente criar um novo banco central. Em vez disso, Satoshi Nakamoto queria uma rede global, sem censura, segura e privada que pudesse lidar com valor. Então, para isso, Nakamoto projetou Bitcoin com base em uma rede P2P usando seu próprio protocolo projetado sob os princípios de Protocolo Kademlia y Protocolo de fofocas.
O resultado é que o Bitcoin é uma rede P2P que, praticamente, não pode ser parada. Mesmo com suas falhas estruturais, o protocolo P2P foi a melhor decisão que Nakamoto pôde tomar ao projetar o Bitcoin. Ao fazer isso, ele criou dinheiro digital que atendeu aos interesses do mundo e de seus usuários.
P2P para resolver problemas de dinheiro digital
O melhor de tudo é que o Bitcoin com seu sistema P2P conseguiu criar um sistema de contabilidade distribuído no qual problemas como gastos duplos são coisas do passado. O gasto duplo foi um dos principais problemas com o dinheiro digital. A possibilidade de duplicar dinheiro e falsificá-lo era algo que não havia sido resolvido até Satoshi Nakamoto projetar o blockchain e seu protocolo P2P para Bitcoin.
Desde então podemos utilizar criptomoedas com total segurança, sabendo que nosso dinheiro não está apenas em um protocolo aberto, transparente e gratuito, mas que nunca poderá ser falsificado. E tudo isso porque cada nó possui um histórico de transações na rede, testemunhando cada operação nela. Essa enorme rede de testemunhas permanece um registro imutável de tudo o que acontece e nos dá a garantia de que o sistema não é manipulável.
Algo realmente útil e que permite transformar o Bitcoin em um dinheiro digital seguro, o mais seguro e transparente de todos.
Outros eventos importantes na origem do P2P
O nascimento do IRC
Em 1988, um jovem chamado Jarkko Oikarinen projetou o protocolo IRC, a fim de substituir um programa chamado MUT (MultiUser Talk) em um BBS chamado OuluBox na Universidade de Oulu na Finlândia, onde trabalhou no Departamento de Ciência de Processamento de Informação .
Sua intenção era estender o software BBS que ele conseguiu para permitir notícias no estilo USENET, discussões em tempo real e recursos semelhantes aos do BBS. A primeira parte que ele implementou foi a parte do chat, que ele fez com partes emprestadas escritas por seus amigos Jyrki Kuoppala e Jukka Pihl. A primeira rede IRC estava rodando em um único servidor chamado tolsun.oulu.fi.
O fato de o protocolo ter sido projetado para usar TCP / IP deu a ele uma enorme flexibilidade no futuro. Na verdade, em 1990 foi fundada a primeira grande rede de IRC, a EFNet. O papel da EFNet foi vital para as comunicações globais durante o conflito do Golfo Pérsico. Na verdade, era a rede preferida para saber em tempo real o que estava acontecendo no campo de batalha. Mostrou assim que o potencial do IRC em relação ao correio era superior, pelo menos em termos de imediatismo e interatividade das comunicações. O mesmo aconteceu com a Queda da União Soviética, onde o IRC também foi vital no papel de comunicar o que estava acontecendo ao mundo em tempo real.
Desde então, o protocolo IRC sofreu enorme expansão e aceitação, com redes como Undernet, DALnet, nó livre (amplamente utilizado para projetos de software livre), Rio e Immortal-Anime (agora Xertion). A expansão em sua aceitação trouxe mais desenvolvimento ao protocolo, e daí nasceu um dos primeiros sistemas P2P na Internet, o IRC-DCC, ou IRC Direct Client-to-Client. O sistema permitia a comunicação direta entre as partes sem intermediários, compartilhamento de arquivos, comunicação criptografada ponta a ponta (OTR) e muito mais.
Nascimento do HotLine Connect
Para 1996, outra criação viria no mundo do P2P, criado Adam Hinkley. Linha direta de conexão era uma rede de compartilhamento de arquivos P2P que usa um sistema de rastreamento para permitir que dois usuários troquem informações. Amplamente utilizado até o final de 2000, caiu em desuso graças ao surgimento de outros protocolos mais flexíveis e ao importante surgimento do IRC-DCC.
Gnutella
Gnutella é um desenvolvimento de rede P2P de compartilhamento de arquivos desenvolvido em 2000 por Justin Frankel e Tom Pepper. Frankel e Pepper eram funcionários da Nullsoft, criadora do player Winamp e do serviço de streaming de áudio. Shoutcast.
Desde então e até agora, a Gnutella é a maior rede P2P que existe no mundo. Na verdade, essa rede tem mais de 12 milhões de nós em operação em todo o mundo.
O nascimento do Napster
O Napster era um software desenvolvido por Shawn Fanning em 1998 e permitia o download de músicas gratuitamente. Embora o Napster não fosse uma rede P2P pura (como também era o caso do IRC), ele permitia que duas pessoas trocassem música sem intermediários externos aos que existiam na rede e seus servidores. Mas o Napster tocou o bolso da indústria musical e, após um longo teste, foi fechado em julho de 2001.
No entanto, o que o Napster fez convocou o mundo a desenvolver sistemas mais descentralizados.