什么是 TCP?
TCP(Transmission Control Protocol,传输控制协议) 是互联网的核心协议之一,属于 传输层(Transport Layer)。
它的主要作用是:
在两台计算机之间 可靠、有序、无差错地传输数据。
TCP 就像一个负责、聪明的快递员,确保每一份数据包都完整、安全地送到目的地。
TCP 的核心特性
| 特性 | 说明 |
|---|---|
| ✅ 面向连接 | 通信前必须建立连接(三次握手),通信结束要关闭(四次挥手) |
| 🔁 可靠传输 | 确保数据不丢失、不重复、顺序正确 |
| 📦 流量控制 | 根据接收方处理能力动态调整发送速度(滑动窗口) |
| 🚦 拥塞控制 | 避免网络拥堵,自动调整发送速率 |
| 🔄 全双工通信 | 双方可同时发送和接收数据 |
| 🧮 面向字节流 | 数据以连续的字节流形式传输,而非独立数据包 |
TCP 的“可靠传输”机制
TCP 能在不稳定的网络环境下保证数据可靠性,主要依赖以下机制 👇
| 机制 | 功能 | 举例说明 |
|---|---|---|
| 序列号(Sequence Number) | 给每个数据包编号,保证顺序传输 | 包 ① 序号 1001 → 包 ② 序号 1002 |
| 确认应答(ACK) | 接收方回复“我收到了” | ACK=1002 表示已收到前一包 |
| 超时重传 | 超时未收到确认则重发 | 没收到 ACK → 重新发包 |
| 流量控制(Sliding Window) | 防止对方来不及接收 | 根据接收方窗口大小调整发送速率 |
| 拥塞控制 | 防止网络过载 | 网络忙时减速,空闲时加速 |
TCP 的连接过程
1️⃣ 三次握手(建立连接)
1① 客户端 → 服务器:SYN(请求建立连接)
2② 服务器 → 客户端:SYN + ACK(同意并确认)
3③ 客户端 → 服务器:ACK(确认)
4✅ 连接建立,准备传数据
2️⃣ 四次挥手(断开连接)
1① 客户端:FIN(我发完了)
2② 服务器:ACK(我知道了)
3③ 服务器:FIN(我也发完了)
4④ 客户端:ACK(确认)
5🚪 连接关闭
TCP 与 HTTP 的关系与区别
| 对比项 | TCP | HTTP |
|---|---|---|
| 协议层级 | 传输层 | 应用层 |
| 功能 | 负责“怎么传”数据 | 负责“传什么”数据 |
| 关系 | HTTP 基于 TCP 实现 | TCP 为 HTTP 提供可靠传输通道 |
| 举例 | 电话线路 | 对话内容 |
| 默认端口 | 不固定 | 80(HTTP) / 443(HTTPS) |
✅ HTTP 依赖 TCP 来确保网页数据能够可靠地从服务器传到浏览器。
TCP 文字示意图回顾
1Sender → Receiver : [Seq=1001] 数据块①
2Receiver → Sender : [ACK=1002] 收到①
3Sender → Receiver : [Seq=1002] 数据块②
4Receiver → Sender : [ACK=1003] 收到②
5Sender → Receiver : [Seq=1003] 数据块③ (丢失)
6Sender(超时)→ 重发 数据块③
7Receiver → Sender : [ACK=1004] 收到③ ✅
👉 最终数据恢复为:
1数据① → 数据② → 数据③
总结一句话
TCP 是互联网的可靠传输基础。 它通过“编号、确认、重传、流控、拥塞控制”等机制, 确保数据在复杂的网络环境中依然能安全、有序、完整地抵达目标。
📦 形象比喻:
TCP 是快递系统(负责安全运输) HTTP 是包裹内容(网页、图片、视频等)