HTTP/1.1、HTTP/2、HTTP/3 基本概述

这篇具有很好参考价值的文章主要介绍了HTTP/1.1、HTTP/2、HTTP/3 基本概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考链接
https://xiaolincoding.com/network/2_http/http_interview.html#http-1-1-%E7%9B%B8%E6%AF%94-http-1-0-%E6%8F%90%E9%AB%98%E4%BA%86%E4%BB%80%E4%B9%88%E6%80%A7%E8%83%BD

HTTP/1.1

HTTP/1.1 相比 HTTP/1.0 性能上的改进:

  • 使用长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。
  • 支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。

但 HTTP/1.1 还是有性能瓶颈:

  1. 请求 / 响应头部(Header)未经压缩就发送,首部信息越多延迟越大。只能压缩 Body 的部分;
  2. 发送冗长的首部。每次互相发送相同的首部造成的浪费较多;
  3. 服务器是按请求的顺序响应的,如果服务器响应慢,会招致客户端一直请求不到数据,也就是队头阻塞;(管道对客户端来说可以发送多次请求)
  4. 没有请求优先级控制;
  5. 请求只能从客户端开始,服务器只能被动响应。

HTTP/2

HTTP/1.1、HTTP/2、HTTP/3 基本概述,http,网络协议,网络

HTTP/2 相比 HTTP/1.1 性能上的改进:

  1. 头部压缩
  2. 二进制格式
  3. 并发传输(多个 Stream 复用在一条 TCP 连接,解决队头阻塞问题)
  4. 服务器主动推送资源
    (客户端和服务器双方都可以建立 Stream, Stream ID 也是有区别的,客户端建立的 Stream 必须是奇数号,而服务器建立的 Stream 必须是偶数号。)
    比如,客户端在访问 HTML 时,服务器可以直接主动推送 CSS 文件,减少了消息传递的次数。
    HTTP/1.1、HTTP/2、HTTP/3 基本概述,http,网络协议,网络> 详细解释

https://xiaolincoding.com/network/2_http/http_interview.html#http-2-%E5%81%9A%E4%BA%86%E4%BB%80%E4%B9%88%E4%BC%98%E5%8C%96

HTTP/2 有什么不足?

  • HTTP/2 通过 Stream 的并发能力,解决了 HTTP/1 队头阻塞的问题,但是 HTTP/2 还是存在“队头阻塞”的问题,只不过问题不是在 HTTP 这一层面,而是在 TCP 这一层。
    HTTP/2 是基于 TCP 协议来传输数据的,TCP 是字节流协议,TCP 层必须保证收到的字节数据是完整且连续的,这样内核才会将缓冲区里的数据返回给 HTTP 应用,那么当「前 1 个字节数据」没有到达时,后收到的字节数据只能存放在内核缓冲区里,只有等到这 1 个字节数据到达时,HTTP/2 应用层才能从内核中拿到数据,这就是 HTTP/2 队头阻塞问题。
    HTTP/1.1、HTTP/2、HTTP/3 基本概述,http,网络协议,网络

HTTP/3

HTTP/1.1 和 HTTP/2 都有队头阻塞的问题:

  • HTTP/1.1 中的管道( pipeline)虽然解决了请求的队头阻塞,但是没有解决响应的队头阻塞,因为服务端需要按顺序响应收到的请求,如果服务端处理某个请求消耗的时间比较长,那么只能等响应完这个请求后, 才能处理下一个请求,这属于 HTTP 层队头阻塞。
  • HTTP/2 虽然通过多个请求复用一个 TCP 连接解决了 HTTP 的队头阻塞 ,但是一旦发生丢包,就会阻塞住所有的 HTTP 请求,这属于 TCP 层队头阻塞。
    HTTP/2 队头阻塞的问题是因为 TCP,所以 HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP!
    HTTP/1.1、HTTP/2、HTTP/3 基本概述,http,网络协议,网络

详细解释
https://xiaolincoding.com/network/2_http/http_interview.html#http-3-%E5%81%9A%E4%BA%86%E5%93%AA%E4%BA%9B%E4%BC%98%E5%8C%96

UDP 是不可靠传输的,但基于 UDP 的 QUIC 协议 可以实现类似 TCP 的可靠性传输。
QUIC 有以下 3 个特点。

  1. 无队头阻塞
    QUIC 连接上的多个 Stream 之间并没有依赖,都是独立的,某个流发生丢包了,只会影响该流,其他流不受影响。
    HTTP/1.1、HTTP/2、HTTP/3 基本概述,http,网络协议,网络

  2. 更快的连接建立
    对于 HTTP/1 和 HTTP/2 协议,TCP 和 TLS 是分层的,分别属于内核实现的传输层、openssl 库实现的表示层,因此它们难以合并在一起,需要分批次来握手,先 TCP 握手,再 TLS 握手
    HTTP/3 在传输数据前虽然需要 QUIC 协议握手,但是这个握手过程只需要 1 RTT,握手的目的是为确认双方的「连接 ID」和TLS密钥等,连接迁移就是基于连接 ID 实现的。(也可以说,其实这1RTT更多就是属于TLS1.3的握手连接)

