TCP三次握手是为了确认双方的接收能力和发送能力是否正常,以保证客户端和服务器端的可靠连接。三次握手的步骤如下123
- 客户端发送SYN包到服务器。
- 服务器收到SYN包,回复一个SYN+ACK包。
- 客户端收到服务器的SYN+ACK包后,回复一个ACK包,完成三次握手。
TCP的四次挥手是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。四次挥手的过程如下123:
- 客户端向服务器发送一个 FIN 数据包,告诉服务器:我要跟你断开连接了,不会再给你发数据了。此时客户端处于 FIN_WAIT1 状态。
- 服务器收到 FIN 数据包之后,向客户端发送确认包,把客户端的序列号值 + 1。此时服务器处于 CLOSE_WAIT 状态。
- 服务器发送完确认报文后,服务器的 TCP 程序创建一条自己的断开连接报文,此报文的 FIN 字段被置为 1 ,然后发往客户端。此时服务器处于 LAST_ACK 状态。
- 客户端接收到服务器发来的 FIN 报文段,则产生一条确认报文,发送给服务器,告知服务器已经接收到了它的断开报文。此时客户端处于 TIME_WAIT 状态。