超文本传输协议是一个简单的请求-响应协议,它通常运行在TCP之上。
目录
HTTP1.1:
HTTP2
HTTP3
参考文献
HTTP1.1:
特点:
1.一条链接只能一次请求一次返回这样子来回。一般的我们浏览器会帮我们一次次请求和收到。
2.每次链接都需要TCP经过3次握手。为了加快速度,浏览器一般会同一连接6个请求路。
但是即使有6个连接还是有问题。
即使其他5个文件收到了,其中一个CSS文件没收到导致浏览器无法渲染。所以HTTP1可以允许一个连接发送多个请求,但是多个请求的响应顺序一定要按顺序相应才行。所以在开发上很多人将多个文件合并在一起,作为一个文件请求发送过来。
后来,1.为了安全连接,HTTP+TSL = 3+4或者3+2次握手.
2.再加上TCP慢启动
3. HTTP1首部不压缩臃肿和冗余
HTTP2
相比于HTTP1, HTTP2多了多路复用。主要解决HTTP1队头阻塞问题。单个TCP就能进行交错发送和相应,并且请求和相应不影响。这是因为HTTP2的桢多了流标识符,利用流标识符发送就可以相应组合。
HTTP2首部和主体都压缩。 使用HPACK压缩算法。这个要求浏览器需要保存HPACK压缩表。另外,重复的首部可以去掉,cooket可以作为动态信息加入动态表。
HTTP2的TCP+TLS 的握手问题还是没有解决。并且HTTP2一次请求会默认把所有觉得需要的链接一口气发送,这样导致服务器压力大,DDOS攻击难防。
HTTP3
整合TCP+TLS的握手。QUIC握手只需要来回2次握手,如果是恢复的话还可以0次RTT。
参考文献
HTTP/1.1,HTTP/2和HTTP/3的区别_哔哩哔哩_bilibili