亮神知识库 亮神知识库
首页
  • 手写代码

    • 手写代码系列
  • 基础知识

    • 基础
    • JS底层
    • CSS
  • 原理
  • 浏览器
  • HTTP
  • 网络安全
  • babel
  • webpack基础
  • webpack进阶
  • Vite
  • TypeScript
  • Vue2
  • Vue3
  • Node基础

    • glob
    • 模块化机制
    • 事件循环
    • KOA2框架原理
    • Node子进程
    • cluster原理(了解)
  • 教育行业2021

    • B端
    • C端
    • 工具
  • 游戏行业2025
  • 刷题
  • 杂(待整理)
  • 学习
  • 面试
  • 实用技巧
  • 心情杂货
  • 年度总结
  • 友情链接
关于
  • 分类
  • 标签
  • 归档
  • 收藏
GitHub (opens new window)

亮神

前程明亮,未来可期
首页
  • 手写代码

    • 手写代码系列
  • 基础知识

    • 基础
    • JS底层
    • CSS
  • 原理
  • 浏览器
  • HTTP
  • 网络安全
  • babel
  • webpack基础
  • webpack进阶
  • Vite
  • TypeScript
  • Vue2
  • Vue3
  • Node基础

    • glob
    • 模块化机制
    • 事件循环
    • KOA2框架原理
    • Node子进程
    • cluster原理(了解)
  • 教育行业2021

    • B端
    • C端
    • 工具
  • 游戏行业2025
  • 刷题
  • 杂(待整理)
  • 学习
  • 面试
  • 实用技巧
  • 心情杂货
  • 年度总结
  • 友情链接
关于
  • 分类
  • 标签
  • 归档
  • 收藏
GitHub (opens new window)
  • 浏览器工作原理与实践

  • 浏览器

  • HTTP

    • 一个数据包在网络中的心路历程
    • http
      • http1.0
      • http1.1
      • http1.1存在问题
      • http2.0
      • http2.0存在的问题
      • http3.0
    • https
  • 网络安全

  • 浏览器
  • HTTP
0zcl
2021-06-18
目录

http

# http1.0

<code>HTTP1.0 </code> 特性 无状态。HTTP1.0规定浏览器和服务器保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接

  1. 支持多种类型的文件下载
  2. 状态码
  3. Cache机制

# http1.1

  1. 持久连接: 一个TCP连接可以传输多个HTTP请求,只要浏览器或者服务器没有明确断开连接,那么TCP连接会一直保持

HTTP1.0

HTTP1.1

提示

如果你不想要采用持久连接,可以在 HTTP 请求头中加上 <code>Connection: close </code>。 目前浏览器中对于 <strong>同一个域名,默认允许同时建立 6 个 TCP 持久连接 </strong>

  1. Host 字段,表示当前的域名地址
  2. Cookie 字段

# http1.1存在问题

对带宽的利用率却并不理想

  1. TCP慢启动。

    提示

    一旦一个 TCP 连接建立之后,就进入了发送数据状态,刚开始 TCP 协议会采用一个非常慢的速度去发送数据,然后慢慢加快发送数据的速度,直到发送数据的速度达到一个理想状态,我们把这个过程称为慢启动. 慢启动是 TCP 为了减少网络拥塞的一种策略

  2. 同时开启的多条TCP连接会竞争带宽
  3. HTTP/1.1队头阻塞问题. 持久连接能公用一个TCP管道,但一个管道同一时刻只能处理一个请求。如果有一个请求阻塞5s,那么后续的请求都要延迟等待5s!

# http2.0

  1. 多路复用。解决HTTP1.1队头阻塞问题。
  2. 可以设置请求的优先级
  3. 头部压缩。压缩请求头的数据 multipy

# http2.0存在的问题

multipy multipy

HTTP/2 多路复用 multipy

在 HTTP/2 中,多个请求是跑在一个 TCP 管道中的,如果其中任意一路数据流中出现了丢包的情况,那么就会阻塞该 TCP 连接中的所有请求。这不同于 HTTP/1.1,使用 HTTP/1.1 时,浏览器为每个域名开启了 6 个 TCP 连接,如果其中的 1 个 TCP 连接发生了队头阻塞,那么其他的 5 个连接依然可以继续传输数据。所以,<code>HTTP/2中,TCP队头阻塞造成的影响会更大 </code>

# http3.0

HTTP3.0 使用了 基于UDP的 <code>QUIC 协议 </code> <img src="https://jsd.cdn.zzko.cn/gh/0zcl/picx-images-hosting@master/docs/assets/browser/http/7.webp" />

通过上图我们可以看出,HTTP/3 中的 QUIC 协议集合了以下几点功能

  1. 传输可靠性。
  2. TLS加密
  3. 多路复用
  4. 快速握手 http3
编辑 (opens new window)
上次更新: 2025/07/20, 08:30:18
一个数据包在网络中的心路历程
https

← 一个数据包在网络中的心路历程 https→

最近更新
01
2024年
07-20
02
2023年
07-20
03
2022年
07-20
更多文章>
Theme by Vdoing | Copyright © 2025-2025 亮神 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式