1. 程式人生 > >tcp四次揮手中FIN_WAIT1狀態的最大時間是多長?

tcp四次揮手中FIN_WAIT1狀態的最大時間是多長?

        我們知道, 在tcp四次揮手中, 主動關閉的一端發FIN包後, 進入FIN_WAIT1狀態, 什麼意思呢? 也就是在等在FIN的ACK回包。

        在極端情況下, 如果主動關閉端的傳送緩衝區滿了, 傳送端直接殺程序, 發FIN包, 那麼接收端是無法接受到FIN包的, 塞滿了啊。 這一點, 我們在之前的博文中探討過。而且, tcpdump還抓不到這個FIN包, 迴應的ACK更是無從談起。

        於是乎, 傳送端(主動關閉端) 就一直處於FIN_WAIT1狀態, 接收端(被動關閉端)的socket無感知, 處於ESTABLISHED的狀態, 就一直這麼僵持著, 直到世界的最後一日(理論上)。

        所以, 從理論上來講, FIN_WAIT1狀態的最大時間是無窮大。 當然, 如果接收端慢慢從核心緩衝區中取出資料, 那麼這個僵持的狀態會被破壞, 進入正常的四次揮手邏輯。