TCP 握手次数

TCP 协议是网络协议中重要的一环,也是理解 HTTP 协议的基础。TCP 协议建

立链接需要三次握手,释放链接需要四次握手。为什么不是更少或者是更多?

本文将会给你一个答案。

连接阶段

TCP 连接需要三次握手,如下所示:

Client ------SYN-----> Server
Client <---ACK/SYN---- Server
Client ------ACK-----> Server

为什么不是两次握手呢?

Client ------SYN-----> Server
Client <-----ACK------ Server

这是因为 TCP 协议是一个双向通信协议。这意味着,采用 TCP 协议的通信双方

都有发送消息的权利。所以,通信双发都必须认证对方能够收到自己的连接请

求。如下所示:

Client ------SYN-----> Server
Client <-----ACK------ Server
Client <-----SYN------ Server
Client ------ACK-----> Server

幸运的是, ACK 和 SYN 可以在一个请求中发送,所以最后只需三次握手。

Client ------SYN-----> Server
Client <---ACK/SYN---- Server
Client ------ACK-----> Server

断开阶段

断开连接需要四次握手

Client ------FIN-----> Server
Client <-----ACK------ Server
Client <-----FIN------ Server
Client ------ACK-----> Server

为何不像建立链接一样三次握手呢?

Client ------FIN-----> Server
Client <----ACK/FIN--- Server
Client ------ACK-----> Server

这是因为开头提到的 TCP 是一个双向通信的协议,因此,Server 端此时可能仍

然在发送数据,只有当 Server 端结束数据发送之后,才会关闭连接。所以

ACK 和 FIN 需要分开发送。

参考链接

Why do we need a 3-way handshake? Why not just 2-way?

Explain Four-way Handshaking method to terminate a connection in TCP?

《TCP 握手次数》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注