即双方确认“我没话说”的过程
TCP是全双工的,所以A说不想说了,B得回一句知道了,还得回A自己也不想说了,A得再ok拜
客户端:没数据要发了,发送FIN包(finish),停止发数据 FIN_WAIT_1
服务端:我知道了,等会儿,回发ACK包 (等发完自己的数据) FIN_WAIT_2
服务端:我也没数据发了,发送FIN包(finish),停止发数据 LAST_ACK
客户端:好的再见,回发ACK TIME_WAIT
服务端收到ACK后立刻关闭:CLOSED,客户端不是立刻关闭,,而是等待2MSL时间后真正关闭CLOSED
所以共四次挥手,且中间两部不想TCP连接时可以随便合并
一定不能合并吗?
当服务端接收到客户端的FIN时刚好也没数据发了,就可以合并了,这时就是三次挥手了