Como os clientes de torrent remontam e armazenam peças?

7

Eu queria saber como as partes baixadas pelos clientes de torrent são armazenadas e remontadas? Eles usam metadados? Parece que este não é o caso, uma vez que é possível jogá-los se eles são arquivos formados pela metade? Eu não tenho ideia de como isso é feito? Então, basicamente, estou perguntando como estão organizadas as partes do arquivo baixado? É apenas do primeiro ao último, ou existem espaços de buffer entre eles?

    
por Cenoc 08.12.2010 / 03:34

1 resposta

16

Bem-vindo ao maravilhoso mundo dos Torrents! Existem algumas partes que compõem o protocolo Bittorrent: você tem o seu arquivo, legalthing.iso e você quer distribuí-lo para o maior número de pessoas possível. Então você cria um arquivo "torrent", que descreve legalthing.iso, e você distribui o arquivo torrent através de um site, ou qualquer outra maneira que você gosta. O arquivo torrent pode apontar diretamente para o seu computador (e você estaria agindo como a semente) ou o arquivo torrent pode apontar para um "tracker", que é um servidor que conecta "sementes" (usuários com todo o arquivo legal.iso arquivo já existente) e "peers" (usuários que baixam ativamente o arquivo).

Aproximando-se da sua pergunta agora. O arquivo propriamente dito, legalthing.iso, é criptografado em hash para que cada pessoa que lê o arquivo torrent e comece a fazer o download de legalthing.iso possa verificar cada parte contra o hash, e garantir que eles não estejam baixando uma peça que foi modificada do original. Peças que não são verificadas são descartadas.

Agora finja que você é um computador baixando um arquivo, usando o Bittorrent. O protocolo pode funcionar de duas maneiras: ou você baixará partes aleatórias do arquivo, ou baixará as partes mais raras primeiro. Esta última abordagem é aumentar a "saúde" geral (disponibilidade) do torrent.

Então, o que há no arquivo torrent atual? Ele varia de acordo com o cliente usado para produzi-lo, mas geralmente ele contém uma seção de "anúncio" que é o endereço do rastreador que você está usando e uma grande lista de todas as partes do arquivo que você deseja baixar. Cada peça é de tamanho uniforme (32 kb, 512kb, 4mb, qualquer tamanho que você quiser) e cada peça tem um hash associado a ela. Toda vez que um peer pega uma peça, compara o hash daquela peça (usando o código hash SHA-1) com o hash listado no arquivo torrent. É assim que as peças são boas.

Como o arquivo torrent lista cada parte do arquivo que você está baixando, toda vez que o seu cliente faz o download da peça e a coloca com sucesso, ela grava a peça na posição correta no disco rígido do arquivo. É por isso que, se você fizer o download de um arquivo de 1GB, o cliente reservará um bloco vazio de espaço no disco de 1GB, para acomodar as partes que você baixará.

Agora, alguns players de vídeo e outros visualizadores de arquivos podem lidar com arquivos "corrompidos". é claro, um torrent com metade do download não está corrompido, mas faltam pedaços e para um programa como o VLC, ele parece estar quebrado. Então, o VLC fará o melhor que puder para reproduzir quaisquer dados que possa encontrar e é por isso que eles podem tocar enquanto são baixados parcialmente.

Existem muitos aspectos mais complicados (google DHT, buffer de gravação de torrent, todas essas coisas divertidas), mas isso é o básico de como o Bittorrent funciona.

    
por 08.12.2010 / 04:06

Tags