为什么分发文件的随机部分比连续传输更快?

Mat*_*haq 17 performance bittorrent file-transfer

为什么说 BitTorrent 速度更快,部分原因是它传输文件的随机片段,而不是以连续/线性方式从头到尾传输文件?


编辑:但为什么它们必须是“随机的”?为什么不采用更可预测的“半连续”传输,其中一个对等体给你前半部分,第二个对等体给你另一半?这在理论上会减少开销。

Chr*_*isF 30

关键是您同时从多个来源(对等方)而不是从一个来源获取文件。

如果您有一个文件被分成 10 个部分并且需要 100 秒才能从 1 个服务器下载,那么理论上您可以在 10 秒内从 10 个对等方(加上一些开销)获取文件,因为每个对等方可以在 10 秒内交付它的一部分。实际上,由于每个对等点都不是完美的,因此需要更长的时间,并且您可能会达到带宽限制(但您明白了)。

由于无论如何您都必须重新组装文件,因此您不必按顺序获取碎片。因此,如果您只有 5 个对等点,每个对等点提供 2 个部分,则这些可以是文件的随机部分。

  • “如果6个人可以在6分钟内挖6个洞,那么10个人挖10个洞需要多长时间?” (5认同)
  • @martin 取决于孔的大小(块大小)和可用设备(带宽):) (4认同)

Wil*_*sum 14

应该说,这完全取决于所涉及的文件、对等点的数量和非bittorent 源的速度。

你的下载速度永远不会超过你的连接的最大下载带宽,如果你从一个有足够带宽的地方下载,它会比使用 Bittorrent 更快。

然而,随着互联网速度越来越快,我们已经到了(较小的)网站和主机无法跟上的地步。

例如,几个月前,当我环顾伦敦的托管价格上涨时,我被报价为 5Mb 连接的绝对可怕的价格。如果我接受这个,它将很好地为大多数人服务。

但是,在同一条线上,如果我要托管几个 500Mb 的文件,并且每个人都有 Cable (50Mb) 或快速 ADSL2+ (24Mb) 线路,您会注意到我的服务器无法为您提供那么快的速度...

...但是,如果我通过 Bittorrent 向您提供相同的文件,并且有 200 人,每个人仅提供 30Kb/s,则等于 5.8Mb/s(而且,许多人的上传速度比这快得多!) .... 现在,如果我要在我的服务器上运行 Bittorrent 并提供相同的文件,则意味着总共有 10.8Mb/s 的可下载速度 - 远远超过我通过 5Mb/s 管道提供的我自己的。

Bittorrent 在很大程度上是一个数字游戏,你必须有足够多的人以足够的带宽上传......由于涉及额外的步骤,例如完整性检查(以及你应该上传回来的事实),它很难直接击败从一个具有足够带宽的好站点下载,但是,对于许多较小的站点来说 - 这是一个很棒的站点,甚至是更大的站点,他们只是想从带宽账单中省钱。


Dav*_*man 6

关于询问为什么它们必须是随机的编辑:假设种子已更改为仅下载下载器尚未拥有的第一个块,从而保证连续传输。

然后我共享一个 100MB 的文件。在我离线之前,有 10 个人连接,每个人下载 50MB。

然后这些人就被搞砸了,因为他们都有文件的前半部分,而只有我有后半部分。在我再次提供它之前,他们无法完成下载。

取而代之的是,在实际情况下以随机顺序传输块,这 10 个人中的每个人都有一组不同的块,因此他们可以相互交易以完成下载,而​​无需我在场。

不过,更好的是,因为它们每个都有一组不同的块,每个块都可以从所有其他人来填补他们副本中的空白。您的编辑提到从文件中的一个随机点开始并从该点连续下载的想法,但这会增加从一个下载者的副本到下一个的重叠量(如果 Alice 从文件的开头开始,而 Bob 开始10%,那么他们都有 40% 的文件,只有 10% 是他们每个人独有的,他们可以交易而无需我重新连接以提供其余文件)。以随机顺序下载可以最大限度地提高每个下载者持有的块集的唯一性,从而最大限度地提高下载者之间开始交易的能力,并最大限度地提高他们在没有种子可用的情况下组装完整副本的可能性。

单个连续下载可能(也可能不,取决于条件)对更好,但以随机顺序下载对整个网络更好。