【HTTP】HTTP发展史,HTTP/1和HTTP/2的区别

HTTP——浏览器和服务器之间的通信语言

【HTTP/0.9】

  • 目的:用来传输体积很小的HTML文件。
  • 特点:只有请求行,没有请求头和请求体;没有返回头信息,只返回了数据;返回的文件内容是以ASCII字符流来传输的;

【HTTP/1.0】

  • 核心诉求:支持多种类型文件的下载。
  • 引入请求头(期望返回的文件类型、采用什么类型压缩、提供什么语言的文件、文件的具体编码)和响应头(压缩类型、返回文件类型)
  • 为了减轻服务器的压力,HTTP1.0中提供了cache机制,用来缓存已经下载过的数据。
  • 服务器需要统计客户端的具体信息,所以请求头中加入了用户代理的字段。

【缝缝补补的HTTP/1.1】

  • 增加长连接(减少了TCP连接的建立以及断开次数,减少了服务器压力);
  • 浏览器为每个域名最多同时维护6个TCP持久链接;
  • 出现队头阻塞的问题;
  • 提供虚拟主机的支持(请求头增加Host字段);
  • Chunk transfer 机制(对动态生成的内容进行了完美的支持);
  • 客户端的cookie、安全机制

虽然HTTP/1.1在HTTP/1.0基础上做了大量的优化,但依然存在很多性能瓶颈,所以最终还是被HTTP/2所取代。HTTP/1.1对带宽的利用也不理想。

【HTTP/1.1的主要问题】

对带宽的利用率不理想。(带宽:每秒最大能发送或者接收的字节数)
原因:

  • TCP的慢启动;(通常TCP连接建立好了之后就会请求一些关键的资源文件,由于慢启动,推迟了页面首次渲染的时常)(慢启动是TCP为了减少网络阻塞的策略,不能改变)
  • 同时开启了多条TCP连接,这些连接会竞争固定的带宽。
  • 队头阻塞问题。(假如有的请求被阻塞了 5 秒,那么后续排队的请求都要延迟等待 5 秒,在这个等待的过程中,带宽、CPU 都被白白浪费了)(队头阻塞使得这些数据不能并行请求,所以队头阻塞是很不利于浏览器优化的)

【HTTP/2】

HTTP/1.1 所存在的一些主要问题:慢启动和 TCP 连接之间相互竞争带宽是由于 TCP 本身的机制导致的,而队头阻塞是由于 HTTP/1.1 的机制导致的。

解决办法:

  • 规避TCP的慢启动以及TCP连接之间的竞争问题——一个域名只使用一个TCP长连接来传输数据(只经历一次慢启动,避免了TCP连接之间对带宽的竞争)
  • 解决队头阻塞问题——实现资源的并行请求

所以,HTTP/2 的解决方案可以总结为:一个域名只使用一个 TCP 长连接和消除队头阻塞问题(多路复用机制)。

HTTP/2多路复用机制

HTTP/2 使用了多路复用技术,可以将请求分成一帧一帧的数据去传输,这样带来了一个额外的好处,就是当收到一个优先级高的请求时,比如接收到 JavaScript 或者 CSS 关键资源的请求,服务器可以暂停之前的请求来优先处理关键资源的请求。
一个域名只使用一个TCP长连接, 每个请求都有一个对应的 ID。

【HTTP/2特性】

  • 多路复用
  • 可设置请求的优先级
  • 服务器推送(直接将数据提前推送到浏览器)
  • 压缩请求头和响应头
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值