HTTP灵魂之问笔记

255 阅读1分钟

http报文结构

起始行

头部

空行

实体

队头阻塞问题

HTTP队头阻塞

是什么

  1. http开启长连接时
  2. 公用一个tcp连接
  3. 同一时刻只能处理一个请求
  4. 前面的如果慢就会阻塞后面的

http2如何解决

TCP队头阻塞

  1. 在数据包层面,
  2. 单位是数据包
  3. 前一个报文没有收到便不会将后面收到的报文上传给 HTTP

http2改进

头部压缩 HPACK 算法

  1. 把请求头的内容做个约定
    1. 以后只传索引
  2. 整数和字符串进行哈夫曼编码
    1. 原理
      1. 就是先将所有出现的字符建立一张索引表
      2. 然后让出现次数多的字符对应的索引尽可能短
      3. 传输的时候使用这样的索引

多路复用

  1. 以前是明文传输文本
  2. 现在是传输二进制帧--流
    1. 不存在先后顺序
      1. 同一个请求的帧是有顺序的
    2. 可以在同一个tcp连接下
    3. 还可以双向传输

服务器推送