在HTTP1.0的时候,是只有短连接的,并且它需要一个请求得到回复,才能发送第二个请求。在HTTP1.1的时候,就加了长连接的方式来改善短连接的性能开销。其次,支持了管道运输,就是第一个请求发出去了,不必等其回来,就可以发送第二个请求,可以减少整体的响应时间。到了HTTP2.0,改动就比较大了,首先,HTTP2.0是基于HTTPS,所以它的安全性是有所保障的,还有它采用了头部压缩的方法,就是如果你同时发出多个请求,他们的头是一样的或者是类似的,那么就会帮你消除掉重复的部分。还有就是用了二进制的格式,之前是纯文本的嘛,计算机容易识别二进制的,这增加了数据传输的效率。还有就是数据流,就是数据包可以不是按顺序发送的,同一个连接里面连续的每个数据包,都会做一个编号,然后根据这个编号来接收自己对应的回应就行。还有一个很重要的就是多路复用,就是可以在一个连接中并发处理多个请求,服务器不用按照顺序一一对应,服务端哪个请求处理好了就回复哪个,而不用像之前那样,一个卡住了,其他就都得等。但是这样做也有个缺点就是,如果一个包丢了,就会触发TCP的重传机制,又因为多个HTTP请求复用一个TCP连接,这样的话,同一个TCP连接中的所有HTTP请求都得等这个丢了的包被重传回来。所以HTTP3的时候,把TCP协议改成了UDP,UDP的话是不管顺序的,也不管丢包的,所以不会出现那种问题。但是我们知道UDP是不可靠传输的,所以HTTP3中的UDP是基于QUIC协议的,可以实现类似TCP那样的可靠性传输,具体的还不太了解。嗯。。大概就是这样。
