目录
一、HTTP 相关问题
1. Cookie 和 Session 是什么?
(1)Cookie
(2)Session
2. Cookie 的工作原理?
3. Session 的工作原理?
4. Cookie 和 Session 有什么区别?
二、其他问题综述
1. SSL/TLS 是什么?
2. 什么是对称加密和非对称加密?
(1)对称加密
(2)非对称加密
3. DNS 是什么?
4. DNS 解析过程?
5. CDN 是什么?
6. CDN 的工作流程?
7. CDN 是如何加速的?
一、HTTP 相关问题
1. Cookie 和 Session 是什么?
Cookie 和 session 都用于 管理用户的 状态和身份,cookie 通过 在 客户端记录信息 确定 用户身份,Session 通过 在 服务器端记录信息 确定 用户身份。
换种说法,Session 是 Cookie 的一种 应用。由于 HTTP 是 无状态的 协议,服务器 无法 直接 识别 用户的 身份和状态。因此,服务器 通常 使用 Session 来保存用户信息,并 通过 Cookie 将 Session ID 发送到 客户端。客户端 在 后续的 HTTP 请求中 携带 这个 Session ID,服务器 通过 Session ID 找到 对应的 Session 对象,从而 获取 用户的 会话信息。这种方式 实现了 用户 信息的 跨请求 传递 和 状态管理。
(1)Cookie
- 当 服务器 响应一个 HTTP 请求时,它 可以 在响应头中 包含一个 Set-Cookie 字段,将 Cookie 发送到 客户端。客户端浏览器 会 保存这个 Cookie,并在 后续的 HTTP 请求中 通过 Cookie 头字段将其 发送回 服务器。
- 服务器 在 接收到 来自 客户端 浏览器的 请求之后,就 能够 通过 分析 存放于 请求头 的 Cookie 得到 客户端 特有的信息,从而 动态 生成 与该 客户端 相对应的 内容。
- Cookie 通常 用于 存储 用户的 会话信息(如 登录状态、购物车内容 等)、跟踪 用户行为(如分析网站访问量、广告点击 等)以及 实现 个性化 服务(如 根据用户 偏好 显示内容)。
(2)Session
- 当 用户 首次 访问服务器 时,服务器 会 创建一个 新的 Session 对象,并 为其 分配一个 唯一的 Session ID。这个 Session ID 通常 通过 Cookie(也可以通过 URL 重写 等方式)发送给 客户端,并 在后续的 HTTP 请求中 用于 标识 用户会话。服务器 通过 Session ID 找到 对应的 Session 对象,从而 获取 用户的 会话信息。
- 客户端 浏览器 访问 服务器的 时候,服务器 把 客户端信息 通过 Session ID 记录在 服务器上。这 就是 Session。Session 主要用于 维护 用户 登录状态、存储用户 的 临时数据 和 上下文信息等。
2. Cookie 的工作原理?
通过 服务器 在 HTTP 响应中设置 "Set-Cookie" 标头,然后 浏览器 将这些 Cookie 存储 并在 后续的请求中 发送给 服务器。这样 服务器 可以 通过 Cookie 实现 用户 状态管理 和 数据传递。
- 当 用户 首次 访问 某个网站 时,该 网站的 服务器 会 生成一个 Cookie,并通过 HTTP 响应头 将其 发送到 用户的 浏览器。这个 Cookie 包含了 服务器 希望 保存在 用户计算机上 的 一些信息,如 用户的 身份认证、偏好设置、购物车内容 等。
- 浏览器 接收到 服务器 发送的 Cookie 后,会 将其 保存在 本地设备的 特定位置,通常是 浏览器 的 Cookie 文件夹 中。这样,当 用户 再次 访问 该网站时,浏览器 可以 快速访问 这些 Cookie。
- 当 用户 再次访问之前 访问过的 网站时,浏览器会 自动 将 存储的 Cookie 通过 HTTP 请求头 发送给 服务器。这个 过程是 自动的,用户 无需 进行 任何操作。
- 服务器 接收到 浏览器 发送的 Cookie 后,会 根据 其中 保存的 信息来 识别 用户身份、恢复 用户设置 或 跟踪用户 行为。这样,服务器就 可以 为用户 提供 个性化的 服务,如 保持用户的 登录状态、记住用户的 购物车内容 等。
- Cookie 可以 被 网站更新,例如 延长有效期、改变内容 或 添加 新的 Cookie,通过 发送 新的 “Set-Cookie” 标头 也可以 更新 Cookie 的值 或 设置新的参数。这些 更新 操作 通常 由服务器 在用户访问 网站时 自动完成。
- 用户 也可以 通过 浏览器 设置 手动删除 Cookie。这 通常是为了 保护 个人隐私 或 解决 Cookie 导致的一些 问题(如 登录状态异常、购物车 内容丢失等)。
- Cookie 可以 设置 过期时间,可以是 会话级的(浏览器关闭时 失效)或 持久性的(在 一段时间后 失效)。当 过期时间 到达后,浏览器 不再 发送 该 Cookie。
3. Session 的工作原理?
Session 是一种 在 服务器端存储 和 管理用户状态和数据的 机制,通常 基于 会话 标识符(Session ID)进行操作。
- 当 用户 首次 通过 浏览器 访问 Web 应用程序 时,服务器会 检查 请求中 是否 包含 有效的 Session 标识符(如 Session ID)。如果没有,服务器会 为该 用户 创建一个 新的 Session。这个 ID 通常是一个 长随机 字符串,用于 存储 与该用户 会话 相关的 数据,如 用户身份、登录状态、购物车内容 等。Session ID 作为键,Session 对象 作为值,存储在 服务器端 的哈希表 或 类似数据结构 中。
- 每个 会话标识符 对应着 服务器上的 一个 会话 存储空间。这个 存储空间 用于 存储 该用户 在 会话期间的 状态和 数据,这包括用户的登录状态、购物车内容、表单填写进度等。服务器可以根据Session中的数据来为用户提供个性化的服务。
- 当 用户 与 服务器 交互时,服务器 可以 通过 会话 标识符来 访问 对应的 会话 存储空间。服务器 可以 将数据 存储在 会话中,如 用户的登录状态、购物车内容、用户偏好等。
- 服务器可以 为 每个会话 设置一个 超时时间,如果 用户 在一段时间内 没有活动,会话会 自动过期。一旦 会话过期,会话数据 将被 清除。
- 用户 可以 手动 终止会话,例如 通过 退出 登录操作。这会 导致 服务器 删除 与该用户 相关的 会话数据。
4. Cookie 和 Session 有什么区别?
- 存储位置:Cookie 数据 存储在 用户的 浏览器中,而 Session 数据 存储在 服务器 上。
- 数据容量:Cookie 存储容量 较小,一般为 几 KB。Session 存储 容量 较大,通常 没有 固定限制,取决于 服务器的 配置和资源。
- 安全性:由于 Cookie 存储在 用户浏览器 中,因此 可以 被用户 读取和篡改。相比之下,Session 数据 存储在 服务器上,更难 被用户 访问和修改。
- 传输方式:Cookie 在每次 HTTP 请求中都会 被 自动 发送到 服务器,而 Session ID 通常 通过 Cookie 或 URL 参数传递。
二、其他问题综述
1. SSL/TLS 是什么?
- SSL: Secure Socket Layer 安全套接字。
- TSL: Transport Layer Security 安全传输层协议。
- HTTPS(HyperText Transfer Protocol Secure):基于 TLS/SSL 安全版本的 HTTP 协议。
(1)SSL 和 TLS 协议 确保安全通信的 方式
- 加密:使用 加密算法 对传输的 数据 进行加密,防止 第三方截取 和 读取 敏感信息。
- 身份验证:使用 数字证书 验证 通信双方 的身份,确保 数据 传输的 可信性。
- 数据完整性:通过 使用 消息摘要算法,确保 传输的数据 在 传输过程中 没有被 纂改或损坏。
(2)SSL/TLS 工作流程
- 客户端 和 服务器 进行身份认证,确保 双方都是 合法的 通信方。
- 双方 协商 加密算法 和 加密密钥,用于 后续的 数据 加密和解密。
- 使用 协商好的 加密算法 和 密钥,对 传输的数据 进行 加密和解密,确保 数据的 机密性和完整性。
- 在 数据传输过程中,双方 可以 随时 进行密钥更新 和 重新协商,以 提高 安全性。
2. 什么是对称加密和非对称加密?
(1)对称加密
对称加密 也称为 私钥加密,使用 相同的密钥 来进行 加密和解密。
- 在 加密 过程中,明文数据 通过 应用 特定的算法 和 密钥 进行加密,生成 密文数据。解密过程则是 将 密文数据 应用 同样的 算法 和 密钥 进行解密,恢复为 明文数据。
- 由于 加密 和 解密 都使用 相同的密钥,因此 对称加密算法的 速度 通常较快,但 密钥 的 安全性 很重要。如果 密钥泄漏,攻击者 可以轻易地 解密数据。
(2)非对称加密
非对称加密 也称为 公钥加密,使用 一对 不同但 相关的 密钥:公钥和私钥。
- 公钥 用于 加密数据,私钥 用于 解密数据。如果 使用 公钥加密数据,只有 拥有 相应 私钥的人 才能 解密数据;如果 使用 私钥 加密数据,可以 使用 相应 公钥解密。
- 除了 加密和解密,非对称加密还 用于【数字签名】,可以 验证消息的 来源和 完整性。
3. DNS 是什么?
DNS 是一个 分布式 数据库系统,它 负责 将人们 易于 记忆的 域名(如 www.example.com)转换为 计算机 能够识别的 IP 地址(如192.0.2.1)。
4. DNS 解析过程?
- 先 查询 浏览器缓存 是否有 该域名 对应的 IP 地址。
- 如果 浏览器缓存 中 没有,会 去 计算机本地 的 Host 文件 中 查询 是否有 对应的缓存。
- 如果 Host 文件 中也 没有 则会 向 本地的 DNS 服务器(通常由 你的 互联网 服务 提供商(ISP)提供,比如中国移动)发送一个 DNS 查询请求。
- 如果 本地 DNS 解析器 有 该域名的 ip 地址,就会 直接返回,如果 没有 缓存 该域名的 解析记录,它会 向 根 DNS 服务器 发出 查询请求。根 DNS 服务器 并 不负责 解析域名,但它能 告诉本地 DNS 解析器 应该向 哪个 顶级域(.com/.net.org)的 DNS 服务器 继续查询。
- 本地 DNS 解析器 接着 向 指定的 顶级域名 DNS 服务器 发出 查询请求。顶级域 DNS 服务器 也不负责 具体的 域名解析,但 它能 告诉 本地 DNS 解析器 应该前往 哪个 权威 DNS 服务器 查询下一步的信息。
- 本地 DNS 解析器 最后 向 权威 DNS 服务器 发送 查询请求。权威 DNS 服务器 是 负责 存储 特定域名 和 IP 地址映射的 服务器。当 权威 DNS 服务器 收到 查询请求 时,它会 查找 "example.com" 域名 对应的 IP 地址,并 将结果 返回 给 本地 DNS 解析器。
- 本地 DNS 解析器 将 收到的 IP 地址 返回给 浏览器,并且 还会 将 域名解析结果 缓存在 本地,以便 下次 访问时 更快地 响应。
浏览器 发起连接:本地 DNS 解析器 已经 将 IP 地址 返回给 您的计算机,您的浏览器 可以 使用 该 IP 地址 与 目标 服务器 建立连接,开始 获取 网页内容。
5. CDN 是什么?
CDN,全称为 内容分发网络(content Delivery Network),将 内容存储在 分布式的 服务器上,使 用户 可以 从 距离较近的 服务器 获取 所需的 内容,从而 减少 数据传输的 时间和距离,提高 内容的 传输速度、减少 延迟和 提升 用户体验。
6. CDN 的工作流程?
- 当 用户 输入 一个域名 或 点击一个 链接时,首先会 进行 域名解析。如果 网站 启用了 CDN,DNS 解析 会 返回 距离 用户最近的 CDN 节点的 IP 地址,而不是 原始 源服务器的 IP 地址。
- 用户的 请求会 被 路由到 距离 最近的 CDN 节点,并且 CDN 节点 可以 根据 服务器的 负载 和 可用性,动态地 将请求 分发到 最适合的 服务器节点 上。
- CDN 会 首先 检查 是否已经 缓存了 该资源。如果 有缓存,CDN 节点 会直接 返回 缓存的 资源,如果 没有 缓存 所需资源,它会 从 源服务器(原始服务器)回源 获取资源,并将 资源 缓存到 节点中,以便 以后的 请求。
7. CDN 是如何加速的?
- 就近访问:CDN 在 全球范围内 部署了 多个 服务器节点,当 用户 请求访问 一个网站时,CDN 会选择 距离 用户最近的节点 来 提供内容。这 减少了 数据传输的 距离和时间,从而 降低了 延迟。
- 内容缓存:CDN 节点会 缓存 静态资源,如图片、样式表、脚本等。当 用户 请求访问 这些资源时,CDN 可以 直接从 缓存中 返回,避免了 从 源服务器 获取 资源的 延迟。
- 前置缓存:CDN 可以 根据 网站的 配置,提前 将热门的 内容 缓存在 节点中,以备 用户 请求时 快速 响应。
- 智能负载均衡:CDN 会 根据 服务器的 负载和 可用性,动态地 将 请求 分发到 合适的 服务器 节点上,确保 资源的 快速获取。
- 压缩技术:CDN 使用 压缩技术 对 内容进行 压缩,减少 传输数据的 大小,从而 加快 内容的 传输速度。
- 并行下载:由于 CDN 支持 多路复用,用户 可以在 同一个 连接上 同时 下载 多个资源,从而 提高并行 下载的 效率。