HTTPS 与 HTTP 的区别在哪?

news/2025/3/1 21:16:12/

HTTP与HTTPS作为互联网数据传输的核心协议,其通信机制与安全特性深刻影响着现代网络应用的可靠性与用户体验。本文将解析两者的通信流程、安全机制及核心差异。

一、HTTP的通信机制

先来看看HTTP是什么吧。

HTTP基于TCP/IP协议栈,采用经典客户端-服务器模型:

  1. TCP连接建立\
    通过三次握手创建可靠传输通道(源IP:端口 ↔ 目标IP:端口),默认端口80。
  2. 请求-响应交互\
    浏览器发起到服务器的 TCP 连接。

<!---->

GET /index.html HTTP/1.1
Host: www.baidu.com
  1. 服务器处理与响应\
    服务器接收来自浏览器的 TCP 连接。

<!---->

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>...</html>
  1. 交换信息\
    浏览器(HTTP 客户端)与 Web 服务器(HTTP 服务器)交换 HTTP 消息。
  2. 连接终止\
    完成传输后通过四次挥手断开连接,关闭 TCP 连接。

二、HTTPS的进化

HTTPS在HTTP与TCP层之间插入SSL/TLS加密层,通过三重防护机制应对安全威胁:

安全威胁防护机制实现方式
数据窃听AES-256等对称加密会话密钥动态协商
数据篡改SHA-256摘要算法数字签名验证数据完整性
身份伪造X.509数字证书体系CA机构签发服务器身份证书

那么,SSL 和 TLS 的区别是什么呢?

总的来说,SSL 和 TLS 没有太大的区别。

SSL 指安全套接字协议(Secure Sockets Layer),首次发布与 1996 年。SSL 的首次发布其实已经是他的 3.0 版本,SSL 1.0 从未面世,SSL 2.0 则具有较大的缺陷(DROWN 缺陷——Decrypting RSA with Obsolete and Weakened eNcryption)。很快,在 1999 年,SSL 3.0 进一步升级,新版本被命名为 TLS 1.0。因此,TLS 是基于 SSL 之上的,但由于习惯叫法,通常把 HTTPS 中的核心加密协议混称为 SSL/TLS。

HTTPS握手流程

  1. Client Hello:客户端发送支持的加密套件+随机数
  2. Server Hello:服务器选择加密套件+证书+随机数
  3. 密钥交换:ECDHE算法生成预主密钥
  4. 会话密钥:通过HKDF算法生成加密密钥
  5. 加密通信:应用层数据使用对称加密传输

如下图所示,以TLS层为例。https://i-blog.csdnimg.cn/direct/4920e5a7b81a41488e3fd71d0c61efcf.png" width="534" />

三、HTTP与HTTPS的不同

在协议层看看它们有什么不同。

对比维度HTTPHTTPS
传输加密明文传输SSL/TLS加密传输
端口号80443
证书要求无需证书需CA签发数字证书
响应速度RTT 3次RTT 5-7次(支持会话恢复)
头部结构无加密标识包含加密协议版本等安全参数
资源消耗增加15-20% CPU负载

四、HTTPS安全机制解析

  1. 混合加密体系\
    结合非对称加密(RSA/ECC)的安全密钥交换与对称加密(AES)的高效数据加密,兼顾安全与性能。
  2. 证书链验证\
    通过根证书→中间证书→服务器证书的信任链验证,防止中间人攻击。OCSP协议实时检查证书吊销状态。
  3. HSTS策略\
    强制浏览器使用HTTPS连接,防范SSL剥离攻击。

五、总结

  • 端口号:HTTP 默认是 80,HTTPS 默认是 443。
  • URL 前缀:HTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://
  • 安全性和资源消耗:HTTP协议基于TCP协议构建,其传输的数据均为明文形式,且通信双方无法验证彼此身份。而HTTPS作为HTTP的安全演进版本,其通信架构分为两层:底层通过SSL/TLS协议与TCP建立安全通道,上层则承载经过加密处理的HTTP通信。该加密体系采用混合加密机制,即使用服务器数字证书中的公钥对对称会话密钥进行非对称加密传输,实际数据传输阶段则采用高效对称加密算法。相较于HTTP,HTTPS通过双重加密机制显著提升了安全性,但同时也因加解密运算增加了服务器的计算负载。

行业拓展

