【网络面试篇】其他面试题——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.xdnf.cn/news/12183.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【数值分析】复习1---牛顿迭代法

首先,我们先来回顾一下牛顿迭代法的概念。 这里注意的是,牛顿迭代法是一种线性方法,它在点 x k x_k xk​处进行线性展开,而且展开成一阶泰勒公式!注意是一阶,不是二阶,不是更高阶,所…

文本语义分块、RAG 系统的分块难题:小型语言模型如何找到最佳断点

文本语义分块、RAG 系统的分块难题:小型语言模型如何找到最佳断点? 转自jina最新的关于文本语义分块的分享和模型 之前我们聊过RAG 里文档分块 (Chunking) 的挑战,也介绍了 迟分 (Late Chunking) 的概念,它可以在向量化的时候减…

PostgreSQL中如果有Left Join的时候索引怎么加

在PostgreSQL中,当你的查询包含多个LEFT JOIN和WHERE条件时,合理地添加索引可以显著提高查询性能。以下是一些具体的优化步骤和建议: 1. 分析查询 使用 EXPLAIN ANALYZE 命令分析你的查询,了解查询的执行计划,识别出连…

温度虽寒,其道犹变:OpenAI接口之温度参数设置为0,为何每次回复仍有不确定性?

问题描述 调用openai API,使用templature 0,每次返回的内容仍有一些不同 >>> client OpenAI( ... api_keyapi_key, ... base_urlapi_base) #第一次尝试 >>> response client.chat.completions.create(mo…

vue-h5:在h5中实现相机拍照加上身份证人相框和国徽框

参考: https://blog.csdn.net/weixin_45148022/article/details/135696629 https://juejin.cn/post/7327353533618978842?searchId20241101133433B2BB37A081FD6A02DA60 https://www.freesion.com/article/67641324321/ https://github.com/AlexKratky/vue-camer…

国标GB28181视频平台EasyCVR私有化部署视频平台对接监控录像机NVR时,录像机“资源不足”是什么原因?

EasyCVR视频融合云平台,是TSINGSEE青犀视频“云边端”架构体系中的“云平台”系列之一,是一款针对大中型项目设计的跨区域、网络化、视频监控综合管理系统平台,通过接入视频监控设备及视频平台,实现视频数据的集中汇聚、融合管理、…

【Android、IOS、Flutter、鸿蒙、ReactNative 】标题栏

Android 标题栏 参考 Android Studio版本 配置gradle镜像 阿里云 Android使用 android:theme 显示标题栏 添加依赖 dependencies {implementation("androidx.appcompat:appcompat:1.6.1")implementation("com.google.android.material:material:1.9.0")…

歌尔微拟赴港IPO,揭示AI+终端升级的供给革命

1959年,美国物理学家理查德费曼在他著名的演讲“底部有足够的空间”中,首次提出了将机器小型化到原子和分子尺度的想法。这个充满想象力的观点,为世界科技发展开启了一扇新的窗口。 时至今日,应这一理念而生的MEMS产品已经成为各…

ROS第七梯:ROS+VSCode+Python环境配置

第一步:Python版本的ROS项目和C++版本的ROS项目前期创建功能包的步骤基本一致,具体可参考第二章。 第二步:在功能包的目录下创建一个与src目录平级的文件夹,名称写作scripts: 第三步:在scripts文件夹下创建python的节点代码文件,此处以一个订阅节点代码文件为例:

洛谷解题日记||基础篇3

#include <iostream> #include <iomanip> // 用于设置输出格式 using namespace std;double a, b, c, d;// 定义方程 f(x) ax^3 bx^2 cx d double fc(double x) {return a * x * x * x b * x * x c * x d; }int main() {double l, r, m, x1, x2;int s 0;/…

软件测试学习记录 Day1

根据黑马程序员最新版的软件测试课程所做的笔记&#xff0c;需要原件后台私信&#xff1a; 练习提取测试点&#xff1a; 博主的答案&#xff0c;有不一样看法的可评论区讨论&#xff1a;

代码随想录刷题记录(二十七)——55. 右旋字符串

&#xff08;一&#xff09;问题描述 55. 右旋字符串&#xff08;第八期模拟笔试&#xff09;https://kamacoder.com/problempage.php?pid1065字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k&#xff0c;请编写一个函数&…

FreeRTOS 24:事件组EventGroup等待、清零、获取操作

等待事件标志位xEventGroupWaitBits() 既然标记了事件的发生&#xff0c;那么我怎么知道他到底有没有发生&#xff0c;这也是需要一个函数来获 取 事 件 是 否 已 经 发 生 &#xff0c; FreeRTOS 提 供 了 一 个 等 待 指 定 事 件 的 函 数 — — xEventGroupWaitBits()&…

信息安全数学基础(47)域的结构

一、域的定义 设F为一个非空集合&#xff0c;在其上定义两种运算&#xff1a;加法和乘法。如果这两种运算在集合上封闭&#xff0c;且满足以下条件&#xff0c;则称F对于规定的乘法和加法构成一个域&#xff1a; F中所有元素对于加法形成加法交换群&#xff0c;即加法满足交换律…

#渗透测试#SRC漏洞挖掘#CSRF漏洞的防御

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

HarmonyOS 沉浸式状态实现的多种方式

1. HarmonyOS 沉浸式状态实现的多种方式 HarmonyOS 沉浸式状态实现的多种方式 1.1. 方法一 1.1.1. 实现讲解 &#xff08;1&#xff09;首先设置setWindowLayoutFullScreen(true)&#xff08;设置全屏布局&#xff09;。   布局将从屏幕最顶部开始到最底部结束&#xff0c…

在API接口数据获取过程中,如何确保数据的安全性和隐私性?

在API接口数据获取过程中&#xff0c;确保数据的安全性和隐私性至关重要。以下是一些关键措施&#xff0c;可以帮助开发者和管理者保护API接口的数据安全和隐私性&#xff1a; 身份认证和授权 身份认证&#xff1a;确认用户身份的过程&#xff0c;常用的身份认证方式包括用户…

C++常用的特性-->day05

友元的拓展语法 声明一个类为另外一个类的友元时&#xff0c;不再需要使用class关键字&#xff0c;并且还可以使用类的别名&#xff08;使用 typedef 或者 using 定义&#xff09;。 #include <iostream> using namespace std;// 类声明 class Tom; // 定义别名 using …

python-27-Python ORM系列之彻底搞明白ORM概念,对ORM进行封装结合FastAPI实现数据库的增删改查,联表查询等接口

python-27-Python ORM系列之彻底搞明白ORM概念&#xff0c;对ORM进行封装结合FastAPI实现数据库的增删改查&#xff0c;联表查询等接口 一.简介 在Python基础系列ORM部分为大家介绍了如何搭建MySQL数据和MySQL一些访问配置&#xff0c;同时也介绍了pymysql库的封装来实现对数…

从哈佛哲学系到蛋白质设计大师,David Baker:AlphaFold令我深刻认识到深度学习的力量

要说谁是引领蛋白质设计的世界级大师&#xff0c;美国华盛顿大学的 David Baker 教授可谓是当之无愧&#xff0c;作为该领域的顶级专家&#xff0c;Baker 在蛋白质方向发表研究论文 700 余篇&#xff0c;引用量累计超 17.7 万。今年 10 月&#xff0c;因其在蛋白质设计方面的卓…