1.四次挥手
第一次挥手:A的应用进程先向其TCP发出连接释放报文段,并停止发送数据,主动关闭TCP连接。报文段的内容为:首部终止控制位FIN=1,序号seq=u(前面传输的数据最后一个字节的序号+1),A进入FIN-WAIT-1状态,等待B的确认。FIN不携带数据也会消耗一个序号。
第二次挥手:B在收到连接释放报文段后立即发送确认报文段,内容为:ACK=1,ack=u+1,seq=v(前面传输的数据最后一个字节的序号+1)。然后B就进入CLOSE-WAIT状态。此时A到B这个方向的连接就释放了,这时TCP处于半关闭状态,即A没有数据要发送了,但B到A的连接还没断开,一段时间内,B还可能有数据发送给A。A收到B的ACK后进入FIN-WAIT-2状态,等待B发送连接释放报文。
第三次挥手:若B已无数据要向A发送,则其应用程序就通知TCP释放连接。这时,B发送连接释放报文段,内容为:FIN=1,ACK=1,seq=w(前面传输的数据最后一个字节的序号+1),ack=u+1。此时,B进入最终状态LAST-ACK,等待A的确认。
第四次挥手:A收到B的FIN之后,发送确认报文段,内容为:ACK=1,seq=u&