HTTP的区别

HTTP1.0、HTTP1.1和HTTP2.0区别

1. HTTP1.0与HTTP1.1

1.1 长连接

  • HTTP1.0 需要使用 keep-alive 参数来告知服务器建立长连接。
  • HTTP1.1 默认开启长连接 keep-alive ,在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟。

1.2 节约带宽

  • HTTP1.0 存在浪费带宽现象,客户端仅需要对象一部分,服务端却将整个对象传送过来,不支持断点续传功能。
  • HTTP1.1 支持只发送 header 信息(不含body信息) ,如果服务器认为客户端有请求权限,则返回100,客户端收到100响应才开始把请求 body 发送到服务器;若返回401,则不发送节约带宽。

1.3 HOST域

随着虚拟主机技术的发展,一台物理服务器可以存在多个虚拟主机,并且他们共享一个IP地址。

  • HTTP1.0 认为每台服务器都绑定唯一的IP地址,所以请求消息的 URL 并没有传递主机名,HTTP1.0 没有HOST域。
  • HTTP1.1 请求和响应消息都支持HOST域,且请求消息中没有HOST域会报400 Bad Request 错误。

1.4 缓存处理

  • HTTP1.0 使用header 中的If-Modified-Since, Expires 来作为缓存判断的标准。
  • HTTP1.1 引入的更多的缓存控制策略 Entity tag, If-Unmodified-Since, If-Match, If-None-Match等。

1.5 错误通知管理

  • HTTP1.1 新增了24个错误状态响应码,409(Confict)请求资源与资源当前状态冲突;410(Gone)服务器上某个资源被永久删除。
    *** 长节H缓错 ***

2. HTTP1.1和HTTP2.0

2.1 多路复用

  • HTTP1.1 需要建立多个TCP连接,来支持处理更多并发的请求,创建TCP连接本身有开销。
  • HTTP2.0 多路复用,同一个TCP连接并发处理多个请求,且并发请求数量比1.1大了好几个数量级。

2.2 头部数据压缩

  • HTTP1.1 不支持header 数据的压缩。
  • HTTP2.0 使用算法对header 数据进行压缩,网络传输更快。

2.3 服务器推送

服务器推送:在客户端请求之前发送数据的机制。
网页中使用了很多资源: HTML、CSS、JS、图片等

  • HTTP1.1 中每个资源都必须明确的请求
  • HTTP2.0 中引入sever push,允许服务端推送资源给客户端,达到一次明确请求,直接推送。
    *** 多头服 ***
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容