TCP三次握手_第1张图片

TCP三次握手建立连接过程:
① 客户端向服务端发送 SYN,表示要与服务端建立连接。客户端进入 SYN_SENT 状态,等待服务器确认。
② 服务端接收到来自客户端的请求,并返回 ACK 告诉客户端接收到了,同时向客户端发送 SYN,表示服务端也要向客户端建立连接。即发送 SYN+ACK 包,此时服务器进入 SYN_RCVD 状态。
③ 客户端接收到了来自服务端的请求,向服务端发送 ACK 确认建立连接。此时客户端和服务端都进入 ESTAB_LISHED 状态,表示建立连接成功。

问:TCP能否两次建立连接?
答:不能。原因我这里借鉴的是这篇文章TCP 为什么三次握手而不是两次握手

问:TCP能四次握手吗?
答:可以超过三次握手。如果前面有发生丢包的情况,就需要再次建立连接;步骤②的 SYN 包和 ACK 包如果分成两次发送给客户端,就又超过三次的情况。但是,超过三次建立连接这种尽量还是避免,建立连接如果时间太长,资源会造成浪费,效率也不高。三次既保证了可靠性,又节约了资源。