网络进阶面试题
HTTPS 加密原理
客户端发起请求到服务器,通过 443 端口建立连接(HTTP 是 80 端口)
HTTPS 证书是通过专门的数字认证机构颁发的电子证书,携带公私钥,颁发机构信息,域名信息,证书有效期等信息
服务器携带公钥和证书发送给客户端
客户端验证证书是否有效,无效则弹出提示。有效则生成一个随机码,并通过公钥加密
客户端把加密的随机字符串发送给服务端,服务端通过密钥进行对称加密传输的内容
服务器相应加密后的数据
客户端通过对称加密算法和第 4 步生成的密钥进行解密
总结
- HTTPS 使用 443 端口,HTTP 使用 80 端口
- HTTPS 是通过非对称加密(公私钥)建立链接,数据是通过对称加密进行传输
- 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 个。