18

我们要求所有下载请求都必须具有有效的登录名(非 http),并且我们会为每次下载生成交易票据。如果您要访问其中一个下载链接并尝试“重播”交易,我们会使用 HTTP 代码转发您以获取新的交易票。这适用于大多数用户。然而,有一小部分正在使用下载加速器,它们只是尝试多次重播交易票。

因此,为了确定我们是否想要甚至可以支持下载加速器,我们试图了解它们是如何工作的。

与提供静态文件的 Web 服务器建立第二个、第三个甚至第四个并发连接如何加快下载过程?

加速器程序有什么作用?

4

7 回答 7

19

您将在wikipedia上获得有关下载加速器的更全面的概述。

加速是多方面的

第一的

托管/加速下载的一个实质性好处是相关工具会记住传输的开始/停止偏移量,并使用“部分”和“范围”标头来请求文件的部分而不是全部。

这意味着如果某些东西在事务中死掉(即:TCP Time-out),它只会重新连接它停止的地方,而您不必从头开始。

因此,如果您有断断续续的连接,则总传输时间会大大减少。

第二

下载加速器喜欢使用相同的开始-范围-停止机制将单个传输分成几个大小相等的较小段,并并行执行它们,这大大缩短了慢速网络上的传输时间。

有一个烦人的东西叫做带宽延迟产品,其中两端的 TCP 缓冲区的大小与 ping 时间一起做一些数学运算,以获得实际体验的速度,这实际上意味着大的 ping 时间会限制你的速度,不管如何所有临时连接都有许多兆比特/秒。

但是,此限制似乎是“每个连接”,因此到单个服务器的多个 TCP 连接可以帮助减轻高延迟 ping 时间对性能的影响。

因此,住在附近的人不太可能需要进行分段转移,但住在远方的人更有可能从疯狂的分段中受益。

第三

在某些情况下,可能会找到提供相同资源的多个服务器,有时单个 DNS 地址循环到多个 IP 地址,或者服务器是某种镜像网络的一部分。下载管理器/加速器可以检测到这一点,并在多个服务器上应用分段传输技术,从而允许下载器获得更多的集体带宽。

支持

支持第一种加速是我个人建议的“最低”支持。主要是因为它使用户的生活变得轻松,并且由于用户不必重复获取相同的内容,它减少了您必须提供的聚合数据传输量。

为了促进这一点,它建议您计算他们已经转移了多少并且在他们看起来“完成”之前不要使票过期(同时将流量绑定到使用票的第一个 IP),或者给定的“合理”时间下载它已经过去了。即:在要求他们获得新票之前给他们一个宽限期。

支持第二和第三给你加分,而且用户普遍希望至少第二,主要是因为国际客户不喜欢仅仅因为更长的ping时间而被视为二等客户,并且客观上并没有消耗更多任何重要的带宽。最糟糕的情况是它们可能会导致您的总吞吐量不适合您的服务运行方式。

简单地通过限制单张票的并发传输数量来提供第一种好处而不允许第二种好处是相当直截了当的。

于 2008-09-18T15:43:51.407 回答
1

我相信这个想法是许多服务器限制或平均分配跨连接的带宽。通过拥有多个连接,您正在欺骗该系统并获得超过“公平”带宽份额。

于 2008-09-18T15:39:59.260 回答
1

这都是关于利特尔定律的。具体来说,到 Web 服务器的每个流都会看到一定量的 TCP 延迟,因此只会携带这么多的数据。增加 TCP 窗口大小和实施选择性确认等技巧会有所帮助,但实施效果不佳,通常会导致比解决方案更多的问题。

拥有多个流意味着随着全局吞吐量整体增加,每个流看到的延迟不太重要。

即使使用单线程,下载加速器的另一个关键优势是它通常比使用内置下载工具的 Web 浏览器要好。例如,如果网络浏览器决定死掉,下载工具将继续运行。并且下载工具可能支持内置浏览器不支持的暂停/恢复等功能。

于 2008-09-18T15:40:17.670 回答
1

我的理解是,下载加速器使用的一种方法是打开许多并行 TCP 连接——每个 TCP 连接只能走这么快,并且通常在服务器端受到限制。

TCP 是这样实现的,如果发生超时,超时时间会增加。这在防止网络过载方面非常有效,但代价是单个 TCP 连接的速度。

下载加速器可以通过打开数十个 TCP 连接并将速度慢的连接降低到某个阈值以下,然后打开新连接来替换慢速连接来解决这个问题。

虽然对单个用户有效,但我认为这通常是不好的礼仪。

您看到下载加速器尝试使用相同的交易票重新进行身份验证 - 我建议忽略这些请求。

于 2008-09-18T16:26:12.193 回答
0

来自:http ://askville.amazon.com/download-accelerator-protocol-work-advantages-benefits-application-area-scope-plz-suggest-URLs/AnswerViewer.do?requestId=9337813

Quote: 加速下载最常见的方式是打开并行下载。许多服务器限制了一个连接的带宽,因此并行打开更多连接会提高速率。这通过指定一个下载应该开始的偏移量来工作,该偏移量支持 HTTP 和 FTP。

当然,这种加速方式是相当“不合群”的。实施带宽的限制是为了能够为更多的客户端提供服务,因此使用这种技术会降低能够下载的对等点的最大数量。这就是为什么许多服务器限制并行连接数量(由 IP 识别)的原因,例如,许多 FTP 服务器会这样做,因此如果您下载文件并尝试使用浏览器继续浏览,就会遇到问题。从技术上讲,这是两个并行连接。

另一种提高下载速率的技术是点对点网络,其中使用不同来源(例如受上传端的异步 DSL 限制)进行下载。

于 2008-09-18T15:39:59.213 回答
0

大多数下载“加速器”实际上根本没有加速任何东西。他们擅长做的是拥塞网络流量,重击您的服务器,并破坏您所看到的自定义脚本。基本上它的工作原理是,它不是发出一个请求并从头到尾下载文件,而是发出四个请求……第一个从 0-25% 下载,第二个从 25-50% 下载,依此类推,它使它们同时发生。唯一有帮助的特殊情况是,如果他们的 ISP 或防火墙进行某种流量整形,使得单个下载速度被限制为低于其总下载速度。

就个人而言,如果它给您带来任何麻烦,我会说只是通知不支持下载加速器,并让用户正常下载它们,或者只使用单线程。

于 2008-09-18T15:40:41.850 回答
0

他们一般不会。

为了回答您的问题的实质,假设服务器对每个连接的下载进行速率限制,因此同时下载多个块将使用户能够充分利用其端的可用带宽。

于 2008-09-18T15:41:58.820 回答