# 前端面试题

# 1、 http 和 https 的基本概念

​ http 是一个客户端和服务器端请求和应答的标准 {TCP},用于从 www 服务器传输超文本到本地浏览器的超文本传输协议

​ https 是以安全为目标的 http 通道,即 http 下加入了 ssl 层进行加密。其作用是:建立一个信息安全通道,来确保数据的传输,确保数据的传输,确保网站的真实性

# 2.、http 和 https 的区别即优缺点?
  • ​ http 是超文本传输协议,信息是明文传输,https 协议要比 http 协议要安全,https 是具有安全性的 ssl 加密传输协议,可防止数据在传输过程中杯窃取、改变,确保数据的完整性(当然安全并非是绝对的,)

  • http 默认的端口号是 80,https 的默认接口是 443

  • http 的连接很简单,是无状态的,https 的握手阶段比较费时,会使页面加载时间延长 50%,增加 10%~20% 的耗电

  • https 缓存不如 https 高效,会增加数据开销

  • https 协议需要 ca 证书,费用较高,功能强大的证书费用越高

  • ssl 证书需要绑定 ip,不能在同一个 ip 上绑定多个域名,ipv4 资源支持不了这样子的消耗

# 3、https 协议的工作原理

客户端在使用 https 方式与 web 服务器通信时有以下几个步骤:

  • 客户端使用 https url 访问服务器,则要求 web 服务器建立 ssl 连接
  • web 服务器接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),传输给客户端
  • 客户端和 web 服务器端开始协商 ssl 链接的安全等级,也就是加密等级
  • 客户端浏览器通过双方协议一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站
  • web 服务器端通过自己的私钥解密出会话密钥
  • web 服务器通过会话密钥加密与客户端之间的通信
# 4、TCP 三次握手
  • 第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器 ,并进入 SYN_SENT 状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)
  • 第二次握手:服务器收到 syn 包并确定客户的 syn(ack=j+1),同时也发送一个自己的 syn 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;
  • 第三次握手:客户端收到服务器的 SYN+ACK 包,想服务器发送确认包(k=k+1), 此包发送完毕,客户端和服务器进入 ESTABLISHED (TCP 连接成功) 状态,完成三次握手。
# 5、TCP 和 UDP 的区别
  • TCP 是面向链接的,而 UDP 是面向无连接的
  • TCP 仅支持单波传输,UDP 提供了单播,多播,广播的功能
  • TCP 的三次握手保证了连接的可靠性;UDP 是无连接的、不可靠的一种数据传输协议,首先不可靠性现在无连接上,通信都不需要连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收
  • UDP 的头部开销比 TCP 的更小,数据传输速率更高,实时性更好
# 6、Cookie,sessionStorge\localStorage 的区别
  • 相同点:存储在客户端
  • 不同点:
  • cookie 数据大小不能超过 4k;sessionStorage 和 localSorage 的存储比 cookie 大得多,可以达到 5M+
  • cookie 设置的过期时间之前一直有效;localStorage 永久存储,浏览器关闭后数据不丢是除非主动删除数据;
  • sessionStorage 数据在当前浏览器窗口关闭后自动删除
  • cookie 的数据会自动的传递到服务器 lsessionStorage 和 localStorage 数据保存在本地 +