三次握手:
首先客户端发送连接请求报文
服务器接受连接后恢复ACK报文,并为这次连接分配资源
客户端接收到ACK报文好后也向服务器发送ACK报文,并分配资源
四次挥手:
当客户端没有需要向服务器发送的数据时,首先向服务器发送FIN报文,表示自己发送数据完毕,服务器可以继续发送数据
服务器发送ACK报文,表示知道了,如果有,继续发送数据
服务器发送数据完毕,向客户端发送FIN报文
客户端接受后发送ACK报文,并进入计时等待状态,
为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。