1Sep
Quando seu cliente torrent se junta ao enxame para compartilhar e coletar peças de arquivo, como exatamente sabe onde estão todos os seus pares? Continue lendo enquanto puxamos por dentro dos mecanismos que sustentam o protocolo BitTorrent.
Today's Question &A sessão de atendimento chega a cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento comunitário de sites Q & A.
O questionário
SuperUser Steve V. teve uma pergunta muito específica sobre o sistema Distributed Hash Table( DHT) no protocolo BitTorrent:
Eu já li esta resposta do SuperUser e este artigo da Wikipedia, mas ambos são muito técnicos para mim realmenteenvolva minha cabeça.
Eu entendo a idéia 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 idéia de troca de pares: os clientes já em um enxame enviam a lista completa de seus pares entre si. Se novos pares forem descobertos, eles serão adicionados à lista.
Minha pergunta é, como a DHT funciona? Ou seja, como um novo cliente pode se juntar a um enxame sem um rastreador ou o conhecimento de pelo menos um membro do enxame para trocar colegas?
( Nota: as explicações simples são as melhores.)
Sua pergunta, por sua vez, levou uma resposta muito detalhada sobre as diferentes funções do sistema BitTorrent;Vamos dar uma olhada agora.
A Resposta
Contribuinte 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 enxame para trocar colegas?
Você não pode.É impossível. *
* ( A menos que um nó na sua rede de área local já seja um nó no DHT. Neste caso, você poderia usar um mecanismo de transmissão, como Avahi, para "descobrir" esse ponto, e como foi que se inicializaram? Eventualmente, você atingirá uma situação em que você precisa se conectar à Internet pública. E a Internet pública é unicast-only, não multicast, então você está presocom o uso de listas de pares pré-determinadas.)
Referências
O Bittorrent DHT é implementado através de um protocolo conhecido como Kademlia, que é um caso especial de conceito teórico de uma tabela de hash distribuída.
Exposição
Com o protocolo Kademlia, quando você se juntar à 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ó já participando da rede DHT.O rastreador com o qual você se conecta, por exemplo, pode ser ele mesmo um nó DHT.Uma vez que você está conectado a um nó DHT, então, procede para baixar informações do DHT, que fornece informações de conectividade para mais nós e, então, navegue por essa estrutura "grafica" para obter conexões para mais e mais nós, que podem fornecer ambosconectividade a outros nós e dados de carga útil( pedaços do download).
Eu acho sua pergunta real em negrito - que de como se juntar a uma rede Kademlia DHT sem conhecer qualquer outro membro do - é baseado em uma falsa suposição.
A resposta simples à sua pergunta em negrito é, você não .Se você não conhece nenhuma informação sobre um host que possa conter metadados DHT, você está preso - você não pode começar. Quero dizer, com certeza, você poderia tentar a força bruta para descobrir um IP na internet pública com uma porta aberta que passa a transmitir informações DHT.Mas, provavelmente, seu cliente BT está codificado para algum IP ou DNS estático específico, que resolve um nodo DHT estável, que apenas fornece os metadados DHT.
Basicamente, o DHT é tão descentralizado como o mecanismo de junção e porque o mecanismo de junção é bastante frágil( não há como "transmitir" em toda a Internet! Então você precisa de unicast para um host pré-atribuído individual paraobter os dados DHT), Kademlia DHT não é realmente descentralizado. Não no sentido mais estrito da palavra.
Imagine esse cenário: Alguém que quiser que o P2P pare de sair e prepara um ataque em todos os nós DHT estáveis comumente utilizados que são usados para bootstrapping. Uma vez que eles organizaram seu ataque, eles o levam a todos os nós de uma só vez. Wham ;cada único nó DHT de inicialização está desativado de uma só vez. O que agora? Você está preso a se conectar aos rastreadores centralizados para baixar listas tradicionais de colegas desses. Bem, se eles atacam os rastreadores também, então você é realmente, realmente até um riacho. Em outras palavras, a Kademlia e toda a rede BT são limitadas 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 sucesso ou se desligar para prevenir & gt; 90% de usuários conectados à rede.
Uma vez que os nós de inicialização "pseudo-centralizados" são todos desaparecidos, os nós interiores do DHT, que não são bootstrapping porque ninguém na parte externa da 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 da DHT ao longo do tempo, devido às pessoas que desligam seus computadores, reiniciando para atualizações, etc., a rede entraria em colapso.
Claro, para evitar isso, alguém poderia implantar um cliente BitTorrent com uma nova lista de nós DHT estáveis ou endereços DNS pré-determinados e anunciar em voz alta para a comunidade P2P para usar essa nova lista. Mas isso se tornaria uma situação de "whack-a-mole" em que o agressor( o nodo-comedor) baixaria progressivamente essas listas e direcionaria os novos nós de bootstrapping bravos e, em seguida, levá-los para fora, também.
Não só aprendemos a resposta à pergunta original, mas também aprendemos um pouco sobre a natureza do sistema BitTorrent e suas vulnerabilidades.
Tem alguma coisa a adicionar à explicação? Som na parte dos comentários. Deseja ler mais respostas de outros usuários Tech-savvy Stack Exchange? Confira o tópico de discussão completo aqui.