Appearance
TCP 连接的建立与终止 🤝
TCP 协议作为面向连接的传输层协议,在进行数据传输之前必须先建立连接
连接的本质是通信双方各自在内存中开辟一块空间,用于存储以下关键信息:
- 📦 数据缓冲区
- 🔄 连接状态变量
- ⚙️ 控制信息等
三次握手 (Connection Establishment) 🌟
- 🔵 第一次握手:客户端发送 SYN 报文给服务端,请求建立连接
- 🔴 第二次握手:服务端收到 SYN 报文后,会发送 SYN + ACK 报文给客户端,确认收到客户端的 SYN 报文
- 🔵 第三次握手:客户端收到服务端的 SYN + ACK 报文后,会发送 ACK 报文给服务端,确认收到服务端的 SYN + ACK 报文
三次握手的核心目的是为了确认双方的接收和发送能力是否正常。
📞 就像打电话时的对话:
- A:「喂,能听到吗?」
- B:「我能听到,你能听到我说话吗?」
- A:「能听到」
四次挥手 (Connection Termination) 👋
- 🔵 第一次挥手:客户端发送 FIN 报文,表示「我这边没有数据要发送了」
- 🔴 第二次挥手:服务端收到 FIN 报文后,发送 ACK 报文,表示「我知道了,但我可能还有数据要发送」
- 🔴 第三次挥手:服务端处理完所有数据后,发送 FIN 报文,表示「我这边也没有数据要发送了」
- 🔵 第四次挥手:客户端收到 FIN 报文后,发送 ACK 报文,表示「好的,那就断开连接吧」
📱 形象地说,就像结束电话时的对话:
- A:「我说完了,你还有什么要说的吗?」
- B:「我知道了,稍等,我还有几句话要说」
- B:「好了,我也说完了」
- A:「好的,那就挂断吧」