近 10 年间,甚至连传统企业都开始大面积数字化时,我们发现开发内部工具的过程中,大量的页面、场景、组件等在不断重复,这种重复造轮子的工作,浪费工程师的大量时间。 针对这类问题,JNPF 低代码平台把某些重复出现的场景、流程,具象化成一个个组件、api、数据库接口,避免了重复造轮子,极大的提高了程序员的生产效率。

体验地址:https://www.jnpfsoft.com

这是一个基于 Flowable 引擎(支持 java、.NET),已支持 MySQL、SqlServer、Oracle、PostgreSQL、DM(达梦)、 KingbaseES(人大金仓)6 个数据库,支持私有化部署,前后端封装了上千个常用类,方便扩展,框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用。

至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端 UI 等组件,这种情况下我们避免了重复造轮子,已内置大量的成熟组件,选择合适的组件进行集成或二次开发复杂功能,即可自主开发一个属于自己的应用系统。


http://www.ppmy.cn/news/1575870.html

相关文章

DeepSeek-R1本地部署保姆级教程

一、DeepSeek-R1本地部署配置要求 &#xff08;一&#xff09;轻量级模型 ▌DeepSeek-R1-1.5B 内存容量&#xff1a;≥8GB 显卡需求&#xff1a;支持CPU推理&#xff08;无需独立GPU&#xff09; 适用场景&#xff1a;本地环境验证测试/Ollama集成调试 &#xff08;二&a…

go设计模式

刘&#xff1a;https://www.bilibili.com/video/BV1kG411g7h4 https://www.bilibili.com/video/BV1jyreYKE8z 1. 单例模式 2. 简单工厂模式 代码逻辑&#xff1a; 原始&#xff1a;业务逻辑层 —> 基础类模块工厂&#xff1a;业务逻辑层 —> 工厂模块 —> 基础类模块…

PYQT学习笔记-从简单窗口到多功能主窗口的实现

PyQt5学习笔记&#xff1a;从简单窗口到多功能主窗口的实现 1. 环境准备2. 创建第一个PyQt窗口2.1 代码实现2.2 代码解析2.2.1 创建应用程序2.2.2 创建窗口2.2.3 创建布局2.2.4 添加复选框和按钮2.2.5 信号与槽2.2.6 显示窗口 3. 关键点解释3.1 arg 是什么&#xff1f;3.2 lamb…

在PyCharm中集成AI编程助手并嵌入本地部署的DeepSeek-R1模型:打造智能开发新体验

打造智能开发新体验&#xff1a;DeepSeekPycharmollamaCodeGPT 目录 打造智能开发新体验&#xff1a;DeepSeekPycharmollamaCodeGPT前言一、什么是ollama&#xff1f;二、如何使用1.进入ollama官方网站:2.点击下载ollama安装包3.根据默认选项进行安装4.安装成功5.打开命令提示符…

SQL*PLUS命令

SQL*Plus概述 SQL*Plus工具是随Oracle 数据库服务器或客户端的安装而自动进行安装的管理与开发工具&#xff0c;Oracle数据库中所有的管理操作都可以通过SQL*Plus工具完成&#xff0c;同时开发人员利用SQL*Plus可以测试、运行SQL语句和PL/SQL程序。 运行方式&#xff1a; 命令…

k8s环境搭建(从创建完一台虚拟机开始)

注意&#xff1a; 在这之前&#xff0c;所有主机需要关闭防火墙&#xff01;&#xff01;&#xff01; 1. docker 安装 所有主机都需要 1.1配置仓库 vim /etc/yum.repos.d/docker.repo https://mirror.tuna.tsinghua.edu.cn/docker-ce/linux/rhel/9/x86_64/stable/ 1.2 下…

Linux下shell程序报cat写入错误:断开的管道

Linux下shell程序报cat写入错误&#xff1a;断开的管道 1. 原因分析2. 解决方法3. 示例场景4. 总结 在 Linux 中使用 cat 命令时&#xff0c;如果遇到“断开的管道”&#xff08;Broken pipe&#xff09;错误&#xff0c;通常是因为管道&#xff08;|&#xff09;或重定向的目标…

【华为OD机考】华为OD笔试真题解析(14)--开心消消乐

题目描述 给定一个N行M列的二维矩阵&#xff0c;矩阵中每个位置的数字取值为0或1&#xff0c;矩阵示例如下&#xff1a; 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1现需要将矩阵中所有的1进行反转为0&#xff0c;规则如下&#xff1a; 当点击一个1时&#xff0c;该1被反转为0&#xf…