Skip to content

域名、DNS 与 HTTPS

前言

当你在浏览器输入 www.google.com 并按下回车,背后发生了什么? 这个看似简单的动作,背后涉及域名解析、DNS 查询、TLS 加密握手等一系列精密的协作过程。理解这些机制,是每个开发者的必修课——它直接关系到你的网站能不能被访问、数据会不会被窃取。

这篇文章会带你学什么?

学完这章后,你将获得:

  • DNS 原理:理解域名如何被翻译成 IP 地址的完整过程
  • 记录类型:掌握 A、CNAME、MX 等常见 DNS 记录的用途
  • HTTPS 机制:理解 TLS 握手如何建立安全连接
  • 证书体系:了解数字证书的信任链和验证机制
  • 安全意识:明白为什么 HTTPS 是现代 Web 的底线要求
章节内容核心概念
第 1 章DNS 解析递归查询、迭代查询
第 2 章DNS 记录A、CNAME、MX、TXT
第 3 章HTTPS 与 TLS握手过程、加密通信
第 4 章证书信任链CA、根证书、中间证书
第 5 章HTTP vs HTTPS明文 vs 加密、安全对比

0. 全景图:从域名到安全连接

互联网的通信基于 IP 地址(如 142.250.80.46),但人类记不住这些数字。于是我们发明了域名系统(DNS)——互联网的"电话簿",把人类可读的域名翻译成机器可读的 IP 地址。

但光能找到服务器还不够。如果通信内容是明文传输的,任何中间人都能窃听、篡改你的数据。HTTPS 就是解决这个问题的——它在 HTTP 之上加了一层 TLS 加密,确保数据在传输过程中的机密性和完整性。

一次完整的网页访问

  1. 域名解析:浏览器问 DNS "www.google.com 的 IP 是多少?",DNS 回答 "142.250.80.46"
  2. TCP 连接:浏览器与服务器建立 TCP 三次握手
  3. TLS 握手:双方协商加密算法、验证证书、交换密钥
  4. 加密通信:所有 HTTP 数据通过加密通道传输

1. DNS 解析:互联网的"电话簿"

DNS(Domain Name System)的工作原理就像查电话簿:你知道对方的名字(域名),需要查到对方的电话号码(IP 地址)。但互联网的"电话簿"不是一本,而是一个分层的分布式系统。

🔍 DNS 解析过程模拟器

🌐
浏览器缓存
💻
操作系统缓存
🔄
递归解析器
🌍
根域名服务器
📂
TLD 服务器
🏠
权威 DNS 服务器
解析流程说明: 浏览器访问网站时,需要先将域名翻译成 IP 地址。这个过程会依次查询多级缓存和服务器,直到找到对应的 IP。

DNS 解析的四个步骤

  1. 浏览器缓存:先查本地缓存,如果之前访问过这个域名,直接用缓存的 IP
  2. 递归解析器:缓存没命中,请求发给 ISP 的递归解析器(如 8.8.8.8)
  3. 逐级查询:递归解析器依次询问根域名服务器 → 顶级域服务器(.com)→ 权威域名服务器(google.com)
  4. 返回结果:权威服务器返回最终 IP,递归解析器缓存结果并返回给浏览器
层级服务器职责数量
根域Root Server知道所有顶级域的地址全球 13 组
顶级域TLD Server管理 .com、.cn、.org 等每个后缀一组
权威域Authoritative存储具体域名的 DNS 记录每个域名至少 2 个
递归解析器Resolver代替用户完成整个查询过程ISP 或公共 DNS

2. DNS 记录类型:域名背后的"配置表"

DNS 不只是把域名翻译成 IP。通过不同类型的 DNS 记录,你可以控制邮件投递、域名跳转、服务发现等多种行为。理解这些记录类型,是配置域名和排查网络问题的基础。

📋 DNS 记录类型速查

AAddress 记录

将域名映射到一个 IPv4 地址。这是最常见的 DNS 记录类型,浏览器访问网站时最终需要的就是这条记录。

示例记录
example.com. IN A 93.184.216.34
常见用途
  • 网站域名指向服务器 IP
  • 子域名指向不同的服务器
  • 配合负载均衡返回多个 IP
小贴士: DNS 不只是把域名翻译成 IP,它还承载了邮件路由、域名验证、负载均衡等多种功能,全靠不同的记录类型来实现。
记录类型用途示例
A域名 → IPv4 地址example.com → 93.184.216.34
AAAA域名 → IPv6 地址example.com → 2606:2800:220:1:...
CNAME域名 → 另一个域名(别名)www.example.com → example.com
MX指定邮件服务器example.com → mail.example.com
TXT存储文本信息SPF 验证、域名所有权验证
NS指定权威域名服务器example.com → ns1.example.com

实际场景中的 DNS 配置

  • 部署网站:添加 A 记录指向服务器 IP,或 CNAME 指向 CDN 域名
  • 配置邮箱:添加 MX 记录指向邮件服务器,TXT 记录配置 SPF/DKIM 防垃圾邮件
  • 验证域名所有权:云服务商要求你添加特定 TXT 记录来证明你拥有这个域名
  • 负载均衡:同一域名配置多条 A 记录,DNS 轮询分发流量

3. HTTPS 与 TLS:给数据穿上"防弹衣"

HTTP 协议的数据是明文传输的——就像寄明信片,邮递员(中间人)可以随意阅读内容。HTTPS 在 HTTP 之上加了一层 TLS(Transport Layer Security)加密,相当于把明信片装进了密封信封。

