TCP状态转移过程:
TCP连接的建立和断开过程中客户端和服务器的状态变化:
服务器状态转移过程:
服务器通过listen系统调用进入LISTEN状态,被动等待客户端连接,listen系统调用创建了一个监听队列,用来存放待处理的客户连接。
服务器一旦监听到某个客户端连接请求(即收到同步报文段(SYN)),就把该客户端连接放入内核监听队列中,并向客户端发送带SYN标志的确认报文段(ACK)。此时服务器端的连接状态处于SYN_RCVD状态。
如果服务器成功地连接收到客户端发送的确认报文段(ACK),则服务器连接状态转移到ESTABLISHED状态。ESTABLISHED状态是连接双方能够进行双向数据传输的状态。
当客户端主动关闭连接时(通过close或shutdown系统调用向服务器发送结束报文段(FIN)),服务器通过返回客户端确认报文段(ACK)使连接进入CLOSE_WAIT状态。CLOSE_WAIT状态:等待服务器应用程序关闭连接。
当服务器检测到客户端关闭连接后,也会立即发送发送一个结束报文段(FIN)来关闭连接,这是服务器连接状