了解TCP的连接释放过程(四次挥手),首先要知道TCP报文段中FIN,ACK,seq,ack代表什么。
- FIN:6个控制位之一,用来释放一个连接,此时FIN置为1。
- ACK,seq,ack:添加链接描述
TCP规定:FIN报文段即使不携带数据,它也要消耗掉一个序号。
TCP规定:在连接建立后所有传送的报文ACK位必须置1。
- 当通信双方A、B有一方数据发送完毕后(假设为A),此时A想终止连接,就发送一个FIN报文,FIN=1;序号seq=u;这时A进入FIN-WAIT-1(终止等待1)状态。
- B收到A发送的FIN报文后,回复一个确认报文,ACK=1;seq=v;ack=u+1,注意这里ack不一定要等于u+1,因为A发送的FIN报文段是可以携带数据的,若数据长度为y,则ack=u+y。A的FIN报文不携带数据时,根据上面的规定一,ack=u+1。这时B进入CLOSE-