当前位置: 首页 > backend >正文

HTTP0.9/1.0/1.1/2.0

 

 

HTTP0.9中,只有GET方法,没有请求头headers,没有状态码,只能用于传输HTML文件。

 

到了HTTP1.0(1996),HTTP1.0传输请求头,有状态码,并且新增了POST和HEAD方法。

HTTP1.0中,使用短连接,当服务器返回数据之后,就会断开连接,每次发送请求,都要重新建立连接(三次握手)然后传输数据,然后再断开连接。如果一个HTML文件中有多个CSS JS等文件的请求,就会建立多个连接。串行请求。

 

到了HTTP1.1(1997年),HTTP1.1默认开启长连接。每次一个请求处理完成后连接不会直接断开,一次通信中,可以发送多个请求,没有不断建立和断开连接的开销。它允许浏览器端不必等待上一个请求响应,就可以发送下一个请求。但是服务器端必须按顺序响应并返回。

服务器发送响应时,可以不等整个响应完毕再返回,可以返回小的响应块,这可能会加快初始页面的呈现速度。

HTTP1.1还增加了cache-control缓存机制,ETag、If-Modified-Since。

但HTTP1.1存在队头阻塞的问题,如果一个请求的响应需要很久,后续的响应就必须等待上一个响应返回才能处理。

 

HTTP2(2015)引入了二进制帧,多路复用,首部压缩和服务器推送。

二进制帧:HTTP2采用二进制传输数据,而非文本格式,更加高效。

将请求和响应数据分割为更小的帧,并且它们采用二进制编码。每个数据流都以消息的形式发送,而消息又由一个或多个帧组成。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装,这也是多路复用同时发送数据的实现条件。

多路复用:允许一个TCP连接中,同时发送多个请求和多个响应。响应不用按照顺序一一对应。避免了队头堵塞。

首部压缩/头部压缩:建立头部索引表,将传输过的头部存入表中,下次传输时,如果表中有这个头部,就传输索引号,否则传输请求头。

服务器推送:服务器向客户端建立连接。一般请求都是客户端向服务器发起,但有了服务器推送,服务器端可以告知客户端还有信息要传输,客户端不关闭连接,而是待机等待。

 

http://www.xdnf.cn/news/18006.html

相关文章:

  • 免费照片压缩网站
  • Android原生(Kotlin)与Flutter混合开发 - 设备控制与状态同步解决方案
  • Visual Studio Code 基础设置指南
  • C++ 特殊类设计与单例模式解析
  • 云计算-K8s 实战:Pod、安全上下文、HPA 、CRD、网络策略、亲和性等功能配置实操指南
  • 天地图开发的优点
  • Leaflet赋能:WebGIS视角下的省域区县天气可视化实战攻略
  • PostgreSQL——用户管理
  • Dify 从入门到精通(第 38/100 篇):Dify 的实时协作功能
  • PIDGen!DecodeProdKey函数分析之四个断点
  • 优雅草星云物联网项目私有化定制技术解析:RS485接口与工业通讯协议-优雅草卓伊凡
  • 原码表示法、反码表示法、移码表示法、补码表示法
  • C语言基础:(十五)深入理解指针(5)
  • 牛 CDR3 单抗:抗病毒领域的 “纳米级精准导弹”
  • 类与类加载器
  • 8.16打卡 DAY43 复习日
  • 【遥感图像技术系列】遥感图像风格迁移的研究进展一览
  • Mybatis-3自己实现MyBatis底层机制
  • 【leetcode】13. 罗马数字转整数
  • python学习DAY43打卡
  • MySQL 的 DDL / DML / DQL / DCL 做一次系统梳理:概念区别→常用语法→特点与注意点→实战小例子→常见面试/坑点速记
  • redis的key过期删除策略和内存淘汰机制
  • JavaWeb开发_Day14
  • Python虚拟环境与包管理工具(uv、Conda)
  • 发文暴论!线性注意力is all you need!
  • 【LeetCode每日一题】
  • Python---异常链(Exception Chaining)
  • sharding-jdbc读写分离配置
  • Spring——关于Bean以及自动配置
  • FTP上传文件错误