HTTP1.0、HTTP1.1、HTTP2.0、HTTP3.0 的区别

一.HTTP1.0

     1.只有三种请求头GET、HEAD、POST

     2.每个域名同时最多建立4个连接,如果连接数>=4,其他请求,只能等待

     3.每个连接,完成一个HTTP请求、响应后,就会被服务器断开

     4.不支持断点续传

     5.缓存策略单一,只有本地缓存

     

二.HTTP1.1

    比1.0版本有哪些提升:

    

1.新增Put,Delete等方法
2.在HTTP1.0中主要使用header里的Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Cache-Control,Last-Modified/If-Modified-Since,Eag/If-None-Match等更多可供选择的缓存头来控制缓存策略。
3.支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
4.Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
5.长连接,HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点

  请求流水线概念:

   

请求流水线Pipelining

多个HTTP请求原有流程:
1.发送请求1
2.等待请求1响应,等待期间,当前连接不能发其他请求
3.再继续发下一个请求

请求流水线Pipelining流程:
1.发送请求1
2.等待请求1响应,等待期间,如果有其他请求,会先发送这些请求
3.按照请求发送顺序,等待对应的响应,如果第一个请求服务器处理时间很长,即使后续请求处理时间很短,也只能先接收第一个请求的响应,其他请求的响应只能等待

请求流水线解决了,请求发送的效率;但是未解决请求响应的接收效率,这个情况叫做"线头阻塞(Head of line blocking)"

 

三.HTTP2.0

    HTTP2.0做了一下改进

    

1.二进制分帧
2.首部压缩
3.多路复用
4.请求优先级
5.服务器推送

 

四.HTTP3.0

posted @ 2022-02-21 17:22  高压锅里的大萝卜  阅读(685)  评论(0编辑  收藏  举报