TCP(Transmission Control Protocol,传输控制协议)是一种面向连接、可靠、基于字节流的传输层协议。它是互联网上最核心的通信协议之一,用于保障数据在网络中完整、有序且可靠地传输。
一、什么是 TCP 连接?
简单定义:
TCP 连接是一个由客户端与服务器之间通过三次握手建立起来的双向通信通道,用于可靠的数据传输。
当你在浏览器访问一个网站,或使用 App 发送消息时,背后大概率都用了 TCP 连接进行数据通信。
二、TCP 连接的关键特性
| 特性 | 描述 |
|---|---|
| 面向连接 | 通信双方必须先建立连接,才能进行数据传输 |
| 可靠性高 | 通过序列号、确认应答、重传机制等保证数据不丢、不重复、不乱序 |
| 双向通信 | 双方都可以发送和接收数据 |
| 有序传输 | 接收端收到的数据顺序与发送端发送顺序一致 |
| 流量控制 | 防止发送方发送速度太快导致接收方处理不过来 |
| 拥塞控制 | 避免网络拥塞,控制发送速度 |
| 基于字节流 | 数据没有消息边界,像流一样连续传输,应用层负责划分消息 |
三、TCP 连接的建立过程(三次握手)
建立连接的过程叫做 “三次握手”(Three-Way Handshake)
时序图:
客户端 服务端
| ---------- SYN ------------> | // 第一次握手:客户端发送连接请求(SYN)
| <-------- SYN-ACK ---------- | // 第二次握手:服务端应答并同步(SYN + ACK)
| ---------- ACK ------------> | // 第三次握手:客户端确认连接建立
三次握手详解:
-
SYN(synchronize):客户端发起请求,告诉服务端要建立连接,并携带客户端初始序列号
Seq=x。 -
SYN+ACK:服务端收到请求后同意连接,并返回一个确认(ACK)和它自己的初始序列号
Seq=y。 -
ACK:客户端收到后再发一个确认包(ACK),连接建立成功。
四、TCP 连接的断开过程(四次挥手)
断开连接过程叫 “四次挥手”(Four-Way Handshake)
客户端 服务端
| -------- FIN -------------> | // 客户端请求断开连接
| <------- ACK -------------- | // 服务端确认
| <------- FIN -------------- | // 服务端也请求断开连接
| -------- ACK --------------> | // 客户端确认,连接完全断开
为什么断开要四次?
因为 TCP 是全双工通信,每一方都需要单独发一个 FIN 表示自己关闭“发送”通道。
五、TCP 连接状态(常见状态图)
TCP 连接会经历多个状态:
| 状态 | 描述 |
|---|---|
| CLOSED | 初始状态,没有连接 |
| SYN_SENT | 客户端已发送连接请求 |
| SYN_RECEIVED | 服务端收到连接请求 |
| ESTABLISHED | 连接建立完成,可以通信 |
| FIN_WAIT_1 | 一方请求断开连接 |
| FIN_WAIT_2 | 等待对方关闭连接 |
| TIME_WAIT | 等待对方确认,防止旧包影响 |
| CLOSE_WAIT | 对方断开,我方还未关闭 |
| LAST_ACK | 等待最后一个确认 |
| LISTEN | 服务器监听中,等待连接 |
可用 netstat -an 命令查看当前系统 TCP 连接的状态。
六、TCP 与 UDP 的区别(快速了解)
| 项目 | TCP | UDP |
|---|---|---|
| 是否连接 | 有连接(三次握手) | 无连接 |
| 可靠性 | 可靠(保证顺序和完整性) | 不可靠 |
| 是否有序 | 是 | 否 |
| 速度 | 较慢 | 快速 |
| 应用场景 | HTTP、FTP、SSH、邮件 | DNS、视频流、VoIP、游戏 |
七、TCP 应用举例
-
浏览网页(HTTP/HTTPS)
-
文件传输(FTP)
-
邮件协议(SMTP/POP3/IMAP)
-
远程登录(SSH)
-
聊天、社交应用(如微信、QQ)
八、可视化:三次握手 + 四次挥手图
客户端 服务端
| SYN (Seq=x) |
|---------------------->|
| SYN+ACK (Seq=y) |
|<----------------------|
| ACK |
|---------------------->|
| 连接已建立 |
| FIN |
|---------------------->|
| ACK |
|<----------------------|
| FIN |
|<----------------------|
| ACK |
|---------------------->|
| 连接断开完成 |
九、总结一句话
TCP连接 = 一条可靠、双向的通信通道,保障客户端与服务端之间的数据“完整、按顺序”送达,是现代网络通信的核心。

被折叠的 条评论
为什么被折叠?



