- HTTP、HTTPS、1.0、1.1、2.0、gRPC、WebSockets、三次握手四次挥手,这些内容有什么区别吗?
🧩 一、先看总体分类
| 类别 | 内容 | 说明 |
|---|
| 传输层协议(TCP/UDP) | TCP(三次握手、四次挥手) | 控制数据如何可靠传输 |
| 应用层协议 | HTTP / HTTPS / gRPC / WebSocket | 定义“数据内容”怎么组织与交互 |
| HTTP版本演进 | HTTP/1.0 → HTTP/1.1 → HTTP/2.0 | 不断优化性能与并发效率 |
| 安全层协议 | HTTPS (HTTP + TLS) | 在 HTTP 之上加密通信内容 |
🌐 二、HTTP 与 HTTPS
| 项目 | HTTP | HTTPS |
|---|
| 协议层 | 应用层 | 应用层 + 安全层(TLS/SSL) |
| 端口 | 80 | 443 |
| 是否加密 | ❌ 明文传输 | ✅ 加密传输(TLS) |
| 安全性 | 易被窃听、篡改 | 防中间人攻击、数据加密 |
| 典型使用 | 内网接口、本地调试 | 网站、APP正式环境 |
🚦 三、HTTP 各版本区别
| 版本 | 核心改进 | 问题解决 |
|---|
| HTTP/1.0 | 每个请求都要新建 TCP 连接 | 连接开销大 |
| HTTP/1.1 | 默认开启 长连接 (Keep-Alive)、支持 管道化 | 减少连接数,但仍有 队头阻塞 |
| HTTP/2.0 | 二进制帧、多路复用、头部压缩、服务器推送 | 高并发、高效传输 |
| HTTP/3.0(了解一下) | 基于 QUIC (UDP),无队头阻塞 | 更快、更稳定(如 YouTube、Chrome) |
🔗 四、gRPC 与 WebSocket
| 协议 | 基于 | 特点 | 适用场景 |
|---|
| gRPC | HTTP/2 | 使用 Protocol Buffers(高效序列化),支持双向流、强类型接口 | 微服务通信、后端对后端 |
| WebSocket | TCP(通过 HTTP 握手) | 长连接、全双工通信 | 实时聊天、在线游戏、股票行情推送等 |
简单理解:
- HTTP 是「请求-响应」模型(一次问一次答)。
- WebSocket 是「持续对话」模型(双方可随时发消息)。
- gRPC 则是「高性能 RPC 调用」,常用于服务之间的通信。
⚙️ 五、TCP 三次握手 & 四次挥手(传输层)
这部分是 HTTP、gRPC、WebSocket 等应用协议运行的“地基”。
🔸 三次握手(建立连接)
| 步骤 | 发起方 | 接收方 | 作用 |
|---|
| 1️⃣ SYN | → | 接收方 | 客户端请求建立连接 |
| 2️⃣ SYN + ACK | ← | | 服务端同意连接 |
| 3️⃣ ACK | → | | 客户端确认,连接建立完成 |
👉 确保双方都有发送、接收能力。
🔸 四次挥手(断开连接)
| 步骤 | 发起方 | 接收方 | 作用 |
|---|
| 1️⃣ FIN | → | | 客户端请求断开连接 |
| 2️⃣ ACK | ← | | 服务端确认(但可能还有数据没发完) |
| 3️⃣ FIN | ← | | 服务端准备关闭 |
| 4️⃣ ACK | → | | 客户端确认关闭,连接彻底断开 |
🧠 六、总结图(逻辑关系)
TCP(负责可靠传输)
│
├── HTTP (基于TCP的请求/响应协议)
│ ├── HTTP/1.0(短连接)
│ ├── HTTP/1.1(长连接)
│ ├── HTTP/2(多路复用)
│ └── HTTPS(加密版本)
│
├── gRPC(基于HTTP/2的高效RPC框架)
└── WebSocket(基于TCP的全双工通信)
✅ 小结一句话版
| 名称 | 所属层 | 核心功能 |
|---|
| TCP | 传输层 | 可靠数据传输(三次握手四次挥手) |
| HTTP | 应用层 | 请求-响应的超文本传输 |
| HTTPS | HTTP + TLS | 安全的HTTP |
| HTTP/1.0~2.0 | 协议版本演进 | 提升性能与并发 |
| gRPC | 应用层(HTTP/2) | 高性能RPC框架 |
| WebSocket | 应用层(基于TCP) | 实时全双工通信 |