http协议总结
自圆其说是本 blog 的宗旨,有的时候理论真实可能会更加复杂,但是我愿意使用自己能理解的方式去理解的,并且达到自圆其说的地步;目前处于分布书存储领域,这个领域大神 太多但我不是那种很牛逼的大神。来这个领域只是为了追求自己喜欢做的事情,所以会持续几年吧。
个人喜欢非常 cool 的工具和膜拜各类大神,前提是你真的比我厉害,不喜欢吹嘘的人。算不上很喜欢写程序,但是挺喜欢现在的状态,最好 35 岁别把我裁了就更加好了。梦想着 自己能实现收支平衡,做一个开心的废物;最近一段时间正在学习 Rust,这个语言我超级喜欢,因为我非常喜欢 C++,但是不得不说 C++ 的包袱太重了;下一份工作可能会尝试 remote work,不知道这是不是我喜欢的生活; 家中有一个小宝贝,有点任性,不知道我能不能教育好她,希望她能健健康康的成长,我努力让自己不焦虑去鸡娃;我努力让你成为富 二代吧。
文章内容来源于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阻塞的问题的;