当前位置: 首页 > 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.dtcms.com/a/336388.html

相关文章:

  • linux下timerfd和posix timer为什么存在较大的抖动?
  • USB-A 3.2 和 USB-A 2.0的区别
  • 集成电路学习:什么是ORB方向性FAST和旋转BRIEF
  • 外贸电商选品方案的模型
  • 天地图应用篇: 增加缩放、比例尺控件
  • 集运业务突围:三大关键问题的智能化解决方案
  • 【数据结构与算法-Day 16】队列的应用:广度优先搜索(BFS)的基石与迷宫寻路实战
  • vulnhub-lampiao靶机渗透
  • 002.Redis 配置及数据类型
  • 安装pytorch3d后报和本机cuda不符
  • LLM、RAG、Agent知识点思维导图
  • 简单了解BeanFactory和FactoryBean的区别
  • AMBA-AXI and ACE协议详解(八)
  • Critic-V: VLM Critics Help Catch VLM Errors in Multimodal Reasoning(CVPR 2025)
  • C++零拷贝网络编程实战:从理论到生产环境的性能优化之路
  • Word和Excel的一些功能记录
  • PHP现代化全栈开发:测试驱动开发与持续交付实践
  • 重温k8s基础概念知识系列二(Pod)
  • 腾讯开源:视频生成框架Hunyuan-GameCraft
  • 说一下事件传播机制
  • LeeCode 39.组合总和
  • 第4章 鼎鼎大名的Reactor模式
  • Redis--day7--黑马点评--优惠券秒杀
  • steam_api64.dll丢失?steam_api64.dll修复工具
  • 837. 新 21 点
  • C语言基础:(十六)深入理解指针(6)
  • 在鸿蒙里优雅地处理网络错误:从 Demo 到实战案例
  • 基于粒子群优化算法优化支持向量机的数据回归预测 PSO-SVM
  • Java实战:数字转中文大写金额的完整实现与优化技巧
  • 偏最小二乘结构方程(PLS-SEM)_TomatoSCI分析日记