文章目录
- [1 HTTPS](#1 HTTPS)
-
- [1.1 什么是HTTPS?](#1.1 什么是HTTPS?)
- [1.2 HTTPS 解决了 HTTP 的三大核心安全问题](#1.2 HTTPS 解决了 HTTP 的三大核心安全问题)
- [1.3 传输过程](#1.3 传输过程)
- [2 DNS](#2 DNS)
-
- [2.1 什么是DNS?](#2.1 什么是DNS?)
- [2.2 DNS传输过程](#2.2 DNS传输过程)
-
- [2.2.1 域名解析原理:](#2.2.1 域名解析原理:)
- [2.2.2 详细解析](#2.2.2 详细解析)
1 HTTPS
1.1 什么是HTTPS?
HTTPS(HyperText Transfer Protocol Secure)是 HTTP 的安全版本,核心目的是在客户端(如浏览器)和服务器(如网站)之间建立一条加密、可信赖的数据传输通道,以解决传统 HTTP 协议明文传输带来的安全风险。
它的核心本质是:
HTTP + TLS/SSL 加密层
- HTTP: 负责传输网页内容(文本、图片、视频等)。
- TLS/SSL: 负责在 HTTP 传输之前,对数据进行加密、验证服务器身份、确保数据完整性(不被篡改)。
1.2 HTTPS 解决了 HTTP 的三大核心安全问题
- 窃听(机密性):
HTTP 问题: 数据在网络上像明信片一样传输,任何截获流量的人(黑客、ISP、路由器)都能直接看到内容(密码、信用卡号、聊天记录)。
HTTPS 方案: 使用 TLS/SSL 加密。传输前将数据"打乱"成密文,只有拥有正确密钥的服务器才能"解开"还原。截获者看到的只是乱码。 - 篡改(完整性):
HTTP 问题: 攻击者可以在数据包传输途中修改内容(如插入广告、病毒链接、修改转账金额)。
HTTPS 方案: 使用 消息认证码(MAC) 或 数字签名。接收方会校验数据的"指纹",如果数据被篡改,指纹就对不上,接收方会丢弃数据并报警。 - 冒充(身份认证):
HTTP 问题: 无法确认你连接的是真正的"银行网站"还是黑客伪造的"钓鱼网站"。
HTTPS 方案: 使用数字证书。
服务器需要向受信任的第三方机构申请证书。证书包含服务器的域名、公钥,并由 证书颁发机构(CA) 用其私钥签名。
浏览器内置了信任的 CA 公钥列表。连接时:
服务器发送证书。→浏览器用内置的 CA 公钥验证证书签名是否有效。→检查证书中的域名是否与访问的网站一致。→检查证书是否在有效期内、未被吊销。
只有通过这些严格验证,浏览器才会认为服务器身份可信,才会显示安全锁图标。这大大降低了访问到假冒网站的风险。
1.3 传输过程
1.TCP 连接 : 浏览器连接到服务器的 443 端口(HTTPS 默认端口),建立基础的 TCP 连接。
2.TLS/SSL 握手(最关键的安全步骤):
- 协商加密算法和版本。
- 服务器发送其数字证书供浏览器验证身份。
- 安全交换或生成一个只有双方知道的临时会话密钥(核心是 Pre-Master Secret 的交换和 Master Secret 的生成)。
3.生成会话密钥: 双方利用握手过程中的随机数和 Pre-Master Secret,生成相同的对称加密密钥(用于后续高效加密数据)。
4.加密通信: 后续所有的 HTTP 请求和响应数据,都使用第 3 步生成的对称密钥进行加密,并附上完整性校验码(MAC),然后通过 TCP 连接传输。即使数据被截获,也是无法解读的乱码。
5.关闭连接: 通信结束,关闭 TCP 连接。
客户端 (浏览器) 服务器 (网站)
| |
| ------------ TCP 三次握手 -------------> | (建立可靠连接)
| <-------------------------------------- |
| |
| ----------- Client Hello -------------> | (支持的版本、加密套件、随机数、SNI等)
| <-------- Server Hello, Certificate --- | (选定的版本、加密套件、随机数、服务器证书)
| <--- (可选) Server Key Exchange, etc. -- |
| <--------- Server Hello Done ---------- |
| |
| -- (可选) Client Certificate (如需) -----|
| ----------- Client Key Exchange ------> | (发送加密的预主密钥或参数)
| -- (可选) Certificate Verify (如需) ----> |
| --------- Change Cipher Spec ----------> | (客户端: "切换加密!")
| ----------- Finished (加密) ------------> | (客户端: "验证握手!")
| |
| <-------- Change Cipher Spec ----------- | (服务器: "切换加密!")
| <------------- Finished (加密) ---------- | (服务器: "验证握手!")
| |
| <======== TLS 安全通道建立完成! ==========> | (双方生成相同的会话密钥)
| |
| --------- Encrypted HTTP Request ------> | (应用数据记录)
| <-------- Encrypted HTTP Response ------ | (应用数据记录)
| --------- Encrypted HTTP Request ------> |
| <-------- Encrypted HTTP Response ------ |
| ... |
| |
| ------------- TCP 关闭 -----------------> | (四次挥手)
| <--------------------------------------- |
2 DNS
2.1 什么是DNS?
DNS 是计算机域名系统 (Domain Name System ) 的缩写,域名服务器是进行域名和与之相对应的IP地址转换的服务器

域名(Domain Name):是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。
FQDN(Fully Qualified Domain Name):即完全合格域名,由两个部分组成:主机名和域名。
正向解析:从FQDN转换为IP地址称为正向解析。
反向解析 :从IP地址转换为FQDN称为反向解析。
区域:正向解析或反向解析中,每个域的记录就是一个区域。
www.xaiu.edu.cn
www:主机名
xaiu.edu.cn:域名
正向解析为域名转换为计算机识别的IP地址
反向解析为IP地址转换为容易记忆的域名
2.2 DNS传输过程
2.2.1 域名解析原理:
域名解析工作通过调用服务器上的解析器软件完成的;
DNS域名解析按照域名空间的分层树状结构自顶至下进行;
2.2.2 详细解析

两个解析命令:nslookup与dig
/ | nslookup | dig |
---|---|---|
windows | √ | × |
linux | √ | √ |
以dig命令为例:
+[no]trace (Trace delegation down from root [+dnssec])
(追踪总体的解析流程)
以西安外事学院www.xaiu.edu.cn为例
根域服务器收到来自127.0.0.53的dns域名请求:
收到来自(m.root-servers.net)根域服务器的dns解析
从m.root-servers.net根据.cn返回.cn TLD服务器地址(b.dns.cn)并向b.dns.cn发起查询xaiu.edu.cn的NS记录
TLD服务器地址(b.dns.cn)收到请求,返回xaiu.edu.cn的权威服务器(dns3.edu.cn)
收到后向权威服务器(dns3.edu.cn)发送查询www.xaiu.edu.cn的A记录
返回www.xaiu.edu.cn的A记录为61.185.201.14
dns解析第一次将会查询缓存表,缓存表有将不会在解析,若没有则需要解析,找到host文件,因为解析之前需要查找host文件,若host文件没有缓存,则需要去找路由器,路由器则会使用十三台根域服务器,根域服务器根据域名后缀cn转给TLD服务器地址(b.dns.cn),TLD服务器地址(b.dns.cn)将会根据二级域名edu转到权威服务器(dns3.edu.cn),权威服务器(dns3.edu.cn)将会根据xaiu把最终的ip解析出来,服务器将最终解析出来的ip返回路由器,路由器再下发给电脑,电脑访问(经历TCP三次握手和四次挥手)后将缓存记录在本地。