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

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.lryc.cn/news/623974.html

相关文章:

  • SWE-bench:真实世界软件工程任务的“试金石”
  • 人工智能入门②:AI基础知识(下)
  • C++入门自学Day11-- String, Vector, List 复习
  • 如何利用gemini-cli快速了解一个项目以及学习新的组件?
  • 数据结构03(Java)--(递归行为和递归行为时间复杂度估算,master公式)
  • 人脸AI半球梯控/门禁读头的功能参数与技术实现方案
  • MySQL的事务基础概念:
  • 力扣刷题904——水果成篮
  • 黑马商城day08-Elasticsearch作业(个人记录、仅供参考、详细图解)
  • MLArena:一款不错的AutoML工具介绍
  • 【Linux】IO多路复用
  • SpringCloud 07 微服务网关
  • linux-高级IO(上)
  • 【撸靶笔记】第五关:GET - Double Injection - Single Quotes - String
  • Linux目录介绍
  • 002.Redis 配置及数据类型
  • 第三十八天(Node.JS)
  • AUTOSAR ARXML介绍
  • gin结合minio来做文件存储
  • Oracle Undo Tablespace 使用率暴涨案例分析
  • UE5多人MOBA+GAS 49、创建大厅
  • java设计模式之迪米特法则使用场景分析
  • ​​Vue 3 开发速成手册
  • PHP现代化全栈开发:测试驱动开发与持续交付实践
  • MCP原理与开发及与大模型交互流程
  • 最小路径和
  • 【JAVASE】-9- 接口语法基础
  • Android中切换语言的方法
  • DNS总结
  • 【Linux内核】Linux信号机制