Redes Par-a-Par (P2P)

Disciplina: Redes de Computadores I

Professor: Luís Henrique M. K. Costa

Grupo 9: Matheus Fortunato Chiconi

1. Introdução às redes P2P

a) O que são as redes P2P

Redes P2P (peer-to-peer) são sistemas de comunicação em que cada participante (nó) pode atuar tanto como cliente quanto como servidor, compartilhando recursos diretamente entre si, sem depender de um servidor central. Essa arquitetura permite maior descentralização, escalabilidade e resiliência.

Em sua essência, os sistemas P2P caracterizam-se pela formação de redes descentralizadas, tendo como propósito o compartilhamento de recursos computacionais. Nessa arquitetura, um "peer" representa um dispositivo computacional que integra um sistema distribuído, atuando como o ponto central. Uma característica fundamental das redes P2P é que os peers não apenas baixam conteúdo de um servidor de origem, mas também o disponibilizam para outros peers. Isso faz com que a capacidade de serviço do sistema aumente com o número de nós, tornando-o potencialmente autoescalável.

As redes P2P promovem a formação de redes virtuais entre seus participantes. A estrutura de conexão dessa rede virtual é designada como topologia overlay, a qual é construída de forma sobreposta a outra topologia existente. As conexões entre peers nessa rede overlay são lógicas, podendo necessitar de diversos enlaces físicos para seu estabelecimento.

Uma rede peer-to-peer deve ser capaz de tratar diferentes taxas de comunicação entre os peers, provendo um certo grau de autonomia em relação a servidores centrais. Qualquer peer deve estar apto a fornecer e consumir recursos e a se conectar diretamente a outro peer para proporcionar a escalabilidade da rede. Entre os diversos aspectos positivos que tornaram o P2P uma tecnologia promissora, destacam-se a facilidade no compartilhamento de recursos e a inexistência de restrições quanto à quantidade de participantes do sistema.

As redes P2P podem ser auto escaláveis, resistentes à censura, anônimas, e sua robustez atual é resultado de uma evolução incremental. O movimento P2P tem suas raízes na internet primitiva e deu origem a inúmeros protocolos e aplicações que, em casos extremos, redefiniram nossa forma de consumir entretenimento.

b) Origem e evolução: de Napster ao Blockchain

O movimento peer-to-peer é enraizado na internet primitiva. A fase inicial da Internet já exibia aspectos de funcionamento similares ao da comunicação peer-to-peer, permitindo a troca de pacotes entre quaisquer hosts sem o uso de mecanismos de segurança. Protocolos como TELNET (RFC 0854) e FTP (RFC 3659) representam exemplos claros dessa comunicação P2P inicial, onde qualquer host poderia atuar como cliente e servidor simultaneamente, sendo denominado SERVENT.

Com a evolução da Internet e a necessidade de segurança, a comunicação P2P direta foi reduzida. Contudo, protocolos como DNS (RFC 1035) e o próprio TELNET mantiveram seu comportamento peer-to-peer. Com a readaptação desse método de comunicação à nova realidade das redes, ele foi retomado na forma de diversas aplicações distribuídas, como serviços de compartilhamento de arquivos, sistemas de mensagens instantâneas, e trabalho colaborativo.

A área de redes peer-to-peer tem sido um tópico de intensa pesquisa, com o serviço de compartilhamento de arquivos sendo uma das áreas mais exploradas. Um dos fatores responsáveis pela popularidade do P2P é proveniente das aplicações destinadas ao compartilhamento de arquivos, que são responsáveis por uma parcela significativa do tráfego nos backbones IP.

A evolução do P2P, focando em alguns marcos históricos relevantes:

Usenet (anos 80 e 90)
  • Surgiu como um sistema de discussão distribuída voltado inicialmente para ciência da computação, programação e administração de sistemas.
  • Evoluiu para uma ferramenta de compartilhamento de mensagens e arquivos entre usuários com interesses variados, sendo precursora dos fóruns e feeds modernos.
  • Introduziu conceitos como “FAQ” e “spam”, que se tornaram comuns na cultura digital.
  • Utilizava linhas telefônicas fixas e protocolos baseados na ARPAnet para viabilizar a comunicação entre diferentes tipos de computadores.
Funcionamento dos clientes trabalhando junto com os servidores no USANET
Funcionamento dos clientes trabalhando junto com os servidores no USANET | pt.m.wikipedia.org/wiki/Ficheiro:Usenet_servers_and_clients.svg
Napster (1999–2001)
  • Foi o primeiro sistema de compartilhamento de músicas em formato MP3 via rede peer-to-peer, impactando profundamente a indústria fonográfica.
  • Apesar do encerramento por razões legais, seu modelo influenciou diretamente o desenvolvimento de redes descentralizadas.
  • Funcionava com um servidor central que mantinha um índice dos arquivos compartilhados, mas o envio e o recebimento dos arquivos ocorriam diretamente entre os usuários (modelo híbrido).
