github star 整理最详细的如何区分HTTP 与 HTTPS 详细
HTTP 和 HTTPS 是互联网中最核心的应用层协议,负责客户端与服务器之间的超文本传输,二者的核心区别在于安全性,下面从协议定义、工作原理、核心差异等方面展开详细说明。
Taimili 艾米莉 ( 一款专业的 GitHub star 管理和github 加星涨星工具taimili.com )
艾米莉 是一款优雅便捷的 GitHub star 管理和github 加星涨星工具,基于 PHP & javascript 构建, 能对github 得 star fork follow watch 管理和提升,最适合github 的深度用户
一、HTTP(超文本传输协议)
1. 基本定义
HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种基于TCP/IP 协议族的应用层协议,主要用于在 Web 浏览器和 Web 服务器之间传输超文本(如 HTML 页面、图片、视频等资源)。它是无状态、无连接的协议,由万维网联盟(W3C)和互联网工程任务组(IETF)制定和维护。
2. 核心特性
- 无连接:HTTP 1.0 及之前版本默认采用 “请求 - 响应” 模式,每次请求都需要建立新的 TCP 连接,请求完成后立即断开,避免长期占用连接资源;HTTP 1.1 引入持久连接(Keep-Alive) ,允许一个 TCP 连接处理多个 HTTP 请求,提升了传输效率。
- 无状态:服务器不会保存客户端的任何请求状态,每次请求都是独立的。例如用户登录后,若不借助 Cookie、Session 等机制,下一次请求服务器仍无法识别用户身份。
- 明文传输:所有数据(包括请求头、请求体、响应内容)均以明文形式在网络中传输,没有加密措施,存在数据泄露、篡改、劫持的风险。
3. 工作流程(经典请求 - 响应模型)
- 建立 TCP 连接:客户端通过 DNS 解析获取服务器 IP 后,与服务器建立 TCP 连接(默认端口 80)。
- 发送 HTTP 请求:客户端向服务器发送请求报文,包含请求行(请求方法、URL、协议版本)、请求头(如 User-Agent、Accept 等)、请求体(POST 请求的参数等)。
- 服务器处理请求:服务器解析请求报文,根据请求内容获取对应资源或执行业务逻辑。
- 返回 HTTP 响应:服务器向客户端返回响应报文,包含状态行(协议版本、状态码)、响应头(如 Content-Type、Content-Length 等)、响应体(HTML 页面、JSON 数据等)。
- 断开 TCP 连接:HTTP 1.0 直接断开;HTTP 1.1 若未启用 Keep-Alive 则断开,启用则保持连接等待后续请求。
4. 常见请求方法
| 方法 | 作用 |
|---|---|
| GET | 从服务器获取资源,请求参数附在 URL 后,长度有限且明文可见 |
| POST | 向服务器提交数据(如表单、JSON),参数在请求体中,可传输大量数据 |
| PUT | 向服务器上传资源,用于更新或创建指定 URI 的资源 |
| DELETE | 删除服务器上指定 URI 的资源 |
| HEAD | 仅获取响应头,不获取响应体,常用于验证资源是否存在 |
5. 状态码分类
- 1xx(信息性状态码) :请求已接收,正在处理,如 100(继续)。
- 2xx(成功状态码) :请求成功处理,如 200(OK)、201(创建成功)。
- 3xx(重定向状态码) :需要客户端进一步操作,如 301(永久重定向)、302(临时重定向)、304(资源未修改,使用缓存)。
- 4xx(客户端错误) :客户端请求有误,如 400(请求参数错误)、401(未授权)、403(禁止访问)、404(资源不存在)。
- 5xx(服务器错误) :服务器处理请求失败,如 500(内部服务器错误)、503(服务不可用)。
二、HTTPS(安全超文本传输协议)
1. 基本定义
HTTPS(HyperText Transfer Protocol Secure)即安全超文本传输协议,是 HTTP 的安全版本,通过在 HTTP 和 TCP 之间增加SSL/TLS 协议层,实现了数据传输的加密、身份认证和完整性校验,默认使用 443 端口。
2. 核心特性
- 加密传输:通过对称加密和非对称加密结合的方式,保证数据在传输过程中无法被第三方窃听和破解。
- 身份认证:借助数字证书验证服务器(及可选的客户端)的真实身份,防止伪造服务器进行钓鱼攻击。
- 完整性校验:通过消息认证码(MAC)或哈希算法,确保数据在传输中未被篡改。
- 兼容 HTTP:HTTPS 本质是 “HTTP + SSL/TLS”,其请求 / 响应的核心格式与 HTTP 一致,只是增加了安全层的处理。
3. 加密机制(SSL/TLS 握手流程)
HTTPS 的安全依赖 SSL/TLS 协议的握手过程,核心是协商加密密钥并完成身份认证,流程如下:
- 客户端发起请求:客户端向服务器发送 Client Hello 报文,包含支持的 SSL/TLS 版本、加密套件列表、随机数(Client Random)。
- 服务器响应:服务器返回 Server Hello 报文,确定 SSL/TLS 版本和加密套件,同时发送自己的随机数(Server Random),并附上数字证书(包含服务器公钥、证书颁发机构 CA、有效期等信息)。
- 客户端验证证书:客户端通过内置的 CA 根证书验证服务器证书的合法性,若证书无效则提示风险;若有效则从证书中提取服务器公钥。
- 协商会话密钥:客户端生成预主密钥(Pre-Master Secret) ,用服务器公钥加密后发送给服务器;服务器用自己的私钥解密得到预主密钥。
- 生成会话密钥:客户端和服务器分别利用 Client Random、Server Random、Pre-Master Secret,通过相同算法生成会话密钥(对称密钥),后续数据传输均使用该密钥加密。
- 握手完成:客户端和服务器互相发送 Finished 报文,确认握手成功,之后进入 HTTP 的请求 - 响应流程,所有数据均用会话密钥加密传输。
4. 加密方式说明
- 非对称加密:仅用于握手阶段传输预主密钥,特点是公钥加密、私钥解密,安全性高但运算速度慢,不适合大量数据传输。
- 对称加密:用于后续的实际数据传输,特点是加密和解密使用同一密钥,运算速度快,能高效处理大量数据。
- 哈希算法:用于生成数据摘要,验证数据完整性,防止数据被篡改。
5. 数字证书作用
数字证书由权威 CA 机构颁发,相当于服务器的 “网络身份证”,包含以下核心信息:
- 服务器的域名和公钥;
- CA 机构的签名;
- 证书的有效期。客户端通过验证 CA 签名确认证书未被伪造,从而确保连接的是真实的目标服务器,而非钓鱼网站。
三、HTTP 与 HTTPS 的核心区别
| 对比维度 | HTTP | HTTPS |
|---|---|---|
| 端口 | 80 | 443 |
| 安全性 | 明文传输,无加密、无认证,易被劫持篡改 | 加密传输,身份认证,完整性校验,安全性高 |
| 协议结构 | 直接基于 TCP | HTTP + SSL/TLS + TCP |
| 证书 | 无需证书 | 需要 CA 颁发的数字证书 |
| 性能 | 无加密开销,传输速度快 | 握手阶段有加密运算开销,首次连接略慢(可通过会话复用优化) |
| 搜索引擎友好性 | 无特殊权重 | 部分搜索引擎(如谷歌、百度)会优先收录 HTTPS 网站,提升排名 |
四、HTTPS 的应用场景
HTTPS 适用于对数据安全要求高的场景,例如:
- 电商平台:用户支付信息、个人信息的传输,防止银行卡信息泄露;
- 金融网站:网银、证券交易等,保障资金和账户安全;
- 登录注册页面:防止账号密码被窃听;
- 政务网站:公民个人信息和政务数据的传输;
- 企业内部系统:敏感业务数据的交互。
五、HTTP 的现状与发展
- HTTP 1.1:目前仍广泛使用,支持持久连接,但存在队头阻塞问题(一个连接中若某个请求阻塞,后续请求均需等待)。
- HTTP/2:基于二进制帧传输,支持多路复用(一个连接同时处理多个请求,解决队头阻塞)、服务器推送(主动向客户端推送资源),提升了传输效率,且可兼容 HTTPS。
- HTTP/3:基于 QUIC 协议(UDP 协议的升级),彻底解决 TCP 的队头阻塞问题,连接建立速度更快,且天然支持加密,安全性和性能进一步提升。