HTTP协议--断点续传

原创 2013年03月25日 15:41:56
要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段。

HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range和Content-Range字段,一个最简单的断点续传实现大概如下:
  1.客户端下载一个1024K的文件,已经下载了其中512K
  2. 网络中断,客户端请求续传,因此需要在HTTP头中申明本次需要续传的片段:
       Range:bytes=512000-
    这个头通知服务端从文件的512K位置开始传输文件
  3. 服务端收到断点续传请求,从文件的512K位置开始传输,并且在HTTP头中增加:
    Content-Range:bytes 512000-/1024000
    并且此时服务端返回的HTTP状态码应该是206,而不是200。

但是在实际场景中,会出现一种情况,即在终端发起续传请求时,URL对应的文件内容在服务端已经发生变化,此时续传的数据肯定是错误的。如何解决这个问题了?显然此时我们需要有一个标识文件唯一性的方法。在RFC2616中也有相应的定义,比如实现Last-Modified来标识文件的最后修改时间,这样即可判断出续传文件时是否已经发生过改动。同时RFC2616中还定义有一个ETag的头,可以使用ETag头来放置文件的唯一标识,比如文件的MD5值。

终端在发起续传请求时应该在HTTP头中申明If-Match 或者If-Modified-Since 字段,帮助服务端判别文件变化。

另外RFC2616中同时定义有一个If-Range头,终端如果在续传是使用If-Range。If-Range中的内容可以为最初收到的ETag头或者是Last-Modfied中的最后修改时候。服务端在收到续传请求时,通过If-Range中的内容进行校验,校验一致时返回206的续传回应,不一致时服务端则返回200回应,回应的内容为新的文件的全部数据。

HTTP 断点续传协议头部分析

所谓断点续传,也就是要从文件已经下载的地方开始继续下载。在以前版本的 HTTP 协议是不支持断点的,HTTP/1.1 开始就支持了。一般断点下载时才用到 Range 和 Content-Range 实...
  • wwj_748
  • wwj_748
  • 2014年02月25日 22:04
  • 3549

HTTP协议 断点续传

要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段。 HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range...
  • pastebin
  • pastebin
  • 2014年05月09日 20:35
  • 708

C#用HTTP协议实现多线程文件下载和断点续传

(1) 多线程文件下载的总体思路是:把一个下载任务分配给多个线程,首先获取文件的长度,平分给多个线程,每个线程负责指定的文件块,待全部线程完成后,再把各个线程下载的临时文件合并。...
  • q626779313
  • q626779313
  • 2014年05月18日 16:40
  • 2713

http协议多线程下载,支持断点续传(后续再完善)

#include #include #include #include #include #include #include #include #include #include /...
  • qq_35039122
  • qq_35039122
  • 2016年07月28日 00:09
  • 622

http下载原理/断点续传方法

HTTP 下载原理   对于 HTTP 协议,向服务器请求某个文件时,只要发送类似如下的请求即可:     GET /Path/FileName HTTP/1.0    Host:  ...
  • xd_ladan
  • xd_ladan
  • 2013年10月25日 15:53
  • 1228

HTTP断点续传与断点上传之 -- 文件流操作

不管是下载还是上传,断点的时候,就需要对文件流进行精确的操作。
  • wuyoujian0313
  • wuyoujian0313
  • 2016年07月07日 13:30
  • 4924

http断点续传原理:http头 Range、Content-Range

转载自:http://www.liqwei.com/network/protocol/2011/886.shtml 所谓断点续传,也就是要从文件已经下载的地方开始继续下载。在以前版本的 HT...
  • lv18092081172
  • lv18092081172
  • 2016年05月19日 22:04
  • 7002

Http 断点续传

先说说断点续传的原理:这是HTTP 1.1协议的一部分,并不需要客户端特意去做多么复杂的事情。以前我曾经看过一个单位的技术标书,其中有下载的断点续传这一要求,给出的offer居然还挺高的...   ...
  • zaq123q
  • zaq123q
  • 2013年09月03日 16:21
  • 1611

HTTP必知必会——断点续传原理

要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段。 HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range...
  • zhangliangzi
  • zhangliangzi
  • 2016年05月09日 00:28
  • 5865

HTTP断点续传(分块传输)

断点续传:指的是在上传/下载时,将任务(一个文件或压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传/下载,如果碰到网络故障,可以从已经上传/下载的部分开始继续上传/下载未完成的部分,而没有...
  • u011012932
  • u011012932
  • 2016年11月21日 14:19
  • 7480
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HTTP协议--断点续传
举报原因:
原因补充:

(最多只允许输入30个字)