Logo do Napster
Napster, serviço pioneiro de compartilhamento de músicas via P2P | notebookcheck.info/Napster-sold-for-207-million.420598.0.html
Gnutella (a partir de 2001)
  • Surge como resposta descentralizada ao modelo centralizado do Napster, eliminando a dependência de servidores únicos.
  • Cada nó atua como cliente e servidor, participando da propagação das buscas por arquivos.
  • Sua arquitetura totalmente distribuída promove maior resiliência e resistência à censura, e influenciou o desenvolvimento de outras redes como BitTorrent.
Arquitetura descentralizada da rede Gnutella
Exemplo de arquitetura descentralizada da rede Gnutella, onde todos os nós podem atuar como clientes e servidores | gta.ufrj.br/seminarios/semin2003_1/rafael/modelo1.gif
Kademlia (2002)
  • É um protocolo estruturado voltado à implementação de DHTs (tabelas hash distribuídas) em grande escala.
  • Utiliza a métrica XOR para calcular distâncias entre chaves, tornando o roteamento eficiente e previsível.
  • Permite localização e recuperação de dados de forma descentralizada, sendo base para várias aplicações peer-to-peer modernas.
Bitcoin (2009)
  • Primeira criptomoeda baseada em blockchain, utilizando uma rede P2P para validar transações e garantir a descentralização e segurança do sistema financeiro digital.
  • Introduziu o conceito de blockchain, um registro público e imutável de transações armazenado por todos os nós da rede.
  • Permite transferências financeiras descentralizadas, sem autoridade central, com verificação coletiva das transações.
  • Embora não tenha sido criado para compartilhamento de arquivos, inspirou novas formas de organização P2P e deu origem a diversas tecnologias de armazenamento distribuído.
Exemplo visual de um blockchain
Exemplo visual de um blockchain, mostrando como os blocos de transações são encadeados e validados por uma rede P2P | opennode.com/blog/what-is-a-blockchain
DSNs (Redes de Armazenamento Descentralizado, década de 2010)
  • São redes que combinam compartilhamento de arquivos peer-to-peer com incentivos econômicos baseados em blockchain.
  • Têm como objetivo garantir armazenamento descentralizado, resistente à censura e altamente disponível.
  • Utilizam DHTs e contratos inteligentes para distribuir e manter arquivos, oferecendo pagamentos automatizados aos nós que armazenam e servem dado.
Exemplo de arquitetura de uma DSN (Filecoin)
Exemplo de arquitetura de uma DSN (Filecoin), mostrando como os dados são distribuídos e armazenados de forma descentralizada entre múltiplos nós participantes da rede | gta.ufrj.br/ensino/eel878/redes1-2019-1/vf/p2p/img/DSN%20-%20Filecoin.png

2. Fundamentos e Arquiteturas

a) Modelo descentralizado vs cliente-servidor

Na arquitetura cliente-servidor, um servidor centralizado permanece sempre disponível para atender pedidos de múltiplos clientes, que não se comunicam diretamente entre si. Esse modelo é comum em aplicações como web, e-mail, FTP, entre outras. O servidor tem um endereço fixo, o que facilita sua localização.

Essa abordagem favorece o controle, a segurança e a confiabilidade, mas tem desvantagens, como custo elevado, risco de sobrecarga e a presença de um ponto único de falha.

Já na arquitetura peer-to-peer (P2P), os participantes (pares) comunicam-se diretamente uns com os outros, sem depender de um servidor central. Cada nó pode fornecer e consumir recursos, agindo como cliente e servidor ao mesmo tempo.

Os pares são dispositivos comuns (PCs, notebooks) e podem entrar e sair da rede livremente, formando uma rede descentralizada e distribuída. Isso garante autoescalabilidade, reduz custos e evita gargalos, embora traga desafios quanto à segurança e consistência. A comunicação entre os nós se dá por meio de uma rede sobreposta (overlay), construída sobre a infraestrutura física da Internet.

b) Arquiteturas estruturadas, não estruturadas e híbridas

As redes P2P podem adotar diferentes topologias, dependendo de como organizam seus nós e localizam os recursos. As três principais são:

1. Arquiteturas Puras (Descentralizadas)
  • Estruturada:
    • Possui regras bem definidas para armazenar e localizar recursos.
    • Utiliza Tabelas Hash Distribuídas (DHTs) para distribuir a responsabilidade pelos dados entre os nós.
    • Exemplo: Kademlia: usa uma distância XOR entre os IDs dos nós e implementa roteamento eficiente em log(n) saltos.
  • Não estruturada:
    • Não impõe regras rígidas sobre onde os dados ficam.
    • A localização ocorre via flooding ou busca por amostragem.
