Sumário
Como um novo cliente pode participar de um enxame sem um rastreador ou o conhecimento de pelo menos um membro do enxame para trocar pontos?
Você não pode. É impossível.*
* (A menos que um nó na sua rede de área local já seja um nó no DHT. Nesse caso, você pode usar um mecanismo de transmissão, como o Avahi, para "descobrir" esse par e inicializá-lo. eles se auto-iniciam? Eventualmente, você atingirá uma situação em que precisa se conectar à Internet pública. E a Internet pública é somente unicast, não multicast, portanto, você está preso ao uso de 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, ao ingressar na rede, você passa por um procedimento de inicialização , o que exige absolutamente que você conheça com antecedência o endereço IP e a porta de pelo menos um nó que já participa da rede DHT. O rastreador ao qual você se conecta, por exemplo, pode ser um nó DHT. Depois de conectar-se a um nó DHT, prossiga para o download de informações do DHT, que fornece informações de conectividade para mais nós, e navegue nessa estrutura de "gráfico" para obter conexões com mais e mais nós, que podem fornecer ambos conectividade com outros nós e dados de carga útil (partes do download).
Eu acho que sua pergunta real em negrito - a de como participar de uma rede Kademlia DHT sem saber quaisquer outros membros - é baseado em uma premissa falsa.
A resposta simples para sua pergunta em negrito é que você não . Se você não conhece QUALQUER informação sobre um único host que possa conter metadados DHT, você está parado - você não pode nem começar. Quero dizer, com certeza, você pode tentar forçar uma tentativa de descobrir um IP na Internet pública com uma porta aberta que transmita informações de DHT. Mas o mais provável é que o seu cliente BT seja codificado para algum IP ou DNS estático específico, resolvido para um nó DHT estável, que apenas fornece os metadados DHT.
Basicamente, o DHT é apenas como descentralizado como o mecanismo de adesão, e porque o mecanismo de junção é bastante frágil (não há nenhuma maneira de "broadcast" em toda a Internet! Então você tem que unicast para um host individual pré-designado para obter a DHT dados), o Kademlia DHT não é realmente descentralizado. Não no sentido mais estrito da palavra.
Imagine este cenário: alguém que deseja que o P2P pare sai e prepara um ataque a todos os nós DHT estáveis usados com freqüência que são usados para inicialização. Depois de encenar o ataque, eles o lançam em todos os nós de uma só vez. Wham ; todo nó DHT de bootstrap está inativo de uma só vez. O que agora? Você está preso à conexão com rastreadores centralizados para baixar listas tradicionais de pares deles. Bem, se eles atacam os rastreadores também, então você é realmente, realmenteaté um riacho. Em outras palavras, o Kademlia e toda a rede BT são limitados pelas limitações da própria Internet, pois há um número finito (e relativamente pequeno) de computadores que você precisaria atacar ou colocar offline com sucesso para evitar> 90% de usuários de se conectarem à rede.
Depois que os nós de inicialização "pseudo-centralizados" desaparecem, os nós internos do DHT, que não são inicializados porque ninguém na parte externa do DHT conhece os nós internos , é inútil; eles não podem trazer novos nós para o DHT. Portanto, à medida que cada nó interno se desconecta do DHT ao longo do tempo, devido ao desligamento dos computadores, à reinicialização de atualizações etc., a rede entra em colapso.
Obviamente, para contornar isso, alguém poderia implantar um cliente BitTorrent corrigido com uma nova lista de nós DHT estáveis ou endereços DNS pré-determinados e anunciar em voz alta à comunidade P2P para usar essa nova lista. Mas isso se tornaria uma situação "whack-a-mole", em que o agressor (o comedor de nós) faria o download progressivo dessas listas por conta própria e visaria os bravos novos nós de bootstrapping, e os colocaria offline também.