定义
Aria2是一款可在网络上下载文件的工具,属于命令行程序,不依赖图形界面运行[3]。它支持的协议包括HTTP、HTTPS、FTP、SFTP、BitTorrent以及Metalink[1]。与只支持单一来源顺序下载的同类工具相比,它能够同时使用多个地址、多个连接乃至多种协议完成同一个文件的传输[2]。
该程序以GNU通用公共许可证第二版发布,源代码公开,可编译运行于Linux、Windows、macOS等多种操作系统[3]。程序主体用C++写成,既可交互式在终端中调用,也可作为后台进程长期驻留,等待远程指令[1]。
原理
Aria2的核心是分片下载引擎。它把一个文件按固定长度划分为若干分片,再通过多个连接并行取回这些分片,最后拼接为完整文件[4]。分片下载在传输层之上展开,单次下载所用连接数由split参数决定;如果给出的地址数量少于连接数,程序会重复使用这些地址,直到同时建立的连接数达到设定值[4]。
为控制分片颗粒度,程序设有最小分片长度参数,默认取值为20M。当分片长度的两倍超过目标文件体积时,文件不会被继续切分,从而避免为过小文件建立多余连接[4]。此外还提供分片选择算法,可决定优先取回哪一段数据:按序取回靠近文件开头的分片适合边下边看,随机取回则分散负载[4]。
面对多个可用来源,Aria2通过URI选择算法决定向谁请求数据。可选策略包括按列表顺序尝试、依据历史测速结果挑选较快的镜像,以及在测试与保留连接之间动态调配的启发式方案;程序会记录各服务器的性能档案,用于后续选择[4]。
下载过程中,程序会在目标文件所在目录生成一个扩展名为.aria2的控制文件,记录已完成的部分;重新执行相同命令时,据其恢复未完成的传输,因此中断后无需从头开始[5]。
发展历程
Aria系列的前身Aria是带有图形界面的下载管理器,开发工作于2002年12月停止[6]。2006年2月16日,以aria2为名的文本界面控制台程序开始继续开发,作者为Tatsuhiro Tsujikawa[6]。同年8月,Aria2以0.7.1版本进入Debian的打包流程,当时已支持HTTP、HTTPS、FTP与BitTorrent协议,并具备断点续传和分片下载能力[7]。
其设计思路与旧的Aria完全不同,代码是从零重写的,核心即分片下载引擎,整体采用单线程模型,结构便于扩展[2]。Aria2与Metalink规范的结合使其能够借助分片校验和,在下载过程中自动校验数据,作用方式类似BitTorrent的分块校验[8]。
应用
Aria2常被用于批量获取网络文件、拉取镜像或做BitTorrent客户端。它可以把HTTP或FTP来源的数据同时上传到BitTorrent网络中,即一边从服务器下载、一边向其他节点分享[8]。Metalink文件与种子文件都可以直接作为输入,程序据此选择镜像或节点完成下载[4]。
开启RPC服务后,Aria2可以作为常驻后台程序运行,外部程序通过JSON-RPC或XML-RPC添加、暂停、删除任务,也可查询传输状态和全局速度[9]。JSON-RPC除HTTP传输外还支持WebSocket和基于HTTP GET的请求方式,XML-RPC则使用与之并行的接口,两种接口共用同一套选项[10]。正因如此,许多图形界面和网页管理面板把它当作下载内核,由其承担实际传输工作[9]。
程序还支持通过参数化地址一次性指定若干镜像,以及从文本文件批量读取任务清单并并发执行[4]。
局限
分片下载依赖服务器对范围请求的支持。若目标服务器不返回分片数据,或文件本身过小、低于最小分片长度的两倍,Aria2就无法切分,只能以单一连接顺序下载[4]。HTTP下载的分片选择策略也因此受限,需为最小分片长度设定合理取值才能奏效[4]。
该程序本身不提供图形界面,所有操作依靠命令行输入或外部RPC客户端完成,其功能边界止于传输环节[3]。Aria2也不会代为配置防火墙或路由器端口映射,涉及DHT、监听端口等需要外部可达的功能时,须由使用者自行处理网络环境[4]。
启用RPC服务时,官方文档提示应设置密钥令牌进行鉴权;早期基于用户名和密码的RPC选项已被标记为将在后续版本中废弃[9]。此外,若由浏览器或其他顺序下载工具发起的传输已经完成部分内容,Aria2需借助继续参数才能接续,且仅限于该次传输未被分段的情况[5]。
参见
参考资料
- aria2 [引用日期2026-10-14]
- net/aria2 - The NetBSD Packages Collection [引用日期2026-10-14]
- Aria2 — Википедия [引用日期2026-10-14]
- aria2c(1)¶ [引用日期2026-10-14]
- aria2c.1 [引用日期2026-10-14]
- Aria (Software) – Wikipedia [引用日期2026-10-14]
- bugreport [引用日期2026-10-14]
- aria2-1.36.0 [引用日期2026-10-14]
- aria2c.1.en [引用日期2026-10-14]
- aria2c.1.en [引用日期2026-10-14]