Client和Server通信前首先创建TCP连接。建立过程如下图所示:
1> Client首先发生SYN报文,并且初始化序号为client_isn;
2> Server收到SYN报文后,回SYN+ACK报文,初始化序号为server_isn;
3> Client收到SYN+ACK报文后,回ACK报文;
TCP的连接是全双工的,因此每个方向都需要单独确认,只不过在2>中将SYN/ACK一起做了,所以就变成了三次握手,而不是四次。
在TCP连接删除时,需要分四步。
TCP连接删除过程如下图所示。首先Client发送FIN 报文,执行主动关闭,Server回复ACK;然后Server向Client发送FIN报文,执行Server侧关闭,Client回复
ACK报文;为了确保最后一个ACK成功到达Server,Client会启动一个定时器(30秒),30秒后Client侧资源释放完毕。
Client /Server TCP连接建立/关闭的状态机如下图所示: