HTTP与TCP的区别
HTTP 和 TCP 的层级、功能和关系对比
问题
HTTP 和 TCP 有什么不同?它们之间是什么关系?
解答
协议层级
应用层 HTTP、FTP、DNS、WebSocket
↓
传输层 TCP、UDP
↓
网络层 IP
↓
链路层 以太网、Wi-Fi
- TCP 位于传输层,负责数据的可靠传输
- HTTP 位于应用层,定义客户端和服务器之间的通信格式
功能对比
| 特性 | TCP | HTTP |
|---|---|---|
| 层级 | 传输层 | 应用层 |
| 职责 | 可靠传输数据 | 定义请求/响应格式 |
| 连接 | 面向连接(三次握手) | 基于 TCP 连接 |
| 状态 | 有状态(维护连接状态) | 无状态(每次请求独立) |
| 数据单位 | 字节流 | 报文(请求/响应) |
TCP 做什么
客户端 服务器
| ---- SYN ----> | 三次握手建立连接
| <--- SYN+ACK --- |
| ---- ACK ----> |
| |
| ---- 数据 ----> | 可靠传输
| <--- ACK --- | (确认、重传、排序)
| |
| ---- FIN ----> | 四次挥手断开连接
| <--- ACK --- |
| <--- FIN --- |
| ---- ACK ----> |
TCP 保证:
- 数据不丢失(确认重传机制)
- 数据有序(序列号)
- 流量控制(滑动窗口)
HTTP 做什么
# 请求格式
GET /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
# 响应格式
HTTP/1.1 200 OK
Content-Type: application/json
{"name": "张三"}
HTTP 定义:
- 请求方法(GET、POST、PUT、DELETE)
- 状态码(200、404、500)
- 头部字段(Content-Type、Cookie)
- 报文格式
它们的关系
浏览器发送 HTTP 请求
↓
HTTP 报文交给 TCP
↓
TCP 建立连接,分段传输
↓
服务器 TCP 接收,组装数据
↓
交给 HTTP 解析处理
HTTP 依赖 TCP 提供可靠传输,TCP 不关心传输的具体内容。
关键点
- TCP 是传输层协议,HTTP 是应用层协议,HTTP 基于 TCP
- TCP 负责可靠传输(不丢、有序),HTTP 负责定义通信格式
- TCP 面向连接且有状态,HTTP 无状态
- TCP 传输字节流,HTTP 传输结构化的请求/响应报文
- HTTP/3 改用 UDP + QUIC,不再依赖 TCP
目录