Aria2

关注
义项:命令行下载工具
Aria2

Aria2是自由软件社区开发的一款轻量级、跨平台的命令行下载工具,支持HTTP、HTTPS、FTP、SFTP、BitTorrent与Metalink等多种传输协议[1]。它以分片下载引擎为核心,可从多个地址或多个连接获取同一文件,提高带宽利用率[2]。该程序采用C++编写,遵循GNU通用公共许可证第二版,并通过内置的JSON-RPC与XML-RPC接口实现远程控制[3]。

百科 图文
目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

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]。

参见

  • Metalink —— 一种描述文件多个来源与分片校验信息的元数据格式,Aria2 可据此选择镜像并校验数据。

  • BitTorrent —— 分布式文件分享协议,Aria2 内置对种子与磁力链接的支持。

  • JSON-RPC —— 一种基于 JSON 的远程调用协议,Aria2 通过它对外提供控制接口。

  • XML-RPC —— 另一种远程调用协议,与 JSON-RPC 并列供客户端调用 Aria2。

  • DHT —— 分布式哈希表,用于在无中心节点的情况下发现 BitTorrent 同伴。

  • wget —— 另一款命令行下载工具,仅支持顺序单源下载,常与 Aria2 对照使用。

参考资料

  1. aria2 [引用日期2026-10-14]
  2. net/aria2 - The NetBSD Packages Collection [引用日期2026-10-14]
  3. Aria2 — Википедия [引用日期2026-10-14]
  4. aria2c(1)¶ [引用日期2026-10-14]
  5. aria2c.1 [引用日期2026-10-14]
  6. Aria (Software) – Wikipedia [引用日期2026-10-14]
  7. bugreport [引用日期2026-10-14]
  8. aria2-1.36.0 [引用日期2026-10-14]
  9. aria2c.1.en [引用日期2026-10-14]
  10. aria2c.1.en [引用日期2026-10-14]
词条评价
词条统计

浏览次数:3 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-13T21:59:57Z

历史版本

本条目引用的词条
Metalink BitTorrent JSON-RPC XML-RPC DHT wget