断点续传原理

1. 原理

利用了HTTP协议(http://www.ietf.org/rfc/rfc2616.txt)中的如下字段来和服务器端交互,就可以实现文件下载的断点续传:

Range : 用于客户端到服务器端的请求,可通过该字段指定下载文件的某一段大小,及其单位。典型的格式如:
Range: bytes=0-499 下载第0-499字节范围的内容
Range: bytes=500-999  下载第500-999字节范围的内容
Range: bytes=-500  下载最后500字节的内容
Range: bytes=500-  下载从第500字节开始到文件结束部分的内容(这是最常用的一种格式)
Range: bytes=0-0,-1  下载第一以及最后一个字节的内容(这个看上去有点变态...)
 
Accept-Ranges : 用于服务器端到客户端的应答,客户端通过该字段可以判断服务器是否支持断点续传(注意RFC中注	
	明了这一部分并不是必须的)。格式如下:
Accept-Ranges: bytes  表示支持以bytes为单位进行传输。
Accept-Ranges: none  表示不支持

Content-Ranges : 用于服务器端到客户端的应答,与Accept-Ranges在同一个报文内,通过该字段指定了返回的文件资	源的字节范围。格式如下:
Content-Ranges: bytes 0-499/1234  大小为1234的文件的第0-499字节范围的内容
Content-Ranges: bytes 734-1233/1234  大小为1234字节的文件的第734-结尾范围的内容

2. 例子

  请求报文:
GET /down.zip HTTP/1.0  
User-Agent: NetFox   
RANGE: bytes=2000070-   
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2   

    响应报文: 206表示server端传输了请求的部分内容。
206  
Content-Length=106786028  
Content-Range=bytes 2000070-106786027/106786028  
Date=Mon, 30 Apr 2001 12:55:20 GMT   
ETag=W/"02ca57e173c11:95b"  
Content-Type=application/octet-stream   
Server=Microsoft-IIS/5.0  
Last-Modified=Mon, 30 Apr 2001 12:55:20 GMT
posted @ 2017-07-20 20:04  Desneo  阅读(346)  评论(0编辑  收藏  举报