HTTP协议——断点续传总结

Http协议Get与Post请求方式+响应码+断点续传+MVC架构 Get请求方式 Get主要用于文件下载 将下载文件的代码封装在线程中,通过Handler去实现功能,代码如下: public class DownloadThread extends Thread { String u; String path; Handler handler; public DownloadThread(Handler handler, St... 阅读详情

HTTP断点续传

HTTP 1.1 开始支持获取文件的部分内容,这为并行下载以及断点续传提供了技术支持。

他是通过Header里面的两个参数实现的。客户端发送请求是Range,服务端相应时对应的是Content-Range。

Range

用于请求头中,指定第一个字节的位置和最后一个字节的位置。

一般格式为

Range:[开始字节]-[结束字节]

例如

Range:0-10		请求0-10字节的内容
Range:10-		请求10字节之后的内容
Range:-100		请求倒数100个字节
  • 如果结束字节小于开始字节,则sever会忽略这个Range请求并回应一个200.
  • 如果结束字节大于文件长度,那么这个Range请求被认为是不能满足的,并回应一个416

详细示例

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 		表示第一个和最后一个字节 

Range: bytes=500-600,601-999 	同时指定几个范围

Content-Range

用在响应头中,在发出Range请求后,服务器会在Content-Range头部返回当前接受的范围和文件总大小。

Content-Range:[开始字节]-[结束字节]

例如请求下载整个文件

GET /test.rar HTTP/1.1 
Connection: close 
Host: 116.1.219.219 
Range: bytes=0-801   //一般请求下载整个文件是bytes=0- 或不用这个头

正常相应

HTTP/1.1 200 OK 
Content-Length: 801      
Content-Type: application/octet-stream 
Content-Range: bytes 0-800/801   //801:文件总大小

在相应完成后,返回的响应头内容也不同

HTTP/1.1 200 Ok(不使用断点续传方式) 
HTTP/1.1 206 Partial Content(使用断点续传方式)

资源变化

有时在下载一些资源时,偶尔暂停一会然后再继续下载,可能会出现又重头下载的情况。

这看起来是HTTP的范围请求失效了,但也可能是因为你请求的资源在请求的过程中发生了改变。

在从服务器下载某个资源时,我们要注意资源可能发变动。

在HTTP协议中我们可以通过Etag或者Last-Modified来标识资源是否发生变化。

  • ETag:当前文件的一个相关标记,用于标识文件的唯一性。
  • Last-Modified:标记当前文件最后被修改的时间。

在HTTP的范围请求内,可以使用这两个字段来区分分段请求的资源,是否有修改过,只需要在请求头中,将它放在IF-Range这个请求头中即可,If-Range使用ETag或者Last-Modified两个参数任意一个,原样填入即可。

Last-Modified

If-Modified-Since,和 Last-Modified 一样都是用于记录页面最后修改时间的 HTTP 头信息,只是 Last-Modified 是由服务器往客户端发送的 HTTP 头,而 If-Modified-Since 则是由客户端往服务器发送的头,可以看到,再次请求本地存在的 cache 页面时,客户端会通过 If-Modified-Since 头将先前服务器端发过来的 Last-Modified 最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的,如果不是最新的,则返回新的内容,如果是最新的,则返回 304 告诉客户端其本地 cache 的页面是最新的,于是客户端就可以直接从本地加载页面了 。

ETag

Etag 仅仅是一个和文件相关的标记,可以是一个版本标记,例如:“v1.0.0”;或者说像 “627-4d648041f6b80” 这样的一串编码。

在这里插入图片描述

这样一来,如果两次请求的资源文件没有发生改变就会返回206状态码,开始后续的操作。反之返回200状态码,表示文件发生改变,要从头下载。

小结

HTTP1.1协议定义了断点续传相关的HTTPRange和Content-Range字段。

一个简单的实现大概如下:

  1. 客户端下载一个1024K的文件,已经下载了其中512K

  2. 网络中断,客户端请求续传,因此需要在HTTP头中申明本次需要续传的片段: Range:bytes=512000- 这个头通知服务端从文件的512K位置开始传输文件

  3. 服务端收到断点续传请求,从文件的512K位置开始传输,并且在HTTP头中增加:Content-Range:bytes 512000-/1024000 并且此时服务端返回的HTTP状态码应该是206,而不是200。

参考
https://juejin.im/post/5b555f055188251af25700aa
https://www.iteye.com/blog/uule-2429222

python blp模型 估计_随机系数Logit模型及Stata实现 欢迎投稿(荐稿)计量经济圈,计量相关都行邮箱:econometrics666@sina.cn作者:北京交通大学经济管理学院博士生,王琦珀。欢迎你加入计量经济圈社群,一起探讨前沿计量理论和实证方法。一、随机系数Logit模型1.背景实证产业组织(Empirical Industrial Organization,EIO)是目前产业组织理论的前沿,其中又以Ariel Pakes为带头人,其近期工作论文... 阅读详情

相关推荐

极化码理论及算法研究4-巴氏参数、GA算法以及matlab仿真

目录 (如要找其他内容,欢迎访问我的主页寻找) #前言 #极化码概述 #极化码定义 #极化码编码 #极化码译码 #5G标准中极化码的编译码概述 #5G标准中极化码的编码 #5G标准中极化码的译码 #总结 极化码编码 ...

1万+

http协议简单了解

现在我们来看一下这个响应头的一个例子,还是只说明一些我们现在需要知道的,其他内容读者可以自己去查找相关的内容。 1 HTTP/1.1 200 OK 2 Server:(Unix) 3 Content-type:application/octet-stream 4 Content-length:65144369 5 Connection:Keep-Alive 在这个例子中的响应头我们可以看到:

拙作 566

腾讯云智后台开发实习面试全纪录(已offer)

腾讯云智后台开发实习面经

wenwenaier的博客 5903

HTTP断点续传(分块传输)

简述 断点续传:指的是在上传/下载时,将任务(一个文件或压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传/下载,如果碰到网络故障,可以从已经上传/下载的部分开始继续上传/下载未完成的部分,而没有必要从头开始上传/下载。可以节省时间,提高速度。 简述 断点续传的用途 Range Content-Range 增强...

weixin_33832340的博客 4904

EWF写保护功能详解:从安装到实战操作指南

本文详细介绍了EWF写保护功能的安装与实战操作指南。EWF(Enhanced Write Filter)通过重定向写入操作保护硬盘分区,特别适合需要长期稳定运行的系统场景。文章涵盖从安装准备、图形界面操作到命令行高级管理的全流程,并提供了常见问题的解决方案,帮助用户轻松掌握这一实用工具。

weixin_28710999的博客 446

Linux中断子系统分析之(四):驱动程序申请中断

中断子系统中有一个重要的设计机制,那就是Top-half和Bottom-half,将紧急的工作放置在Top-half中来处理,而将耗时的工作放置在Bottom-half中来处理。 如果中断不分上下半部处理,那么意味着只有等上一个中断完成处理后才会打开中断,下一个中断才能得到响应。当某个中断处理处理时间较长时,很有可能就会造成其他中断丢失而无法响应,影响系统性能。 中断分成上下半部处理可以提高中断的响应能力,在上半部处理完成后便将中断打开,这样就可以响应其他中断了,等到中断退出的时候再进行下半部的处理。为了进

m0_46525308的博客 1225

http请求和响应格式说明,http的get和post请求方式说明,http的请求体body的几种数据格式

http

учёба 9548

倍福--实现TCP/IP的配置

控制器为CX5120,需要和上位机做通信,选择TCP/IP的通讯方式,本文介绍TCP/IP通信的操作步骤。 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 1.2. 串口调试助手 3 1.2.1. TCP调试通信助手 3 授权文件 3 2.1 Lib文件 3 2.2. CAB文件 4 PLC程序编写 4 3.1. 引入TCP/IP库文件 4 3.2. Client端程序 5 3.2.1. 建立相关变量 5 3.3.2. 编写连接功能块

weixin_41883890的博客 5730

java http大文件断点续传上传解决方案

停止\。停止

Mr_Zang666的博客 230

Yocto开发讲解系列 - 总目录

Yocto开发讲解系列总纲Yocto开发专栏前言

fulinux的博客 3万+

从苏宁电器到卡巴斯基(第二部)第14篇:我在卡巴的日子 XIV

目录 WannaCry 我的感慨 邻里矛盾 WannaCry 如果大家对于科技互联网圈子的新闻比较感兴趣的话,相信会对2017年5月的“WannaCry勒索病毒”事件记忆犹新,因为这个病毒在当时的全世界范围内掀起了极大的波澜,众多的企事业单位深受其害,造成的金钱和数据损失难以估量,从某种意义上来说,它甚至引领了勒索病毒新一轮的爆发浪潮。而通过这样的一次爆发,也让我对于卡巴斯基的技术实力有了更进一步的了解。 我记得很清楚,爆发的那天是周六,没记错的话Seth那天有事,就请假没来,只有我自己在公司值

Gleam的专栏 4919

基于HTTP协议的断点续传

断点续传,顾名思义,继续上次传输中断处,继续传输。其原理很简单,就是在HTTP协议的请求上和一般的下载有所不同。 例如:浏览器请求服务器上的一个文时,所发出的请求如下: 假设服务器域名为 wwww.download.com,文件名为 down.zip的文件。 GET /down.zip HTTP/1.1 Accept: image/gif, image/x-xbitmap,

记录 1446

分级 API Key 的使用案例

分级 API Key 的使用案例 1. 背景介绍 1.1 问题由来 随着网络服务的普及,API(Application Programming Interface,应用程序编程接口)成为了连接不同系统和应用的关键桥梁。API Key(API密钥)

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 993

DownloaderTest | Http协议 | 断点续传 | Thread

[效果图][参考]Chunked编码http://www.21andy.com/blog/20071109/660.htmlHTTP 1.1协议和断点续传http://blog.sina.com.cn/s/blog_62d3985f0100n2iu.html浅谈Http协议http://zhkl0228.itpub.net/post/16467/127848

stefzeus的专栏 3553

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

断点续传的实现:基于HTTP协议的范围请求

🤍 前端开发工程师、技术日更博主、已过CET6🍨、23年度博客之星前端领域TOP1🕠高级专题作者、打造专栏🍚签约作者、上架课程💬 前些天发现了一个巨牛的,通俗易懂,风趣幽默,忍不住分享一下给大家。。

你若盛开,清风自来 1341

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

http协议对断点续传的支持

http协议从1.1开始支持获取文件的部分内容,这为并行下载以及断点续传提供了技术支持。 它通过在Header里两个参数实现的,客户端发请求时对应的是Range,服务器端响应时对应的是Content-Range; 具体的和Rang有关的http头部信息解释可以参考:https://blog.youkuaiyun.com/thewindkee/article/details/80189434; 1、对于静态资源...

miaoyibo12的博客 2126

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

HTTP协议如何支持断点续传?

断点续传,就像我们下载一个大文件,如果网络不好或者其他原因导致下载中断,我们不需要从头开始下载,而是可以从上次中断的地方继续下载。

长风破浪会有时的博客 576

http协议下如何实现大文件的断点续传?

要求:免费,开源,技术支持功能:大文件上传下载,断点续传,文件夹上传下载,加密传输,加密存储,云对象存储前端:vue2,vue3,vue.js,vue-cli,react,html,jquery后端:asp.net,vb.net,.net core,.net mvc,.net webform平台:Windows,macOS,Linux,Ubuntu,RedHat,CentOS,中标麒麟,银河麒麟,统信UOS,信创国产化。

weixin_52050572的博客 1072

HTTP协议 断点续传

要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段。 HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range和Content-Range字段,一个最简单的断点续传实现大概如下:    1.客户端下载一个1024K的文件,已经下载了其中512K    2. 网络中断,客户端请求续传,因此需要在HTTP头中

1989

利用http协议实现断点续传

呵呵,文章标题写了大约半个月,到现在才写内容,因工作时间比较忙,敬请原谅。对于http协议作如下说明http是一个面向事务的客户服务器协议。http协议本身是无连接。每次请求完成后,就会片断开连接,下次请求时,再重新建立连接。对于断点续传的实现是在发送请求时,设计要下载的文件的起始位置为上次下载的到的位置即可。实现比较简单。对于类似flashget的多线程多连接断点续传,原理是

技术之路 1739

利用HTTP协议实现文件下载的多线程断点续传

      最近研究了一下关于文件下载的相关内容,觉得还是写些东西记下来比较好。起初只是想研究研究,但后来发现写个可重用性比较高的模块还是很有必要的,我想这也是大多数开发人员的习惯吧。      对于HTTP协议,向服务器请求某个文件时,只要发送类似如下的请求即可:       GET /Path/FileName HTTP/1.0 Ho

★卢培培★ ── 欢迎光临卢培培(goodname008)的BLOG 1万+

Http协议+文件上传、下载、断点续传

Http协议+文件上传、下载、断点续传Http协议Http:超文本传输协议。请求协议 request:响应协议 response:get和post的区别:文件下载文件上传1.设置请求头信息:2.请求体:2部分断点续传设置请求头:随机访问流:handler进度条更新网络七层7种请求方式:常见的响应码 Http协议 Http:超文本传输协议。 请求协议 request: 1、请求首行 (请求方式+网...

Asu_yu的博客 1523

Http协议网关分类、断点续传和内容协商

目录 一、长连接和短连接 长连接和短连接的使用环境区分 二、HTTP代理服务 三、HTTP网关的分类 1、HTTP/*:服务器端Web网关 2、HTTP/HTTPS:服务器端安全网关 3、HTTPS/HTTP客户端安全加速器网关 4、资源网关 (1)CGI (2)服务器扩展API 四、HTTP断点续传和多线程下载 1、HTTP 断点续传示例 增强校验 2、多线程下载示例...

swadian2008的博客 1093

HTTP协议下,Vue项目如何实现大文件断点续传?

要求:免费,开源,技术支持技术:百度webuploader,分块,切片,断点续传,秒传,MD5验证,纯JS实现,支持第三方软件集成前端:vue2,vue3,vue-cli,html5,webuploader后端:asp.net,.net mvc,.net core,asp,jsp,java,springboot,php,数据库:MySQL,Oracle,SQL Server,达梦,人大金仓,国产数据库。

alisky119的博客 1086

带你深度解析断点续传原理并案例Http1.1协议

一步一步带你起飞 ... ... 一、文件存储单位“字节”概念 1.1 存储单位 计算机是以字节(byte|B)为单位计算存储空间大小,如:1个数字和1个字母占用1个字节大小,而1个汉字是2个字节大小,常用单位有:KB\MB\GB\TB,再往上还有PB\EB\ZB\YB\BB。 对换关系,如下...

chunjin3779的博客 2539

C#实现http协议下载的断点续传

我们寄希望于万能的解决方案,但是现实的情况总是很糟糕。在软件编程的世界中,技术分散的情况尤为严重,且不说各种语言拥有的优势不能融合,单就一 门语言而言,就拥有众多的技术和相关技术需要学习。网络编程就是这种情况,tcp、udp、http和soap相关的协议(ftp不会玩),我们不得不在 同一个应用中使用不同难以整合的技术。tcp讲究精准,udp讲究性能,http对于穿越外网有这天然的优势,...

dengdie3499的博客 283
上一篇: 不美好的总会过去,然后慢慢忘记。
下一篇: HTTP协议——缓存机制总结
PdKingLiu
博客等级 码龄9年 89粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值