HTTPS 与 HTTP 的区别在哪?
HTTP与HTTPS作为互联网数据传输的核心协议,其通信机制与安全特性深刻影响着现代网络应用的可靠性与用户体验。本文将解析两者的通信流程、安全机制及核心差异。
一、HTTP的通信机制
先来看看HTTP是什么吧。
HTTP基于TCP/IP协议栈,采用经典客户端-服务器模型:
- TCP连接建立
通过三次握手创建可靠传输通道(源IP:端口 目标IP:端口),默认端口80。 - 请求-响应交互
浏览器发起到服务器的 TCP 连接。
GET /index.html HTTP/1.1
Host: www.baidu.com
- 服务器处理与响应
服务器接收来自浏览器的 TCP 连接。
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>...</html>
交换信息
浏览器(HTTP 客户端)与 Web 服务器(HTTP 服务器)交换 HTTP 消息。连接终止
完成传输后通过四次挥手断开连接,关闭 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握手流程:
- Client Hello:客户端发送支持的加密套件+随机数
- Server Hello:服务器选择加密套件+证书+随机数
- 密钥交换:ECDHE算法生成预主密钥
- 会话密钥:通过HKDF算法生成加密密钥
- 加密通信:应用层数据使用对称加密传输
如下图所示,以TLS层为例。

