tcp断开连接的几种状态
FIN_WAIT_1:主動關閉連接的一方等待對方返回ACK包。若Socket在ESTABLISHED狀態下主動關閉連接并向對方發送FIN包(表示己方不再有數據需要發送),則進入FIN_WAIT_1狀態,等待對方返回ACK包,此后還能讀取數據,但不能發送數據。在正常情況下,無論對方處于何種狀態,都應該馬上返回ACK包,所以FIN_WAIT_1狀態一般很難見到。
FIN_WAIT_2:主動關閉連接的一方收到對方返回的ACK包后,等待對方發送FIN包。處于FIN_WAIT_1狀態下的Socket收到了對方返回的ACK包后,便進入FIN_WAIT_2狀態。由于FIN_WAIT_2狀態下的Socket需要等待對方發送的FIN包,所有常常可以看到。若在FIN_WAIT_1狀態下收到對方發送的同時帶有FIN和ACK的包時,則直接進入TIME_WAIT狀態,無須經過FIN_WAIT_2狀態。
TIME_WAIT:主動關閉連接的一方收到對方發送的FIN包后返回ACK包(表示對方也不再有數據需要發送,此后不能再讀取或發送數據),然后等待足夠長的時間(2MSL)以確保對方接收到ACK包(考慮到丟失ACK包的可能和迷路重復數據包的影響),最后回到CLOSED狀態,釋放網絡資源。
CLOSE_WAIT:表示被動關閉連接的一方在等待關閉連接。當收到對方發送的FIN包后(表示對方不再有數據需要發送),相應的返回ACK包,然后進入CLOSE_WAIT狀態。在該狀態下,若己方還有數據未發送,則可以繼續向對方進行發送,但不能再讀取數據,直到數據發送完畢。
LAST_ACK:被動關閉連接的一方在CLOSE_WAIT狀態下完成數據的發送后便可向對方發送FIN包(表示己方不再有數據需要發送),然后等待對方返回ACK包。收到ACK包后便回到CLOSED狀態,釋放網絡資源
總結
以上是生活随笔為你收集整理的tcp断开连接的几种状态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tcp建立连接的时的几种状态
- 下一篇: youtube获取播放列表信息