all articles

FrontEnd Interview Questions 2

2019-07-12 @sunderls

js interview frontend





1. Symmetric vs Asymmetric cryptography

对称的就是加密解密都是一个key,所以一旦被人知道就完蛋

非对称就是两个key,一个用来加密,一个解密。解密的不告诉任何人,然后让对方用加密key加密,可以保证信息不泄漏。当然想别人传输的话需要知道别人的加密key

2. http vs https

http是 应用层协议,建立在tcp传输层协议上,没有状态,收到请求然后返回内容即可,但是是明文的不安全。

在http协议上增加了ssl协议,也就是https协议。保证了信息安全,通过的是以下方式

  1. 浏览器发送自己支持的加密规则,和随机数1到服务器
  2. 服务器收到请求 443端口,选择一套加密算法,返回crt(证书里面含有加密key)以及一个服务器生成的随机数2
  3. 浏览器收到crt,然后验证加密crt是否合法,因为有可能是伪造服务器,这里验证就靠的是CA来验证。
  4. 浏览器发现加密key合法,生成随机数3,用crt中的加密key加密,发送给服务器 (注意这里已经有三个随机数了)
  5. 服务器收到第三个随机数,用自己的解密key解密
  6. 服务器和浏览器双方各自根据随机数计算出对称加密key,握手完成。

注意到浏览器和服务器都同时知道了3个随机数

ref: https://razeencheng.com/post/ssl-handshake-detail

3 http v2 http2

ref: https://medium.com/@factoryhr/http-2-the-difference-between-http-1-1-benefits-and-how-to-use-it-38094fa0e95b 具体我真是理解不了,总之有

  1. Request multiplexing: 一个连接中发送多个请求。可以实现同时下载多个文件。
  2. header压缩:更清爽。每次连接都发送相同的header是在太浪费了。
  3. Binary protocol: 文字parse比较麻烦,用bianry更简单。
  4. server push: 服务器可以push没有请求的文件到client

http2基本大多数都支持。



如果觉得有帮助到你的话,
欢迎支付宝donate