多连接下载为什么快:把文件切块同时拉
单连接慢在哪
浏览器下载通常对同一个文件只开一条连接。速度快慢完全取决于这条连接链路上的限速:服务器繁忙、链路拥塞、单线程限速策略,任何一环都会卡住整体速度。
多连接怎么解决
aria2 的思路是把一个文件按字节范围切成若干段,每段各开一条连接同时拉,最后在本地拼回完整文件。这样:
- 单条连接被限速时,其他连接不受影响;
- 空闲的带宽被充分利用;
- 多条连接还可能被调度到不同的镜像服务器上。
官方手册把这个机制描述为"从多个源、以多协议下载同一文件,尽力吃满你的下载带宽"。
三个参数控制切法
| 参数 | 作用 | 默认值 |
|---|---|---|
-s(--split) | 一个文件最多切几段(几条连接) | 5 |
-k(--min-split-size) | 每段最小尺寸,小于 2 倍该值就不再切 | 20M |
-x(--max-connection-per-server) | 对同一台服务器最多开几条连接 | 1 |
三者是联动的:-s 给了切分的名额,-k 决定文件够不够大、值不值得切,-x 限制同一台服务器上的实际连接数。想要明显提速,三个都要调,常见组合是 -x16 -s16 -k1M。
多源是另一层加速
除了对单服务器多开连接,aria2 还允许把同一文件在不同服务器上的镜像地址一次性喂给命令,HTTP 与 FTP 源可以混用,下载器会在多个源之间并行取数据,甚至与 BitTorrent 下载同时进行。这部分见多源下载。
一点边界说明
- 服务器如果不支持 HTTP Range 分段请求,多连接就无从发挥,速度提升有限。
- 有些服务器会限制单 IP 连接数,开太多连接可能被服务器掐掉,遇到时把
-x调小即可。 - BitTorrent 的并行来自多个 peer 互传,与这里的分段机制不同,但两者可以叠加——下载种子内容的同时也能从 HTTP/FTP 源补数据。