一、HTTP 详解

HTTP(HyperText Transfer Protocol)​​ 是互联网数据通信的基础协议,用于客户端(浏览器)与服务器之间的请求-响应交互

核心特性​​:

1.无连接(Connectionless)​

每次请求/响应后立即断开 TCP 连接(早期 HTTP/1.0)。HTTP/1.1 默认启用持久连接(Connection: keep-alive),但逻辑上仍视为独立的请求

2.无状态(Stateless)​

​核心问题​​:服务器不记录先前请求的任何信息(如用户登录状态)

协议层特性​​:HTTP 协议本身不保存任何请求上下文,​​每个请求相互独立

优点​
  • 服务器无需存储状态 → 降低内存占用

  • 易扩展:适合负载均衡(请求可转发至任意后端服务器)

影响​

每个请求都被视为全新请求,无法直接关联用户身份

有状态

为构建逻辑上的“有状态”,需在应用层添加额外机制

解决方案​​:

  • ​Cookie​​:服务器通过响应头 Set-Cookie在客户端存储标识符

  • ​Session​​:服务器生成唯一 Session ID 绑定用户状态(依赖 Cookie 传递 ID)

  • ​Token(如 JWT)​​:客户端在请求头携带加密令牌(Authorization: Bearer <token>

​方案​

​原理​

​示例​

​Cookie​

服务器通过 Set-Cookie在客户端存储标识符(如会话ID)

Set-Cookie: user_id=abc123; Path=/

​Session​

服务器存储用户状态(内存/数据库),通过 Cookie 中的 Session ID 关联用户

服务端存储:{ "abc123": {username:"Alice"} }

​Token​

客户端存储加密令牌(如 JWT),包含用户信息及签名,服务器无需存储状态

Authorization: Bearer eyJhbGciOi...

注意​​:

  • 这些方案在 ​​HTTP 上层​​构建状态,​​不改变 HTTP 无状态本质​​。

  • Session 依赖集中存储(如 Redis),高并发场景需解决分布式一致性

无状态vs有状态的对比与关联

​维度​

​无状态(原生 HTTP)​

​有状态(应用层实现)​

​协议设计​

请求独立,无记忆性

通过 Cookie/Session/Token 关联用户

​服务器复杂度​

高(需管理 Session 存储、Token 验证)

​扩展性​

⭐️⭐️⭐️ 优秀(无状态易水平扩展)

⭐️⭐️ 中等(需共享 Session 存储机制)

​安全性​

弱(明文传输)

可叠加 HTTPS 增强安全

​典型应用​

静态资源请求、API 无状态调用

用户登录、购物车、个性化服务

核心联系​​:

  • ​状态管理建立在 HTTP 之上​​:所有状态方案需通过 HTTP 头(Cookie/Authorization)传递标识

  • ​HTTPS 是安全基石​​:Cookie/Session ID/Token 需通过 HTTPS 传输防止窃取

典型应用场景分析
无状态优先场景​
  • ​RESTful API 设计​​:

    GET /api/products/123  # 请求包含完整资源标识符,无需上下文

    → 符合 HTTP 无状态特性,易于缓存和扩展。

  • ​CDN 静态资源分发​​:图片、CSS 等文件通过无状态请求分发 → 支持边缘节点缓存

​有状态必需场景​
  • ​用户登录系统​​:

    • 登录请求 → 服务器返回 Session ID(HTTPS + Cookie)

    • 后续请求携带 Session ID → 服务器验证身份

  • ​电商购物车​​:用户添加商品 → 服务器通过 Session 关联用户存储购物车数据

  • ​金融交易​​:敏感操作需 Token(JWT)验证身份及权限,并强制 HTTPS 加密

​HTTPS 强制场景​
  • ​所有涉及隐私的场景​​:登录、支付、个人信息修改

  • ​防止中间人攻击​​:公共 Wi-Fi 下的网络请求

  • ​合规性要求​​:GDPR、PCI-DSS 等法规强制加密

关键结论
底层差异​
  • HTTP 在 TCP 上明文传输。

  • HTTPS 通过 TLS/SSL 实现加密隧道。

​状态管理真相​
  • HTTP 协议​​天生无状态​

  • “有状态服务”是​​应用层通过 Cookie/Session/Token 模拟​​的逻辑状态

​应用选择原则​

​需求​

​技术选型​

公开静态资源

HTTP + 无状态

用户身份验证

HTTPS + Cookie/Session

分布式 API

HTTPS + JWT(无状态 Token)

高性能敏感操作

HTTPS + 短时效 Token

💡 ​​终极架构建议​​:

  • ​全站 HTTPS​​:现代浏览器已标记 HTTP 站点为“不安全”

  • ​状态最小化​​:优先使用无状态 Token(JWT)降低服务器负担

  • ​分层设计​​:

[客户端] → HTTPS → [API 网关] → 无状态微服务(认证/业务分离)

3.请求/响应模型​

  • ​请求方法​​:GET(获取资源)、POST(提交数据)、PUT/DELETE(更新/删除)等

  • ​状态码​​:

    • 200 OK:成功

    • 404 Not Found:资源不存在

    • 500 Internal Server Error:服务器错误

4.URL 结构​

http://host:port/path?query=value#fragment

  • 明文传输所有数据(路径、参数、Cookie 可见)

HTTP 底层(TCP 协议栈)

|-----------------------|
|      应用层 (HTTP)     | → 定义数据格式(请求头/响应体)
|-----------------------|
|      传输层 (TCP)      | → 建立可靠连接(三次握手),保证数据完整
|-----------------------|
|      网络层 (IP)       | → 路由寻址(IP 数据包传输)
|-----------------------|
| 数据链路层 (Ethernet)  | → 物理设备间数据帧传输
|-----------------------|

关键过程​

  • 1.客户端通过 DNS 解析域名 → 获取目标服务器 IP
  • 2.TCP三次握手建立连接(SYN → SYN/ACK → ACK)
  • 3.HTTP 发送明文请求:GET /index.html HTTP/1.1
  • 4.服务器返回明文响应:HTTP/1.1 200 OK+ HTML 内容
  • 5.TCP 四次挥手断开连接(FIN → ACK)

二、HTTPS 详解

HTTPS(HTTP Secure)​​ = HTTP + SSL/TLS 加密层,解决 HTTP 的安全风险

核心机制​​:

​1.加密(Encryption)​

  • ​对称加密​​:传输数据时使用共享密钥(效率高)

  • ​非对称加密​​:交换对称密钥时使用公钥/私钥(防止窃听)

  • ​流程​​(简化):

    • 客户端请求服务器公钥
    • 用公钥加密随机生成的​​对称密钥​​并发送给服务器
    • 双方使用对称密钥加密后续通信

2.​​身份验证(Authentication)​

  • ​数字证书​​:由可信 ​​CA(证书颁发机构)​​ 签发,证明服务器身份

  • 浏览器验证证书有效性(是否过期、域名匹配、CA 是否可信)

​3.数据完整性(Integrity)​

  • TLS 使用 MAC(消息认证码)防止数据篡改

优势​

  • 防窃听(加密数据)

  • 防篡改(数据完整性校验)

  • 防冒充(证书验证身份)

​HTTPS 底层(TLS/SSL 加密层)

|-----------------------|
|         HTTP          |
|-----------------------|
|        TLS/SSL        | → 加密、身份验证、数据完整性保护
|-----------------------|
|          TCP          |
|-----------------------|

 TLS 握手核心步骤​

  • ​Client Hello​​:客户端发送支持的加密算法 + 随机数 ClientRandom
  • ​Server Hello​​:服务器选择加密算法,返回证书 + 随机数 ServerRandom
  • ​证书验证​​:客户端验证服务器证书合法性(CA 链校验)
  • ​密钥交换​​:
    • 客户端生成 ​​Pre-Master Key​​ → 用证书公钥加密后发送给服务器

    • 双方通过 ClientRandom + ServerRandom + Pre-Master Key生成 ​​Master Secret​​(对称加密密钥)

  • ​加密通信​​:后续所有 HTTP 数据使用对称加密传输

技术要点​

  • ​非对称加密​​(RSA/ECC)用于安全交换​​对称密钥​

  • ​对称加密​​(AES)用于高效加密应用层数据

  • ​数字签名​​(SHA256)保证数据未被篡改

三、HTTP 的“无状态” vs “有状态”方案

​特性​

​无状态(Stateless)​

​有状态(Stateful)方案​

​协议本质​

HTTP 协议本身无状态

通过技术手段模拟状态

​典型场景​

基本 HTTP 请求

登录状态、购物车数据

​实现方式​

无额外处理

Cookie + Session / JWT / Token

​服务器压力​

低(无状态存储)

高(需存储 Session 数据)

​扩展性​

高(易于水平扩展)

依赖 Session 共享机制(如 Redis 集群)

​注​​:HTTP 协议始终是​​无状态​​的,"有状态服务"指应用层通过技术(如Session)实现的逻辑状态

四、关键区别对比(HTTP vs HTTPS)

​特性​

​HTTP​

​HTTPS​

​端口​

80

443

​加密​

❌ 明文传输

✅ TLS/SSL 加密

​身份验证​

❌ 无验证

✅ CA 证书验证服务器身份

​数据安全​

易被窃听/篡改

防窃听、防篡改、防冒充

​性能​

⚡ 更高(无加密开销)

⚠️ 略低(加密/解密消耗资源)

​使用场景​

不敏感信息(如静态页面)

登录、支付、隐私数据

五、如何解决 HTTP 无状态?

​1.Cookie 机制​

  • 服务器通过 Set-Cookie响应头设置键值对

  • 浏览器每次请求自动携带 Cookie

​2.Session 机制​

  • 服务器创建 Session 存储用户状态(内存/数据库)

  • 通过 Cookie 传递 Session ID 绑定用户

3.​​Token 机制(如 JWT)​

  • 服务器生成加密 Token 包含用户信息

  • 客户端存储 Token 并在请求头(Authorization)中发送

​注意​​:这些方案在​​应用层​​实现状态管理,​​不改变 HTTP 无状态本质​

六.总结

  • ​HTTP​​:高效、无状态、明文传输,适用于非敏感场景

  • ​HTTPS​​:通过 SSL/TLS 实现加密、身份认证和数据完整性,必用于安全场景

  • ​状态管理​​:需依赖 Cookie/Session/Token 等方案构建逻辑状态

选择 HTTP/HTTPS 取决于数据敏感性,而状态管理是构建复杂应用的必然需求

 

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

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

相关文章

飞算JavaAI:开启 Java 开发 “人机协作” 新纪元

每日一句 明天是新的一天&#xff0c; 你也不再是昨天的你。 目录每日一句一、需求到架构&#xff1a;AI深度介入开发“源头设计”1.1 需求结构化&#xff1a;自然语言到技术要素的精准转化1.2 架构方案生成&#xff1a;基于最佳实践的动态适配二、编码全流程&#xff1a;从“…

Qt项目锻炼——TODO(五)

发现问题如果是自己创建的ui文件&#xff0c;怎么包含进自己的窗口类并且成为ui成员&#xff1f;一般来说Qt designer 会根据你.ui文件生成对应的ui_文件名这个类&#xff08;文件名是ui文件名&#xff09;&#xff0c;它包含了所有 UI 组件&#xff08;如按钮、文本框、标签等…

Vue框架之模板语法全面解析

Vue框架之模板语法全面解析一、模板语法的核心思想二、插值表达式&#xff1a;数据渲染的基础2.1 基本用法&#xff1a;渲染文本2.2 纯HTML渲染&#xff1a;v-html指令2.3 一次性插值&#xff1a;v-once指令三、指令系统&#xff1a;控制DOM的行为3.1 条件渲染&#xff1a;v-if…

从零开始的语言模型构建 CS336 第一课(一)

语言模型的发展历史 &#x1f3d7; Early foundation models (2010年代后期) 2018&#xff1a;ELMo&#xff08;基于 LSTM 预训练 微调&#xff09;[Peters 2018]2018&#xff1a;BERT&#xff08;基于 Transformer 预训练 微调&#xff09;[Devlin 2018]2019&#xff1a;G…

微信获取access_token授权的两种不同情况

1.网页授权&#xff1a;需要页面调用授权的sdk&#xff0c;首先需要获取到code参数 &#xff08;A.网页版的获取code参考另一篇文章&#xff1a;https://blog.csdn.net/ettamei/article/details/148763361?spm1011.2415.3001.5331 B.前端sdk提供&#xff1a;code只有5分钟的有…

达梦数据库windows静默安装

<DATABASE> <!-- 安装数据库的语言配置&#xff0c;简体中文版: ZH&#xff0c;繁体中文版: CHT&#xff0c;英文版: EN&#xff0c;不区分大小写。不允许为空 --> <LANGUAGE>ZH</LANGUAGE> <!-- 安装程序的时区配置&#xff0c;缺省为08:00&#…

20250709荣品RD-RK3588开发板的Android13系统下修改为连续长按10s开机

20250709荣品RD-RK3588开发板的Android13系统下修改为连续长按10s开机 2025/7/9 10:11缘起&#xff1a;由于荣品RD-RK3588开发板使用的PMIC是RK806。 以前在荣品PRO-RK3566开发板上使用的PMIC是RK809上做过了长按开机的。 直接迁移过来了&#xff01;1、根据RK809的DATASHEET&a…

20250713-`Seaborn.pairplot` 的使用注意事项

Seaborn.pairplot 的使用注意事项 sns.pairplot 是 Seaborn 中最常用、最强大的探索性数据分析&#xff08;EDA&#xff09;函数之一。 它在一个调用里就能同时展示&#xff1a; 任意两两变量间的 散点图&#xff08;观察关系、聚类、异常值&#xff09;对角线上每个变量的 单…

如何选择合适的AI论文写作工具?七个AI英文论文写作网站

在写作英文论文时&#xff0c;许多人往往会遇到写作思路卡壳、语言不流畅、重复率过高等问题。幸运的是&#xff0c;AI论文写作工具的出现&#xff0c;极大地提升了写作效率和质量。这些工具不仅可以帮你快速生成内容、扩展论点&#xff0c;还可以优化语言&#xff0c;帮助你顺…

【保姆级喂饭教程】idea中安装Conventional Commit插件

目录前言一、安装二、测试前言 之前了解到了Conventional Commit规范&#xff0c;idea中好像没什么钩子工具&#xff0c;测试一下Conventional Commit插件吧 一、安装 点击file-settings 点击plugins插件&#xff0c;搜索Conventional Commit&#xff0c;点击install安装&…

# 电脑每次重启都自动启动惠普安装程序,怎么取消?

电脑每次重启都自动启动惠普安装程序&#xff0c;怎么取消&#xff1f; 一、通过任务管理器禁用&#xff1a; 1&#xff09;右键点击任务栏上的空白区域&#xff0c;选择 “任务管理器”。 2&#xff09;在任务管理器窗口中&#xff0c;点击顶部菜单栏上的 “启动” 选项卡。 3…

QT遇到过的样式记录

此帖主要记录平常工程里遇到的qt样式 窗口无边框 原始文档 void QWidget::setWindowFlag(Qt::WindowType flag, bool on true) Sets the window flag flag on this widget if on is true; otherwise clears the flag. This function was introduced in Qt 5.9. See also se…

软件设计师中级概念题

软件过程模型 1. 瀑布模型&#xff1a; 五个阶段&#xff1a;需求分析、设计、编码、测试、运行与维护。 为软件的开发和维护提供了一种有效的管理模式&#xff0c;它是以文档作为驱动、合适于软件需求很明确的软件项目模型。瀑布模型假设&#xff0c;一个待开发的系统需求是完…

Elasticsearch安装、入门、基础API操作、全文检索、精准查询、地理查询、复合查询、排序、分页、高亮、数据聚合、自动补全、数据同步、ES集群

学习资料&#xff1a; 通过网盘分享的文件&#xff1a;Elasticsearch 链接: https://pan.baidu.com/s/18BxA0BH0G–jwy95uFmFZQ 提取码: yyds 初识ES正向索引倒排索引ES与MySQL 概念对比安装ES操作索引库mapping属性创建索引库{"mappings": {"properties":…

教程:如何查看浏览器扩展程序的源码

在学习前端、自动化或扩展开发时&#xff0c;我们常常会想研究某个浏览器插件的实现逻辑。即使扩展没有公开源码&#xff0c;只要我们本地安装了它&#xff0c;就可以查看它的完整源代码进行学习。✅ 方法一&#xff1a;从浏览器插件目录提取源码 第一步&#xff1a;打开扩展程…

虚拟储能与分布式光伏协同优化:新型电力系统的灵活性解决方案

安科瑞顾强摘要&#xff1a; 在全球能源结构向低碳化、智能化加速转型的背景下&#xff0c;分布式光伏的大规模接入为电力系统带来机遇的同时&#xff0c;也因其波动性与间歇性带来了运行挑战。本文聚焦于虚拟储能系统&#xff08;Virtual Energy Storage System, VESS&#xf…

java valueOf方法

一,什么是valueOf方法?valueOf是java包装类(比如Long,Integer等)中提供的一个静态方法二,valueOf的主要作用是什么主要作用是将其他类型的数据转换为当前包装类的对象三,代码实例:咱们以Long.valueOf为例,1,他可以接受一个long类型的数值,返回对应的Long对象(把基本类型long包…

工业平板电脑 vs 消费级平板:从防护等级到使用寿命全方面对比

平板电脑已经广泛应用于各个行业。但你知道吗&#xff1f;市面上常见的“平板”其实可以分为两大类&#xff1a;工业平板电脑和消费级平板电脑。虽然它们看起来都是“平板”&#xff0c;但用途、性能和适用场景却大不相同。今天&#xff0c;我们就来聊聊这两者的区别&#xff0…

MySQL技术笔记-索引+慢 SQL+锁 全链路优化实战

目录 前言 MySQL索引 一、概述 二、索引分类 &#xff08;一&#xff09;按功能特性分类 &#xff08;二&#xff09;按存储方式分类 &#xff08;三&#xff09;按数据结构分类 &#xff08;四&#xff09;按索引字段数量分类 三、索引的优缺点 &#xff08;一&…

S7-1200 与 S7-300 PNS7-400 PN UDP 通信 TIA 相同项目

7-1200 与 S7-300 PN/S7-400 PN UDP 通信 TIA 相同项目S7-1200 与 S7-300 PN 口之间的以太网通信可以通过 UDP 协议来实现&#xff0c;使用的通信指令是在双方 CPU 调用通信-开放式用户通信TSEND_C&#xff0c;TRCV_C&#xff08;1200支持&#xff0c;300不支持&#xff09;或T…