只有光头才能变强
HTTP博文回顾:html
本文力求简单讲清每一个知识点,但愿你们看完能有所收获java
最近在看博客的时候,发现有的面试题已经考HTTP/2了,因而我就顺着去了解一下。git
到如今为止,HTTP协议已经有三个版本了:web
下面就简单聊聊他们三者的区别,以及整理一些必要的额外知识点。面试
HTTP1.0和HTTP1.1最主要的区别就是:算法
在HTTP1.0默认是短链接:segmentfault
简单来讲就是:每次与服务器交互,都须要新开一个链接!浏览器
试想一下:请求一张图片,新开一个链接,请求一个CSS文件,新开一个链接,请求一个JS文件,新开一个链接。HTTP协议是基于TCP的,TCP每次都要通过三次握手,四次挥手,慢启动...这都须要去消耗咱们很是多的资源的!缓存
在HTTP1.1中默认就使用持久化链接来解决:创建一次链接,屡次请求均由这个链接完成!(若是阻塞了,仍是会开新的TCP链接的)安全
相对于持久化链接还有另外比较重要的改动:
Chunked transfer-coding
,范围请求,实现断点续传(实际上就是利用HTTP消息头使用分块传输编码,将实体主体分块传输)HTTP 1.1管线化(pipelining)理论,客户端能够同时发出多个HTTP请求,而不用一个个等待响应以后再请求
参考资料:
在说HTTP2以前,不如先直观比较一下HTTP2和HTTP1.1的区别:
上面也已经说了,HTTP 1.1提出了管线化(pipelining)理论,可是仅仅是限于理论的阶段上,这个功能默认仍是关闭了的。
管线化(pipelining)和非管线化的区别:
HTTP Pipelining实际上是把多个HTTP请求放到一个TCP链接中一一发送,而在发送过程当中不须要等待服务器对前一个请求的响应;只不过, 客户端仍是要按照发送请求的顺序来接收响应!
就像在超市收银台或者银行柜台排队时同样,你并不知道前面的 顾客是干脆利索的仍是会跟收银员/柜员磨蹭到世界末日(无论怎么说,服务器(即收银员/柜员)是要按照顺序处理请求的,若是 前一个请求很是耗时(顾客磨蹭),那么后续请求都会受到影响。
HTTP2与HTTP1.1最重要的区别就是解决了线头阻塞的问题!其中最重要的改动是:多路复用 (Multiplexing)
多路复用意味着线头阻塞将不在是一个问题,容许同时经过单一的 HTTP/2 链接发起多重的请求-响应消息,合并多个请求为一个的优化将再也不适用。
使用了HTTP2多是这样子的:
HTTP2全部性能加强的核心在于新的二进制分帧层(再也不以文本格式来传输了),它定义了如何封装http消息并在客户端与服务器之间传输。
看上去协议的格式和HTTP1.x彻底不一样了,实际上HTTP2并无改变HTTP1.x的语义,只是把原来HTTP1.x的header和body部分用frame从新封装了一层而已
HTTP2链接上传输的每一个帧都关联到一个“流”。流是一个独立的,双向的帧序列能够经过一个HTTP2的链接在服务端与客户端之间不断的交换数据。
实际上运输时:
HTTP2还有一些比较重要的改动:
服务器推送
流量控制
HTTP1.1新改动:
HTTP2新改动:
参考资料:
以前在面试的时候被问到了HTTPS,SSL这样的知识点,也没答上来,这里也简单整理一下。
首先仍是来解释一下基础的东东:
对称加密:
非对称加密:
数字签名:
数字证书 (Certificate)
3y的通信之路:
远古时代:3y和女友聊天传输数据之间没有任何的加密,直接传输
上古时期:使用对称加密的方式来保证传输的数据只有两我的知道
中古时期:3y不仅仅要跟女友聊天,还要跟爸妈聊天的哇(一样不想泄漏了本身的通信信息)。那有那么多人,难道每一次都要约来见面一次吗?(说明维护多个对称密钥是麻烦的!)--->因此用到了非对称加密
近代:此时又出现一个问题:虽然别人不知道私钥是什么,拿不到你原始传输的数据,可是能够拿到加密后的数据,他们能够改掉某部分的数据再发送给服务器,这样服务器拿到的数据就不是完整的了。
对于数字签名和CA认证仍是不太了解参考一下
回到咱们的HTTPS,HTTPS其实就是在HTTP协议下多加了一层SSL协议(ps:如今都用TLS协议了)
HTTPS采用的是混合方式加密:
过程是这样子的:
用户用服务器的public key加密一个用于接下来的对称加密算法的密钥,传给web服务器
因此相比HTTP,HTTPS 传输更加安全
参考资料:
我只是在学习的过程当中,把本身遇到的问题写出来,整理出来,但愿能够对你们有帮助。若是文章有错的地方,但愿你们能够在评论区指正,一块儿学习交流~
参考资料:
若是文章有错的地方欢迎指正,你们互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同窗,能够 关注微信公众号:Java3y。为了你们方便,刚新建了一下 qq群:742919422,你们也能够去交流交流。谢谢支持了!但愿能多介绍给其余有须要的朋友
文章的目录导航: