typora/note/Joplin导出归档/计算机网络/http/http升级改造.md
2024-12-12 10:48:55 +08:00

1.8 KiB
Raw Permalink Blame History

HTTP1.1 协议不足

  • 同一时间,一个连接只能对应一个请求
  • 只允许客户端主动发起连接
  • 同一个会话的多次请求中,头信息会被重复传输

SPDY

  • 基于TCP的应用层协议强制使用TLS/SSL
  • 修改了HTTP请求与响应的传输方式
  • SPDY是HTTP2的前身

HTTP2

  • 底层传输做了优化和改进在语意上完全兼容HTTP1.1
  • HTTP2采用了二进制传输而HTTP1.1采用了文本传输

HTTP2常用概念

数据流

  • 已建立的连接的双向字节流,可以承载一条或多条消息
  • 所有通信都在一个TCP连接上完成此连接可以承载任意数量的双向数据流

消息

  • 与逻辑HTTP请求或响应消息对应由一系列帧组成

  • HTTP2通信的最小单位每个帧都包含帧头标识出当前帧所属的数据流
  • 来自不同数据流的帧可以交错发送,然后再根据每个帧头的数据流标识符重新组装

多路复用 Multiplexing

  • 客户端和服务端可以将消息分解成互不依赖的帧,交错发送,然后收到后重新组装起来
  • 并行交错发送多个请求,请求之间互不影响
  • 并行交错发送多个响应,响应之间互不影响
  • 使用一个连接发送请求和响应

优先级

  • HTTP2允许每个数据流有一个权重和优先级
  • 客户端可以设置每个优先级
  • 服务端根据优先级进行响应,高优先级的优先传输给客户端

头部压缩

  • 使用HPACK压缩请求头和响应头
  • 减少开销,提高性能

服务器推送 Server Push

  • 服务器除了响应客户端的需求外,还可以主动推送内容给客户端

HTTP2问题

  • 队头阻塞
  • 握手延迟