對TCP狀態的新理解

以前一直不明白TCP的四次斷連接的意義在哪,通過一段時間實踐的領悟大約明白了
1. 首先發起斷連接的一方,發送一個FIN信號給被斷連接的從方,在C++的代碼裏表示爲close(fd),那麼這個連接就進入FIN_WAIT1狀態。
2. 被動的一方,在收到斷連接之後發送ack給主動斷連接的一方,這時候被動方就進入CLOSE_WAIT狀態,主動方就進入FIN_WAIT2狀態。值得注意的是,這個是協議自動完成的,當被動方不調用自己的close(fd) 操作則會一直保持這狀態,通過netstat去觀察一直會有這個CLOSE_WAIT狀態,這樣如果被動方不調用close(fd)操作的話,會一直導致fd泄漏。
3. 被動一方調用close(fd) 方法關閉連接之後,發送一個FIN給主動端,則主動方就進入time_wait狀態,被動方進入LAST_ACK狀態
4. 主動一方發送最後的ack給被動方,被動方接收到之後關閉連接,主動方則經過2 MSL時間也關閉連接

最後盜個圖這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章