参考资料:https://blog.csdn.net/qq_38950316/article/details/81087809
1.建立TCP连接
三次握手过程
(1)客户端A发送SYN(seq=a)报文给服务器B,并进入SYN_SENT状态,等待服务器确认;
(2)服务器B收到SYN报文,回应一个SYNACK(seq=b,ack=a+1)报文给客户端A,其中ACK为对(1)的回应,SYN为请求回复,并进入SYN_RCVD状态;
(3)客户端A收到SYNACK报文后,回复B一个ACK(ack=b+1),并进入ESTABLISHED状态;B收到A的ACK报文后,也进入ESTABLISHED状态。
三次握手后,A和B之间成功建立连接,可以开始传输数据。
2.断开TCP连接
四次挥手过程
(1)客户端A上某个进程主动关闭连接,发送FIN(seq=a)报文给服务器B,并进入FIN-WAIT-1状态;
(2)B收到FIN报文,回应一个ACK报文,进入CLOSED-WAIT状态;A收到报文即进入FIN-WAIT-2状态,等待服务器发送最后报文;TCP服务器通知高层的应用进程,此时A没有要发送的数据,但如果B发送数据,A仍要接收;
(3)服务器B想客户端A发送最后数据FIN(seq=b)报文,并进入LAST-ACK状态,等待A的确认;
(4)A向B发送ACK(b+1)报文,进入TIME-WAIT状态,等待2MSL时间后撤销相应的TCP才能进入CLOSED状态;B接收到A的报文,即进入CLOSED状态。
四次挥手后,A和B成功地断开连接。