2. Arquitetura Híbrida
  • Combina características de cliente-servidor com P2P.
  • Há um servidor central responsável por indexar os arquivos, mas o compartilhamento ocorre entre os pares.
  • Exemplo: Napster (1999–2001): indexava os arquivos num servidor central, mas a troca de arquivos era direta entre usuários.
3. Arquitetura Super-peer
  • Alguns nós, com maior capacidade, assumem o papel de super-peers.
  • Funcionam como mini-servidores, coordenando grupos de nós menores.
  • Combina a escalabilidade do P2P com um pouco de centralização para otimizar buscas e eficiência.

3. Protocolos e Tecnologias P2P

a) BitTorrent: funcionamento e otimizações

O BitTorrent é um dos protocolos P2P mais utilizados para a distribuição eficiente de arquivos grandes. Ele se destaca pela sua autoescalabilidade, permitindo que o desempenho melhore à medida que mais usuários participam.

  • Um torrent é o conjunto de pares que compartilham um mesmo arquivo.
  • O arquivo é dividido em blocos menores, normalmente de 256 KB.
  • Enquanto faz download, cada par também envia blocos para outros pares, ajudando a distribuir a carga.

Cada torrent conta com um rastreador (tracker), que ajuda os pares a se encontrarem. Atualmente, muitos clientes utilizam DHTs (Distributed Hash Tables) para eliminar a necessidade de um rastreador centralizado.

Essa estrutura reduz custos com servidores, melhora a velocidade de download e evita gargalos, tornando o BitTorrent uma solução altamente eficaz para compartilhamento de arquivos.

Funcionamento do BitTorrent
Funcionamento do protocolo BitTorrent, mostrando a troca de blocos entre pares durante o download | gta.ufrj.br/grad/08_1/p2p/bit2.gif

b) Gnutella e Napster: busca e compartilhamento de conteúdo

Napster (1999–2001)
  • Utilizava uma arquitetura híbrida: os arquivos eram compartilhados entre os usuários, mas a busca era feita por meio de um servidor central.
  • O servidor mantinha um índice com os arquivos disponíveis e indicava quais usuários possuíam o conteúdo procurado.
  • A transferência era direta entre os pares, mas o sistema dependia da existência do servidor – o que representava um ponto único de falha.
Gnutella
  • Foi um dos primeiros protocolos P2P completamente descentralizados.
  • Não possui servidor central. Os pares se conectam diretamente.
  • A busca de conteúdo é feita por inundação (flooding): a solicitação é enviada a todos os vizinhos, que a repassam à rede.
  • Esse método garante descentralização, mas pode gerar alto tráfego e baixa eficiência.

Ambos os protocolos marcaram época ao demonstrar o potencial das redes P2P para compartilhamento de arquivos em larga escala.

c) Como o Skype utiliza o P2P

O Skype foi inicialmente desenvolvido com base em uma arquitetura P2P com super-peers, aplicada à comunicação de voz, vídeo e mensagens pela Internet (VoIP).

  • Antes da aquisição pela Microsoft (pré-2011):
    • As chamadas eram roteadas entre pares, sempre que possível, sem servidores centrais.
    • Alguns usuários atuavam como super-peers, com maior capacidade de rede e processamento, ajudando na localização de usuários e roteamento de chamadas.
    • A arquitetura permitia bypass de firewalls e NATs por meio de intermediários.
    • Utilizava UDP para mídia e TCP para controle, além de FEC (Forward Error Correction) para melhorar a qualidade mesmo com perdas na rede.
  • Após a aquisição pela Microsoft (a partir de 2011):
    • O Skype passou a ser gradualmente migrado para uma arquitetura baseada em nuvem.
    • A Microsoft eliminou o uso da rede P2P e dos super-peers, substituindo-os por servidores centralizados em data centers próprios.
    • A mudança teve como foco:
      • Melhorar a confiabilidade, segurança e controle.
      • Integrar com serviços como Microsoft Teams, Outlook e Azure.
      • Facilitar a moderação de conteúdo e conformidade com regulamentações.
    • Hoje, o Skype opera majoritariamente como um serviço cliente-servidor, mesmo que mantenha alguns mecanismos P2P em segundo plano para otimização pontual de tráfego.
  • Arquitetura P2P do Skype
    Exemplo de arquitetura P2P do Skype, mostrando a comunicação entre peers e super-peers antes da migração para a nuvem | gta.ufrj.br/ensino/eel878/redes1-2018-1/trabalhos-vf/p2p/images/skype.png

4. Segurança e Desafios Técnicos

a) Vulnerabilidades, anonimato e confiança

A Internet foi originalmente projetada para um ambiente de usuários confiáveis, sem foco em segurança. Hoje, essa realidade mudou: usuários maliciosos estão por toda parte, explorando vulnerabilidades e realizando ataques diversos.

