https访问网站的具体流程是怎样的?https访问网站的具体流程
- 云服务器
- 2026-07-07
- 6
当用户在浏览器地址栏输入 https://www.example.com 并回车后,浏览器与服务器之间会经历一系列复杂而严谨的步骤,以确保数据的安全传输和页面的正常加载,这个过程主要可以分为三个阶段:DNS 解析、TCP 连接建立以及 TLS 握手。
DNS 解析:从域名到 IP 地址
HTTPS 协议本身并不负责将域名转换为 IP 地址,这一任务由域名系统(DNS)完成。
- 本地缓存检查:浏览器首先检查本地缓存(如 Hosts 文件、浏览器缓存)中是否有该域名的记录。
- 递归查询:如果本地没有,浏览器会向本地 DNS 服务器发起查询请求,本地 DNS 服务器若没有记录,会依次向根域名服务器、顶级域名服务器(如 .com)、权威域名服务器发起迭代查询。
- 获取 IP:权威域名服务器返回 www.example.com 对应的 IP 地址(184.216.34),浏览器随后利用该 IP 地址发起后续连接。
TCP 连接建立:三次握手
在建立加密通道之前,必须先建立可靠的传输层连接,浏览器与服务器通过 TCP 三次握手建立连接:

- SYN:客户端向服务器发送一个 SYN 包,表示请求建立连接。
- SYN+ACK:服务器收到后,回复一个 SYN+ACK 包,表示同意建立连接。
- ACK:客户端再回复一个 ACK 包,连接正式建立。
双方已经建立了双向通信的基础通道,但数据尚未加密。
TLS 握手:建立加密通道
这是 HTTPS 最核心的部分,TLS(Transport Layer Security)协议负责在客户端和服务器之间协商加密算法、交换密钥并验证服务器身份,以下是典型的 TLS 1.2/1.3 握手流程概要:

| 步骤 | 方向 | 消息类型 | 说明 |
|---|---|---|---|
| 1 | 客户端 -> 服务器 | Client Hello | 客户端发送支持的 TLS 版本、加密套件列表、随机数(Client Random)。 |
| 2 | 服务器 -> 客户端 | Server Hello | 服务器选择双方都支持的加密套件,发送自己的随机数(Server Random),并发送数字证书。 |
| 3 | 服务器 -> 客户端 | Certificate | 服务器发送其证书链,包含公钥和 CA 签名。 |
| 4 | 服务器 -> 客户端 | Server Key Exchange (可选) | 如果使用某些密钥交换算法,服务器发送额外参数。 |
| 5 | 服务器 -> 客户端 | Server Hello Done | 服务器告知客户端握手阶段的消息发送完毕。 |
| 6 | 客户端 -> 服务器 | Certificate Verify (可选) | 客户端验证服务器证书的有效性(检查签名、有效期、吊销状态等)。 |
| 7 | 客户端 -> 服务器 | Client Key Exchange | 客户端生成预主密钥(Pre-Master Secret),使用服务器的公钥加密后发送给服务器。 |
| 8 | 客户端 -> 服务器 | Change Cipher Spec | 客户端通知服务器,后续消息将使用协商好的加密算法和密钥进行加密。 |
| 9 | 客户端 -> 服务器 | Finished | 客户端发送一个加密的握手校验码,证明握手过程完整且密钥一致。 |
| 10 | 服务器 -> 客户端 | Change Cipher Spec | 服务器通知客户端,后续消息将使用协商好的加密算法和密钥进行加密。 |
| 11 | 服务器 -> 客户端 | Finished | 服务器发送一个加密的握手校验码,证明握手过程完整且密钥一致。 |
关键点说明:
- 非对称加密:在握手初期,使用非对称加密(如 RSA 或 ECDHE)来安全地交换密钥。
- 对称加密:握手成功后,双方使用协商出的“会话密钥”进行对称加密通信,因为对称加密效率更高,适合大量数据传输。
- 证书验证:客户端会检查服务器证书是否由受信任的证书颁发机构(CA)签发,以及域名是否匹配。
HTTP 请求与响应
TLS 握手完成后,加密通道建立完毕,浏览器可以发送 HTTP 请求(如 GET /index.html),服务器接收并处理请求,返回 HTTP 响应(如 200 OK 及 HTML 内容),所有传输的数据都经过加密,确保机密性和完整性。
页面渲染与资源加载
浏览器接收到 HTML 文档后,开始解析并构建 DOM 树和 CSSOM 树,执行 JavaScript,加载图片、CSS、JS 等资源,这些资源通常也通过 HTTPS 获取,确保整个页面的安全性。

相关问题与解答
问题 1:为什么 HTTPS 比 HTTP 更安全?它具体防止了哪些攻破?
解答:
HTTPS 通过 TLS 协议提供了三大核心安全特性,从而防止多种网络攻破:
- 机密性(Confidentiality):数据在传输过程中被加密,防止中间人窃听(Eavesdropping),即使攻破者截获数据包,也无法解密读取内容。
- 完整性(Integrity):TLS 使用消息认证码(MAC)或 AEAD 加密算法,确保数据在传输过程中未被改动(Tampering),如果数据被修改,接收方会检测到并丢弃。
- 身份验证(Authentication):通过数字证书验证服务器的身份,防止钓鱼攻破和中间人攻破(MITM),用户确认自己连接的是真正的网站,而非假冒服务器。
问题 2:如果浏览器显示“证书无效”或“不安全”警告,可能的原因有哪些?
解答:
浏览器发出此类警告通常意味着 TLS 握手过程中的证书验证失败,常见原因包括:
- 证书已过期:证书的有效期已过,CA 不再信任该证书。
- 域名不匹配:证书绑定的域名与用户访问的域名不一致(证书是为 www.example.com 签发的,但用户访问的是 example.com 且证书未包含通配符或 SAN 记录)。
- 证书链不完整:服务器未发送完整的中间证书链,导致浏览器无法追溯到受信任的根证书。
- 证书被吊销:证书因私钥泄露或其他原因被 CA 提前吊销,且浏览器通过 CRL 或 OCSP 检查发现该状态。
- 自签名证书:服务器使用的是自签名证书,而非由公共受信任的 CA 签发,浏览器无法验证其身份。
- 时间设置错误:客户端设备的时间与服务器时间相差过大,导致证书有效期判断错误。