断点续传和多线程下载的实现原理
HTTP 协议的 GET 方法,支持只请求某个资源的某一部分;
206 Partial Content 部分内容响应;
Range 请求的资源范围;
Content-Range 响应的资源范围;
在连接断开重连时,客户端只请求该资源未下载的部分,而不是重新请求整个资
源,来实现断点续传。
分块请求资源实例:
Eg1: Range: bytes=306302- :请求这个资源从 306302 个字节到末尾的部分;
Eg2: Content-Range: bytes 306302-604047/604048:响应中指示携带的是该资源的第
306302-604047 的字节,该资源共 604048 个字节;
客户端通过并发的请求相同资源的不同片段,来实现对某个资源的并发分块下载。从而
达到快速下载的目的。目前流行的 FlashGet 和迅雷基本都是这个原理。
- 多线程下载的原理:
下载工具开启多个发出 HTTP 请求的线程; 每个 http 请求只请求资源文件的一部分: Content-Range: bytes 20000-40000/47000; 合并每个线程下载的文件。