【网络面试篇】其他面试题——Cookie、Session、DNS、CDN、SSL/TLS、加密概念

目录

一、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 支持 多路复用,用户 可以在 同一个 连接上 同时 下载 多个资源,从而 提高并行 下载的 效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/469025.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

隧道论文阅读2-采用无人融合扫描数据的基于深度学习的垂直型隧道三维数字损伤图

目前存在的问题: 需要开发新的无人测量系统测量垂直隧道图像数据量巨大,基于深度学习完成损伤评估跟踪获取图像位置的困难,对大型基础设施感兴趣区域(roi)的2d和3d地图建立进行了研究,对整个目标结构的损伤定位仍然具有挑战性。为…

CCF-A类 HPCA 2025 重磅揭晓:录取数据公布

近日,第31届国际计算机体系结构领域顶级会议HPCA (International Symposium on High Performance Computer Architecture) 正式发布了2025年会议的录用通知!本届会议共收到了534 篇提交论文,其中,112篇论文被接收,整体…

Linux应用——线程池

1. 线程池要求 我们创建线程池的目的本质上是用空间换取时间,而我们选择于 C 的类内包装原生线程库的形式来创建,其具体实行逻辑如图 可以看到,整个线程池其实就是一个大型的 CP 模型,接下来我们来完成它 2. 整体模板 #pragma …

IDM扩展添加到Edge浏览器

IDM扩展添加到Edge浏览器 一般情况下,当安装IDM软件后,该软件将会自动将IDM Integration Module浏览器扩展安装到Edge浏览器上,但在某些情况下,需要我们手动安装,以下为手动安装步骤 手动安装IDM扩展到Edge浏览器 打…

docker 拉取MySQL8.0镜像以及安装

目录 一、docker安装MySQL镜像 搜索images 拉取MySQL镜像 二、数据挂载 在/root/mysql/conf中创建 *.cnf 文件 创建容器,将数据,日志,配置文件映射到本机 检查MySQL是否启动成功: 三、DBeaver数据库连接 问题一、Public Key Retrieval is not allowed 问题…

深入探索Waymo自动驾驶技术发展:从DARPA挑战赛到第五代系统的突破

引言 自动驾驶技术正引领着未来出行方式的革命,而Waymo作为全球自动驾驶领域的先锋,始终走在技术发展的最前沿。本文基于Waymo联席CEO德米特里多尔戈夫(Dmitri Dolgov)在No Priors节目中的访谈,全面介绍Waymo的技术发展…

鸿蒙移动应用开发-------初始arkts

一. 什么是arkts ArkTS是HarmonyOS优选的主力应用开发语言。 ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,保持了TS的基本风格,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳定性和…

c++ 输入三条边 绘制三角形

安装图形库 参考 #include "graphics.h" // 就是需要引用这个图形库 #include <conio.h> #include <stdio.h> #include <math.h>// 判断是否可以构成三角形 int isTriangle(int a, int b, int c) {return (a b > c) && (a c >…

A20红色革命文物征集管理系统

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

Logrus入门

Logrus入门 1. 下载 go get github.com/sirupsen/logrus2. logrus常用方法 logrus.Debugln("Debugln") logrus.Infoln("Infoln") logrus.Warnln("Warnln") logrus.Errorln("Errorln") logrus.Println("Println")// 输出如…

pyspark入门基础详细讲解

1.前言介绍 学习目标&#xff1a;了解什么是Speak、PySpark&#xff0c;了解为什么学习PySpark&#xff0c;了解课程是如何和大数据开发方向进行衔接 使用pyspark库所写出来的代码&#xff0c;既可以在电脑上简单运行&#xff0c;进行数据分析处理&#xff0c;又可以把代码无缝…

权限管理练习2

1.在/home中创建一个名为 file1.txt 的文件&#xff0c;并设置权限为&#xff1a;所有者和组成员可以读写&#xff0c;但其他人只能读。 所有者和组成员可以读写 u rw- g rw- o r-- 2.在 /home 目录下创建一个名为 shared 的子目录&#xff0c;使得所有用户都可以进入&#…

面试经典 150 题:121,125

121. 买卖股票的最佳时机 【参考代码】 动态规划解决 class Solution { public:int maxProfit(vector<int>& prices) {int size prices.size();int min_price 99999, max_profit 0;for(int i0; i<size; i){if(prices[i] < min_price){min_price prices[i…

数据集划分

1、 sklearn玩具数据集介绍 数据量小&#xff0c;数据在sklearn库的本地&#xff0c;只要安装了sklearn&#xff0c;不用上网就可以获取 2 sklearn现实世界数据集介绍 数据量大&#xff0c;数据只能通过网络获取&#xff08;科学上网&#xff09; 3 sklearn加载玩具数据集 示…

图形几何之美系列:仿射变换矩阵之先转后偏

“在几何计算、图形渲染、动画、游戏开发等领域&#xff0c;常需要进行元素的平移、旋转、缩放等操作&#xff0c;一种广泛应用且简便的方法是使用仿射变换进行处理。相关的概念还有欧拉角、四元数等&#xff0c;四元数在图形学中主要用于解决旋转问题&#xff0c;特别是在三维…

刷题强训(day05) -- 游游的you、腐烂的苹果、孩子们的游戏(圆圈中最后剩下的数)

目录 1、游游的you 1.1 题目 1.2 思路 1.3 代码实现 2、腐烂的苹果 2.1 题目 2.2 思路 2.3 代码实现 3、孩子们的游戏(圆圈中最后剩下的数) 3.1 题目 3.2 思路 3.3 代码实现 3.3.1 环形链表 ​编辑3.3.2 动态规划 ​编辑 1、游游的you 1.1 题目 1.2 思路 根据题…

PyQt5超详细教程终篇

PyQt5超详细教程 前言 接&#xff1a; [【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;](【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;-CSDN博客) 建议把代码复制到pycahrm等IDE上面看实际效果&#xff0c;方便理…

并查集算法实现

模板 模板分为三大部分 初始化查询i的祖先合并i j(使他们祖先成为一个人) // 1 初始化 void init(int n) {for (int i 1; i < n; i)fa[i] i;//将该数的父节点定义为该数 }// 2 查询i的祖先 int find(int i) {if (i fa[i])return i;else{![查](../pic/并查集.png)fa[i]…

(实战)WebApi第13讲:怎么把不同表里的东西,包括同一个表里面不同的列设置成不同的实体,所有的给整合到一起?【前端+后端】、前端中点击标签后在界面中显示

一、实现全局跨域&#xff1a;新建一个Controller&#xff0c;其它的controller都继承它 1、新建BaseController 2、在后端配置&#xff0c;此处省略【详情见第12讲四、3、】 3、其它的控制器继承BaseController&#xff0c;这个时候就能够完成全局的跨域 【向后台传cookie和…

【计算机基础——数据结构——红黑树】

1. 红黑树&#xff08;RBTree&#xff09; 为什么HashMap不直接使用AVL树&#xff0c;而是选择了红黑树呢&#xff1f; 由于AVL树必须保证左右子树平衡&#xff0c;Max(最大树高-最小树高) < 1&#xff0c;所以在插入的时候很容易出现不平衡的情况&#xff0c;一旦这样&…