三次握手:
客户端A 服务端B1. A发出请求联机,SYN=1和seq number=i的SYN包给B,并进入SYN_SEND状态
2. B收到后确认联机信息 ,向A发送ACK包(ack=1,ack number=i+1)和一个SYN包(syn=1,seq number=k)给A ,此时B进入SYN_RECE状态
3. A收到B发来的SYN+ACK包,检查ack number是否是i+1和ack标志位是否是1,如果是则向服务端B发送确认包ACK(ack number=k+1,ack=1),此包发送完毕客户端和服务端都进入established状态,完成三次握手。
四次挥手:
1. A向B发送TCP包,用了关闭客户端到服务端的数据传送,将标志FIN=1,seq number=i,A进入FIN_WAIT1状态。2. B收到FIN后,发送一个ACK(ack=1,ack number=i+1)还有一个seq number=j 给A, B进入CLOSE_WAIT(因为服务器B向A发送的数据不一定也发完)状态,A收到回应ACK报文后进入FIN_WAIT2状态
3. 服务器B发送一个TCP包,用来关闭服务端到客户端的数据传送,标志位FIN=1,ACK=1,seq number=k,ack number= i+1,B进入LAST_ACK状态
4.A收到FIN后,A进入TIME_WAIT,接着发送一个ACK(ack=1ack number=k+1)和seq number=i+1给B,B收到后进入CLOSED状,A还要等待2倍的MSL时间进入Closed状态
MSL(Maximum Segment Lifetime)报文最长存活时间