TCP(Transmission Control Protocol,传输控制协议)建立连接的过程就是三次握手(为了确认双方都能接收到数据包,和发送数据包,客户端和服务器都会指定自己的初始化序列号,为后续数据稳定传输做好准备),实际上就是客户端与服务端之间总共发送三个数据包,而四次断开则是其连接关闭的重要机制,只有在连接已经建立并完成数据传输等操作后才会按照特定顺序进行四次断开。
三次握手
第一次握手:
客户端向服务器发送一个同步包,其中包含客户端选择的初始序列号。此时客户端处于SYN_SENT(同步发送)状态
第二次握手:
服务器接收到客户端的同步包后,向客户端发送一个同步确认包(SYN/ACK)(这是为了告诉客户端,客户端到服务端的连接通道是没问题的,并将服务器端的初始化序号作为ACK的值),此时服务器进入SYN_RECV(同步连接)
第三次握手:
客户端接收到服务器的同步确认包后,向服务器发送一个确认包,确认服务器的同步包,此时客户端和服务器进入ESTABLISHED(连接)状态,至此成功建立连接
四次断开
第一次断开:
客户端向服务器发送一个 结束包(FIN),表示客户端没有数据要发送了,想要关闭连接。此时客户端进入 FIN_WAIT_1(完成等待1) 状态。
第二次断开:
服务器收到客户端的 FIN 包后,向客户端发送一个 确认包,表示已经收到客户端的关闭请求。此时服务器进入 CLOSE_WAIT(关闭等待) 状态,客户端进入 FIN_WAIT_2 (完成等待2)状态。
第三次断开:
服务器处理完剩余的数据后,向客户端发送一个 结束包,表示服务器也没有数据要发送了,想要关闭连接。此时服务器进入 LAST_ACK(最后确认) 状态。
第四次断开:
客户端收到服务器的 结束包后,向服务器发送一个 确认包,表示已经收到服务器的关闭请求。此时客户端进入 TIME_WAIT(时间等待) 状态,经过一段时间后进入 CLOSED(关闭) 状态,服务器收到客户端的 ACK 包后直接进入 CLOSED 状态,连接关闭。