第一次握手:
客户端发送一个同步序列标号SYN(m)到服务器,等待服务器确认,此时客户端为SYN_SENT
第二次握手:
服务器接受到了来自客户端的请求,发送确认包ACK(m+1),同时也会发一个SYN(n)包,此时服务器状态为SYN_RECV
第三次握手:
客户端接受了来自服务器的ACK和SYN包,继续发送一个ACK(n+1)包向服务器确认收到,服务器收到以后,此时客户端和服务器的状态都是ESTABLISH,即TCP链接成功
但是如果A端与B端需要断开时,需要4次挥手
第一次挥手:
A端向B端请求断开连接时,会发送一个FIN(finish)标记的报文段
第二次挥手:
B端接受到A端的FIN,B端可能还有数据没有接受完,所以会发送一个确认序号ACK,让A端等一会
第三次挥手:
此时B端已经接受完了数据,可以断开连接了,就会向A端发送FIN序号,让A端明白可以断开连接了
第四次挥手:
A端接受到B端的FIN后,向B端发送一个确认ACK,然后经过一段时间后断开连接(一般为二个最大报文生存时间)