TCP建立连接,也称之为三次握手。那么我现在来简述一下这个TCP连接的过程
第一次握手,客户端发送SYN给服务器,客户端的状态为SYN_send,服务器接收到请求后,状态从Listen变成SYN_RCVD。
第二次握手,服务器发送SYN+ACK给客户端,客户端接收到数据包。
第三次握手,客户端发送ACK给服务器,客户端状态进入established。服务器接收到ACK后,状态从SYN_RCVD变成established。
TCP断开连接,也称之为四次挥手
第一次挥手,客户端与服务器的状态均处于established状态。客户端发送FIN给服务器,客户端的状态变成FIN_wait1,服务器的状态变成close_wait。
第二次挥手,服务器发送ACK给客户端。客户端的状态变成FIN_wait2。
第三次挥手,服务器发送FIN给客户端,状态变成last_ack,客户端接收到请求后,状态变成time_wait。
第四次挥手,客户端发送ACK给服务器,服务器接收到包后,状态从last_ack变成closed。客户端这边一般会持续4分钟的time_wiat。然后closed。
还有一种特殊的情况。是客户端和服务器,同时发起断开连接的情况。这里就会出现closeing的状态。过程就是,同时发起FIN请求断开连接。然后直接处于closeing状态。同时断开连接。