Como o Bittorrent funciona?


34

Quero aprender mais sobre a maneira bittorrent de compartilhamento de arquivos. Eu sou um usuário tecnicamente avançado (programador), portanto, o material tecnicamente avançado não é problema, mas deve ser conciso e direto ao ponto. Eu preciso de um bom livro de recursos / web que explique a arquitetura geral do bittorrent.

Não estou interessado em detalhes, apenas na arquitetura geral e na terminologia, como sementes, pares, etc.

Alguma sugestão?

Respostas:


29

Visão geral de como o bittorrent funciona:

  • Você tem colegas e um rastreador . Todos os colegas juntos a qualquer momento são o enxame . A situação usual é que um ou alguns pares têm o conjunto de arquivos completo e desejam disponibilizá-lo para outros pares.

  • Um par adquire um arquivo .torrent, que terá, entre outras coisas, A) o hash SHA-1 do conjunto de arquivos, B) o URL do rastreador e C) o número de partes em que o arquivo é dividido, além de um hash SHA-1 de cada peça. O tamanho das peças é determinado pelo próprio torrent.

  • O par então se conecta ao rastreador usando o URL especificado no torrent. O rastreador responde com uma lista de colegas. Os rastreadores falam HTTP pela porta 80 ou 443.

  • O par seleciona outro par, usando as informações do rastreador, e entra em contato diretamente com ele para configurar uma sessão de troca, tentando obter uma peça. Observe que as sessões de troca são feitas diretamente pelos pares e o rastreador NÃO está envolvido na transferência. O rastreador fornece apenas informações.

  • Uma vez que o par tenha um pedaço, ele o verifica no hash SHA-1 e o grava no arquivo. Ele pode oferecer essa peça ao selecionar outro par. As sessões de troca subsequentes envolvem peças de "negociação". Acredito que os colegas geralmente só darão a primeira peça se você não tiver outras peças.

  • O par reconsulta o rastreador de vez em quando para obter uma lista atualizada de pares. O par não precisa esperar que uma troca termine antes de iniciar outra se tiver várias peças, portanto, uma vez que o par tenha várias peças, a transferência poderá realmente acelerar. É por isso que os torrents começam devagar, mas ganham velocidade rapidamente à medida que o par adquire peças.

  • Quando um par possui todas as partes, o arquivo inteiro é verificado no hash SHA-1 do conjunto de arquivos. Em seguida, torna-se um semeador e agora não está fazendo nada além de ajudar o conjunto de arquivos a ficar mais disponível. Os pares que não têm todas as peças são sanguessugas .

  • Se um torrent não tem sementes, ele está morto, embora, se uma cópia completa do arquivo exista entre todas as partes mantidas por todos os pares, eles acabem trocando para obter uma cópia completa entre si.

  • O hash SHA-1 é como o rastreador e os pares "sabem" qual arquivo deve estar cheio. Os nomes de arquivos no torrent não são usados ​​para identificar os dados. Peças que não são verificadas em relação aos hases no arquivo .torrent são jogadas fora. Os colegas que enviam continuamente peças ruins são desprezados por outros colegas e, eventualmente, não poderão se conectar a ninguém no enxame.

  • Um tamanho menor de peça significa que o torrent é mais robusto, pois os pares podem trocar peças mais rapidamente, mas também significa que mais hashes de peças no arquivo .torrent precisam ser listados e, portanto, o arquivo .torrent pode ser grande.

  • Se você estiver publicando algo via BitTorrent, é melhor propagar o arquivo contanto que você deseje disponibilizá-lo. Outros colegas o ajudarão, já que a maioria dos softwares BitTorrent implementa algoritmos que favorecem a tentativa de espalhar as coisas entre o maior número possível de colegas para maximizar as conexões de conexão em corrente. Dessa forma, o BitTorrent pode ajudá-lo a publicar coisas e economizar custos de largura de banda.


11
Uma resposta linda! Uma piada: acredito que as sementes preferem as mais raras , não as primeiras peças primeiro. Não tenho certeza se isso é algo de algoritmo, mas foi o que recebi de um programa de torrent uma vez enquanto mexia nas configurações.
Gallifreyan


8

Há um vídeo bastante agradável no YouTube explicando isso de maneira visual com recortes de papelão. Não é uma explicação altamente técnica, mas é ótima para explicar a idéia por trás do BitTorrent para as pessoas de uma maneira simples e compreensível.

como o bittorrent funciona no youtube


3
+1 vídeo útil. Mostrou para o meu pai. Ele não teve perguntas depois. Surpreendente. :)
zero2cx 20/09/2012

2

Uma visão geral sobre o protocolo de mensagens pares .

O cliente pode usar dois protocolos para compartilhar informações com colegas, TCP ou uTP (sobre UDP). Esses dados seguem a especificação do protocolo bittorrent , as mensagens dos pares de seção .

Portanto, programaticamente, é necessário iniciar uma conexão entre dois clientes. Depois que a conexão é configurada (através de TCP ou uTP), um handshake bittorrent é iniciado pelo cliente, que pega as informações dos pares remotos (ip e porta) do rastreador ou através do DHT . Este handshake contém o info_hash que identifica o torrent sobre o qual essa conexão será realizada.

Vamos ver primeiro como os dados do Torrent são truncados através do protocolo. Uma parte é uma parte dos dados que você está compartilhando através da rede. Não confunda com um bloco , que é uma seção de uma peça embrulhada em um pacote. O bloco é a granularidade para compartilhar um pedaço através de pacotes, e um pedaço é a granularidade para compartilhar um Torrent através de pares.

Quando a conexão inicia, os dois clientes (cliente local, que chamarei de LC e cliente remoto, RC ) ficam bloqueados e desinteressados . Bloqueado significa "Não responderei a nenhuma das suas mensagens muito ocupadas, mas posso levá-las em consideração". Desbloqueado significa, portanto, "Eu responderei suas mensagens". Interessado significa, é claro, que eu gostaria de algumas peças que você tem. Portanto, o estado de uma conexão entre dois pares pode ser definido com esses quatro estados: LC_chocked ?, LC_interested ?, RC_chocked ?, RC_interested? Para avisar a RC que estou (des) chocado ou (des) interessado, Tenho que enviar mensagens (des) interessadas e (des) chocadas e reciprocamente.

Para informar um ao outro quais peças eles têm, eles podem enviar uma mensagem de campo de bits logo após o aperto de mão. Como o nome sugere, é uma cadeia de bits em que cada bit é definido como 1se o cliente tiver essa parte peculiar , 0caso contrário.

Então, se LC é calçadas e interessados e RC tem unchocked ele, então ele pode enviar uma solicitação de mensagens para pedir um bloco pertencente a uma peça que ele sabe LC tem graças a bitfield mensagem.

Quando um colega recebeu toda a peça , ele poderia enviar uma peça de mensagem para informar tudo o que é pares remotos para que eles atualizar o associado bitfield eles estão segurando.

Essa é uma visão geral muito básica e, é claro, nem todos os detalhes são fornecidos aqui, como o algoritmo de asfixia, etc ... Se você quiser obter mais detalhes, verifique os dois links que eu publiquei acima, na seção de comentários (como novo usuário eu posso tem mais de dois links em uma postagem).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.