TCP 3次握手
是指建立一个TCP连接时,需要客户端和服务器总共发送3个报文。3次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。3次握手的过程如下:
第一次握手:客户端发送一个SYN报文,指明客户端打算连接的服务器端口,以及初始序列号。此时客户端进入SYN-SENT状态。
第二次握手:服务器收到SYN报文后,如果同意连接,则发送一个SYN+ACK报文,确认客户端的SYN,并告知自己的初始序列号。此时服务器进入SYN-RCVD状态。
第三次握手:客户端收到SYN+ACK报文后,发送一个ACK报文,确认服务器的SYN+ACK,并告知自己的初始窗口大小。此时客户端和服务器进入ESTABLISHED状态,完成三次握手。
TCP 4次挥手
是指终止一个TCP连接时,需要客户端和服务器总共发送4个报文。4次挥手的目的是断开客户端和服务器的连接,释放双方的资源。4次挥手的过程如下:
第一次挥手:客户端发送一个FIN报文,表示自己已经没有数据要发送了,请求关闭连接。此时客户端进入FIN-WAIT-1状态。
第二次挥手:服务器收到FIN报文后,发送一个ACK报文,确认客户端的FIN。此时服务器进入CLOSE-WAIT状态,客户端进入FIN-WAIT-2状态。
第三次挥手:服务器发送一个FIN报文,表示自己也没有数据要发送了,请求关闭连接。此时服务器进入LAST-ACK状态。
第四次挥手:客户端收到FIN报文后,发送一个ACK报文,确认服务器的FIN。此时客户端进入TIME-WAIT状态,等待2MSL后进入CLOSED状态。服务器收到ACK报文后,也进入CLOSED状态。