http协议总结
文章内容来源于youtube HTTP/1 to HTTP/2 to HTTP/3
1. http/1
每一次请求都会创建一个tcp链接,一个请求完毕之后就会close;
2. http/1.1
与http/1的区别在于:
- 可以复用连接,多个请求可以使用同一条连接往服务端发送;这样做的好处是节省了每次请求创建一条tcp连接的3次握手
- 支持了所谓的流水线的技术(pipeline),所谓流水线的技术多个请求可以独立发送,但是这个版本的pipeline其实因为技术原因没有达到预期效果,后期废除,提出了另外一个概念pipeline(head-of-line blocking),区别在于多个请求发送的过程可以并行,但是对应的返回结果需要按序返回,这就导致如果请求之间是相互干扰和依赖的;不能相互独立
3. http/2
- 提供了stream的概念,也就是一个tcp连接中存在多个相互独立的流,每一个client可以有一个自己的流,这样可以做到了pipeline;但是因为底层依然是基于tcp的,tcp的协议是保证数据的有序和不丢包的,所以其实同一个tcp内部的流的传输依然还是相互干扰的,不能做到相互独立;stream更加是一个逻辑上的概念,有了这一层从逻辑上来说是可以做到独立了,为后期的http/3做准备
- 类似于stream response,可以让服务端返回多个消息的感觉..按照之前服务端和client的模型来看的,一问一答变成了一问多答的模型
4. http/3
http/3最大的改变就是从基于TCP变成了机遇QUIC,或者说基于了UDP,QUIC应该是在udp的基础上实现了可靠性的保证的;udp本身没有连接的改变,所以每一个stream就真的是相互独立了,各个stream之间相互不干扰,也真的解决了pipeline阻塞的问题的;