前端面试之网络篇

145 阅读5分钟

HTTPS 加密

在传输密钥的时候使用非对称加密、在通信的时候使用对称加密。

具体实现步骤

  1. 客户端发起请求。

  2. 服务端准备数字证书(包含公钥和其它信息)、 以及保存与公钥配对的私钥。

  3. 服务端将数字证书返回给客户端。

  4. 客户端通过 TLS/LSS 验证证书。

    • 不合法:发出警告 。
    • 合法: 提取公钥进而生成随机的 key、 客户端用公钥对随机的 key 进行加密。
  5. 向服务端发生加密之后的 key。

  6. 服务端用保留的私钥进行解密、 提取出随机的 key。 最后对称加密 HTTP 数据。

  7. 向客户端发送加密后的 HTTP 数据。

  8. 客户端使用随机生成的 key 进行解密。

三次握手四次挥手

前置知识

套接字 socket (IP地址:端口号)是握手前的核心条件

TCP 报文里有主要的标识有(1表示开启0表示关闭)

  • SYN:同步(请求建立连接)
  • ACK:确认(确认连接)
  • FIN: 结束 (请求断开连接)
  • SEQ: 序列号

三次握手

image.png

为什么需要三次挥手而不是两次

设计成三次握手的情况,客户端在接收到服务端SEQ+1的返回消息之后,就会知道这个连接是历史连接,所以会发送报文给服务端,告诉服务端。所以TCP设计成三次握手的目的就是为了避免重复连接、同时也是确保客户端和服务端接收和发送功能是没有问题的。

四次挥手

image.png

为什么是四次挥手

是因为可能存在未发送完毕的数据、所以为了保证数据传递的完整

为什么客户端在第四次挥手后还会等待 2MSL

等待 2MSL 是因为保证服务端接收到了 ACK 报文,因为网络是复杂了,很有可能 ACK 报文丢失了,如果服务端没接收到 ACK 报文的话,会重新发送 FIN 报文,只有当客户端等待了 2MSL 都没有收到重发的 FIN 报文时就表示服务端是正常收到了 ACK 报文,那么这个时候客户端就可以关闭了。

常见的状态码

image.png

    201: 服务已创建
    204: 无内容
    301: 重定向 —— 原地址永久删除
    302: 重定向 —— 临时地址
    304: 协商缓存、可直接使用缓存
    400: 语法错误、 无法理解
    401: 数据库中无此身份
    403: 无权限
    404: 地址写成或资源不在了
    409: 版本冲突、 新老版本要一致
    500: 内部错误
    502: 网关错误
    503: 超载或维护

DNS 域名解析

基本知识 (IP: 网络号 + 主机号)

image.png

过程

检测本地浏览器缓存中有没有对应的 IP 记录、同时查阅主机本地文件里面有没有对应的记录、若没有就继续执行一下操作

image.png

GET 和 POST

区别:

  1. GET 在浏览器回退时是无害的,而 POST 会再次提交请求。
  2. GET 请求只能进行url编码,而 POST 支持多种编码方式。
  3. GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留。
  4. GET请求在URL中传送的参数是有长度限制的,而 POST 没有。
  5. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  6. GET 比 POST 更不安全,因为参数直接暴露在URL 上,所以不能用来传递敏感信息。
  7. GET 参数通过 URL 传递,POST 放在Request body 中。
  8. GET 产生一个 TCP 数据包;POST 产生两个TCP 数据包。

本质上是没有区别的:本质上都是 TCP 连接

使用场景:

  • GET 一般用于数据的读取、 所以一般是对 get 请求进行缓存。
  • POST 一般用于数据的增删改

有几种请求方式

  1. form表单、ifream、刷新页面。
  2. Ajax - 异步网络请求的开山鼻祖。
  3. jQuery - 一个时代。
  4. fetch - Ajax的替代者
  5. axios、request等众多开源库

有几种请求方法

  1. GET
  2. POST
  3. HEAD 一般用于获取报文的。
  4. DELETE 一般用于删除Request-URL所标识的资源

Cookie、localStorage和sessionStorage

cookie

主要用于用户识别和状态管理(如:记忆密码),cookie是由服务器生成,保存在客户端的一种信息载体。可设置失效时间。若在浏览器端生成cookie的话、不设置失效时间的前提下默认是关闭浏览器失效。每次都会携带在HTTP头中发送给服务端、数据大小为4kB左右。挂载在document下面

webStorage(本地存储)

HTML5 提供了两种在客户端存储数据的新方法:localStorage和sessionStorage,挂载在window对象下。数据大小一般为5MB。它仅在浏览器中保存,不和服务器通信。

localStorage: 有效期是永久的、即使关闭浏览器、数据也不会消失、除非主动去删除。 sessionStorage: 仅在当前页面下有效,使用window.open打开页面和改变localtion.href方式都可以获 取到sessionStorage内部的数据;使用关闭页面或浏览器后被清除。