第 3 章 下载链路:并发下载、恢复与组装(重点)
对接收方来说,“更快”主要体现在两个地方:并发拉取多个分片以提升吞吐,以及在弱网/切网时能恢复而不用重来。 下载链路与上传链路在工程上是对称的。
3.1 下载对象与清单(Manifest)
- 客户端下载前 SHOULD 先获取 manifest,以获知 chunk 总数、顺序与对象定位方式。
- manifest MUST 能唯一定位每个 chunk(通过对象键规则或等价索引)。
3.2 并发下载(Parallel Download)
- 客户端 SHOULD 并发下载多个 chunk,以更接近带宽上限。
- 客户端 SHOULD 采用有限并发,并在错误率上升时降低并发。
- 并发对跨洲高 RTT 的收益通常更明显,因为单连接吞吐更容易被 RTT 与抖动限制。
3.3 断点恢复(Resumable Download)
- 客户端 MUST 能记录已完成 chunk 集合(例如 bitmap / index set)。
- 网络中断后,客户端 SHOULD 仅补齐缺失 chunk,而不是整文件重下。
- 若服务端有下载次数限制,客户端 SHOULD 在恢复时最小化重复下载以避免浪费次数。
3.4 组装(Reassembly)
- 客户端 MUST 按 chunkIndex 顺序组装输出文件。
- 客户端 SHOULD 使用流式写入/渐进式组装以降低内存峰值(尤其超大文件)。
- 若存在多文件打包,客户端 MAY 采用逐文件输出或容器格式(取决于产品设计)。
3.5 完整性校验(简版)
- 客户端下载后 SHOULD 对 chunk 做校验(例如 hash/长度一致性)。
- 校验失败 MUST 失败关闭,并重试对应 chunk。
- 加密与认证失败的处理边界详见《安全与隐私白皮书》相关章节。