Resumo
How can a new client join a swarm without either a tracker or the knowledge of at least one member of the swarm to exchange peers with?
Você não pode. É impossível. *
* (A menos que um nó na sua rede local seja um nó no DHT. Nesse caso, você poderia usar um mecanismo de transmissão, como Avahi, para "descobrir" esse peer, e fazer o bootstrap a partir deles. Mas como eles se auto-inicializaram? Eventualmente, você vai encontrar uma situação na qual você precisa se conectar à Internet pública. é somente unicast, não multicast, então você está preso a usar listas pré-determinadas de pares.)
Referências
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 bootstrapping , que requer absolutamente que você sabe, 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. Quando você estiver conectado a um nó DHT, prossiga com o download de informações do DHT, que fornece informações de conectividade para mais nós e, em seguida, navega pela estrutura "graph" para obter conexões com mais e mais nós, que podem fornecer conectividade com outros nós e dados de carga útil (partes do download).
Eu acho que sua pergunta real em negrito - de como entrar em uma rede Kademlia DHT sem conhecer qualquer outro membro - é baseada 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 resolva para um nó DHT estável, que apenas fornece 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 unicast 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 e apareça em todos nós de DHT estáveis comumente usados que são usados para bootstrapping. Uma vez que eles encenaram o ataque, eles colocam todos os nós todos de uma vez. Wham ; cada nó DHT bootstrapping é baixo tudo de uma só vez. O que agora? Você está preso a conectar-se a rastreadores centralizados para baixar as listas tradicionais de seus pares. Bem, se eles atacam os rastreadores também, então você está realmente em um riacho. Em outras palavras, o Kademlia e toda a rede da BT são limitados pelas limitações da própria Internet, na medida em que há um número finito (e relativamente pequeno) de computadores que você teria que atacar com êxito ou desativar offline para evitar > % de usuários de se conectar à rede.
Uma vez que os nós bootstrapping "pseudo-centralizados" se foram, os nós internos do DHT, que não são bootstrapping porque ninguém na parte externa 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 que, 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) progressivamente baixaria essas listas e direcionaria os bravos novos nós de bootstrapping, além de levá-los offline também.