我们要求所有下载请求都具有有效登录(非http),并且我们为每次下载生成交易票据。如果您要访问其中一个下载链接并尝试“重播”该交易,我们会使用HTTP代码转发您以获取新的交易单。这适用于大多数用户。但是,有一小部分人正在使用下载加速器,它只是尝试多次重放交易票据。
因此,为了确定我们是否希望<甚至 支持下载加速器,我们正试图了解它们的工作原理。
如何与提供静态文件的Web服务器建立第二个,第三个甚至第四个并发连接,以加快下载过程的速度?
加速器程序有什么作用?
答案 0 :(得分:14)
您可以在wikipedia获得有关下载加速器的更全面的概述。
托管/加速下载的一个重要好处是有问题的工具会记住传输的启动/停止偏移,并使用“部分”和“范围”标头来请求文件的部分而不是全部。
这意味着如果某些事情在事务中死亡(即:TCP超时),它只是重新连接到它停止的地方而你不必从头开始。
因此,如果您有间歇性连接,则聚合传输时间会大大减少。
下载加速器就像使用相同的起始范围停止机制将单个传输分成几个相同大小的较小段,并且并行执行它们,这大大改善了慢速网络的传输时间。
有一个叫做带宽延迟产品的烦人的事情,其中任何一端的TCP缓冲区的大小与ping时间一起做一些数学事情以获得实际经历的速度,这在实践中意味着大的ping时间将限制你的速度无论所有临时连接有多少兆比特/秒。
但是,此限制似乎是“每个连接”,因此与单个服务器的多个TCP连接可以帮助缓解高延迟ping时间的性能损失。
因此,住在附近的人不太可能需要进行分段转移,但居住在远方地区的人更有可能因为他们的分割而疯狂。
在某些情况下,可以找到提供相同资源的多个服务器,有时单个DNS地址循环到多个IP地址,或者服务器是某种镜像网络的一部分。下载管理器/加速器可以检测到这一点,并在多个服务器上应用分段传输技术,允许下载器获得更多的集体带宽。
支持第一种加速是我个人建议的“最小”支持。大多数情况下,因为它使用户的生活变得简单,并且由于用户不必重复获取相同的内容,因此减少了必须提供的聚合数据传输量。
为了方便这一点,它建议你,计算他们已经转移了多少,并且在它们看起来“完成”之前不会使票证到期(同时将流量绑定到使用票证的第一个IP),或者给定的'合理的'下载的时间已经过去了。即:在要求获得新票之前给他们一个宽限之窗。
支持第二个和第三个给你奖励积分,用户通常希望它至少在第二个,主要是因为国际客户不喜欢仅仅因为更长的ping时间被视为二等客户,并且它没有在任何重要的意义上客观地消耗更多的带宽。发生的最糟糕情况是,它们可能会导致您的总吞吐量不受服务运营的影响。
合理地直接提供第一种类型的好处,而不仅仅通过限制单张票证的并发传输次数来允许第二种类型。
答案 1 :(得分:1)
我认为这个想法是许多服务器限制或均匀分配连接的带宽。通过拥有多个连接,您就会欺骗该系统并获得超过“合理”的带宽份额。
答案 2 :(得分:1)
关于Little's Law的全部内容。具体来说,每个到Web服务器的流都会看到一定量的TCP延迟,因此只会携带如此多的数据。增加TCP窗口大小和实现选择性ack等技巧有所帮助,但实施起来很差,并且通常会导致比他们解决的问题更多的问题。
拥有多个流意味着每个流所看到的延迟不太重要,因为全球吞吐量总体上会增加。
即使使用单个线程,下载加速器的另一个关键优势是它通常比使用内置下载工具的Web浏览器更好。例如,如果Web浏览器决定死亡,则下载工具将继续。下载工具可能支持内置浏览器不会暂停/恢复等功能。
答案 3 :(得分:1)
我的理解是下载加速器使用的一种方法是打开许多并行TCP连接 - 每个TCP连接只能这么快,并且通常在服务器端受限。
实施TCP,以便在发生超时时增加超时时间。这在防止网络过载方面非常有效,但代价是单个TCP连接的速度。
下载加速器可以解决这个问题,方法是打开几十个TCP连接,然后放慢速度低于某个阈值的连接,然后打开新连接以替换慢速连接。
虽然对单个用户有效,但我认为这是一般的坏礼节。
您看到下载加速器尝试使用相同的交易单重新进行身份验证 - 我建议忽略这些请求。
答案 4 :(得分:0)
引用: 加速下载的最常见方式是打开parllel下载。许多服务器限制一个连接的带宽,因此并行打开更多会增加速率。这可以通过指定下载应该开始的偏移来实现,这对于HTTP和FTP都是支持的。
当然,这种加速方式非常“非社会”。实现带宽的限制以便能够服务更多数量的客户端,因此使用该技术降低了能够下载的最大对等体数量。这就是为什么许多服务器限制并行连接的数量(由IP识别)的原因,例如,许多FTP服务器执行此操作,因此如果您下载文件并尝试使用浏览器继续浏览,则会遇到问题。从技术上讲,这是两个并行的连接。
另一种提高下载速率的技术是点对点网络,其中不同的源,例如由上载端的异步DSL限制用于下载。
答案 5 :(得分:0)
大多数下载'加速器'确实根本没有加速任何东西。他们擅长做的是拥塞网络流量,锤击您的服务器,以及打破您所见过的自定义脚本。基本上它是如何工作的,不是发出一个请求并从头到尾下载文件,而是说四个请求......第一个从0-25%下载,第二个从25-50%下载,依此类推,它使它们同时出现。这有助于解决问题的唯一特殊情况是,他们的ISP或防火墙是否会进行某种流量整形,以使单个下载速度限制为低于其总下载速度。
就个人而言,如果它给您带来任何麻烦,我会说只是发出通知,说明不支持下载加速器,并让用户正常下载它们,或者仅使用单个线程。
答案 6 :(得分:0)
他们通常没有。
要回答问题的实质内容,假设服务器是基于每个连接的速率限制下载,因此同时下载多个块将使用户能够充分利用其末端可用的带宽。