HTTP实现断点续传的方式
2014-02-08 09:25
411 查看
以下是我请求一个pdf文件的请求报文与响应报文的头部信息。可以看到如何完成http请求一个pdf的完整的过程,整个pdf总共223,652 字节,由抓到的数据包可以分析出这个文件被服务器通过两个http响应完成。第一个请求请求了32KB,剩下的一个请求完成了剩下的190884Byte的文件。由于第一次GET请求并不知道请求的文件是多少,只有在第一个响应头部分析出这个文件是多大。并请求剩下的文件数据,而后浏览器对文件进行合并。
点击(此处)折叠或打开
GET /maindoc/Varnish_cache.pdf HTTP/1.1
Host: yaoweibin.cn
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Accept: */*
Referer: http://yaoweibin.cn/maindoc/Varnish_cache.pdf
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: __cfduid=d616785c680fd944ee413a8817667c3a51389705653453
Range: bytes=0-32767
以下是HTTP的响应报文。由响应报头可知,断点续传是通过Content-Range字段来完成的。HTTP的response header中的206表示传送的是一个大文件,并没有传送完,一个218KB的文件通过两个HTTP的响应来完成。也就是说整个文件是分块传输的。
点击(此处)折叠或打开
HTTP/1.1 206 Partial Content
Server: cloudflare-nginx
Date: Wed, 29 Jan 2014 01:36:21 GMT
Content-Type: application/pdf
Content-Length: 32768
Connection: keep-alive
Last-Modified: Mon, 29 Apr 2013 07:27:12 GMT
CF-Cache-Status: HIT
Vary: Accept-Encoding
Expires: Wed, 29 Jan 2014 05:36:21 GMT
Cache-Control: public, max-age=14400
Content-Range: bytes 0-32767/223652
CF-RAY: f4230e866050293
我们也可以通过curl命令模拟http请求完成断点续传文件,然后将生成的两个文件利用cat 命令合并生成下载的文件。
点击(此处)折叠或打开
curl --header "Range:
bytes=0-20000" yaoweibin.cn/maindoc/Varnish_cache.pdf -o part1
curl --header "Range: bytes=20001-223651" yaoweibin.cn/maindoc/Varnish_cache.pdf -o
part2
cat part1 part2 >> a.pdf
点击(此处)折叠或打开
GET /maindoc/Varnish_cache.pdf HTTP/1.1
Host: yaoweibin.cn
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Accept: */*
Referer: http://yaoweibin.cn/maindoc/Varnish_cache.pdf
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: __cfduid=d616785c680fd944ee413a8817667c3a51389705653453
Range: bytes=0-32767
以下是HTTP的响应报文。由响应报头可知,断点续传是通过Content-Range字段来完成的。HTTP的response header中的206表示传送的是一个大文件,并没有传送完,一个218KB的文件通过两个HTTP的响应来完成。也就是说整个文件是分块传输的。
点击(此处)折叠或打开
HTTP/1.1 206 Partial Content
Server: cloudflare-nginx
Date: Wed, 29 Jan 2014 01:36:21 GMT
Content-Type: application/pdf
Content-Length: 32768
Connection: keep-alive
Last-Modified: Mon, 29 Apr 2013 07:27:12 GMT
CF-Cache-Status: HIT
Vary: Accept-Encoding
Expires: Wed, 29 Jan 2014 05:36:21 GMT
Cache-Control: public, max-age=14400
Content-Range: bytes 0-32767/223652
CF-RAY: f4230e866050293
我们也可以通过curl命令模拟http请求完成断点续传文件,然后将生成的两个文件利用cat 命令合并生成下载的文件。
点击(此处)折叠或打开
curl --header "Range:
bytes=0-20000" yaoweibin.cn/maindoc/Varnish_cache.pdf -o part1
curl --header "Range: bytes=20001-223651" yaoweibin.cn/maindoc/Varnish_cache.pdf -o
part2
cat part1 part2 >> a.pdf
相关文章推荐
- 腾讯或将成首家网络银行 Q币十年发行超千亿!
- HTTP头相关的材料
- 【HTTP】之HTTP 错误 401.3 - 访问被资源 ACL 拒绝
- Android 网络通信框架Volley简介(Google IO 2013)
- 解决apache启动错误"httpd:Could not reliably determine..."
- virtualbox nat网络模式下 实现宿主机访问虚拟机
- 第四章 网络层 4.4网际控制报文协议ICMP
- Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask
- 对java的 cookie处理进行修正(附http的相关知识)
- 够快网盘支持与iOS-ASIHTTPRequest框架学习
- 什么是4G LTE?移动通信网络知识普及
- 黑马程序员——网络编程
- Java 网络爬虫获取网页源代码原理及实现
- http://babadum.com/play/?lang=7&game=5
- AF_PACKET套接字解密 http://write.blog.csdn.net/postedit
- HTTP错误 404.17
- VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT
- 【Url编码问题】命名空间“System.Web”中不存在类型或命名空间名称“HttpUtility”。是否缺少程序集引用?
- java判断网络连接是否正常
- IOS UIwebView 加载网络图片 使用相对地址