HTTP1.0、HTTP 1.一、HTTP 2.0主要区别

概要说明

HTTP1.0与HTTP 1.1的主要区别

  • 长链接
  • 节约带宽
  • HOST域

HTTP1.1与HTTP 2.0的主要区别

  • 多路复用
  • 二进制分帧
  • 首部压缩
  • 服务器推送

1、HTTP1.0与HTTP 1.1的主要区别

长链接

短链接:客户端和服务器每进行一次http操做,就创建一次链接,任务结束就中断链接。linux

短链接的操做步骤是:web

创建链接——数据传输——关闭链接...创建链接——数据传输——关闭链接

长链接:客户端和服务器之间用于传输HTTP数据的TCP链接不会关闭,客户端再次访问这个服务器时,会继续使用一条已经创建的链接。算法

长链接的操做步骤是:apache

创建链接——数据传输...(保持链接)...数据传输——关闭链接

HTTP实现长链接的方式缓存

HTTP 1.0须要使用keep-alive参数来告知服务器端要创建一个长链接,而HTTP1.1默认支持长链接。服务器

HTTP是基于TCP/IP协议的,建立一个TCP链接是须要通过三次握手的,有必定的开销,若是每次通信都要从新创建链接的话,对性能有影响。所以最好能维持一个长链接,能够用一个长链接来发多个请求。网络

节约带宽、

  • HTTP 1.1支持只发送header信息(不带任何body信息),若是服务器认为客户端有权限请求服务器,则返回100,不然返回401。客户端若是接收到100,才开始把请求body发送到服务器。这样当服务器返回401的时候,客户端就能够不用发送请求body了,节约了带宽。并发

  • 另外HTTP还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只须要跟服务器请求另外的部分资源便可。这是支持文件断点续传的基础。app

HOST域

在网络中,一个IP对应多个域名。假设 使用Tomcat 搭建网站站点,在Tomact中搭建多个站点,站点使用相同的IP和PORT,当域名映射成ip,如何区分站点呢?使用Host。webapp

设置HOST,只须要编辑 server.xml 便可,实例以下:

<Engine name="Catalina" defaultHost="www.qiniu.com">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>

       <Host name="www.qiniu.com" appBase="qiniuwebapp"  unpackWARs="true" autoDeploy="true" >     
           <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="qiniuwebapp_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
       </Host>
      <Host name="www.taobao.com" appBase="taobaowebapp"  unpackWARs="true" autoDeploy="true" >
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="taobaowebapp_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
     </Host> 
     <Host name="www.jb.com" appBase="jbwebapp"  unpackWARs="true" autoDeploy="true" >
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="jbwebapp_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
     </Host> 
 </Engine>

如今能够用web server(例如tomat),设置虚拟站点是很是常见的,也便是说,web server上的多个虚拟站点能够共享同一个ip和端口。

HTTP1.0是没有host域的,HTTP1.1才支持这个参数。

2、HTTP1.1与HTTP 2.0的主要区别

多路复用

HTTP2.0使用了多路复用的技术,作到同一个链接并发处理多个请求,并且并发请求的数量比HTTP1.1大了好几个数量级。

固然HTTP1.1也能够多创建几个TCP链接,来支持处理更多并发的请求,可是建立TCP链接自己也是有开销的。

TCP链接有一个预热和保护的过程,先检查数据是否传送成功,一旦成功过,则慢慢加大传输速度。所以对应瞬时并发的链接,服务器的响应就会变慢。因此最好能使用一个创建好的链接,而且这个链接能够支持瞬时并发的请求。

首部压缩

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

HTTP2.0的服务器推送

HTTP 2.0 新增的一个强大的新功能,就是服务器能够对一个客户端请求发送多个响应。换句话说,除了对最初请求的响应外,服务器还能够额外向客户端推送资源,而无需客户端明确地请求。

有了HTTP2.0的服务器推送,HTTP1.x时代的内嵌资源的优化手段也变得没有意义了。并且使用服务器推送的资源的方式更加高效,由于客户端还能够缓存起来,甚至能够由不一样的页面共享(依旧遵循同源策略)。

连接

初识HTTP2.0协议

相关文章
相关标签/搜索