断点续传指的是下载传输文件可以中断,之后重新下载时可以接着中断的地方开始下载,而不必从头开始下载。断点续传需要客户端和服务端都支持。
原理是客户端一块一块的请求数据,最后将下载回来的数据块拼接成完整的数据。
1.客户端
发送http请求时发送请求头Rnge:bytes=x-x 表示需要请求的范围。
2.服务器端
返回http码206。(非断点传续返回200)
返回头有如下:
Accept-Ranges:bytes--表示服务器端支持断点续传
ETag--标识服务器的下载资源有没有改变(随资源内容一起变化)若改变了,说明资源内容已改变,客户端则应从头开始下载,而不是从中断处接着下载。
Last-Modified--也是标识服务器端资源最后一次改变的时间。
Content-Ranges:bytes x-x--返回的范围。