摘要:服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有许多请求排队等着。则是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为帧头信息帧和数据帧。报头压缩协议是没有状态,导致每次请求都必须附上所有信息。
一、HTTP/1.x Http1.x
缺陷:线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求会被阻塞
http1.0缺陷:浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接(TCP连接的新建成本很高,因为需要客户端和服务器三次握手),服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求;
解决方案:
添加头信息——非标准的Connection字段Connection: keep-alive
http1.1:改进点:
持久连接
引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive(对于同一个域名,大多数浏览器允许同时建立6个持久连接)
管道机制
即在同一个TCP连接里面,客户端可以同时发送多个请求。
分块传输编码
即服务端没产生一块数据,就发送一块,采用”流模式”而取代”缓存模式”。
新增请求方式
PUT:请求服务器存储一个资源;
DELETE:请求服务器删除标识的资源;
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求;
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断;
CONNECT:保留将来使用
缺点:
虽然允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有许多请求排队等着。这将导致“队头堵塞”
避免方式:一是减少请求数,二是同时多开持久连接
二、HTTP/2.0特点:
采用二进制格式而非文本格式;
完全多路复用,而非有序并阻塞的、只需一个连接即可实现并行;
使用报头压缩,降低开销
服务器推送
1. 二进制协议
HTTP/1.1 版的头信息肯定是文本(ASCII编码),数据体可以是文本,也可以是二进制。HTTP/2 则是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为”帧”:头信息帧和数据帧。
二进制协议解析起来更高效、“线上”更紧凑,更重要的是错误更少。
2. 完全多路复用
HTTP/2 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了”队头堵塞”。
3. 报头压缩
HTTP 协议是没有状态,导致每次请求都必须附上所有信息。所以,请求的很多头字段都是重复的,比如Cookie,一样的内容每次请求都必须附带,这会浪费很多带宽,也影响速度。
对于相同的头部,不必再通过请求发送,只需发送一次;
HTTP/2 对这一点做了优化,引入了头信息压缩机制;
一方面,头信息使用gzip或compress压缩后再发送;
另一方面,客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,产生一个索引号,之后就不发送同样字段了,只需发送索引号。
4. 服务器推送
HTTP/2 允许服务器未经请求,主动向客户端发送资源;
通过推送那些服务器任务客户端将会需要的内容到客户端的缓存中,避免往返的延迟
三、HTTPSHTTP协议通常承载于TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的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报文详解
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/95514.html
摘要:灵活允许传输任意类型的数据对象。无连接每次响应一个请求,响应完成以后就断开连接。无状态服务器不保存浏览器的任何信息。每次提交的请求之间没有关联。非流水线发出一个报文,等到响应,再发下一个报文。同时,流还支持优先级和流量控制。 版权声明:本文为博主原创文章,遵循[ CC 4.0by-sa ](http://creativecommons.org/li...,转载请附上原文出处链接和本...
摘要:一端用私钥加密,另一端用公钥解密,也确保了来源目前现在好像使用了数字签名就万无一失了,其实还有问题。如果公钥被伪造了,后面的数字签名其实就毫无意义了。具有校验机制,一旦被篡改,通信双方会立刻发现。配备身份证书,防止身份被冒充。 一、前言 只有光头才能变强 HTTP博文回顾: PC端:HTTP就是这么简单 PC端:HTTP面试题都在这里 微信公众号端:HTTP就是这么简单 微信公众号端...
阅读 1056·2021-11-23 10:05
阅读 1761·2021-11-12 10:36
阅读 1817·2019-08-30 15:56
阅读 1668·2019-08-29 12:32
阅读 3020·2019-08-28 18:04
阅读 3411·2019-08-26 12:17
阅读 2488·2019-08-26 11:35
阅读 1176·2019-08-23 15:11