跳到主内容

网络进阶面试题

HTTPS 加密原理

HTTPS加密原理流程图

  1. 客户端发起请求到服务器,通过 443 端口建立连接(HTTP 是 80 端口)

  2. HTTPS 证书是通过专门的数字认证机构颁发的电子证书,携带公私钥,颁发机构信息,域名信息,证书有效期等信息

  3. 服务器携带公钥和证书发送给客户端

  4. 客户端验证证书是否有效,无效则弹出提示。有效则生成一个随机码,并通过公钥加密

  5. 客户端把加密的随机字符串发送给服务端,服务端通过密钥进行对称加密传输的内容

  6. 服务器相应加密后的数据

  7. 客户端通过对称加密算法和第 4 步生成的密钥进行解密

总结

  1. HTTPS 使用 443 端口,HTTP 使用 80 端口
  2. HTTPS 是通过非对称加密(公私钥)建立链接,数据是通过对称加密进行传输
  3. HTTPS 是建立在 SSL(安全套接层)/TLS(传输安全层)上的 HTTP 协议,比 HTTP 更安全,但是需要额外消耗资源(比如建立链接耗时长,传输加解密也费时间)

浏览器在与服务器建立了一个 TCP 连接后是什么情况下会断开?

HTTP1.1 提供了一个 Connection: keep-alive 的响应头,在完成一次请求后不会立即断开,后续的请求继续使用该 HTTP 连接,只有手动设置了 Connection: close 才会立即断开。

一个 TCP 连接可以发起多个 HTTP 请求吗?

可以串行请求,不能并发请求。HTTP/1.1 存在一个问题,单个 TCP 连接在同一时刻只能处理一个请求,下一个请求必须要在上一个请求完成后才能开始。但是 HTTP2 解决了这个问题,可以升级 HTTP2。

那么 HTTP1.1 上如何实现并发请求资源?

使用多个服务器建立连接

刷新页面需要重新建立 SSL 连接吗?

不需要,TCP 连接会被浏览器和服务端维持一段时间。

浏览器一次能创建多少个 TCP 连接?

大部分浏览器限制不一样,一般是 5-6 个。