• 《HTTP/2 In Action 中文版本》小结


    《HTTP/2 In Action 中文版》

    简约笔记,用于了解下大致的概念。

    HTTP各版本

    xmind思维导图

    2 In Action


    文本化

    HTTP/2 In Action

    HTTP/0.9

    单个GET方法,无请求头

    只支持纯文本内容

    一对请求-响应=一个TCP连接-关闭

    HTTP/1.0

    更多的请求方法:HEAD、POST

    HTTP首部:请求首部、响应首部

    3位数的响应状态码

    响应内容不仅仅是超文本,包含其他媒体文件

    请求拥有了正文部分

    一对请求-响应=一个TCP连接-关闭

    HTTP/1.1

    强制添加host首部

    持久连接(长连接)

    • Connection:Keep-Alive

    • (keep-alive下)同一个域名同一个文件的多个请求,复用一个TCP

      • 多对请求-响应=一个TCP连接-关闭
      • 同个域名多个文件对应多个TCP连接(最大6个)
    • CS任意端可关闭,C端确认不需要请求时:Connection:Close

    新增:PUT、DELETE、OPTIONS、CONNECT、TRACE

    缓存方法

    • Cache-Control

      • 注意:localstorage和sessionstore是浏览器层的缓存
    • cache种类

      • from memory cache
      • from-disk-cache

    其他

    • Cookie:维护HTTP状态
    • 权限验证
    • 尾随首部:正文之后发送(Header中)

    HTTP/3

    QUIC协议

    • 移除了TCP,自身包含TLS

    • 有2个版本

      • google的gQUCK
      • IETF的iQCK(最终的标准)
    • http只是它的一个用例,该协议是个独立的协议,也是一个与http协议平级的标准

    • Cubic算法

      • 拥塞控制

    解决了h2中TCP层的队头阻塞,通过冗余数据包,来避免重传

    HTTP/2

    先驱:SPDY协议

    • 流多路服用
    • 请求优先级
    • HTTP首部压缩

    新概念

    • 二进制协议

      • 原协议基于文本,此协议是二进制的基于数据包的协议
    • 多路复用

      • 同个域名,多个文件,多个请求,仅有一个TCP连接
    • 流量控制

      • 流状态

        • C到S

          • 空闲、打开、半关闭、关闭
        • S到C(用于启动一个新的流)

          • 空闲、保留、半关闭、关闭
      • 控制流的窗口大小,类似于TCP的窗口控制

    • 数据流优先级

      • 流依赖
      • 流权重
    • 首部压缩

      • 压缩方法(无损压缩)

        • 查表法

          • 根据表格index,查询对应的内容
        • 高效的编码技术

          • ASCII编码

            • 同等长度,案顺序编码
          • 霍夫曼编码

            • 可变长度编码
        • lookback(反查)压缩

          • 当前位置放入引用,指向重复文本
      • 其他知识

        • 正文压缩(accept-encoding)

          • gzip,deflate,br(brotli)
      • HPACK

        • HPACK静态表

          • 包含61个常见的HTTP首部名称
        • HPACK动态表

          • 从位置62开始
        • HPACK首部类型

          • 索引首部字段类型
          • 带递增索引的字符串首部字段
          • 不索引的字符串首部字段
          • 从不索引的字符串首部字段
        • 霍夫曼编码表

    • 服务端推送

  • 相关阅读:
    7.(高级示例篇)cesium漫游飞行
    Dev-C++ 实用安装教程
    【一】Spring Cloud 系列简介
    clickhouse的安装和配置
    Python网页信息操作——webbrowser
    openFeign
    编译安装Linux内核
    239.滑动窗口的最大值
    【LeetCode热题100】--11.盛最多水的容器
    Linux简单shell脚本部署项目
  • 原文地址:https://blog.csdn.net/qq_40020447/article/details/126124237