TCP连接的建立与终止

一 TCP是一个面向连接的协议。通常由客户端向服务端发送数据前建立。

      连接的建立通过3次握手完成,客户端首先向服务端发送一个SYN,服务端响应一个SYN同时对客户端的SYN返回一个ACK,客户端再对服务端的SYN返回一个确认的ACK。至此一个TCP连接建立完毕。具体过程如下图所示:

从上图中我们可以看到在发送数据之前必须先通过3次握手来建立连接。之后可以正常的发送数据。在发送完数据之后需要通过4次握手来关闭一个TCP连接。客户端向服务端发送一个FIN表明没有数据再向服务端发送了(注意这个时候服务端还是可以向客户端发送数据的)同时进入FIN-WAIT-1状态。服务端对客户端的FIN返回一个ACK进行确认,进入CLOSE-WAIT状态。客户端收到次ACK后进入到FIN-WAIT-2状态。服务端的TCP连接会向应用层报告客户端已经没有数据发送了,再将自己剩余的数据发送给客户端之后也向客户端发送一个FIN,同时进入LAST-ACK状态。客户端收到服务端的FIN并发送次FIN的ACK之后进入TIME-WAIT状态,一般持续2MSL。

原文地址:https://www.cnblogs.com/nicganon/p/3917833.html