三、HTTP与HTTPS的不同
在协议层看看它们有什么不同。
| 对比维度 | HTTP | HTTPS |
|---|---|---|
| 传输加密 | 明文传输 | SSL/TLS加密传输 |
| 端口号 | 80 | 443 |
| 证书要求 | 无需证书 | 需CA签发数字证书 |
| 响应速度 | RTT 3次 | RTT 5-7次(支持会话恢复) |
| 头部结构 | 无加密标识 | 包含加密协议版本等安全参数 |
| 资源消耗 | 低 | 增加15-20% CPU负载 |
四、HTTPS安全机制解析
- 混合加密体系
结合非对称加密(RSA/ECC)的安全密钥交换与对称加密(AES)的高效数据加密,兼顾安全与性能。 - 证书链验证
通过根证书→中间证书→服务器证书的信任链验证,防止中间人攻击。OCSP协议实时检查证书吊销状态。 - HSTS策略
强制浏览器使用HTTPS连接,防范SSL剥离攻击。
五、总结
- 端口号:HTTP 默认是 80,HTTPS 默认是 443。
- URL 前缀:HTTP 的 URL 前缀是
http://,HTTPS 的 URL 前缀是https://。 - 安全性和资源消耗:HTTP协议基于TCP协议构建,其传输的数据均为明文形式,且通信双方无法验证彼此身份。而HTTPS作为HTTP的安全演进版本,其通信架构分为两层:底层通过SSL/TLS协议与TCP建立安全通道,上层则承载经过加密处理的HTTP通信。该加密体系采用混合加密机制,即使用服务器数字证书中的公钥对对称会话密钥进行非对称加密传输,实际数据传输阶段则采用高效对称加密算法。相较于HTTP,HTTPS通过双重加密机制显著提升了安全性,但同时也因加解密运算增加了服务器的计算负载。
HTTPS 与 HTTP 的区别在哪?的更多相关文章
- HTTPS和HTTP的区别
(转自:http://www.php100.com/html/it/biancheng/2015/0209/8582.html) 总的来说,http效率更高,https安全性更高. 首先谈谈什么是HT ...
- HTTPS和HTTP的区别(转)
HTTPS和HTTP的区别 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信 息.HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器 ...
- [转] 详解http和https的作用与区别
PS: https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密.防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名.另外是加密,加密需要一个密钥交换算法, ...
- TCP/IP Http 和Https socket之间的区别
TCP/IP Http 和Https socket之间的区别 TCP/IP是个协议组,它分为网络层,传输层和应用层, 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. ...
- http和https的作用与区别
PS: https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密.防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名.另外是加密,加密需要一个密钥交换算法, ...
- 详解http和https的作用与区别
PS: https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密.防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名.另外是加密,加密需要一个密钥交换算法, ...
- TCP/IP、Http、Https、Socket的区别
网络由下往上分为物理层.数据链路层.网络层( IP协议).传输层( TCP协议).会话层.表示层和应用层(HTTP协议) 接下来我来说说个人理解其中的TCP/IP.Http.Socket的区别 TCP ...
- HTTP和HTTPS以及两者的区别
HTTP:是互联网上的应用广泛的一种网络协议,是一个客户端和服务器端请求和应答的传输协议,它可以使浏览器更加高效,使网络传输减少. HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版, ...
- 大神给你分析HTTPS和HTTP的区别(转)
http://www.php100.com/html/it/biancheng/2015/0209/8582.html 今天在做雅虎的时候,发现用第三方工具截取不到客户端与服务端的通讯,以前重来没碰到 ...
- 大神给你分析HTTPS和HTTP的区别
今天在做雅虎的时候,发现用第三方工具截取不到客户端与服务端的通讯,以前重来没碰到过这种情况,仔细看了看,它的url请求时基于https的,gg了下发现原来https协议和http有着很大的区别.总的来 ...
随机推荐
- axios 取消请求 (2023-10-10更新)
axios 文档 配置局部取消请求 这种相当于局部的取消请求,作用于单个请求中 import axios from 'axios' const source = axios.cancelToken.s ...
- 【C#】【桌面应用开发】拖拽文件到文本框获得所拖拽文件的路径
步骤1:设置文本框属性 设置文本框属性,将属性AllowDrop改为True 使其允许拖拽文件 步骤2: 在控件事件管理中双击DragEnter,添加事件 private void Form_sett ...
- 如何调整Gitlab-Runner最大并发数?
概述: 我们在使用gitlab-runner做cicd时,如果安装之后没有配置gitlab-runner的最大并发数,在使用时候可能会碰到job的警告(job日志超过字节限制):job's log e ...
- 快速解决MySQL:Table xxx is marked as crashed and should be repaired五个办法
查看MySQL错误日志看到 Table xxx is marked as crashed and should be repaired 解决办法如下 第一种: 1.首先进入mysql命令台: mys ...
- 开源即时通讯IM框架MobileIMSDK的H5端技术概览
一.基本介绍 MobileIMSDK的H5端是一套纯JS编写的基于标准WebSocket的即时通讯库: 1)超轻量级.极少依赖: 2)纯JS编写.高度提炼,简单易用: 3)基于标准WebSocket协 ...
- Flutter一些概念(一)
1 简述Flutter是什么以及它的主要优势 Flutter是一种由Google开发的开源移动应用开发框架,可以用于构建高度定制化.美观并且性能卓越的移动应用程序,其主要优势有: 跨平台,一次编码,可 ...
- 第十二章 ArrayList&LinkedList源码解析
一.对于ArrayList需要掌握的七点内容 ArrayList的创建:即构造器 往ArrayList中添加对象:即add(E)方法 获取ArrayList中的单个对象:即get(int index) ...
- biancheng-HBase
目录http://c.biancheng.net/view/6509.html 1HBase是什么?2HBase的优势有哪些?3Hadoop与HBase的关系4HDFS5HDFS的特点与使用场景6HB ...
- mac环境安装Gradle及配置
mac环境安装Gradle及配置 说明# 最近在学习spring源码, 需要使用到gradle, 便从小白开始吧 ps: 基本按官方操作来完成的~ 前提# 从Gradle官网的安装指导可以 ...
- Qml 中实现任意角为圆角的矩形
[写在前面] 在 Qml 中,矩形(Rectangle)是最常用的元素之一. 然而,标准的矩形元素仅允许设置统一的圆角半径. 在实际开发中,我们经常需要更灵活的圆角设置,例如只对某些角进行圆角处理,或 ...