17 votes

Pourquoi la distribution de morceaux aléatoires d'un fichier est-elle plus rapide qu'un transfert contigu ?

Pourquoi dit-on que BitTorrent est plus rapide, en partie, parce qu'il transfère des morceaux aléatoires d'un fichier au lieu de le transférer du début à la fin de manière contiguë/linéaire ?


EDIT : Mais pourquoi tienen pour être "aléatoire" ? Pourquoi ne pas opter pour un transfert "semi-contigu" plus prévisible, dans lequel un pair vous donne la première moitié, et le second pair l'autre moitié ? Cela permettrait théoriquement de réduire les frais généraux.

30voto

alastairs Points 3045

La clé est que vous obtenez le fichier de plusieurs sources (pairs) en même temps plutôt que d'une seule source.

Si vous avez un fichier divisé en 10 parties et que le téléchargement à partir d'un serveur prend 100 secondes, vous pouvez théoriquement obtenir le fichier de 10 pairs en 10 secondes (plus quelques frais généraux), car chaque pair peut livrer sa partie en 10 secondes. En pratique, cela prendra plus de temps car chaque pair ne sera pas parfait et vous atteindrez probablement la limite de votre bande passante (mais vous avez compris l'idée).

Comme vous devez de toute façon réassembler le fichier, vous n'avez pas besoin d'aller chercher les pièces dans l'ordre. Ainsi, si vous n'avez que 5 pairs délivrant chacun 2 parties, celles-ci peuvent être des parties aléatoires du fichier.

14voto

Matías Points 3008

Il faut dire que cela dépend entièrement du fichier en question, du nombre de pairs et de la vitesse de la source non bittorent.

Vous ne téléchargerez jamais plus vite que la bande passante maximale de votre connexion. Si vous téléchargez à partir d'un endroit où la bande passante est suffisante, le téléchargement sera plus rapide qu'avec Bittorrent.

Toutefois, comme les vitesses de l'internet sont de plus en plus rapides, nous arrivons à un point où les (petits) sites web et les hôtes ne peuvent pas suivre.

Par exemple, lorsque je me suis renseigné sur les prix de la colocation à Londres il y a quelques mois, on m'a proposé des prix absolument terribles pour une connexion de 5Mb. Si je devais prendre cela, cela servirait à la majorité des gens.

Toutefois, dans le même ordre d'idées, si j'hébergeais quelques fichiers de 500 Mo, et que tout le monde disposait de lignes câblées (50 Mo) ou de lignes ADSL2+ rapides (24 Mo), vous remarqueriez que mon serveur ne serait pas en mesure de vous servir une vitesse aussi élevée...

... cependant, si je vous offrais le même fichier via Bittorrent et qu'il y avait 200 personnes, chacune donnant seulement 30Kb/s, cela équivaudrait à 5,8Mb/s (et, beaucoup de personnes ont une vitesse de téléchargement beaucoup plus rapide que cela !).... et maintenant, si je devais exécuter Bittorrent sur mon serveur et offrir le même fichier, cela signifierait qu'il y a un total de 10,8Mb/s téléchargeable - beaucoup plus que ce que je pourrais fournir par ce tuyau de 5Mb/s tout seul.

Bittorrent est un jeu de chiffres, il faut qu'il y ait suffisamment de personnes qui téléchargent avec une bande passante suffisante... En raison des étapes supplémentaires impliquées telles que la vérification de l'intégrité (et le fait que vous devrait ), il est difficile de battre le téléchargement direct à partir d'un bon site disposant d'une bande passante suffisante, mais pour de nombreux petits sites, c'est génial ou même pour des sites plus importants qui veulent simplement économiser de l'argent sur leur facture de bande passante.

6voto

Dave Sherohman Points 5293

Concernant l'édition demandant pourquoi ils doivent être aléatoires : Disons que les torrents ont été modifiés pour ne télécharger que le premier bloc que le téléchargeur n'a pas déjà, garantissant ainsi un transfert contigu.

Je partage ensuite un fichier de 100 Mo. Dix personnes se connectent et chacune télécharge 50 Mo avant que je ne me déconnecte.

Ces personnes sont alors fichues, car elles ont toutes la première moitié du fichier, alors que je suis le seul à avoir la seconde moitié. Jusqu'à ce que je la rende à nouveau disponible, ils ne peuvent pas terminer le téléchargement.

Au lieu de cela, si les blocs sont transférés dans un ordre aléatoire, comme c'est le cas en réalité, chacune de ces dix personnes dispose d'un ensemble différent de blocs, de sorte qu'elles peuvent échanger entre elles afin de terminer leurs téléchargements sans avoir besoin de moi.

Mieux encore, comme chacun d'entre eux possède un jeu de blocs différent, chacun d'entre eux peut télécharger à partir de tous des autres pour combler les lacunes de leur copie. Votre édition faisait allusion à l'idée de commencer à partir d'un point aléatoire du fichier et de télécharger de façon contiguë à partir de ce point, mais cela augmenterait la quantité de chevauchement de la copie d'un téléchargeur à l'autre (si Alice commence au début du fichier et Bob commence à 10%, alors il y a 40% du fichier qu'ils ont tous les deux et seulement 10% unique à chacun d'eux qu'ils peuvent échanger sans que je me reconnecte pour rendre le reste disponible). Le fait de télécharger dans un ordre aléatoire maximise le caractère unique de l'ensemble des blocs détenus par chaque téléchargeur, ce qui maximise la capacité des téléchargeurs à commencer à échanger entre eux et maximise les chances qu'il leur soit possible d'assembler une copie complète si aucune graine n'est disponible.

Un seul téléchargement contigu peut (ou non, selon les conditions) être plus efficace pour vous mais le téléchargement dans un ordre aléatoire est meilleur pour le réseau dans son ensemble.

4voto

J. P. Krause Points 11

La plupart des réponses ne semblent pas répondre à votre question.

BitTorrent n'est pas plus rapide.

En fait, c'est plus lent à cause des frais de connexion à de multiples sources.

La vraie différence dans la pratique, c'est que vous téléchargez à partir de nombreuses sources qui peuvent peuvent s'additionner pour être plus rapide que ce qu'un site web pourrait vous donner. De nombreux serveurs web sont soumis à de fortes charges ou sont limités en vitesse pour que vous ne les asséchiez pas.

Le fait que BitTorrent transfère le fichier dans un ordre apparemment aléatoire n'a aucune incidence directe sur sa vitesse.

En ce qui concerne votre montage, le Les pièces ne sont pas aléatoires ! Ils sont classés par ordre de priorité en fonction de leur rareté : une pièce rare doit devenir moins rare le plus rapidement possible afin de ne pas être perdue si la source qui la détient venait à disparaître. C'est une question de disponibilité, pas de rapidité.

3voto

Skyler Points 244

C'est un problème de disponibilité. Si vous devez télécharger par contiguïté, vous dépendez des personnes qui hébergent une plus grande partie du fichier que vous. Toute personne disposant d'une plus petite partie du fichier que vous ne sera pas en mesure de vous envoyer des données.

Si les morceaux sont distribués de manière aléatoire, le nombre d'hôtes à partir desquels vous pouvez télécharger sera plus élevé, ce qui vous permettra de télécharger le fichier plus rapidement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X