HTTP 与 HTTPS 的工作原理及其区别

目录

[1. HTTP (超文本传输协议)](#1. HTTP (超文本传输协议))

[2. HTTPS (基于 TLS/SSL 的 HTTP)](#2. HTTPS (基于 TLS/SSL 的 HTTP))

[3. HTTP 与 HTTPS 核心区别总结](#3. HTTP 与 HTTPS 核心区别总结)

图解关键点



1. HTTP (超文本传输协议)

  • 定义: 一种用于在 Web 浏览器和 Web 服务器之间传输超文本(如 HTML 页面)和其他资源的应用层协议

  • 工作原理 (文字示意图):

    复制代码
    [ 浏览器 ]  ------------ 明文 HTTP 请求 (GET /index.html) ------------> [ Web 服务器 ]
    [ 浏览器 ]  <------------ 明文 HTTP 响应 (HTML 内容) ----------------- [ Web 服务器 ]
    • 步骤:
      1. 建立 TCP 连接: 浏览器通过目标服务器的 IP 地址和端口号(默认 80)建立一个到 Web 服务器的 TCP 连接。这是数据传输的基础通道。
      2. 发送 HTTP 请求: 浏览器通过这个 TCP 连接,以明文形式发送一个 HTTP 请求报文给服务器。请求中包含方法(如 GETPOST)、请求的资源路径(如 /index.html)、HTTP 版本、请求头(包含浏览器信息、接受的响应类型等)。
      3. 服务器处理请求: 服务器收到请求后,解析请求内容,根据请求的资源路径找到对应的文件或执行相应的处理逻辑。
      4. 发送 HTTP 响应: 服务器通过同一个 TCP 连接,以明文形式发送一个 HTTP 响应报文回浏览器。响应中包含状态码(如 200 OK404 Not Found)、响应头(包含服务器信息、内容类型、长度等)、响应体(如 HTML 文件内容)。
      5. 关闭连接 (或保持): 根据 HTTP 版本和头信息,TCP 连接可能被关闭(HTTP/1.0 默认),也可能保持打开用于后续请求(HTTP/1.1 默认的持久连接)。
    • 关键特点:
      • 明文传输: 请求和响应的内容都是未加密的,任何在传输路径上的中间节点(如路由器、防火墙、ISP)都可以看到传输的数据(密码、信用卡号、个人信息等)。
      • 无身份验证: 无法验证通信对方的真实身份。你访问的 www.bank.com 可能是一个假冒的服务器。
      • 无数据完整性保护: 传输的数据可能在途中被篡改,而通信双方无法察觉。

2. HTTPS (基于 TLS/SSL 的 HTTP)

  • 定义: HTTP 的安全版本。它在 HTTP 和 TCP 层之间增加了一个 TLS/SSL 协议层(现在通常指 TLS)。

  • 核心目标:

    • 加密 (Confidentiality): 传输的数据被加密,防止被窃听。
    • 身份认证 (Authentication): 通过数字证书验证服务器的身份(有时也验证客户端)。
    • 数据完整性 (Integrity): 确保数据在传输过程中未被篡改。
  • 工作原理 (文字示意图):

    复制代码
    [ 浏览器 ]  ------------ TCP 连接 (端口 443) ------------> [ Web 服务器 ]
    [ 浏览器 ]  <==== TLS/SSL 握手 (协商密钥、验证证书) ====> [ Web 服务器 ]
    [ 浏览器 ]  ------------ 加密的 HTTP 请求 --------------> [ Web 服务器 ]
    [ 浏览器 ]  <------------- 加密的 HTTP 响应 ------------ [ Web 服务器 ]
    • 步骤:
      1. 建立 TCP 连接: 浏览器连接到服务器的 443 端口(HTTPS 默认端口),建立 TCP 连接。
      2. TLS/SSL 握手: 这是 HTTPS 安全性的核心。在握手阶段:
        • 协商协议版本和加密套件: 客户端和服务器互相告知支持的 TLS 版本和可用的加密算法组合(包括密钥交换算法、对称加密算法、散列算法)。
        • 服务器身份验证 (核心): 服务器将其 数字证书 发送给客户端。证书包含服务器的公钥、域名、有效期、颁发机构 (CA) 等信息。
        • 客户端验证证书: 浏览器使用其内置或操作系统信任的 根证书颁发机构 (Root CA) 的公钥,验证服务器证书的签名链是否可信。同时检查证书是否过期、域名是否匹配等。
        • 密钥交换: 验证通过后,客户端生成一个 预主密钥 ,用服务器的公钥加密后发送给服务器(或使用其他密钥交换算法如 ECDHE)。服务器用自己的私钥解密得到预主密钥。
        • 生成会话密钥: 客户端和服务器利用预主密钥、交换过程中的随机数等,独立计算出相同的 对称会话密钥。这个密钥将用于后续通信的加密和解密。
        • 握手完成: 双方交换加密后的握手完成消息,确认握手成功,后续通信将使用会话密钥进行加密。
      3. 发送加密的 HTTP 请求: 浏览器通过已建立的 TLS 通道(在 TCP 之上),将 HTTP 请求报文用会话密钥加密后发送给服务器。
      4. 服务器处理请求: 服务器使用相同的会话密钥解密请求,处理请求内容。
      5. 发送加密的 HTTP 响应: 服务器将 HTTP 响应报文用会话密钥加密后,通过 TLS 通道发送回浏览器。
      6. 浏览器解密响应: 浏览器使用会话密钥解密响应,渲染页面。
      7. 关闭连接: 通信结束后,关闭 TCP 连接。会话密钥通常只用于当前连接(会话)。
    • 关键特点:
      • 加密传输: 所有 HTTP 数据在 TLS 层被加密,中间节点无法看到明文内容。
      • 服务器身份认证: 通过数字证书机制,浏览器可以确认它连接的是拥有该域名合法证书的真实服务器,防止中间人攻击。
      • 数据完整性保护: TLS 使用消息认证码 (MAC) 等技术,确保数据在传输过程中未被篡改。
      • 性能开销: 建立连接时的握手过程需要额外的计算和通信开销(证书验证、密钥协商),以及后续通信的加密/解密操作。现代硬件和协议优化(如 TLS 1.3)已显著降低了这种开销。

3. HTTP 与 HTTPS 核心区别总结

特性 HTTP HTTPS
协议 应用层协议 HTTP + TLS/SSL (应用层 + 安全层)
默认端口 80 443
传输方式 明文 加密
安全性 无加密、无认证、无完整性保护 加密传输、服务器认证、数据完整性保护
性能开销 较高 (握手阶段)
URL前缀 http:// https://
浏览器标识 无特殊标识 地址栏通常显示锁图标

图解关键点

  • HTTP 风险点: 在浏览器到服务器的路径上,明文数据暴露给所有中间节点。
  • HTTPS 安全点:
    • 证书信任链: 浏览器信任的 Root CA -> 签发服务器证书的 Intermediate CA -> 服务器证书。浏览器验证证书签名链。
    • 加密通道: TLS 握手协商出的会话密钥加密了所有后续的 HTTP 通信。

希望以上解释和示意图能帮助您清晰理解 HTTP 和 HTTPS 的工作原理与区别!

相关推荐
赖small强6 小时前
【Linux 网络基础】HTTPS 技术文档
linux·网络·https·tls
Awkwardx18 小时前
Linux网络编程—应用层协议HTTP
网络·网络协议·http
a***592621 小时前
用nginx正向代理https网站
运维·nginx·https
Mu.3871 天前
计算机网络模型
网络·网络协议·计算机网络·安全·http·https
我有一棵树1 天前
file 协议与 http 协议的区别:为什么本地 HTML 无法加载相对路径 JS,以及正确的解决方式
javascript·http·html
阿珊和她的猫2 天前
HTTP 状态码 301 和 302 的区别与使用场景
网络·网络协议·http
6***94152 天前
报错The default superclass, “jakarta.servlet.http.HttpServlet“(已经配置好tomcat)
http·servlet·tomcat
记得记得就1512 天前
【Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装】
前端·nginx·http
e***75392 天前
在 Windows 上生成本地 SSL 证书并使用 HTTPS 访问本地 Nginx 服务器
windows·https·ssl