引言
网络通信的核心协议,不仅是后端开发的必备技能,也是前端优化、架构设计乃至安全防护的基础。OSI 七层模型与 TCP/IP 四层模型是理解网络通信的理论框架。在实际应用中,TCP/IP 模型更为广泛使用,包括应用层、传输层、网络层和链路层。本文重点讨论应用层协议 HTTP/HTTPS 和传输层协议 TCP/UDP。
传输层协议详解
TCP(传输控制协议)
在网络世界里,TCP 几乎是可靠传输的代名词。它以其可靠性和有序性著称,是大多数业务场景的首选。
核心特性:
- 面向连接:通信前必须建立连接,通信结束后释放连接
- 可靠传输:通过确认、重传、校验等机制确保数据正确到达
- 流量控制:滑动窗口机制防止发送方淹没接收方
- 拥塞控制:慢启动、拥塞避免、快速重传、快速恢复算法
三次握手建立连接:

这个过程确保了双方都准备好收发数据,并协商初始序列号。
四次挥手释放连接:

双向连接的独立关闭保证了数据传输的完整性。
UDP(用户数据报协议)
UDP 则是另一种思路,以简单和高效为设计理念。
核心特性:
- 无连接:发送数据前不需要建立连接
- 不可靠传输:不保证数据到达,不保证顺序
- 无状态:不维护连接状态
- 开销小:头部仅 8 字节,比 TCP 的 20 字节更精简
TCP vs UDP 对比分析
| 特性 | TCP | UDP |
|---|---|---|
| 连接性 | 面向连接 | 无连接 |
| 可靠性 | 高(确认、重传) | 低(无机制) |
| 顺序性 | 保证顺序 | 不保证顺序 |
| 速度 | 较慢(建立连接、确认) | 快(无握手) |
选择策略:
- 选择 TCP:需要可靠传输、数据完整性优先的场景
- 选择 UDP:实时性要求高、可容忍少量丢包、需要多播的场景
- 混合使用:部分应用在 UDP 上实现可靠传输机制
应用层协议详解
HTTP(超文本传输协议)
协议演进:
- HTTP/1.0:每个请求/响应后关闭连接
- HTTP/1.1:持久连接、管道化、分块传输
- HTTP/2:多路复用、头部压缩、服务器推送
- HTTP/3:基于 QUIC,解决队头阻塞
常用方法:
- GET:获取资源
- POST:提交数据
- PUT:更新资源
- DELETE:删除资源
- PATCH:部分更新
- HEAD:获取头部信息
- OPTIONS:查询支持方法
状态码分类:
- 1xx:信息性状态码
- 2xx:成功(200 OK、201 Created、204 No Content)
- 3xx:重定向(301 Moved Permanently、304 Not Modified)
- 4xx:客户端错误(400 Bad Request、403 Forbidden、404 Not Found)
- 5xx:服务器错误(500 Internal Server Error、502 Bad Gateway)
HTTP/2 核心改进:
- 二进制分帧:将消息分解为独立帧,交错发送
- 多路复用:一个连接并行多个请求/响应
- 头部压缩:HPACK 算法减少头部大小
- 服务器推送:服务器主动推送客户端可能需要的资源
HTTPS(安全超文本传输协议)
HTTPS = HTTP + SSL/TLS,为 HTTP通信提供加密、完整性和身份验证。
加密原理:
- 对称加密:加密解密使用相同密钥,速度快算法:AES、DES、3DES
- 非对称加密:公钥加密,私钥解密,安全性高算法:RSA、ECC、DH
- 混合加密:结合两者优势,用非对称加密交换对称密钥
数字证书与 PKI:
- CA(证书颁发机构):受信任的第三方
- 数字证书:包含公钥、持有者信息、CA 签名
- 证书链:根证书 → 中间证书 → 服务器证书
TLS 握手过程:
- ClientHello:客户端支持的 TLS 版本、密码套件、随机数
- ServerHello:服务器选择 TLS 版本、密码套件、随机数,发送证书
- 证书验证:客户端验证服务器证书
- 密钥交换:客户端生成预主密钥,用服务器公钥加密发送
- 计算密钥:双方用随机数和预主密钥计算会话密钥
- 完成消息:验证握手过程完整性
HTTPS 优势:
- **防窃听:**加密传输内容
- **防篡改:**数字签名保证完整性
- **防冒充:**证书验证身份
- **SEO 优势:**搜索引擎排名因素
协议间的协同工作
端到端通信流程实例
我们以访问 "https://www.example.com" 为例:
- DNS 解析:UDP 查询 www.example.com 的 IP 地址
- TCP 连接:与服务器 443 端口三次握手建立连接
- TLS 握手:协商加密参数,验证证书
- HTTP 请求:发送加密的 HTTP 请求
- HTTP 响应:接收加密的 HTTP 响应
- 渲染页面:浏览器解析 HTML,加载资源
- 连接关闭:四次挥手释放连接
常见通信模式
短连接模式(HTTP/1.0 默认):
请求 -> 响应 -> 关闭连接 新请求 -> 新连接 -> 响应 -> 关闭连接
- 优点:服务器资源占用少
- 缺点:连接建立开销大
持久连接模式(HTTP/1.1 默认):
建立连接 请求 1 → 响应 1 请求 2 → 响应 2 ... 请求 N → 响应 N 关闭连接
- 优点:减少连接建立开销
- 缺点:服务器需维护连接状态
HTTP/2 多路复用:
连接 ├─ 流 1:请求 1 → 响应 1 ├─ 流 2:请求 2 → 响应 2 ├─ 流 3:请求 3 → 响应 3 └─ 流 4:服务器推送资源
- 完全解决队头阻塞
- 头部压缩减少开销


