FDM 断点续传原理与过期链接处理
为什么断点续传重要
下载大文件时(系统镜像、游戏安装包、4K 视频),"下载到 90% 断网"是每个下载者的噩梦。没有断点续传意味着从零开始——之前的 90% 都白跑了。
FDM 的断点续传功能确保你只下载上次没下完的那部分,不管是网络中断、程序崩溃、电脑重启、还是屏幕睡了唤醒。
工作原理
断点续传依赖两件事:
服务端支持 Range 请求——和分段加速用的是同一个 HTTP 机制。服务器需要能响应 Range: bytes=X-Y 这种请求头,返回 206 Partial Content。绝大多数现代服务器都支持,但少数老服务器或配置简陋的不支持。
客户端保存下载进度——FDM 每下载完一段,就把已下载的字节偏移量写入一个临时文件。下次打开 FDM 时读取这个文件,知道已经下了多少,从哪里接着下。
FDM 的临时文件机制
当你开始下载一个 URL 时,FDM 不会直接创建目标文件,而是:
- 在目标文件旁边创建一个
.fjd临时文件(和目标文件同目录,文件名多了.fjd后缀) .fjd文件里实际保存着已经下载的全部数据(每个分段对应一段字节)- 所有分段完成后,把
.fjd重命名为目标文件名(去掉.fjd后缀)
这个机制的好处是:任何时候你看到的 .fjd 文件就是已下载的完整内容。如果 FDM 崩溃了但 .fjd 文件还在,下次启动 FDM 会自动识别并接着下载。如果你手动删了 .fjd 文件,那这个下载任务就彻底重置了。
网络中断的自动恢复
FDM 对下载过程中的网络中断有三层自动恢复:
第一层:分段内连接重试——某一段的 TCP 连接断开时,FDM 会立刻重连同一个服务器,从该段的断点继续。重试次数默认 3 次,可以在偏好设置里调整(下载列表 → 失败时自动重试次数)。
第二层:服务器切换——如果主服务器多次重试都失败,FDM 会尝试你添加的镜像源(如果你手动配置了多个下载地址),从镜像源接着下载剩余部分。
第三层:下载任务挂起——如果所有镜像源全部重试失败,FDM 把任务标记为「暂停(出错)」状态,等你手动恢复。恢复时它会再次尝试所有源,同时检查原来的主服务器链接是否过期。
链接过期的处理(重点)
很多资源服务器(特别是网盘、直链分享服务)的链接有时效性——比如阿里云盘的直链有效期 1 小时,百度网盘的直链有时限制每天次数。如果下载开始后超过了有效期怎么办?
FDM 的默认行为是:链接过期后自动暂停任务,等待你手动更新下载地址。更新方法:
- 右键点击任务 → 「属性」
- 在「下载地址」栏里粘贴最新的、有效的 URL
- 确定 → 恢复任务
FDM 会用新的 URL 向服务器请求 Range: bytes=已下载偏移量-,服务器如果认可这个新链接,就会从断点续传。
如果新链接指向的文件和旧链接不是同一个(比如文件被分享者更新了、内容变了),FDM 会检测到文件大小或 ETag 不一致,提示你是否放弃续传、重新开始下载。这时候建议放弃续传、重下,因为续传一个内容变了的文件会导致文件损坏。
服务器不支持续传怎么办
少数服务器(比如一些老的静态文件服务器、配置了奇怪的 CDN 规则)不支持 Range 请求。遇到这种情况:
- FDM 会在下载开始时检测——如果服务器返回 200 OK(全量响应)而不是 206 Partial Content,说明不支持续传
- FDM 会在任务属性里标记「此服务器不支持断点续传」
- 一旦中断,这个任务必须从头开始
遇到这种情况的解决办法:
- 找同一文件的其他下载源(用搜索引擎搜文件名 + "下载")
- 换成支持 Range 的服务器(大多数 CDN 都支持,问题多半在源站)
- 用 FDM 的「镜像源」功能同时添加多个下载地址,提高成功率
实战:一个断点续传的完整例子
时间线:
T0 开始下载 5 GB 的 Ubuntu 镜像,8 段同时跑
T1 下载 2.3 GB 后家里路由器断电
T2 路由器恢复,FDM 检测到之前的任务
T3 FDM 读取 .fjd 文件,确认已下载 2.3 GB
T4 重新向服务器发送 Range 请求:bytes=2469606195-
T5 服务器返回 206,从 2.3 GB 位置继续下载剩余的 2.7 GB
T6 剩余部分全部完成,.fjd 重命名为 ubuntu-24.04-desktop-amd64.iso
整个过程不需要任何人工干预——这就是 FDM 断点续传的标准流程。
常见问题
我关闭 FDM 后下次打开任务还在吗?
在。只要 .fjd 文件没被手动删除,FDM 下次启动会自动扫描并恢复所有未完成的任务。
为什么续传速度比第一次下载慢?
可能原因:
- 服务器对 Range 请求的限速和全量请求不一样(某些服务器对断点续传的连接做了更严格的限速)
- 你的网络环境变化了(比如断网后重连,IP 变了,服务器重新建立连接)
- 服务器对每个 IP 的并发连接数有限制,续传时需要重新协商
能跨电脑续传吗(把 .fjd 文件带到另一台电脑上)?
理论上可以——把 FDM 配置文件夹里的下载历史和对应的 .fjd 文件一起拷到新电脑,FDM 能识别并接着下。但跨电脑续传需要新电脑能访问同一个下载 URL,且 URL 没过期。实际场景里几乎没人这么用,但原理上可行。
断点续传是下载可靠性的基础,和分段加速一起构成 FDM 下载引擎的两根支柱。继续看 添加下载任务 了解如何把 URL 送进下载引擎。