TLS 握手是建立安全连接的关键步骤,它在正式传输数据之前,完成身份验证和密钥协商。

🤝 TLS 握手过程演示

💻
客户端(浏览器)
Client Hello
发送支持的 TLS 版本、加密套件列表、随机数
Server Hello
选定 TLS 版本、加密套件、服务器随机数
Certificate
服务器发送数字证书(含公钥)
Key Exchange
双方协商生成会话密钥
Finished
双方确认握手成功,开始加密通信
🖥️
服务器

TLS 1.3 握手的核心步骤

  1. Client Hello:客户端发送支持的加密算法列表和一个随机数
  2. Server Hello:服务器选择加密算法,返回数字证书和随机数
  3. 证书验证:客户端验证服务器证书是否可信(检查 CA 签名、有效期、域名匹配)
  4. 密钥交换:双方通过 ECDHE 算法协商出一个共享密钥(不在网络上传输密钥本身)
  5. 加密通信:后续所有数据使用协商好的对称密钥加密传输
特性TLS 1.2TLS 1.3
握手往返次数2-RTT1-RTT(首次)/ 0-RTT(恢复)
密钥交换RSA 或 ECDHE仅 ECDHE(前向安全)
加密算法支持较多旧算法仅保留安全算法
性能较慢更快

4. 证书信任链:凭什么相信这个网站?

TLS 握手中最关键的一步是"证书验证"。浏览器怎么判断一个网站的证书是真的,而不是攻击者伪造的?答案是证书信任链——一个层层背书的信任体系。

🔗 证书信任链可视化

点击每一层证书,查看它的详细信息和在信任链中的角色。

🏛️
根证书(Root CA)
信任的起点
签发
🏢
中间证书(Intermediate CA)
信任的桥梁
签发
🌐
服务器证书(Server Certificate)
网站的身份证
🏛️根证书(Root CA)
签发者DigiCert Global Root G2(自签名)
有效期25 年(2013 - 2038)
密钥长度RSA 2048 位
存储位置操作系统 / 浏览器内置信任库
数量级全球约 150 个受信根证书
根证书是整个信任链的锚点。它由根证书颁发机构自签名,预装在操作系统和浏览器中。全球只有少数几十个根 CA,它们的安全性由严格的审计和物理安全措施保障。根 CA 的私钥通常存储在离线的硬件安全模块(HSM)中。
🔍 浏览器验证流程
1浏览器收到服务器证书,读取其签发者信息
2找到中间证书,用中间 CA 的公钥验证服务器证书的签名
3再用根 CA 的公钥验证中间证书的签名
4确认根证书在本地信任库中 → 整条链验证通过

证书信任链的三层结构

  1. 根证书(Root CA):由受信任的证书颁发机构签发,预装在操作系统和浏览器中。这是信任的"锚点"。
  2. 中间证书(Intermediate CA):由根 CA 签发,用于签发终端证书。根 CA 不直接签发网站证书,是为了安全隔离。
  3. 终端证书(Leaf Certificate):你的网站实际使用的证书,由中间 CA 签发,包含域名、公钥、有效期等信息。
证书类型验证级别颁发速度适用场景
DV(域名验证)仅验证域名所有权分钟级个人网站、博客
OV(组织验证)验证组织身份数天企业官网
EV(扩展验证)严格验证组织数周银行、金融机构
通配符证书覆盖所有子域名视类型而定多子域名场景

5. HTTP vs HTTPS:为什么加密是底线?

2024 年,全球超过 95% 的网页流量已经通过 HTTPS 传输。Chrome 浏览器会对 HTTP 网站标记"不安全"警告,搜索引擎也会降低 HTTP 网站的排名。HTTPS 不再是"可选项",而是现代 Web 的底线要求。

🔐 HTTP vs HTTPS 数据传输对比

💻
浏览器
原始数据
password=MySecret123&user=zhangsan
🔓 明文传输
🕵️
中间人可窃听
🖥️
服务器
对比项HTTPHTTPS
端口80443
数据加密无(明文传输)TLS 对称加密
身份验证CA 证书验证服务器身份
数据完整性无保障MAC 校验防篡改
SEO 影响搜索引擎降权搜索引擎优先收录
性能开销无额外开销TLS 握手增加约 1-2 RTT
维度HTTPHTTPS
数据传输明文,可被窃听加密,无法被窃听
身份验证无,无法确认服务器身份有,通过证书验证服务器
数据完整性无保护,可被篡改有保护,篡改会被检测
端口80443
SEO 影响搜索排名降低搜索排名加分
浏览器表现显示"不安全"警告显示锁图标

免费获取 HTTPS 证书

Let's Encrypt 是一个免费、自动化的证书颁发机构,让任何网站都能零成本启用 HTTPS。配合 Certbot 工具,可以一键申请和自动续期证书。大多数云平台和 CDN 服务商也提供免费的 SSL 证书。


总结

域名、DNS 和 HTTPS 是互联网基础设施的三大支柱。DNS 让我们用人类可读的名字访问网站,HTTPS 确保通信过程安全可信。

回顾本章的关键要点:

  1. DNS 是分层系统:根域 → 顶级域 → 权威域,逐级查询,缓存加速
  2. 记录类型各有用途:A 记录指向 IP,CNAME 做别名,MX 管邮件,TXT 做验证
  3. TLS 握手建立信任:证书验证 + 密钥协商,TLS 1.3 只需 1-RTT
  4. 证书信任链:根 CA → 中间 CA → 终端证书,层层背书
  5. HTTPS 是底线:免费证书(Let's Encrypt)让加密零门槛

延伸阅读