本期是【大厂面试】系列文章的第3期,模仿HTTP面试内容。

面试开始

面试官看你简历上写了相熟HTTP,什么是HTTP?

独白:嘿嘿,就是想疏导你来问这个的

大彬:嗯,HTTP协定是Hyper Text Transfer Protocol(超文本传输协定)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协定。协定实际上就是单方约定好的格局,确保单方都能了解这种格局。

面试官那HTTP协定有什么特点呢?

大彬:1. HTTP容许传输任意类型的数据。传输的类型由Content-Type加以标记。

大彬:2. 无状态。对于客户端每次发送的申请,服务器都认为是一个新的申请,上一次会话和下一次会话之间没有分割。

大彬:3.反对客户端/服务器模式

面试官晓得HTTP长连贯吗?

独白:经典面试题!

大彬:HTTP长连贯,指的是复用TCP连贯。多个HTTP申请能够复用同一个TCP连贯,这就节俭了TCP连贯建设和断开的耗费。

大彬HTTP1.0默认应用的是短连贯。浏览器和服务器每进行一次HTTP操作,就建设一次连贯,工作完结就中断连贯。

大彬HTTP1.1起,默认应用长连贯。要应用长连贯,客户端和服务器的HTTP首部的Connection都要设置为keep-alive,能力反对长连贯。

面试官嗯,刚刚有提到HTTP1.0和HTTP1.1,那你晓得HTTP1.1和 HTTP2.0的区别吗?

大彬:HTTP2.0相比HTTP1.1反对的个性如下:

  • 新的二进制格局:HTTP1.1 基于文本格式传输数据;HTTP2.0采纳二进制格局传输数据,解析更高效。
  • 多路复用:在一个连贯里,容许同时发送多个申请或响应,并且这些申请或响应可能并行的传输而不被阻塞
  • 头部压缩,HTTP1.1的header带有大量信息,而且每次都要反复发送;HTTP2.0 把header从数据中拆散,并封装成头帧和数据帧,应用特定算法压缩头帧,无效缩小头信息大小。并且HTTP2.0在客户端和服务器端记录了之前发送的键值对,对于雷同的数据,不会反复发送。比方申请a发送了所有的头信息字段,申请b则只须要发送差别数据,这样能够缩小冗余数据,升高开销。
  • 服务端推送:HTTP2.0容许服务器向客户端推送资源,无需客户端发送申请到服务器获取。

面试官不错不错!再问一个,你感觉HTTP通信安全吗?

独白:裸奔能平安吗...

大彬:HTTP是明文传输,容易被黑客窃听或篡改,不平安。

大彬:能够应用 HTTPS 来解决 HTTP 明文协定的缺点,在 HTTP 的根底上退出 SSL/TLS 协定,依附 SSL 证书来验证服务器的身份,为客户端和服务器端之间建设SSL通道,确保数据传输平安。

面试官哦?讲一下HTTPS的原理?能够具体点

独白:果然逃不掉这个问题...

大彬:首先是TCP三次握手,而后客户端发动一个HTTPS连贯建设申请,客户端先发一个Client Hello的包,而后服务端响应Server Hello,接着再给客户端发送它的证书,而后单方通过密钥替换,最初应用替换的密钥加解密数据。

大彬:具体过程如下:

大彬:首先是协商加密算法 。在Client Hello外面客户端会告知服务端本人以后的一些信息,包含客户端要应用的TLS版本,反对的加密算法,要拜访的域名,给服务端生成的一个随机数(Nonce)等。须要提前告知服务器想要拜访的域名以便服务器发送相应的域名的证书过去。

大彬:服务端响应Server Hello,通知客户端服务端选中的加密算法

大彬:接着服务端给客户端发来了证书。

大彬:客户端应用证书的认证机构CA公开公布的RSA公钥对该证书进行验证

大彬:验证通过之后,浏览器和服务器通过密钥替换算法产生共享的对称密钥

大彬:开始传输数据,应用同一个对称密钥来加解密。

面试官:了解的还算到位,不错!明天面试就到这,有音讯会告诉你。

大彬:好的,谢谢你

独白:还好,背的八股文都用上了~