Por que a distribuição de partes aleatórias de um arquivo é mais rápida do que uma transferência contígua?

17

Por que se diz que o BitTorrent é mais rápido, em parte, porque transfere partes aleatórias de um arquivo em vez de transferi-lo do início ao fim de forma contígua / linear?

EDIT: Mas por que eles têm como 'aleatórios'? Por que não uma transferência "semi-contígua" mais previsível, na qual um par dá a você a primeira metade, e a segunda, a outra metade? Isso teoricamente reduziria a sobrecarga.

    
por Mateen Ulhaq 04.09.2011 / 20:44

7 respostas

6

Em relação à edição perguntando por que eles têm que ser aleatórios: Digamos que os torrents foram alterados para baixar apenas o primeiro bloco que o downloader ainda não possui, garantindo assim uma transferência contígua.

Eu então compartilho um arquivo de 100MB. 10 pessoas se conectam e cada um faz o download de 50MB antes de eu ficar off-line.

Essas pessoas são parafusadas, porque todas têm a primeira metade do arquivo, enquanto só eu tenho a segunda metade. Até que eu o disponibilize novamente, eles não podem concluir o download.

Em vez disso, com os blocos sendo transferidos em uma ordem aleatória, como é o caso, cada uma dessas 10 pessoas tem um conjunto diferente de blocos, para que possam negociar entre si para concluir seus downloads sem precisar que eu fique por perto .

Melhor ainda, porque cada um deles tem um conjunto diferente de blocos, cada um deles pode fazer o download de todos dos outros para preencher as lacunas da cópia. Sua edição aludiu à idéia de começar de um ponto aleatório no arquivo e fazer o download contíguo a partir desse ponto, mas isso aumentaria a quantidade de sobreposição da cópia de um download para o próximo (se Alice começar no início do arquivo e Bob iniciar 10% para ele, então há 40% do arquivo que ambos possuem e apenas 10% exclusivos para cada um deles, que podem ser negociados sem que eu reconecte para disponibilizar o restante). O download em uma ordem aleatória maximiza a exclusividade do conjunto de bloqueios de cada download, maximizando assim a capacidade dos downloaders de começarem a operar entre si e maximizando as chances de eles montarem uma cópia completa se não houver sementes disponíveis.

Um único download contíguo pode (ou não, dependendo das condições) ser melhor para você , mas o download em ordem aleatória é melhor para a rede como um todo.

    
por 09.09.2011 / 13:14
30

A chave é que você está recebendo o arquivo de várias fontes (pares) ao mesmo tempo, em vez de uma única fonte.

Se você tiver um arquivo dividido em 10 partes e levar 100 segundos para fazer o download de um servidor, teoricamente, você pode obter o arquivo de 10 peers em 10 segundos (além de alguns overheads), pois cada par pode entregar sua parte em 10 segundos . Na prática, levará mais tempo, pois cada par não será perfeito, e você provavelmente atingirá seu limite de largura de banda (mas a ideia é sua).

Como você tem que remontar o arquivo, você não precisa buscar as peças em ordem. Então, se você tiver apenas 5 pares, cada um entregando 2 partes, estas podem ser partes aleatórias do arquivo.

    
por 04.09.2011 / 20:51
14

Deve-se dizer que isso depende inteiramente do arquivo em questão, da quantidade de pares e da velocidade da fonte que não é de bittorent.

Você nunca fará o download mais rápido do que a largura de banda máxima de download da sua conexão e, se estiver baixando de um local com largura de banda suficiente, será mais rápido do que usar o Bittorrent.

No entanto, à medida que as velocidades da Internet estão ficando cada vez mais rápidas, chegamos ao ponto em que os sites e hosts (menores) não conseguem acompanhá-los.

Por exemplo, quando eu estava olhando para os preços de colocation em Londres há alguns meses, eu estava cotado a preços absolutamente terríveis para uma conexão de 5Mb. Se eu tomasse isso, serviria bem à maioria das pessoas.

No entanto, na mesma linha, se eu fosse hospedar alguns arquivos de 500Mb, e todos tivessem linhas Cable (50Mb) ou ADSL2 + (24Mb) rápidas, você notaria que meu servidor não seria capaz de fornecer velocidade rápido para você ...

... no entanto, se eu fosse oferecer o mesmo arquivo pelo Bittorrent e houvesse 200 pessoas, cada uma dando apenas 30Kb / s, isso seria igual a 5.8Mb / s (e, muitas pessoas têm velocidade de upload muito mais rápida que que!) .... e agora, se eu tivesse que rodar o Bittorrent no meu servidor e oferecer o mesmo arquivo, isso significaria que há um total de 10.8Mb / s para download - muito mais do que eu poderia fornecer através de 5Mb / s s pipe sozinho.

Bittorrent é muito mais um jogo de números, você tem que ter pessoas suficientes fazendo o upload com largura de banda suficiente ... Por causa das etapas extras envolvidas, como verificação de integridade (e o fato de que você deve ser carregado) , é difícil para ele vencer downloads diretos de um bom site com largura de banda suficiente, mas, para muitos sites menores, são sites brilhantes ou ainda maiores que simplesmente querem economizar dinheiro com sua conta de banda larga.

    
por 04.09.2011 / 20:58
4

A maioria das respostas não parece responder à sua pergunta.

O BitTorrent não é mais rápido.

Na verdade, é mais lento devido à sobrecarga de se conectar a várias fontes.

A diferença real na prática, no entanto, é que você está baixando de várias fontes que podem somar para ser mais rápido do que o que um site pode oferecer. Muitos servidores da web estão sob cargas pesadas ou são limitados por velocidade para que você não os sugue.

O fato de que o BitTorrent transfere o arquivo em uma ordem aparentemente aleatória não afeta diretamente sua velocidade.

Em relação à sua edição, as peças não são aleatórias! Elas são priorizadas com base na raridade: uma peça rara precisa se tornar menos rara o mais rápido possível para que não seja perdida se De repente ele sai. Tem a ver com disponibilidade, não com velocidade.

    
por 09.09.2011 / 15:21
3

É um problema de disponibilidade. Se você tiver que fazer o download de forma contígua, depende das pessoas que hospedam mais arquivos do que você. Cada pessoa com menos arquivos que você, não poderá enviar nenhum dado.

Se os pedaços forem distribuídos aleatoriamente, o número de hosts dos quais você pode fazer o download será maior, portanto, você fará o download do arquivo mais rapidamente.

    
por 09.09.2011 / 09:20
1

Os torrents nem sempre são mais rápidos, mas quando são, um dos motivos é a entropia de rede. Uma conexão de qualquer duração (o download de um arquivo grande) pode degradar com o tempo, já que fatores aleatórios e incontroláveis afetam a transmissão de pacotes, como sobrecarga do roteador e outros problemas entre você e o servidor. Mais erros significam mais retransmissões de pacotes, e essa situação tende a piorar com o tempo. Os torrents fazem muitas conexões menores, através de muitos caminhos de roteamento, uma estratégia que pode, sob as circunstâncias certas, reduzir erros e pacotes perdidos ou danificados, e parece ser mais rápida, especialmente à medida que o número de sementes e pares aumenta.

    
por 05.09.2011 / 01:47
1

Digamos que você envie duas pessoas para o supermercado para pegar uma lista de itens. Você dá a eles exatamente a mesma lista. No entanto, um deles deve pegar os itens na ordem exata em que aparecem na lista. O outro pode pegar os itens em qualquer ordem que desejarem. Qual você acha que terminará primeiro?

    
por 05.09.2011 / 06:42