沈岩shenyan.blog.chinaunix.net

写给自己和别人的技术博客 shenyan_001@126.com

  • 博客访问: 1089853
  • 博文数量: 206
  • 博客积分: 464
  • 博客等级: 下士
  • 技术积分: 3646
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-24 18:25
  • 认证徽章:
个人简介

阿弥陀佛

文章分类

全部博文(206)

文章存档

2017年(5)

2016年(10)

2015年(9)

2014年(75)

2013年(93)

2012年(13)

2011年(1)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
http断点续传的秘密 2014-01-29 10:28:49

分类: 服务器与存储

以下是我请求一个pdf文件的请求报文与响应报文的头部信息。可以看到如何完成http请求一个pdf的完整的过程,整个pdf总共223,652 字节,由抓到的数据包可以分析出这个文件被服务器通过两个http响应完成。第一个请求请求了32KB,剩下的一个请求完成了剩下的190884Byte的文件。由于第一次GET请求并不知道请求的文件是多少,只有在第一个响应头部分析出这个文件是多大。并请求剩下的文件数据,而后浏览器对文件进行合并。

点击(此处)折叠或打开

  1. GET /maindoc/Varnish_cache.pdf HTTP/1.1
  2. Host: yaoweibin.cn
  3. Connection: keep-alive
  4. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
  5. Accept: */*
  6. Referer: http://yaoweibin.cn/maindoc/Varnish_cache.pdf
  7. Accept-Encoding: gzip,deflate,sdch
  8. Accept-Language: zh-CN,zh;q=0.8
  9. Cookie: __cfduid=d616785c680fd944ee413a8817667c3a51389705653453
  10. Range: bytes=0-32767

以下是HTTP的响应报文。由响应报头可知,断点续传是通过Content-Range字段来完成的。HTTP的response header中的206表示传送的是一个大文件,并没有传送完,一个218KB的文件通过两个HTTP的响应来完成。也就是说整个文件是分块传输的。

点击(此处)折叠或打开

  1. HTTP/1.1 206 Partial Content
  2. Server: cloudflare-nginx
  3. Date: Wed, 29 Jan 2014 01:36:21 GMT
  4. Content-Type: application/pdf
  5. Content-Length: 32768
  6. Connection: keep-alive
  7. Last-Modified: Mon, 29 Apr 2013 07:27:12 GMT
  8. CF-Cache-Status: HIT
  9. Vary: Accept-Encoding
  10. Expires: Wed, 29 Jan 2014 05:36:21 GMT
  11. Cache-Control: public, max-age=14400
  12. Content-Range: bytes 0-32767/223652
  13. CF-RAY: f4230e866050293
我们也可以通过curl命令模拟http请求完成断点续传文件,然后将生成的两个文件利用cat 命令合并生成下载的文件。

点击(此处)折叠或打开

  1. curl --header "Range: bytes=0-20000" yaoweibin.cn/maindoc/Varnish_cache.pdf -o part1

  2. curl --header "Range: bytes=20001-223651" yaoweibin.cn/maindoc/Varnish_cache.pdf -o part2

  3. cat part1 part2 >> a.pdf



阅读(16602) | 评论(2) | 转发(7) |
给主人留下些什么吧!~~

晓曈曈要加油2016-08-17 21:48:50

特意注册来问的~想请教一下如果想验证这个http请求得用什么方法呀?或者你是怎么验证的?
我试了一下telnet输入 
GET /maindoc/Varnish_cache.pdf HTTP/1.1
Host: yaoweibin.cn
只输入这两行
返回的是
400 Bad Request

很是让我困惑呀,希望得到解答~~~

hunanjun0002014-02-07 10:37:12

文明上网,理性发言...

评论热议
请登录后评论。

登录 注册