AI 模型下载中断后,如何确认续传成功且文件完整
大文件中断后,如何确认续传和文件完整?核对 Range、响应范围、文件长度与哈希,并区分客户端、代理链路和源站因素,再用同一文件复现一次。
续传和完整是两件事,必须分开验证。用可控中断制造断点,核对 Range 请求与 206 响应,再用文件长度和哈希确认最终结果。经代理 IP 下载时,连接中断可能来自客户端、代理链路或源站,需结合请求与响应记录判断。测试使用公开测试文件和自有环境,不对目标站点发起超出正常范围的请求。
怎样才算续传成功、文件完整?
续传能力和文件完整性要分别验收:
- 续传成功:恢复后从断点字节继续,没有从头重下。
- 文件完整:最终大小等于服务端声明长度,且哈希与官方发布值一致。
从断点继续并收到匹配的部分响应,才说明这次续传按预期恢复;长度和可信哈希通过,才说明文件完整。二者分别验证,续传成功本身不能证明代理是否造成中断。
怎么安全地模拟下载中断?
选择可信且提供校验值的公开文件,在下载到约三至五成时主动中断。断开代理或本机网络可观察客户端错误及恢复请求;代理侧重置可对照代理与客户端记录。若要测持久化恢复,应按客户端支持的方式停止并重启进程,核对落盘偏移、资源标识和 Range 请求;暂停同一进程不能代表重启后的状态。
续传请求和服务器响应要核对什么?
恢复下载后,看客户端发出的请求头:
- 应带
Range: bytes=N-; - 响应应为
206 Partial Content; - 响应头应带
Content-Range: bytes N-M/T,起点等于 N,T 是文件总长。
如果恢复请求返回 200,或 Content-Range 从 0 开始,可能表示服务端未按范围返回内容,或客户端改为从头下载。结合请求头、响应头和客户端日志确认实际行为。ETag 或 Last-Modified 变化只说明资源可能已更新:若客户端使用 If-Range,服务端可能改回完整 200;客户端是否重启下载取决于具体实现,要从日志确认,避免把不同版本的内容拼接到一起。
相同 Range 起点可能来自客户端重试,需结合时间、响应状态和重试日志判断。跨地区文件传输的对照方法可参考SaaS 文件上传如何测试?检查跨地区网络下的续传与文件完整性。
怎么确认下载文件没有缺失或损坏?
下载完成后,先核对文件长度,再将哈希与可信的官方 manifest 或发布值比对:
```bash
macOS / Linux
shasum -a 256 model.bin
sha256sum model.bin
Windows PowerShell
Get-FileHash -Algorithm SHA256 .\model.bin
```
预期值必须来自独立可信的来源,比如官方 manifest、发布页或签名文件;拿不到可信哈希时,大小一致只能证明长度,不能证明内容完整,结论要相应降级。
分片应按顺序合并后再校验;若响应经过压缩,传输字节数可能不同于落盘大小。哈希不符时先确认校验对象、资源版本、内容编码和合并顺序。有可信分块校验及可靠重取机制时可重取坏块,否则重新下载完整文件。哈希不符本身不能证明是代理造成。
下载中断是代理、源站还是客户端造成的?
同样的“下载失败”,三种原因的处理方式完全不同。
- 现象:连接被重置、无响应 | 更可能的原因:代理链路中断 | 需要的证据:客户端错误类型、代理日志
- 现象:429 或 503 并带 Retry-After | 更可能的原因:源站限流 | 需要的证据:响应头、失败时间分布
- 现象:多条 Range 起点相同的请求 | 更可能的原因:客户端重试逻辑 | 需要的证据:请求日志、重试次数
连接层错误、限流响应和重复的 Range 请求分别提供不同线索,但都不能单独确定故障来源。对照客户端日志、服务端响应和不同出口下的重复测试,再判断问题更可能出在哪一段。不同出口的结果差异可作为线索,仍需排除时间和源站状态变化。
如果确认是地区链路或依赖不可用,可参考某地区依赖服务不可用时,如何验证 SaaS 产品的降级与恢复?。
复测时要记录哪些信息?
复测时只记录能复现这次恢复过程的字段:
- 字段:断点字节 N | 本次取值示例:
104857600 - 字段:恢复请求头 | 本次取值示例:
Range: bytes=104857600- - 字段:状态码 | 本次取值示例:
206 - 字段:Content-Range | 本次取值示例:
bytes 104857600-524287999/524288000 - 字段:ETag 与 Last-Modified | 本次取值示例:
"a1b2c3",与中断前一致 - 字段:重试次数 | 本次取值示例:
0 - 字段:最终大小与哈希 | 本次取值示例:
524288000,与 manifest 一致
资源标识用于确认中断前后是否为同一版本;若 ETag 或 Last-Modified 变化,结合 If-Range、状态码和客户端日志判断是否应重新下载。
HTTP Semantics(RFC 9110)定义了 Range 请求与部分响应的通用语义;客户端是否持久化断点及如何恢复,应以对应客户端文档为准。
FAQ
Q:服务端不支持 Range 请求还能续传吗?
A:通常不能按字节范围续传;需确认客户端是否会从头重下或采用服务端提供的分片机制。
Q:文件哈希与预期值不一致,能否只重试缺失部分?
A:先确认校验对象、资源版本及是否有可信分块校验和可靠重取机制。有则定位并重取坏块;没有则重新下载完整文件并对照可信发布值验哈希。
Q:测试文件可以使用真实模型文件吗?
A:优先用可控的测试文件,避免重复下载造成费用、存储或许可方面的问题。
