HTTP 断点续传原理
一、Hp 断点续传原理
现在基本上任何一个下载工具都是支持断点续传的,抛开 P2P 的成分不谈,我们
单说通过 HTTP 服务器是如何实现断点续传的。关键在于你向 HTTP 服务器发起文件请
求的时候,是否明确的告知,要下载文件的哪个区域,我们都知道 HTTP 请求是有一个
Header 的,实际上里面有个属性是定义下载的区域的,这个属性就是 Range,它接收
的值是一个区间范围,比如:Range:bytes=0-10000
这样我们就可以按照一定的规则,将一个大文件拆分为若干很小的部分,然后分
批次的下载,每个小块下载完成之后,都合并到文件中,这样即时中间中断了下载,
我们重新开始下载的时候,也可以通过文件的字节长度来判断下载的起始点,然后重
启断点续传的过程,直到最后完成下载过程。
1、 下面是非断点续传的 Hp 剖析
假设我们通过浏览器去下载一个
称为 hello.zip 的文件。那么浏览器发出的请求信息如下:
GET /hello.zip HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-excel, application/msword, application/vnd.ms-
powerpoint
Accept-Language: zh-cn
Accept-Encoding: gzip, de&ate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Connection: Keep-Alive
服务器收到请求后,按要求寻找请求的文件,提取文件的信息,然后返回给浏览
器,返回信息如下:
200
Content-Length=106786028
Accept-Ranges=bytes
Date=Mon, 30 Apr 2009 12:56:11 GMT
ETag=W/"02ca57e173c12:95b"
Content-Type=application/octet-stream
Last-Modi@ed=Mon, 30 Apr 2009 12:56:11 GMT
2、下面是断点续传的 http 剖析
如果自己编的一个客户端程序来传递请求信息给 Web 服务器,要求从 1000070 字
节开始。
GET /hello.zip HTTP/1.0