文章目录
亲爱的小伙伴们,博主准备做一个每日一题系列,每天都会分享一些重要的面试题,帮你轻轻松松过面试,如果你觉得博主分享的知识还可以,就请多多点赞,评论支持吧。博主会和你们一样努力,做一个优秀的人呀。
大厂面试题 --http和https系列
1、HTTP和HTTPS概念?
1、HTTP:HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。
2、HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):是以安全为目标的HTTP通道,即可理解 HTTP 下加入 SSL+TLS 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL/TLSL来保证了通信应用程序之间提供保密性和数据完整性。
HTTP和HTTPS如下图:
2、HTTP和HTTPS延伸问题?
2.1 HTTP的运行机制
1、浏览器首先根据域名去查找对应的 IP 地址和端口,按顺序从浏览器缓存/系统缓存/路由器缓存/DNS服务器/根域名服务器去查找域名的IP。拿到IP后向,分两种情况:
2、HTTP协议,则浏览器将自身的信息,封装成一个HTTP请求数据包,与服务器的80端口建立TCP连接,即TCP的三次握手:
3、建立连接后,客户机发送一个请求给服务器
4、服务器接到初次请求后,返回给浏览器一些Headers集合,例如set-cookie,Last-Mondified,Etag等等
5、服务器向发送响应数据后,将关闭TCP连接。
6、如果浏览器或者服务器在其头信息有这行代码:Connection:keep-alive。TCP连接在发送后将仍然保持打开状态,浏览器可以继续通过相同的连接发送请求。节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
7、浏览器得到响应数据,开始进入渲染流程。
2.1 HTTPS的运行机制
1、HTTPS协议与服务器的443端口连接,客户端将自身支持的加密算法列表(如SSL 的版本、加密算法和数据压缩方法/Hash 算法)以及生成客户端加密随机数(client_random)一起发送给服务端,开始 SSL 握手。
2、服务器端选出的一套加密算法、压缩算法和SSL 数字证书,并生成服务端随机数(server_random),一起返回给客户端。
3、客户端浏览器开始进入数字证书认证环节,这一部分是浏览器内置的TLS完成的。
4、浏览器将根据客户端随机数、服务端随机数及协议版本等信息,生成随机数 premaster_secret和主密钥 master_secret,并使用公钥 对premaster_secret加密得到R,然后发送给服务端。服务端用私钥解密接收到的数据,得到R。
5、服务端以R为密钥使用对称加密算法加密网页内容并传输给浏览器。
6、客户端以R为密钥使用之前约定好的解密算法获取到网页内容,浏览器客户端开始进入渲染流程。
2.3、HTTP与HTTPS的区别?
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
https协议需要到CA申请证书,,因而需要一定费用。而http不需要。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
https要比http安全。 因为http连接很简单,所有传输的内容都是以明文传输,客户端和服务器端都无法验证对方的身份,是无状态的,HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议
放弃很容易,但坚持很酷。坚持学习吧。