TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。TCP建立连接时要传输三个数据包,俗称三次握手。
例如此图,首先 Client 端发送连接请求报文,然后Server 段接受连接后回复 ACK 报文,并为这次连接分配资源。最后Client 端接收到 ACK 报文后也向 Server 段发生 ACK 报文,并分配资源,这样 TCP 连接就建立了。
而四次断开就如图中所示,第一次:Clien发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。第二次:Server收到FIN后,发送一个ACK给Client,Server进入CLOSE_WAIT状态。第三次: Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。第四次:Client收到FIN后,Client进入TIME_WAIT状态,发送ACK给Server,Server进入CLOSED状态,完成四次握手。