HTTP/1.1、HTTP/2、HTTP/3 基本概述,http,网络协议,网络文章来源地址https://www.toymoban.com/news/detail-822403.html

  1. 连接迁移

到了这里,关于HTTP/1.1、HTTP/2、HTTP/3 基本概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTTP/1.1协议中的响应报文

    2023年8月30日,周三下午 目录 概述 响应报文示例 详述 HTTP/1.1协议的响应报文由以下几个部分组成: 状态行(Status Line) 响应头部(Response Headers) 空行(Blank Line) 响应体(Response Body) 需要注意的是,响应头部是可选的,而状态行和空行是必需的。 在这个示例中, 状态行

    2024年02月09日
    浏览(40)
  • HTTP/1.1协议中的请求报文

    2023年8月30日,周三上午 目录 概述 请求报文示例 详述 HTTP/1.1协议的请求报文由以下几个部分组成: 请求行(Request Line) 请求头部(Request Headers) 空行(Blank Line) 请求体(Request Body) 需要注意的是,请求头部是可选的,而请求行和空行是必需的。 在这个示例中, 请求行指

    2024年02月10日
    浏览(42)
  • HTTP协议演进:为什么说HTTP/1.1的时代已经过去了

    前言   欢迎来到今天的每日一题,每日一提。昨天聊到了,HTTP 是什么。有哪些组成部分。并且最后提到了 HTTP 的一些缺点,比如:性能较低,容易导致网络拥塞和延迟,不支持服务器推送等等。设计协议的大佬们,对这样的缺点肯定是不能容忍的,所以 HTTP2 它来了。 什

    2023年04月17日
    浏览(41)
  • HTTP/1.1协议中的八种请求

    2023年8月29日,周二晚上 目录 概述八种请求 GET请求 POST请求 PUT请求 PATCH请求 DELETE请求 HEAD请求 OPTIONS请求 TRACE请求  HTTP/1.1协议中定义了8种常用的请求方法,分别是: 1. GET 用途:请求指定的页面信息,并返回实体主体。 例子:获取一个网页、图片等静态内容。 2. POST  用途:向指定

    2024年02月09日
    浏览(36)
  • HTTP/1.1 特性(计算机网络)

    HTTP/1.1 的优点有哪些? 「简单、灵活和易于扩展、应用广泛和跨平台」 1. 简单 HTTP 基本的报文格式就是  header + body ,头部信息也是  key-value  简单文本的形式, 易于理解 。 2. 灵活和易于扩展 HTTP 协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固

    2024年04月28日
    浏览(36)
  • HTTP协议概述 | 简析HTTP请求流程 | HTTP8种请求方法

    目录 🌏 HTTP的简单介绍 何为HTTP HTTP1.0与HTTP1.1 🌏 HTTP的请求方法 1、OPTIONS 2、HEAD 3、GET 4、POST 5、PUT 6、DELETE 7、TRACE 8、CONNECT 🌏 HTTP的工作原理 🌏 HTTP请求/响应的步骤 1、客户端连接到Web服务器 2、浏览器客户端发送HTTP请求 3、服务器接受请求并返回HTTP响应 4、释放连接TCP连

    2024年02月03日
    浏览(40)
  • HTTP协议概述

    HTTP协议,直译为超文本传输协议,是一种用于分布式、协作、超媒体的信息系统的应用协议。HTTP协议是万维网数据通信的基础。HTTP协议在客户端-服务器计算模型中充当请求-响应协议。客户端向服务器提交HTTP请求消息。服务器提供HTML文件和其他内容等资源,或代表客户端执

    2024年02月10日
    浏览(44)
  • 前端面试题(计算机网络):HTTP 1.0 和 HTTP 1.1 之间有哪些区别?

    http1.0默认是使用非持久连接,而http1.1默认使用持久连接,持久连接来使请求复用同一个TCP连接,以此来避免使用非持久连接时需要每次建立连接延迟(所花费的时间) http1.0中存在资源浪费现象,客户端如果只需要某个对象的一个部分,而服务器却会将整个对象资源全部发送

    2024年01月21日
    浏览(50)
  • HTTP协议的基本格式

    目录 一、HTTP请求  1.1 首行 1.1.1 URL 1.1.2 方法 1.2 请求报头(header) 1.2.1 host ​编辑 1.2.2 Content-Length和Content-Type 1.2.3 User-Agent 1.2.4 Referer 1.2.5 Cookie 1.3 请求正文(body) 1.3.1  application/x-www-form-urlencoded  1.3.2 application/json 1.3.3  multipart/form-data 二、HTTP响应 2.1 首行 2.1.1 状态码 H

    2024年02月17日
    浏览(54)
  • HTTP协议基本格式

    HTTP即HyperText Transfer Protocol(超文本传输协议),HTTP基于TCP/IP协议传输数据。 注:Chrome浏览器或Chrome内核浏览器可用(如Edge, Firefox) 在目标网页打开开发者工具: 点击网络(Network): 此时就可以看到目标网页的所有请求。 查看请求和响应: 浏览器自带抓包工具功能有限,

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包