# HTTP的发展历史
# HTTP0.9
- 只有一个命令GET
- 没有
header
等描述数据的信息 - 服务器发送完毕,就关闭TCP连接
# HTTP1.0
- 增加了很多命令
- 增加
status code
和header
- 多字符集支持、多部分发送、权限、缓存等
# HTTP1.1
- 持久连接(connection: keep-alive)
- pipeline(浏览器允许并发发送http请求)
- 增加host和其他一些命令
- 一个物理服务器可以部署多个接口/服务
# HTTP2
要使用HTTP2,必须使用HTTPS
# 信道复用
同域使用一个TCP连接并发发送http请求
# 分帧传输
帧中有前后,接受到消息会根据帧中的信息拼接信息。因此支持并发
# Server Push(服务器推送)
推送资源的限制:必须是可缓存、安全的、不能带有请求体。
场景:请求一个html资源,会把相关的css、js一同push过来,可以减少HTTP请求
# 头信息压缩
二进制发送信息
# HTTP3
使用
QUIC协议
,由Google在15年提出的SPDY v3演化而来
QUIC协议
(Quick UDP Internet Connections)基于传输层的UDP
协议(升级版的UDP)
减少了TCP
三次握手及TLS
握手(安全https)的时间,UDP没有连接概念,建立连接只需一次交互:
QUIC的连接分两种情况,首次连接和非首次连接
- 首次连接时,类似
TLS
协议,通过dh算法
(类似非对称加密)生成config
,然后缓存下来,缓存有时效 - 非首次连接时,直接通过缓存的
config
连接。缓存失效重新连接
QUIC可以实现连接迁移
:
QUIC
基于的UDP
,使用64位随机数所为连接ID,wifi切换到4G时,不会重新建立连接TCP
使用五元组
来表示唯一连接,wifi切换到4G时,ip变化需要重新建立TCP
连接