1、HTTP/1.xHttp1.x缺陷:线程阻塞,同时对同一个域名有一定数量的请求,并且请求超过限制将被阻止http1。0缺陷:浏览器和服务器只保持一个短连接,浏览器的每次请求都需要和服务器建立TCP连接(建立TCP连接的代价很高,因为客户端和服务器需要摇手三遍),服务器完成请求处理断开TCP连接后,服务器立即不跟踪每个客户端,不记录过去的请求;解决方案:添加头信息-非标准Connection字段Connection:keep-alivehttp1.1:改进点:持久连接引入持久连接,即TCP连接默认不关闭,无需声明Connection即可被多个请求复用:keep-alive(对于同一个域名,大多数浏览器允许同时建立6个持久连接)。管道机制是在同一个TCP连接中,客户端可以同时发送多个请求。阻塞传输编码是指服务器发送一段数据而不生成一段数据,采用“流式传输方式”而不是“缓存方式”。新的请求方式PUT:请求服务器存储一个资源;DELETE:请求服务器删除标识的资源;OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和要求;TRACE:请求服务器将接收到的请求信息发回,主要用于测试或诊断;CONNECT:留作以后使用缺点:虽然允许多路复用TCP连接,但同一个TCP连接中的所有数据通信都是按顺序进行的。服务器只会在处理完一个请求后才处理下一个请求。如果前端处理的特别慢,后面就会有很多请求在排队等候。这样会导致“队头阻塞”的规避方法:一是减少请求数,二是同时开启更多的持久连接。二、HTTP/2.0特点:使用二进制格式代替文本格式;完全多路复用而不是有序的并行Blocking,只需要一个连接就可以实现并行;使用头部压缩减少服务器推送开销1.二进制协议HTTP/1.1版本的头部信息必须是文本(ASCII编码),数据体可以是文本也可以是二进制。HTTP/2是一个完整的二进制协议,头部信息和数据体都是二进制的,统称为“帧”:头部信息帧和数据帧。二进制协议解析起来更有效,“在线”更紧凑,最重要的是,错误更少。2.完全复用HTTP/2复用TCP连接。在一个连接中,客户端和浏览器都可以同时发送多个请求或响应,不需要按顺序一一对应,从而避免了“队头”堵塞。3.头部压缩HTTP协议是无状态的,所以每次请求都要附加所有的信息,所以请求的很多头域都是重复的,比如cookies,每次请求都要附加相同的内容,这样会浪费很多带宽和影响速度。对于同一个header,不需要通过request发送,只发送一次;HTTP/2对这一点进行了优化,引入了header信息压缩机制;一方面,header信息被压缩为gziporcompressbeforesend;另一方面,客户端和服务端同时维护一个头信息表,所有的字段都会存储在这个表中,并生成一个索引号,之后,不会发送相同的字段,只会发送索引号。4、服务端推送HTTP/2,让服务端在没有请求的情况下主动向客户端发送资源;通过将服务器任务客户端需要的内容推送到客户端的缓存中,避免往返延迟3.HTTPSHTTP协议通常承载在TCP协议之上,增加安全协议层(SSL或TSL)介于HTTP和TCP之间。这时候就变成了我们常说的HTTPS。1、HTTPS的主要功能——(1)对数据进行加密,建立信息安全通道,保证数据在传输过程中的安全;——(2)对网站服务器进行真实身份认证。2、HTTPS和HTTP的区别-1、HTTPS是加密传输协议,HTTP是文本传输协议;-2、HTTPS需要使用SSL证书,而HTTP则不需要;-3、HTTPS比HTTP更安全,对搜索引擎更有效友好,对SEO有利,-4.HTTPS标准端口443,HTTP标准端口80;-5.HTTPS基于传输层,HTTP基于应用层;3、HTTPS和HTTP工作过程的区别HTTP包含动作:浏览器打开TCP连接浏览器向服务器发送HTTP请求。服务器向浏览器发送HTTP响应消息。TCP连接已关闭。SSL包括操作:验证服务器。密钥加密技术,生成共享加密数据基于SSL连接创建加密的SSL连接,传输HTTP请求3.HTTPS加密方式对称加密:加密和解密使用相同的密钥;不同于解密时使用的密钥,分别称为:公钥和私钥;公钥和算法都是公开的,私钥是保密的。非对称加密过程:服务器生成配对的公钥和私钥。私钥存储在服务器上。公钥发送给客户端。客户端使用公钥对明文进行加密后传送给服务器。服务器使用私钥对密文进行解密,得到明文号码。签名:签名就是在信息后面加上一段内容,可以证明信息没有被修改过。《积步数行万里》——持续更新中~,喜欢就留个赞吧!往期经典好文:JavaScript经典面试题汇总我的前端面试日记相关好文推荐:http报文详解
