三次握手步骤
1.客户端发送连接请求SYN包 其中seq=x;客户端进入SYN-SENT阶段
2.服务器端收到SYN包之后,会发送一个SYN+ACK包,ack=x+1(ack为确认号,以为SYN包中不包含数据,但是tcp规定SYN也消耗一个字节),seq=y
服务端进入SYN-RECD阶段
3.客户端收到之后,在发送ACK包,seq=x+1,ack=y+1,服务端收到之后,客户端和服务端都进入ESTABLISHED,三次握手完成
四次挥手
1.客户端发送一个一个连接释放报文FIN包,seq=y,进入FIN-WAIT-1状态
2.服务端收到之后发送一个确认报文ACK包,ack=y+1,seq = v,此时进入CLOSE-WAIT状态。
3.客户端收到确认报文之后,就进入FIN-WAIT-2状态。此时客户端停止向服务端发送数据,但是服务端还有可能还要发送数据,因此客户端需要等待服务端发送完成
4.服务端没有要发送的数据之后,就向客户端发送一个连接释放报文FIN,seq=u,ack=y+1;
5.客户端收到之后发送ACK确认包,seq=y+1,ack=u+1。进入TIME-WAIT,经过2MSL,关闭连接
6.服务端收到ACK之后,关闭连接