03 - Modelo Cliente-Servidor vs P2P
video: https://youtu.be/... no frontmatter da nota.Modelo Cliente-Servidor vs P2P
A Camada de Aplicação suporta dois grandes paradigmas arquiteturais para a comunicação entre processos: o Modelo Cliente-Servidor (centralizado, assimétrico) e o Modelo Peer-to-Peer (P2P) (descentralizado, simétrico). A escolha entre eles impacta diretamente escalabilidade, performance, segurança e custo da infraestrutura. Aplicações modernas costumam combinar ambos em arquiteturas híbridas (ex: clientes P2P que dependem de servidores centrais para bootstrap).
1. Modelo Cliente-Servidor
Características
| Atributo | Descrição |
|---|---|
| Papéis | Assimétricos: cliente pede, servidor responde |
| Endereço | Servidor tem IP fixo e conhecido; cliente pode ter IP dinâmico |
| Estado | Servidor costuma manter estado (stateful) ou usar sessões |
| Escalabilidade | Vertical (limitada) ou Horizontal (com balanceador) |
| Complexidade | Concentrada no servidor |
| Exemplos | HTTP, SMTP, DNS, FTP, SSH, IMAP |
Vantagens
- Simplicidade: um único ponto de coordenação facilita governança.
- Controle: dados e lógica ficam centralizados, permitindo auditoria.
- Segurança: autenticação centralizada é mais fácil de implementar.
- Latência previsível: requisições vão para o mesmo local.
Desvantagens
- Ponto único de falha (SPOF): se o servidor cai, todos os clientes sofrem.
- Escalabilidade limitada: capacidade máxima determinada pelo servidor.
- Custo de infraestrutura: bandwidth, CPU e storage centralizados.
- Alvo para DDoS: servidor é alvo irresistível para ataques de negação.
2. Modelo Peer-to-Peer (P2P)
Características
| Atributo | Descrição |
|---|---|
| Papéis | Simétricos: cada nó é cliente e servidor (peer) |
| Endereço | IPs dinâmicos, múltiplos nós por trás de NAT |
| Estado | Distribuído entre todos os peers |
| Escalabilidade | Horizontal ilimitada (cada novo peer adiciona capacidade) |
| Complexidade | Distribuída, requer algoritmos de coordenação |
| Exemplos | BitTorrent, IPFS, Bitcoin, Tor, Skype (P2P original) |
Tipos de Arquitetura P2P
P2P Puro
Cada peer é totalmente equivalente. Nenhum servidor central. Exemplos: Gnutella, Freenet.
P2P Híbrido
Pequeno servidor centralizado coordena metadados (lista de peers, catálogo), mas a transferência de dados ocorre P2P. Exemplos: BitTorrent (com tracker),早期 Skype (super-nodes).
P2P Estruturado (DHT)
Usa Distributed Hash Table para organizar peers em um espaço de chaves. Exemplos: Kademlia (eMule, BitTorrent Mainline DHT), Chord, Pastry, Tapestry.
P2P Não-Estruturado
Peers se comunicam por flooding ou random walk. Ineficiente para buscas específicas.
Vantagens
- Escalabilidade: cresce com cada novo peer (cada nó adiciona banda e armazenamento).
- Resiliência: sem ponto único de falha; rede continua funcionando mesmo com perda parcial.
- Custo: não há servidor caro para manter.
- Auto-organização: peers entram e saem dinamicamente.
Desvantagens
- Complexidade de coordenação: algoritmos distribuídos são difíceis.
- Segurança: peers podem ser maliciosos (Sybil, Eclipse, Eclipse attacks).
- Latência variável: depende do par de peers envolvidos.
- NAT traversal: 60-70% dos peers estão atrás de NAT, exigindo STUN/TURN/ICE.
- Confiança: difícil validar identidade dos peers.
3. Comparação Técnica Detalhada
| Critério | Cliente-Servidor | P2P |
|---|---|---|
| Custo de escala | Alto (servidor cresce linearmente com demanda) | Baixo (cada peer contribui) |
| Latência | Baixa e previsível | Variável conforme topologia |
| Disponibilidade | Limitada pelo servidor | Aumenta com nº de peers |
| Implementação | Simples | Complexa (algoritmos distribuídos) |
| Auditoria | Centralizada | Distribuída, difícil |
| Compliance | Fácil (LGPD/GDPR: 1 local de dados) | Difícil (dados em múltiplos nós) |
| Censura | Fácil (corta 1 servidor) | Difícil (rede descentralizada) |
| Bandwidth | Concentrado no servidor (gargalo) | Distribuído entre peers |
4. Protocolos Representativos
Cliente-Servidor
| Protocolo | Porta | Função |
|---|---|---|
| HTTP/HTTPS | 80/443 | Web |
| SMTP | 25/587 | Envio de email |
| IMAP/POP3 | 143/110 | Leitura de email |
| DNS | 53 | Resolução de nomes |
| FTP/SFTP | 21/22 | Transferência de arquivos |
| SSH | 22 | Acesso remoto seguro |
| LDAP | 389/636 | Diretório (AD) |
| DHCP | 67/68 | Atribuição de IP |
P2P
| Protocolo | RFC/Spec | Função |
|---|---|---|
| BitTorrent | BEP-3 | Distribuição de arquivos grandes |
| Kademlia DHT | Petit (2002) | Busca distribuída (usado em IPFS, Ethereum) |
| IPFS | Spec IPFS | Sistema de arquivos distribuído |
| Tor | Spec Tor | Anonimato na rede |
| Bitcoin | BIPs | Blockchain distribuída |
| WebRTC | RFC 8825 | Comunicação real-time navegador a navegador |
5. Quando Usar Cada Modelo
Cliente-Servidor é Adequado Quando
- Você precisa de controle centralizado sobre dados e autenticação.
- A latência precisa ser baixa e previsível.
- Compliance exige rastreabilidade (LGPD, GDPR, SOX, HIPAA).
- Há poucos recursos mas alta interatividade (ex: banco de dados transacional).
- Aplicação exige transações ACID fortes.
P2P é Adequado Quando
- Necessita distribuir grandes volumes de dados (ex: atualização de SO para milhões de clientes).
- Custo de infraestrutura central é proibitivo.
- Requer resiliência contra censura ou queda de servidores.
- Os peers contribuem com recursos (banda, CPU, armazenamento).
- Latência variável é aceitável (ex: compartilhamento de arquivos).
6. Arquiteturas Híbridas Modernas
A maioria das aplicações modernas usa híbridos que combinam os dois paradigmas:
CDN (Content Delivery Network)
- Servidores centrais mantêm a cópia mestre (origem).
- Edges distribuídos replicam conteúdo próximo ao usuário.
- Statically ou dynamic: cache de arquivos estáticos ou renderização dinâmica em edge.
WebRTC
- Servidor central ( signaling) coordena o handshake inicial.
- Depois, mídia trafega P2P entre navegadores (DTLS/SRTP).
- Fallback para TURN server quando NAT traversal falha.
BitTorrent com Web Seeds
- Peers trocam blocos entre si via P2P.
- HTTP servers atuam como seeds adicionais (web seed) para acelerar downloads iniciais.
Blockchains Permissioned (Hyperledger Fabric)
- Nós validadores P2P mantêm o ledger distribuído.
- Ordering Service centralizado ou BFT共识 ordena transações.
7. Desafios de Segurança em P2P
Ataques Específicos de P2P
- Sybil Attack: adversário cria múltiplas identidades falsas para dominar a rede.
- Eclipse Attack: isola um peer fazendo-o conectar apenas a peers maliciosos.
- Poisoning: peer malicioso serve dados corrompidos.
- Free-riding: peers consomem sem contribuir (leeching).
- Churn: peers entram e saem constantemente, prejudicando estabilidade.
Mitigações
- Proof of Work/Stake (blockchains) dificulta Sybil.
- Reputation systems baseados em histórico de contribuição.
- Verification hashes (SHA-256) para detectar corrupção.
- Incentivos econômicos (tokens, bounties) para contribuir.
8. Ferramentas de Análise
ss -tnp | grep -E '6881|6882|6883' # conexões P2P ativas (BitTorrent)
sudo tcpdump -i eth0 -nn 'port 6881 or port 6969' -c 50 # tráfego P2P
transmission-remote -t 1 -pi # peers em torrent ativo
ipfs dht findprovs QmHash # inspeção Kademlia (IPFS)
chrome://webrtc-internals # debug WebRTC
9. Tendências Modernas
- Edge Computing: movimento da computação para a borda da rede (proximidade do usuário), reduindo latência — frequentemente combinado com modelo cliente-servidor distribuído.
- Mesh Networks: redes onde cada nó é roteador para outro (ex: Wi-Fi mesh, B.A.T.M.A.N.).
- Decentralized Web (Web3): aplicações distribuídas com blockchain, IPFS, libp2p.
- Hybrid P2P-CDN: clientes ajudam a distribuir conteúdo (ex: P2P assisted CDN usado por Netflix, Steam).
10. Conclusão
A escolha entre Cliente-Servidor e P2P não é binária: cada modelo tem seu espaço ideal. Para aplicações de missão crítica com dados sensíveis, o Cliente-Servidor centralizado continua sendo o padrão corporativo. Para distribuição massiva de conteúdo e resiliência, o P2P é insuperável. Aplicações modernas combinam ambos em arquiteturas híbridas (CDN, WebRTC, edge computing) que capturam o melhor dos dois mundos. Entender os trade-offs técnicos de cada modelo é fundamental para projetar redes escaláveis, seguras e econômicas.