Principais ameaças em redes P2P:

  • Malware: Atacantes podem inserir softwares maliciosos nos hosts por meio da rede.
  • Ataques DoS e DDoS: Consistem em sobrecarregar um servidor ou peer com múltiplas conexões, impedindo o acesso legítimo.
  • Packet Sniffers: Ferramentas que capturam pacotes em redes sem fio, podendo expor dados sensíveis como senhas.
  • Disfarce de origem, modificação e exclusão de mensagens: Alterações maliciosas nas comunicações podem comprometer a integridade e autenticidade dos dados.
  • Vulnerabilidades em protocolos:
    • BitTorrent: pode ser alvo de envio de blocos falsos sem proteção adequada.
    • WEP (802.11): apresenta falhas graves exploráveis por ferramentas públicas.
    • Telnet: transmite dados sem criptografia, vulnerável a espionagem.

Para mitigar esses riscos, são utilizados princípios de segurança:

  • Confidencialidade: Apenas o destinatário pode ler a mensagem (ex: criptografia).
  • Autenticação: Verifica se a entidade é quem afirma ser.
  • Integridade: Garante que os dados não foram alterados durante o tráfego (ex: MACs, assinaturas digitais).
  • Disponibilidade: Garante acesso contínuo aos recursos, prevenindo ataques DoS.
Anonimato

O anonimato é uma característica valorizada em redes P2P, pois impede a identificação das entidades envolvidas. Isso ajuda a evitar censura, mas também pode comprometer a segurança, especialmente em redes locais. A gestão do anonimato deve considerar o tipo de recurso compartilhado.

Confiança

A confiança, antes presumida, hoje precisa ser construída e verificada. Em sistemas como BitTorrent, a confiabilidade depende da origem do arquivo .torrent. Redes modernas usam mecanismos de reputação, verificação e recompensa para incentivar a colaboração e punir comportamentos maliciosos.

b) Escalabilidade e gerenciamento de peers

A escalabilidade é um dos principais atrativos das redes P2P. Cada nó pode atuar como cliente e servidor, conectando-se diretamente a outros peers e reduzindo o gargalo centralizado do modelo cliente-servidor.

Desafios de escalabilidade
  • Conexões limitadas e variáveis entre pares podem impactar o desempenho.
  • Em redes não estruturadas (como Gnutella), o aumento de nós causa sobrecarga na rede devido à busca por flooding.
  • Abordagens híbridas ou centralizadas podem herdar os mesmos problemas de escalabilidade de servidores tradicionais.
  • Protocolos de roteamento e descoberta precisam ser eficientes para lidar com milhões de peers.

A escalabilidade exige custos adicionais de desenvolvimento, pois os peers precisam lidar com funções complexas de rede.

Gerenciamento de peers

Envolve um conjunto de responsabilidades para manter a rede funcional e eficiente:

  • Gerenciamento da Conectividade: Adaptação à entrada e saída contínua de peers.
  • Gerenciamento de Recursos: Indexação, replicação e controle de acesso aos arquivos.
  • Monitoramento: Estado dos peers e arquivos locais.
  • Gerenciamento de Cache: Descarte de arquivos obsoletos.
  • Gerenciamento de Sessão e Criptografia: Estabelecimento de chaves para comunicação segura.
  • Gerenciamento de Confiança: Mecanismos para recompensa, categorização e reputação dos usuários.
  • Roteamento e Descoberta: Gerenciamento das mensagens de busca e roteamento, que aumentam o overhead em topologias descentralizadas.

O LP2P, por exemplo, gerencia comunicação e troca de dados, cuidando da autenticação, criação de sessões e atendimento de requisições.

Gerenciamento de rede

Além dos peers, a infraestrutura de rede subjacente precisa ser gerenciada:

  • Gerenciamento de Desempenho, Falhas, Segurança, Configuração e Contabilização são áreas aplicáveis também ao contexto P2P.
  • Firewalls e NATs dificultam a comunicação direta e afetam a transparência da rede.
  • A infraestrutura "por baixo" das redes P2P, embora crucial, pode limitar o desempenho e dificultar a implementação de serviços se não for bem gerenciada.

Conclusão

As soluções que utilizam tecnologias Peer-to-Peer (P2P) destacam-se por sua acessibilidade econômica, principalmente quando comparadas às alternativas construídas sobre arquiteturas cliente-servidor. Isso ocorre porque os próprios participantes fornecem os recursos computacionais e de rede, reduzindo a necessidade de infraestrutura centralizada. Além disso, esse tipo de sistema tende a apresentar alta resiliência, mantendo sua operação mesmo diante de falhas localizadas, como desastres físicos — a desconexão de um segmento da rede não compromete sua funcionalidade geral.

Bibliografia