TCP的四次挥手的过程图如下:
![](https://img-blog.csdnimg.cn/img_convert/b3ff36837ed469f1740e44056bbe3163.png)
第一次挥手:发送FIN(终止位)请求断开连接:Seq(序列号)=X、ACK(确认位)=Y、PDU(重组组的协议数据单元)=0
Flags(标识):FIN(终止位)置位=1(请求终止)、ACK(确认位)置位=1
第二次挥手:发送ACK(确认位)把最后的数据进行发送:
Seq(序列号)=Y(上一个报文的ACK号)、ACK(确认位)=X+1+上个报文发送的数据(这里没有数据故为0)
Flags(标识):ACK(确认位)置位=1
第三次挥手:发送FIN(终止位)请求断开连接:
Seq(序列号)=Y(上一个报文的ACK号)、ACK(确认位)=X+1+上个报文发送的数据(这里没有数据故为0)
Flags(标识):FIN(终止位)置位=1(请求终止)、ACK(确认位)置位=1
第四次挥手: Seq(序列号)=X+1(上一个报文的ACK号)、ACK(确认位)=Y+1
Flags(标识): FIN(终止位)置位=0、ACK(确认位)置位=1
注意: Seq(序列号)=上一个报文的ACK号
ACK(确认位)=上一个报文的序列号+1+数据层的字节数