Featured image of post Tecnologia de Redes: Explicação Técnica do BitTorrent - Como Distribuir Arquivos Gigantes de Forma Eficiente

Tecnologia de Redes: Explicação Técnica do BitTorrent - Como Distribuir Arquivos Gigantes de Forma Eficiente

Como milhares de pessoas podem baixar uma imagem de SO de vários gigabytes de uma vez sem derrubar o servidor. Explicamos a inovadora divisão de arquivos e o algoritmo de troca de dados do "BitTorrent", uma obra-prima do P2P.

1. O Protocolo Que Revolucionou o Download

O que acontece se dezenas de milhares de pessoas tentarem baixar simultaneamente dados que chegam a vários gigabytes, como imagens de instalação do Linux ou grandes arquivos de atualização de jogos? Em servidores da Web normais (download HTTP), a largura de banda ficaria sobrecarregada e o servidor cairia.

Para resolver isso, em vez de “empresas pagarem para preparar vários servidores superpoderosos (CDN)”, a abordagem inovadora de “pegar emprestado o poder dos PCs dos próprios usuários que estão baixando para se ajudarem mutuamente no download” foi idealizada. Foi assim que Bram Cohen desenvolveu o “BitTorrent” em 2001.

O BitTorrent não é apenas uma ferramenta de download ilegal. É uma das maiores obras-primas de “algoritmos de distribuição descentralizada” em ciência da computação, que ainda hoje responde por uma proporção significativa do tráfego mundial da Internet, e é usado por grandes empresas de TI para implantar rapidamente dados massivos em seus servidores internos.

2. O Poder dos Pedaços (Pieces) e do Enxame (Swarm)

A maior invenção do BitTorrent é lidar com um arquivo gigante dividindo-o em “pedaços” (geralmente blocos picados que variam de 256 KB a alguns MBs).

Nos downloads tradicionais, os dados são recebidos do servidor em sequência, do início ao fim do arquivo. No entanto, no BitTorrent, a informação de “quem tem qual pedaço” é constantemente compartilhada entre as pessoas que participam do download (um grupo chamado de enxame).

Então, enquanto recebe pedaços que você não tem de outros usuários (pares), você simultaneamente faz o upload dos pedaços que você já terminou de baixar e os entrega a outros usuários que ainda não os têm.

  graph TD
    Seed["Seed (100% retido)"] -->|"Pedaço 1"| PeerA["Peer A (20% concluído)"]
    Seed -->|"Pedaço 2"| PeerB["Peer B (40% concluído)"]
    Seed -->|"Pedaço 3"| PeerC["Peer C (10% concluído)"]
    PeerA <-->|"Troca dos Pedaços 1 e 2"| PeerB
    PeerB <-->|"Troca dos Pedaços 2 e 3"| PeerC
    PeerC <-->|"Troca dos Pedaços 3 e 1"| PeerA
    Note over PeerA,PeerC: "Os usuários trocam peças que não possuem como um quebra-cabeça"

Com esse mecanismo, o servidor original (Seed) não precisa mais enviar o arquivo completo para todos os participantes. Se ele passar cada pedaço para apenas uma pessoa, os participantes então os multiplicarão como se estivessem trocando peças de um quebra-cabeça. Ocorre o fenômeno mágico de que “quanto mais participantes houver, mais rápida se tornará a velocidade de download de toda a rede”.

3. Algoritmo Rarest First (O Mais Raro Primeiro)

Um dos motivos pelos quais o BitTorrent funciona com tanta eficiência é o algoritmo inteligente chamado “Rarest First (priorizar o mais raro)”, que determina a ordem em que os pedaços são baixados.

Se todos baixassem os “pedaços iniciais do arquivo” em ordem, o enxame ficaria cheio de “pessoas que só têm os primeiros pedaços”, e o número de pessoas com as partes finais seria extremamente pequeno. Desse modo, no momento em que o Seed original desaparecer, ninguém conseguiria completar 100% do arquivo.

Portanto, o BitTorrent examina todo o enxame e força cada par a seguir a regra de “baixar os pedaços mais raros que estão com menor circulação (os menos disponíveis) no momento primeiro”. Isso garante que todos os pedaços sejam espalhados uniformemente pela rede, de modo que mesmo se o Seed original sair, os arquivos possam ser concluídos apenas pela troca de dados entre os usuários restantes.

4. Estratégia Tit-for-Tat (Olho por Olho): Exclusão de Aproveitadores (Free-Riders)

O maior desafio das redes P2P é a presença de usuários egoístas (free-riders) que “só recebem dados e nunca os enviam (fazem upload) para os outros”. Se o sistema for formado apenas por eles, entrará em colapso.

Para resolver este problema, o BitTorrent incorporou uma contramedida poderosa baseada na teoria dos jogos chamada “Tit-for-Tat (Olho por Olho)” no nível do protocolo.

O software cliente do BitTorrent mede constantemente “a velocidade na qual estão me enviando dados” para cada parceiro conectado. E então realiza automaticamente a ação de “enviar meus dados prioritariamente como um favor apenas para aqueles que me enviam muitos dados (Choke/Unchoke)”.

Em outras palavras, os usuários que restringem o upload e “apenas recebem” serão julgados por todos os outros usuários como “aquele cara não me dá dados, então eu não vou dar também”, tendo a sua conexão cortada, o que resultará em uma velocidade de download extremamente lenta. É um algoritmo incrível, projetado de forma que o comportamento altruísta (abrir os uploads) seja a solução ideal para atingir um objetivo egoísta (tornar o seu próprio download mais rápido).

5. Evolução dos Trackers para o DHT (O Ápice da Descentralização)

Nos primeiros dias do BitTorrent, um servidor central chamado “Tracker” era necessário para gerenciar a lista de “qual endereço IP tem este arquivo”. Ele tinha a fraqueza de que os usuários não conseguiam se encontrar se o Tracker caísse.

No entanto, o BitTorrent de hoje não requer mais nem mesmo um servidor Tracker (sem Tracker) ao adotar a tecnologia DHT (Distributed Hash Table: Tabela de Dispersão Distribuída). Os próprios PCs de milhões de usuários participantes da rede trabalham juntos para criar um enorme “diretório descentralizado”, evoluindo para um sistema descentralizado definitivo, onde mesmo na ausência total de um servidor central, é possível encontrar pessoas com um arquivo específico e iniciar o download.

6. Resumo

O BitTorrent é uma tecnologia que descarta o pensamento do século XX de “um servidor central gigante distribuindo para todos” e incorpora brilhantemente a filosofia de distribuição autônoma original da Internet de “unir o poder de indivíduos reunidos em um enxame”.

A lógica que opera na sua fundação — “quebrar arquivos em pequenos pedaços”, “coletar os mais raros” e “recompensar quem colabora” — continua a ter uma influência imensa no design das tecnologias atuais de blockchain e armazenamento em nuvem descentralizado.

comments powered by Disqus