关于java:腾讯面试你真的懂HTTP吗

39次阅读

共计 1595 个字符,预计需要花费 4 分钟才能阅读完成。

本期是【大厂面试 】系列文章的第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 公钥 对该证书进行验证

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

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

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

大彬:好的,谢谢你

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

正文完
 0