靚麗時尚館

位置:首頁 > 健康生活 > 心理

tcp,斷開連接的幾種情況

心理1.88W
tcp 斷開連接的幾種情況

FIN_WAIT_1:主動關閉連接的一方等待對方返回ACK包。若Socket在ESTABLISHED狀態下主動關閉連接並向對方發送FIN包(表示己方不再有數據需要發送),則進入FIN_WAIT_1狀態,等待對方返回ACK包,此後還能讀取數據,但不能發送數據。在正常情況下,無論對方處於何種狀態,都應該馬上返回ACK包,所以FIN_WAIT_1狀態一般很難見到。

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 斷開連接