Como um cliente de Bittorrent descobre inicialmente seus pares?
Quando seu cliente de torrent se junta ao swarm para compartilhar e reunir arquivos, exatamente como ele sabe onde estão todos os seus pares? Continue lendo enquanto examinamos os mecanismos que sustentam o protocolo BitTorrent.
A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade..
A questão
O leitor SuperUser Steve V. tinha uma pergunta muito específica sobre o sistema DHT (Distributed Hash Table) no protocolo BitTorrent:
Eu já li esta resposta do SuperUser e este artigo da Wikipedia, mas ambos são muito técnicos para mim..
Eu entendo a ideia de um rastreador: os clientes se conectam a um servidor central que mantém uma lista de pares em um enxame.
Eu também entendo a ideia da troca de pares: os clientes que já estão em um enxame enviam a lista completa de seus pares uns aos outros. Se novos pares forem descobertos, eles serão adicionados à lista.
Minha pergunta é: como funciona o DHT? Isso é, como pode um novo cliente juntar-se a um enxame sem um tracker ou o conhecimento de pelo menos um membro do swarm para trocar pares com?
(Nota: explicações simples são melhores.)
Sua pergunta, por sua vez, provocou uma resposta realmente detalhada sobre as diferentes funções do sistema BitTorrent; vamos dar uma olhada agora.
A resposta
O colaborador do SuperUser Allquixotic oferece uma explicação detalhada:
Como um novo cliente pode se juntar a um enxame sem um rastreador ou o conhecimento de pelo menos um membro do swarm para trocar pares com?
Você não pode. É impossível.*
* (A menos que um nó no seu rede local acontece de já ser um nó no DHT. Nesse caso, você poderia usar um mecanismo de transmissão, como o Avahi, para "descobrir" esse ponto e fazer o bootstrap a partir deles. Mas como eles auto-inicialização? Eventualmente, você atingirá uma situação na qual você precisa se conectar à Internet pública. E a Internet pública é unicast-only, não multicast, então você está preso a usar listas pré-determinadas de pares.)
Referências
O Bittorrent DHT é implementado através de um protocolo conhecido como Kademlia, que é um caso especial do conceito teórico de uma tabela de hash distribuída..
Exposição
Com o protocolo Kademlia, quando você entra na rede, você passa por um procedimento de bootstrapping, que absolutamente requer que você saiba, antecipadamente, o endereço IP e a porta de pelo menos um nó já participando da rede DHT. O rastreador ao qual você se conecta, por exemplo, pode ser um nó DHT. Uma vez conectado a um nó DHT, você faz o download das informações do DHT, que fornece informações de conectividade para mais nós, e então navega pela estrutura “graph” para obter conexões com mais e mais nós, que podem fornecer tanto conectividade com outros nós e dados de carga útil (partes do download).
Eu acho que sua pergunta atual está em negrito - de como entrar em uma rede Kademlia DHT sem saber qualqueroutros membros - é baseado em uma suposição falsa.
A resposta simples à sua pergunta em negrito é, você não. Se você não sabe QUALQUER informação sobre um único host que possa conter metadados DHT, você está preso - você não pode nem mesmo começar. Quero dizer, claro, você poderia tentar a força bruta descobrir um IP na Internet pública com uma porta aberta que transmitisse informações sobre DHT. Mas o mais provável é que o seu cliente BT esteja codificado para algum IP ou DNS estático específico que seja resolvido para um nó DHT estável, que fornece apenas os metadados DHT.
Basicamente, o DHT é tão descentralizado quanto o mecanismo de junção, e porque o mecanismo de junção é bastante frágil (não há como “transmitir” por toda a Internet! Então você tem que unicastpara um host pré-designado individual para obter os dados do DHT), o Kademlia DHT não é realmente descentralizado. Não no sentido estrito da palavra.
Imagine este cenário: Alguém que quer que o P2P pare de sair e prepara um ataque contra todos nós de DHT estáveis comumente usados que são usados para bootstrapping. Uma vez que eles encenaram o ataque, eles o atacam todos nós de uma só vez. Wham; cada nó DHT bootstrapping é baixo tudo em uma só penada. O que agora? Você está preso com a conexão para rastreadores centralizados para baixar listas tradicionais de pares daqueles. Bem, se eles atacam os rastreadores também, então você está realmente, realmente um riacho. Em outras palavras, o Kademlia e toda a rede da BT são limitados pelas limitações da própria Internet, em que há um número finito (e relativamente pequeno) de computadores que você teria que atacar com êxito ou desativar off-line para evitar> 90% de usuários de se conectar à rede.
Uma vez que os nós de bootstrap "pseudo-centralizados" se foram, os nós internos do DHT, que não estão bootstrapping porque ninguém do lado de fora do DHT sabe sobre os nós interiores, são inúteis; eles não podem trazer novos nós para o DHT. Assim, como cada nó interior se desconecta do DHT ao longo do tempo, seja devido a pessoas desligando seus computadores, reiniciando para atualizações, etc., a rede entraria em colapso.
Claro, para contornar isso, alguém poderia implantar um cliente BitTorrent corrigido com uma nova lista de nós DHT pré-determinados ou endereços DNS, e anunciar em voz alta para a comunidade P2P para usar essa nova lista. Mas isso se tornaria uma situação de “besteira”, em que o agressor (o comedor de nós) iria baixar progressivamente essas listas e direcionar os bravos novos nós de bootstrapping, além de levá-los offline também.
Não só aprendemos a resposta à pergunta original, mas também aprendemos bastante sobre a natureza do sistema BitTorrent e suas vulnerabilidades..
Tem algo a acrescentar à explicação? Soe fora nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.