首页 > 其他分享 >http下载原理

http下载原理

时间:2024-02-22 22:55:56浏览次数:22  
标签:http 字节 image bytes Range 服务器 原理 下载

下载如何实现的断点续传

1.假设服务器域名为www.test/down.zip,文件名为down.zip。

2.请求报文

get /down.zip http/ 1.1
accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-
excel, application/msword, application/vnd.ms-powerpoint, */*
accept-language: zh-cn
accept-encoding: gzip, deflate
user-agent: mozilla/ 4.0  (compatible; msie  5.01 ; windows nt  5.0 )
connection: keep-alive

3.服务器收到请求后,按要求寻找请求的文件,提取文件的信息,然后返回给浏览器,返回信息如下:

content-length= 106786028
accept-ranges=bytes
date=mon,  30  apr  2001  12 : 56 : 11  gmt
etag=w/ "02ca57e173c11:95b"
content-type=application/octet-stream
server=microsoft-iis/ 5.0
last-modified=mon,  30  apr  2001  12 : 56 : 11  gmt

4.下载过程中出现网络中断

  • 当用户希望恢复下载时,客户端向服务器发送带有 Range 头部的 HTTP 请求。
  • Range 头部指定了客户端希望从哪个字节开始继续下载。通常格式为 "Range: bytes=start-end",其中 start 表示起始字节位置,end 表示结束字节位置。如果 end 未指定,表示从 start 到文件末尾的所有内容。
  • 例如,Range 头部可以是 "Range: bytes=5000-",表示从文件的第 5001 个字节(从 0 开始计数)开始继续下载。
get /down.zip http/ 1.0
user-agent: netfox
range: bytes= 5000 -
accept: text/html, image/gif, image/jpeg, *; q=. 2 , */*; q=. 2

5.服务器处理断点续传请求:

  • 服务器收到带有 Range 头部的请求后,会根据 Range 头部指定的范围,只返回该范围内的文件内容。
  • 服务器响应的状态码通常为 206 Partial Content,表示服务器成功处理了部分 GET 请求。
  • 服务器返回的响应中包含实际返回的文件内容以及其他相关信息。
HTTP/1.1 206 Partial Content
Date: Mon, 22 Feb 2024 12:00:00 GMT
Server: Apache
Last-Modified: Sun, 21 Feb 2024 12:00:00 GMT
Content-Length: 10000
Content-Range: bytes 5000-14999/20000
Content-Type: application/octet-stream

[文件内容,从第5001个字节到第15000个字节]

 

6.客户端继续下载

  • 客户端接收到服务器的响应后,将继续从断点处开始接收文件内容,并将其写入本地文件。
  • 客户端会持续接收直到文件下载完成或者再次中断。

注针对浏览器默认实现了现在的断点续传,下载带上了range 分段获取 ,如果使用java代码或者c++下载要实现此功能就要按照http协议按照以上流程实现

标签:http,字节,image,bytes,Range,服务器,原理,下载
From: https://www.cnblogs.com/LQBlog/p/18028388

相关文章

  • 简单了解HTTP、Websocket和Netty
    前言伴随着网络的快速发展,网络通讯越来越重要,通讯的快捷、安全、方便影响着用户的体验。本文将探讨这些技术的原理、特点以及在实际应用中的应用场景。1.HTTTP(超文本传输协议)HTTP是一种传输超文本的协议,它是现代互联网通信的基础。其特点包括:简单性:HTTP使用简单的请求-响应模......
  • 腾讯云Gradle镜像源——解决下载Gradle文件慢问题
    1.进入到自己工程目录下的wrapper文件夹。2.编辑gradle-wrapper文件使用mirrors.cloud.tencent.com/gradle来代替原来的services.gradle.org/distributions如:distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-6.7.1-all.zip其它源:华为云源:https://mirro......
  • C# 采用HttpWebRequest 、WebClient和HttpClient下载https的文件异常问题
    今天有个客户反应,程序下载文件失败,无法正常使用。远程客户电脑后,查看错误日志,都是提示https:****************************.dll等一系列文件的下载错误提示提示基础连接已经关闭:发送时发生错误。在网上找了很多方案都没有能解决,大多都是https链接时增加指定协议,很遗憾未能解......
  • 3、ES基础http命令
    创建索引curl-XPUThttp://localhost:9200/shopping创建索引使用-X参数指定PUT请求,ES7.x后默认创建索引是1个分片数PUT请求是幂等性的,如果重复创建,会报错Linux中用curl命令操作ES需指定用户名密码(本文省略),具体样例如下:curl-uname:passwod-XPUThttp://localhost:9......
  • Scopus-快速下载学者全部文献至Endnote
    scopus网址(中文):https://www.scopus.com/search/form.uri?display=authorLookup#authorscopus网址(英文):https://blog.scopus.com/进入作者主页,下拉找到【全部导出】.ris格式导入Endnote即可特别感谢:快速下载一个学者所有文章-淼淼兮予怀 -博客园 https://www.cnbl......
  • burp 下载(永远获取最新的破解版)
    https://github.com/h3110w0r1d-y/BurpLoaderKeygen这里下载最新的破解机(官方github指向)破解机提供官方链接(最上面一行字),从官方下载到最新的burp.jar。然后你就可以永远获取最新的破解版了。就是这么简单。......
  • 在k8S中,镜像下载策略有哪些?
    在Kubernetes(k8S)中,镜像下载策略主要体现在imagePullPolicy这个字段上,它控制了Pod中容器镜像的拉取行为。以下是三种不同的imagePullPolicy策略:Always:当imagePullPolicy设置为Always时,每次创建新Pod或重启Pod中的容器时,Kubernetes都会尝试从指定的regist......
  • Centos7 下载|安装|配置|卸载 Docker
    Centos7下载|安装|配置|卸载DockerDocker官网:http://www.docker.comDockerHub仓库官网:https://hub.docker.com/一.环境要求1.CentOSDocker支持以下版本CentOS7(64-bit)CentOS6.5(64-bit)或更高的版本2.前提条件CentOS仅发行版本中的内核支持Docker......
  • Python下载安装教程
    1.下载地址官方下载地址:https://www.python.org/downloads/国内镜像地址:https://mirrors.huaweicloud.com/python/,win选择好版本后,不论是Intel还是AMD处理器,都下载amd64.exe版本的安装包;2.安装双击执行.exe文件,勾选添加环境变量选择安装目录:3.检测cmd输入python命令,出现......
  • (自用笔记)Word Embedding原理和Pytorch实现
    参考:(1)从WordEmbedding到Bert模型—自然语言处理中的预训练技术发展史-知乎(zhihu.com)(2)吴恩达深度学习(3)deep_thoughts老师的原理和代码讲解:https://space.bilibili.com/373596439越是底层的特征越是所有不论什么领域的图像都会具备的比如边角线弧线等底层基础特征,越往上......