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

本文探讨了HTTP协议从1.0至2.0的优化与改进,包括长连接、多路复用、数据压缩、缓存处理及服务器推送等特性,旨在减少延迟、节约带宽并提高网络效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、HTTP的基本优化

影响一个 HTTP 网络请求的因素主要有两个:带宽和延迟。

带宽:如果说我们还停留在拨号上网的阶段,带宽可能会成为一个比较严重影响请求的问题,但是现在网络基础建设已经使得带宽得到极大的提升,我们不再会担心由带宽而影响网速,那么就只剩下延迟了。

  • 延迟:

    • 浏览器阻塞(HOL blocking):浏览器会因为一些原因阻塞请求。浏览器对于同一个域名,同时只能有 4 个连接(这个根据浏览器内核不同可能会有所差异),超过浏览器最大连接数限制,后续请求就会被阻塞。

    • DNS 查询(DNS Lookup):浏览器需要知道目标服务器的 IP 才能建立连接。将域名解析为 IP 的这个系统就是 DNS。这个通常可以利用DNS缓存结果来达到减少这个时间的目的。

    • 建立连接(Initial connection):HTTP 是基于 TCP 协议的,浏览器最快也要在第三次握手时才能捎带 HTTP 请求报文,达到真正的建立连接,但是这些连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。

      所以http1.1是长连接,能在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟

       

二、HTTP1.0和HTTP1.1的一些区别 

  1. 长连接
  2. Host头处理:
    在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。
    但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。
    HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
  3. 节约带宽:
    HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。
    HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

     

  4.  

    缓存处理:

    在HTTP1.0中主要使用Last-Modified和If-Modified-Since,Expires来做为缓存判断的标准。
    HTTP1.1则引入了更多的缓存控制策略例如ETag和If-None-Match,Cache-Control等更多可供选择的缓存头来控制缓存策略。
    
    原因:如果本地打开缓存文件,即使没有对文件进行修改,但还是会造成 Last-Modified 被修改,
    服务端不能命中缓存导致发送相同的资源,
    所以可以直接根据文件内容是否修改来决定缓存策略,故在 HTTP / 1.1 出现了 ETag 和If-None-Match

     

三、 HTTP 1.1、HTTP2.0主要区别

  1. 多路复用
    HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。
    当然HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。
  2. 数据压缩

     HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

     

  3. 服务器推送 

        当我们对支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,
    免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源。
        服务器端推送的这些资源其实存在客户端的某处地方(浏览器缓存),客户端直接从本地加载这些资源就可以了,不用走网络,速度自然是快很多的。

     

 四、

  1. 带宽:所以1.1节约带宽,只要要求的一部分;2.0进行数据压缩
  2. 浏览器堵塞:所以2.0有了多路复用,能并发处理多个请求
  3. 建立连接:所以1.1有长连接,一个连接能发多次请求
  4. 缓存:1.1协商缓存更准确;2.0的服务端推送也是利用缓存
  5. host头:这是因为存在虚拟机,要不然会报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值