为什么说BitTorrent更快,部分是因为它传输文件的随机部分而不是以连续/线性方式从头到尾传输它?
编辑:但为什么他们必须 '随机'?为什么不是一个更可预测的“半连续”转移,其中一个同伴给你上半部分,第二个同伴另一半?这理论上可以减少开销。
为什么说BitTorrent更快,部分是因为它传输文件的随机部分而不是以连续/线性方式从头到尾传输它?
编辑:但为什么他们必须 '随机'?为什么不是一个更可预测的“半连续”转移,其中一个同伴给你上半部分,第二个同伴另一半?这理论上可以减少开销。
Answers:
关于编辑询问为什么它们必须是随机的:假设种子被更改为仅下载下载器尚未具有的第一个块,从而保证连续传输。
然后我分享一个100MB的文件。在我离线之前,有10个人连接,每个人下载50MB。
然后这些人被搞砸了,因为他们都有文件的前半部分,而只有我有下半部分。在我再次使用之前,他们无法完成下载。
相反,如实际情况那样,随机顺序传输块,这10个人中的每一个都有不同的块集,因此他们可以相互交换以完成下载而无需我在身边。
但更好的是,因为每个块都有不同的块集,每个块都可以从所有块中下载其他人填补他们副本的空白。您的编辑暗示了从文件中的随机点开始并从该点连续下载的想法,但这会增加从一个下载程序的副本到下一个副本的重叠量(如果Alice从文件的开头开始并且Bob启动10%,然后有40%的文件,他们都有,只有10%独特的他们可以交易,没有我重新连接,以使其余的可用)。以随机顺序下载最大化每个下载程序所拥有的块的唯一性,从而最大化下载程序之间开始交易的能力,并最大化它们在没有种子可用时组装完整副本的可能性。
单个连续下载可能(或可能不会,取决于条件)对您更好,但是以随机顺序下载对于整个网络来说更好。
关键是您要同时从多个来源(对等方)获取文件,而不是从一个来源获取文件。
如果你有一个分成10个部分并从1个服务器下载需要100秒的文件,那么理论上你可以在10秒内从10个对等体中获取文件(加上一些开销),因为每个对等体可以在10秒内完成它的部分。在实践中,它需要更长的时间,因为每个同行都不会是完美的,你可能会达到你的带宽限制(但你明白了)。
因为你必须重新组装文件,所以你不必按顺序获取文件。因此,如果您只有5个对等体,每个对等体提供2个部分,则这些可以是文件的随机部分。
应该说这完全取决于所讨论的文件,同伴的数量和非bittorent源的速度。
您的下载速度永远不会超过连接的最大下载带宽,如果您从带宽足够的地方下载,它将比使用Bittorrent更快。
然而,随着互联网速度越来越快,我们已经到了(较小的)网站和主机无法跟上的程度。
例如,几个月前,当我在伦敦寻找托管价格时,我被引用了5Mb连接的绝对可怕的价格。如果我这样做,它将为大多数人服务。
但是,在同一条线路上,如果我要托管几个500Mb文件,并且每个人都有Cable(50Mb)或快速ADSL2 +(24Mb)线路,你会注意到我的服务器无法快速提供给你的速度...
...但是,如果我通过Bittorrent为您提供相同的文件,并且有200人,每个只提供30Kb / s,那将等于5.8Mb / s(而且,许多人的上传速度要快得多!) ....现在,如果我要在我的服务器上运行Bittorrent并提供相同的文件,则意味着总共可以下载10.8Mb / s - 远远超过我通过5Mb / s管道提供的数据我自己的。
Bittorrent是一个非常多的数字游戏,你必须有足够的人上传足够的带宽...由于涉及额外的步骤,如完整性检查(以及你应该上传的事实),它很难直接击败从一个有足够带宽的好网站下载,但是,对于许多较小的网站来说,它只是想要节省带宽费用的精彩甚至更大的网站。
假设您派两个人到杂货店拿起物品清单。你给他们每个完全相同的清单。但是,其中一个必须按照它们在列表中显示的确切顺序来选择项目。另一个可以按他们喜欢的顺序拿起物品。您认为哪个会先完成?