HTTP与TCP的区别

HTTP 和 TCP 的层级、功能和关系对比

问题

HTTP 和 TCP 有什么不同?它们之间是什么关系?

解答

协议层级

应用层    HTTP、FTP、DNS、WebSocket

传输层    TCP、UDP

网络层    IP

链路层    以太网、Wi-Fi
  • TCP 位于传输层,负责数据的可靠传输
  • HTTP 位于应用层,定义客户端和服务器之间的通信格式

功能对比

特性TCPHTTP
层级传输层应用层
职责可靠传输数据定义请求/响应格式
连接面向连接(三次握手)基于 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