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

HTTP1-HTTP2-HTTP3简要概述

文章目录

  • HTTP1.x
    • HTTP1.0
    • HTTP1.1
  • HTTP2.0
  • http3.0

HTTP1.x

HTTP1.0

HTTP 1.0 浏览器与服务器只保持短暂的连接每次请求都需要与服务器建立一个TCP连接。服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。

HTTP1.1

HTTP1.1中,默认支持长连接(Connection: keep-alive),即在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。建立一次连接,多次请求均由这个连接完成。

同时,HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,存在 "队头阻塞”问题。

同时,HTTP1.1HTTP1.0的基础上,增加更多的请求头和响应头来完善的功能,如下:

  • 引入了更多的缓存控制策略,如If-Unmodified-Since, If-Match, If-None-Match等缓存头来控制缓存策略
  • 引入range允许只请求资源某个部分
  • 引入host,实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名创建多个虚拟WEB站点

HTTP2.0

多路复用

HTTP/2 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了”队头堵塞”

二进制分帧

在 HTTP/2 协议中,每个数据流以消息的形式发送,而每条消息又由一个或多个二进制编码帧组成。由于帧是独立的传输单位,多个帧之间可以乱序发送,接收方只需根据帧首部的流标识就能将它们重新组装成完整的消息
这种基于帧的传输机制正是 HTTP/2 实现多路复用的关键条件,它允许同时交错发送多个请求和响应,显著提高了传输效率。

首部压缩

在 HTTP/1.x 中,因为HTTP/1.x 协议不带状态,每次请求都必须附上所有信息,请求的很多字段都是重复的。
HTTP/2在客户端和服务器端使用“首部表”来跟踪和存储之前发送的键值对,对于相同的数据,不再通过每次请求和响应发送
首部表在HTTP/2的连接存续期内始终存在,由客户端和服务器共同渐进地更新。

推送器服务

HTTP2引入服务器推送,当服务器收到一个主资源(如HTML)请求时,可以预测客户端接下来需要的相关资源(如CSS、JS、图片),并主动推送这些资源,而不是等待客户端解析HTML后再发起请求。

限制

尽管 HTTP/2 相比 HTTP/1.x 有显著改进,但它仍然存在一些重要的限制和挑战:队头阻塞:
HTTP/2 虽然解决了应用层的队头阻塞(多个流可以并行)
但在 TCP 层仍然存在队头阻塞:如果单个 TCP 包丢失,所有流都会被阻塞,等待重传

http3.0

是基于UDP的QUIC协议,解决掉http2多路复用存在的丢包的问题,每个流拥有独立的序列号和传输控制,流之间完全隔离,一个流的丢包不会影响其他流。

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

相关文章:

  • day 12 看门狗外设
  • 运行时常量池 和 字符串常量池 区别
  • 【数据集】NOAA 全球监测实验室(GML)海洋边界层(MBL)参考简介
  • 虚拟机VMware安装国产桌面系统统信UOS
  • 传输层协议 TCP
  • 【Python数据采集】Python爬取小红书搜索关键词下面的所有笔记的内容、点赞数量、评论数量等数据,绘制词云图、词频分析、数据分析
  • docker-compose启动前后端分离项目(单机)
  • ARFoundation系列讲解 - 101 VisionPro 真机调试
  • MySQL EXPLAIN 解读
  • DAY 20 奇异值分解(SVD)
  • ant+Jmeter+jenkins接口自动化,如何实现把执行失败的接口信息单独发邮件?
  • leetcode丑数II计算第n个丑数
  • zabbix服务器告警处理
  • 【milvus检索】milvus检索召回率
  • pages.json页面路由中,globalStyle的各个属性
  • 社交圈子系统开源社交源码 / 小程序+H5+APP 多端互通的底层技术分析
  • Ubuntu 24.04 设置静态 IP 的方法
  • 对LLM某一层进行优化:通过眼动数据发现中间层注重语句内在含义,进而对中间层参数优化
  • pthread_detach与pthread_join区别及使用场景
  • 408考研逐题详解:2010年第35题——RIP协议
  • BST(二叉搜索树)的笔试大题(C语言)
  • AG32:解锁MCU+FPGA应用新姿势,功能与实战全解析
  • SQL中的EXPLAIN命令详解
  • 【Linux】权限详解 权限本质、权限属性、su、sudo提权、chmod\chown\chgrp、文件类别
  • Qt 应用程序入口代码分析
  • HarmonyOS 启动提速秘籍:懒加载全链路实战解析
  • mysql第三次作业
  • 什么是的优先级反转(Priority Inversion) 和 优先级继承(Priority Inheritance)?
  • Syncthing实时共享同步数据 服务器数据备份软件(linux、windows)
  • 《程序员修炼之道》第一二章读书笔记