HTTP 与 HTTPS 入门:从请求流程到 TLS 握手
引言
每天打开浏览器、刷视频、登录网站,背后都离不开两个协议:HTTP 与 HTTPS。它们看起来只差一个字母 S,实际却代表了两种完全不同的通信方式。本文从一次完整的请求流程讲起,再拆解 TLS 握手,帮助初学者建立起对 Web 通信安全的整体认识。
一、HTTP 是什么
HTTP(超文本传输协议)是浏览器与服务器之间约定好的“对话规则”。它规定了请求长什么样、响应长什么样、状态码代表什么意思。HTTP 基于请求-响应模型:客户端先发起请求,服务器再返回响应,一问一答完成一次交互。
HTTP 协议本身非常简单:请求由请求行、请求头和请求体组成;响应由状态行、响应头和响应体组成。常见的请求方法有 GET、POST、PUT、DELETE,常见的状态码有 200 成功、301 永久重定向、404 资源不存在、500 服务器内部错误。
二、一次 HTTP 请求的完整流程
以在浏览器输入网址并回车为例,背后依次发生以下步骤:
- 域名解析:浏览器先查缓存,再向 DNS 服务器查询域名对应的 IP 地址。
- 建立 TCP 连接:通过三次握手与服务器建立可靠连接。
- 发送 HTTP 请求:浏览器把请求行、请求头发送给服务器。
- 服务器处理并响应:服务器找到资源,返回状态码、响应头和响应体。
- 浏览器渲染:浏览器解析 HTML、加载样式与脚本,把页面呈现出来。
- 断开连接:HTTP/1.1 默认使用长连接,连接可被后续请求复用。
理解这个流程很重要:很多网络问题,例如页面打不开、接口超时,都可以按这条链路逐段定位。
三、HTTP 的短板:明文传输
HTTP 最大的问题是“明文传输”。请求和响应在网络中以可读文本的形式传递,任何能截获流量的中间节点都能看到其中的内容,包括账号、密码和 Cookie。
此外,HTTP 没有身份验证机制:客户端无法确认对方是不是真正的服务器,容易遭遇中间人攻击;也没有完整性校验:传输内容被篡改后,接收方难以察觉。这些短板在互联网早期尚可容忍,如今已无法满足安全需求。
四、HTTPS:给 HTTP 加上一层“盔甲”
HTTPS 并不是一种全新的应用层协议,而是 HTTP + TLS 的组合。TLS(传输层安全协议)位于传输层与应用层之间,负责加密、身份认证和完整性校验。数据在交给 TCP 发送之前先被 TLS 加密,接收方再解密还原。
可以这样理解:HTTP 负责“说什么”,TLS 负责“安全地说”。浏览器地址栏出现小锁标志,就表示当前连接经过了 TLS 保护。
五、TLS 握手详解
在传输业务数据之前,客户端与服务器要先完成一次 TLS 握手,协商出后续加密使用的会话密钥。以 TLS 1.2 为例,主要步骤如下:
- ClientHello:客户端发送支持的 TLS 版本、加密套件列表和一个随机数。
- ServerHello:服务器选定 TLS 版本和加密套件,返回自己的随机数,并发送数字证书。
- 验证证书:客户端验证证书是否由可信 CA 签发、域名是否匹配、是否在有效期内。
- 密钥交换:客户端生成预主密钥,用服务器证书中的公钥加密后发送给服务器。
- 生成会话密钥:双方用两个随机数和预主密钥,各自算出相同的会话密钥。
- Finished:双方互发加密的 Finished 消息,确认握手成功,此后所有应用数据都用会话密钥加密传输。
TLS 1.3 进一步简化了握手,把往返次数从两次压缩到一次,并移除了不安全的加密算法,握手更快也更安全。
六、对称加密与非对称加密如何分工
TLS 的设计体现了一种经典分工:非对称加密只用在握手阶段,负责安全地协商密钥;对称加密用在数据传输阶段,负责高效地加密大量数据。非对称加密安全性高但速度慢,对称加密速度快但密钥分发困难,两者结合正好互补。
证书则是这套机制的信任锚。CA(证书颁发机构)为服务器的公钥“背书”,浏览器内置了可信 CA 列表,收到证书后沿着证书链逐级验证,最终确认服务器身份真实可信。
七、日常开发中的实用建议
- 生产环境一律使用 HTTPS,不要再为新站点提供纯 HTTP 访问。
- 证书到期前及时续期,避免因证书过期导致服务不可用。
- 开启 HSTS,让浏览器强制使用 HTTPS,防止被降级到 HTTP。
- 排查问题时可用
curl -v观察握手过程,或在浏览器开发者工具的“安全”面板查看证书信息。 - 注意混合内容:HTTPS 页面中不要引用 HTTP 资源,否则浏览器会拦截或告警。
八、常见误区
- 误区一:HTTPS 让网站变慢。 现代硬件和 TLS 1.3 已把握手开销降到很低,性能影响微乎其微。
- 误区二:用了 HTTPS 就万事大吉。 HTTPS 只保护传输过程,服务器漏洞、弱口令、XSS 等问题仍需另外防范。
- 误区三:证书等于身份绝对可信。 证书只能证明域名归属,不能证明网站内容本身没有恶意。
结语
从 DNS 解析、TCP 握手,到 HTTP 请求响应,再到 TLS 握手协商密钥,Web 通信是一条环环相扣的链路。理解 HTTP 与 HTTPS 的区别,不仅能帮助我们排查日常网络问题,也是在云上部署应用、保障数据安全的基本功。希望本文能成为你深入学习网络协议的一个起点。
- 点赞
- 收藏
- 关注作者
评论(0)