# 🌐 TCP 连接与断开总结

## 🔗 TCP 连接建立（三次握手）
1. **Client → Server**：发送 `SYN`（请求建立连接）。  
2. **Server → Client**：回复 `SYN + ACK`（同意并确认请求），并分配资源。  
3. **Client → Server**：再发送 `ACK`（确认收到），也分配资源。  

✅ **完成三次握手，连接建立成功。**

---

## 🔒 TCP 连接断开（四次挥手）
1. **Client → Server**：发送 `FIN`（我没有数据要发了）。  
2. **Server → Client**：回复 `ACK`（收到请求，但可能还有数据要发），此时 Client 进入 `FIN_WAIT` 状态。  
3. **Server → Client**：当数据发送完成，发送 `FIN`（我也准备好关闭了）。  
4. **Client → Server**：回复 `ACK`，并进入 `TIME_WAIT` 状态，等待 2MSL，确保 Server 收到确认。  

✅ **完成四次挥手，连接安全关闭。**

---

## ❓ 为什么要三次握手？
- **两次握手的风险**：若请求报文滞留在网络中，Server 可能会收到多次请求，建立多个无效连接，造成资源浪费。  
- **三次握手的好处**：避免 **重复连接** 的问题，确保 **双方通信能力正常**。

---

## ❓ 为什么要四次挥手？
- 关闭连接需要 **双向确认**：  
  - Client 不再发送数据，但 **Server 可能还有数据要发**。  
  - 所以必须分为两步：  
    - **Client 先关闭发送通道**。  
    - **Server 再关闭自己的发送通道**。  
- 保证 **双方通信的完整性**，不会丢数据。

---

## 📌 使用 TCP 的常见协议
- 📂 **FTP**（文件传输协议）  
- 🖥️ **Telnet**（远程登录协议）  
- 📧 **SMTP**（简单邮件传输协议）  
- 📩 **POP3**（接收邮件协议）  
- 🌍 **HTTP/HTTPS**（超文本传输协议）  
