# TCP 为什么是 3 次握手，4 次挥手？

### TCP 为什么是 3 次握手，4 次挥手？

**解析：**

TCP 是一个双工协议，为了让双方都保证，建立连接的时候，连接双方都需要向对方发送 SYN（同步请求）和 ACK（响应），握手阶段双方都没有繁琐的工作，因此一方向另一方发起同步（SYN）之后，另一方可以将自己的 ACK 和 SYN 打包作为一条消息回复，因此是 3 次握手 -- 需要3次数据传输

到了挥手阶段，双方都可能有未完成的工作。收到挥手请求的一方，必须马上响应（ACK），表示接收到了挥手请求。类比现实世界中，你收到了一个 Offer，出于礼貌你先回复考虑一下，然后思考一段时间再回复 HR 最后的结果。最后等所有工作结束，在发送请求中断连接（FIN），因此是 4 次挥手

<figure><img src="https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2FREbMkExFHBe9zEES8NeV%2Fimage.png?alt=media&#x26;token=b2d9e610-a186-4f42-8b7f-cca2ee7b1515" alt=""><figcaption><p>三次握手-全</p></figcaption></figure>

<figure><img src="https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2FT8IBmYdZtNBdHwkelCbd%2Fimage.png?alt=media&#x26;token=0e6f8548-264a-4ffa-b4a6-29588c4edbdc" alt=""><figcaption><p>三次握手-简</p></figcaption></figure>

<figure><img src="https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2FFTmXEFrpL8ul7ymvASq8%2Fimage.png?alt=media&#x26;token=f3a91291-c8bc-4aa1-a3d7-7def9a713697" alt=""><figcaption><p>四次挥手-简</p></figcaption></figure>
