【网络安全面经】技术性问题3
11. 一次完整的 HTTP 请求过程
- 域名解析:通过 DNS 将域名转换为 IP 地址,如上述 DNS 的工作原理。
- 建立 TCP 连接:客户端向服务器发送 SYN 报文段,经过三次握手建立 TCP 连接。
- 发送 HTTP 请求:客户端向服务器发送 HTTP 请求报文,请求报文包括请求行(包含请求方法,如 GET、POST 等,请求的 URL 和 HTTP 协议版本)、请求头(包含客户端的一些信息,如浏览器类型、语言等)和请求体(对于 POST 请求,请求体中包含要提交的数据)。
- 服务器处理请求:服务器收到 HTTP 请求后,根据请求的内容进行处理。如果请求的是一个网页,服务器会查找相应的网页文件,并可能执行服务器端脚本(如 PHP、ASP 等)。
- 发送 HTTP 响应:服务器处理完请求后,向客户端发送 HTTP 响应报文。响应报文包括响应行(包含 HTTP 协议版本、状态码和状态消息,如 200 OK 表示请求成功)、响应头(包含服务器的一些信息,如服务器类型、内容类型等)和响应体(包含实际的响应内容,如网页的 HTML 代码)。
- 关闭 TCP 连接:客户端收到 HTTP 响应后,根据响应内容进行处理(如在浏览器中显示网页)。然后,客户端和服务器通过四次挥手关闭 TCP 连接。
12. Cookies 和 session 区别
- Cookies
- 定义:是由服务器发送给客户端浏览器,并保存在客户端本地的一小段文本信息。
- 工作机制
- 当用户第一次访问网站时,服务器可以在响应头中设置一个或多个 Cookies,浏览器收到响应后,会将 Cookies 保存起来。
- 下次用户再次访问该网站时,浏览器会在请求头中自动带上这些 Cookies,服务器根据收到的 Cookies 来识别用户的身份或获取用户的相关信息。
- 特点
- 存储在客户端,容易被篡改。
- 可以设置过期时间,在过期时间之前,每次访问网站都会带上 Cookies。
- Session
- 定义:是服务器端为了维护用户状态而创建的一种机制。
- 工作机制
- 当用户第一次访问网站时,服务器会为用户创建一个唯一的会话 ID,并将该会话 ID 通过 Cookies 或 URL 重写等方式传递给客户端。
- 客户端在后续的请求中带上会话 ID,服务器根据会话 ID 在服务器端找到对应的会话对象,会话对象中存储了用户的相关信息。
- 特点
- 会话信息存储在服务器端,相对安全。
- 通常需要依赖 Cookies 或其他机制来传递会话 ID,如果客户端禁用了 Cookies,可能需要采用其他方式(如 URL 重写)来传递会话 ID。
13. GET 和 POST 的区别(续)
- 安全性(续)
- POST:数据在请求体中,相对 GET 更安全一些,但如果没有采用加密传输(如 HTTPS),数据仍然可能被截获。
- 缓存
- GET:通常会被浏览器缓存,当用户再次访问相同的 URL 时,浏览器可能直接从缓存中获取数据,而不向服务器发送请求。
- POST:一般不会被浏览器缓存,每次提交 POST 请求都会向服务器发送数据。
- 幂等性
- GET:具有幂等性,多次执行相同的 GET 请求,对服务器资源的影响是相同的,即不会改变服务器资源状态。例如多次查询数据库中的数据,结果是相同的。
- POST:一般不具有幂等性,多次执行相同的 POST 请求可能会对服务器资源产生不同的影响,如多次提交订单会创建多个订单。
14. HTTPS 和 HTTP 的区别
- 数据传输安全性
- HTTP(Hypertext Transfer Protocol):数据以明文形式传输,在传输过程中容易被窃取、篡改。例如,用户在 HTTP 网站上输入的登录密码可能会被网络中的攻击者截获。
- HTTPS(Hypertext Transfer Protocol Secure):在 HTTP 的基础上加入了 SSL/TLS 协议进行加密传输。它使用公钥 - 私钥对数据进行加密和解密,确保数据在传输过程中的安全性。
- 端口号
- HTTP:默认端口号是 80。
- HTTPS:默认端口号是 443。
- 证书
- HTTP:不需要证书。
- HTTPS:需要 SSL 证书,证书由证书颁发机构(CA)颁发,用于验证网站的身份。当用户访问 HTTPS 网站时,浏览器会检查证书的有效性,如果证书无效或过期,浏览器会提示用户存在安全风险。
- 搜索引擎优化(SEO)
- HTTP:随着网络安全的重视,搜索引擎对 HTTP 网站的排名可能会逐渐降低。
- HTTPS:搜索引擎更倾向于对 HTTPS 网站进行更好的排名,因为它能提供更安全的用户体验。
15. session 的工作原理?
- 创建
- 当用户第一次访问网站时,服务器会创建一个新的会话(Session),并为该会话生成一个唯一的会话 ID(Session ID)。
- 存储
- 服务器会将会话相关的数据(如用户登录信息、购物车数据等)存储在服务器端的内存或其他存储介质(如数据库)中,以会话 ID 作为索引。
- 传递
- 服务器将会话 ID 传递给客户端,通常通过以下方式:
- Cookies:最常见的方式是将会话 ID 放在 Cookies 中发送给客户端,客户端在后续的每次请求中都会自动带上 Cookies 中的会话 ID。
- URL 重写:如果客户端禁用了 Cookies,服务器可以将会话 ID 附加在 URL 后面,如
http://example.com/page.jsp;jsessionid=123456,这种方式需要对网站中的链接进行处理,确保会话 ID 能够正确传递。
- 服务器将会话 ID 传递给客户端,通常通过以下方式:
- 检索和使用
- 当客户端再次发送请求时,服务器根据收到的会话 ID 检索对应的会话数据,根据会话数据来处理用户的请求。例如,如果用户已经登录,服务器可以根据会话中的用户登录信息提供个性化的服务。
- 销毁
- 当用户退出登录、会话超时或服务器决定结束会话时,服务器会销毁对应的会话数据,并停止跟踪该用户的会话状态。
16. http 长连接和短连接的区别
- 短连接(HTTP Short - Connection)
- 定义:每次 HTTP 请求 / 响应完成后,客户端和服务器之间的 TCP 连接就会立即关闭。
- 工作过程
- 客户端向服务器发起 HTTP 请求,先建立 TCP 连接(通过三次握手)。
- 服务器处理请求并返回 HTTP 响应。
- 客户端收到响应后,通过四次挥手关闭 TCP 连接。
- 下次客户端有新的 HTTP 请求时,需要重新建立 TCP 连接。
- 应用场景:适用于对实时性要求不高、请求频率较低的场景,如简单的网页浏览,用户在不同页面之间切换时,每次重新建立连接对用户体验影响不大。
- 长连接(HTTP Long - Connection)
- 定义:在一次 TCP 连接中可以进行多次 HTTP 请求 / 响应,连接在一段时间内保持打开状态,直到达到预定的条件(如空闲时间过长、连接数量达到上限等)才会关闭。
- 工作过程
- 客户端向服务器发起 HTTP 请求,建立 TCP 连接。
- 服务器处理请求并返回 HTTP 响应,但 TCP 连接不关闭。
- 客户端可以在该连接上继续发起新的 HTTP 请求,服务器继续处理和响应,多次重复此过程。
- 当满足关闭条件时,通过四次挥手关闭 TCP 连接。
- 应用场景:适用于对实时性要求高、请求频繁的场景,如在线聊天、网页游戏等,避免了频繁建立和断开 TCP 连接带来的开销,提高了数据传输效率。
相关文章:
【网络安全面经】技术性问题3
11. 一次完整的 HTTP 请求过程 域名解析:通过 DNS 将域名转换为 IP 地址,如上述 DNS 的工作原理。建立 TCP 连接:客户端向服务器发送 SYN 报文段,经过三次握手建立 TCP 连接。发送 HTTP 请求:客户端向服务器发送 HTTP…...
前后端交互之动态列
一. 情景 在做项目时,有时候后会遇到后端使用了聚合函数,导致生成的对象的属性数量或数量不固定,因此无法建立一个与之对应的对象来向前端传递数据,这时可以采用NameDataListVO向前端传递数据。 Data Builder AllArgsConstructo…...
递归(3)----力扣40组合数2,力扣473火柴拼正方形
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: candidates [10,1,2,7,6,1…...
十一:HTTP 状态码详解:解读每一个响应背后的意义
HTTP(超文本传输协议)是网络通信的基石之一,主要用于客户端(例如浏览器)和服务器之间的通信。为了让服务器能准确地向客户端反馈请求的处理状态,HTTP设计了一套标准的状态码。每一个状态码代表了特定的含义,指示了请求的状态、潜在的问题或成功的信息。 1. 信息响应 (1…...
《译文》2024年11月数维杯国际大学生数学建模挑战赛题目
# 赛题正式发布 2024年第十届数维杯国际大学生数学建模挑战赛顺利开赛,竞赛开始时间为北京时间2024年11月15日09:00至北京时间2024年11月19日09:00,共计4天,竞赛题目正式发布,快来一起围观,你认为今年的哪个题目更具有…...
shell命令统计文件行数之和
你可以使用以下 shell 命令来统计每个 .txt 文件的行数,并将其加和在一起: find . -name "*.txt" -not -name "*.json" -exec wc -l {} + | awk {sum += $1} END {print sum} 解释: find . -name "*.txt" -not -name "*.json": f…...
第02章 CentOS基本操作
2.文件基本操作【文件操作(一)】 目标 理解Linux下路径的表示方法能够使用命令(mkdir和touch)在指定位置创建目录和文件能够使用命令(rm)删除指定的目录和文件能够使用命令(ls)列出目录里的文件能够使用命令(cat,head,tail,less,more)查看文件内容理解标…...
241113.学习日志——[CSDIY] [ByteDance] 后端训练营 [02]
CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!&…...
【HOT100第三天】和为K的子数组,最大子数组和,合并区间,轮转数组
今天练的是子串和子数组专题 ~ (前缀和那里差点学死了) 560.和为K的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 先写个暴力法,用昨天刚学…...
设计模式-Adapter(适配器模式)GO语言版本
前言 个人感觉Adapter模式核心就在于接口之间的转换。将已有的一些接口转换成其他接口形式。并且一般用于对象上,而不是系统上 问题 就用一个简单的问题,懂数据结构的同学可能知道双端队列。那么就用双端队列实现一个栈(stack)或…...
SAM_Med2D 训练完成后boxes_prompt没有生成mask的问题
之前对着这这篇文章去微调SAM_Med2D(windows环境),发现boxes_prompt空空如也。查找了好长时间问题SAM-Med2D 大模型学习笔记(续):训练自己数据集_sam训练自己数据集-CSDN博客 今天在看label2image_test.json文件的时候发现了一些端倪: 官方…...
游戏引擎学习第18天
clang-format 相关的配置可以参考下面 .clang-format 是用来配置代码格式化规则的文件,主要用于 Clang-Format 工具。以下是 .clang-format 文件中的一些常用设置: 1. 基础设置 Language: Cpp # 指定语言 (C, C, Java, JavaScript, etc…...
Kotlin return与return@forEachIndexed
Kotlin return与returnforEachIndexed fun main() {val data arrayOf(0, 1, 2, 3, 4)println("a")data.forEachIndexed { index, v ->if (v 2) {//类似while循环中的continue//跳过,继续下一个forEachIndexed迭代returnforEachIndexed}println("…...
基于Canny边缘检测和轮廓检测
这段代码实现了基于Canny边缘检测和轮廓检测,从图像中筛选出面积较大的矩形,并使用OpenCV和Matplotlib显示结果。主要流程如下: 步骤详解: 读取图像: img cv2.imread(U:/1.png)使用cv2.imread()加载图像。 转换为灰…...
力扣题目解析--合并k个升序链表
题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下…...
Linux:调试器-gdb/cgdb
文章目录 一、编译成debug1、-g 选项 二、gdb调试命令1、在CentOS系统下检查安装gdb2、进入gdb模式3、quit 退出gdb4、list (简写 l)显示文件内容5、b 打断点6、 r / run运行程序7、c 让程序直接运行完 三、cgdb1、info b查看打的所有断点2、d 删除断点3…...
『VUE』30. 生命周期的介绍(详细图文注释)
目录 生命周期生命周期的8阶段生命周期小例子总结 欢迎关注 『VUE』 专栏,持续更新中 欢迎关注 『VUE』 专栏,持续更新中 生命周期 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板…...
Python 人脸检测:使用 Dlib 和 OpenCV
简介 本文用Python、Dlib 和 OpenCV 库来检测图像中的人脸,并在人脸上绘制矩形框进行窗口显示。 环境准备 在开始之前,请确保您的计算机上已安装 Python。此外,您还需要安装以下库: dlib:一个包含多种机器学习算法…...
【大数据学习 | flume】flume的概述与组件的介绍
1. flume概述 Flume是cloudera(CDH版本的hadoop) 开发的一个分布式、可靠、高可用的海量日志收集系统。它将各个服务器中的数据收集起来并送到指定的地方去,比如说送到HDFS、Hbase,简单来说flume就是收集日志的。 Flume两个版本区别: 1&…...
torch.is_storage()
torch.is_storage() 判断给定的对象是否是一个 PyTorch 存储对象 PyTorch 存储对象:PyTorch 中,存储对象(Storage)是一个低级别的对象,它表示一个存储数据的连续内存块。存储对象不包含任何关于数据如何解释的信息&a…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 三、匿名函数与闭包1. 匿名函数(Lambda函…...
