关于HTTP/1.1、2、3一点浅薄的小议与图解
对计算机网络有一定了解的读者都知道,HTTP/1.1一个时间点只能一条TCP连接发送一份、一种资源,意味着如果多份、多种资源需要建立起多条TCP连接,又因为TCP建立成功需要双方很多信息交换(具体细节在此不表),即1.1传输资源是非常费时,但30余年前的当时尚可接受。 HTTP/2实现了“多路复用(Multiplexing)”,即所有的资源可以通过一条已经建立完成的TCP连接一并发过来。但是我们仍然需面对一个事实:队头阻塞(Head of Line Blocking)的存在,即如果其中一个数据包因为种种原因被丢包或者延迟,所有已经到达的数据包需要等候这一个数据包的重传或延迟到达才能加载。 欢迎来到HTTP/3!我们因为TCP种种弊端,在3上放弃了TCP,转而使用与之很多特点相对UDP,带来了很多令人兴奋的新特性! 3就是真正的“多路复用”了!意味着大家不用等待其中一个被丢包或者延迟到达的数据包,在接收端即可开始先加载已经到达的数据包! 形象总结:笔者认为,1.1就像单纯的单路,一直都是单路;但是2(下附笔者的简单示意图)就像一个漏斗,从上是多路,到下就是单路;3就是真正多路并发了,犹如闪电! 大家有任何宝贵意见请不吝赐教、踊跃分享!