TCP釋放連接的四次揮手過程


TCP斷開連接的過程:TCP四次揮手。

  數據傳輸結束后,通信的雙方都可釋放連接。現在A和B都處於ESTABLISHED狀態。A的應用進程先向TCP發出連接釋放報文段,主動關閉TCP連接。A把連接釋放報文段的首部的終止控制位FIN置為1,序號seq=u,它等於前面已傳送過的數據的最后一個字節的序號加1。這時A進入FIN-WAIT-1(終止等待1)狀態,等待B的確認。

  B收到連接釋放報文段后即發出確認(發出的不是連接釋放報文段),確認號是ack=u+1,而這個報文段自己的序號是v,等於B前面已傳送過的數據的最后一個字節的序號加1。然后B就進入CLOSE-WAIT(關閉等待)狀態。TCP服務器進程這時通知高層應用進程,因而從A到B這個方向的連接釋放了,這時的TCP連接處於半關閉狀態,即A已經沒有數據要發送了,但B若發送數據,A仍要接受。也就是說,從B到A這個方向的連接並未關閉。這個狀態可以會持續一些時間。

  A收到B的確認后,就進入FIN-WAIT-2(終止等待2)狀態,等待B發出的連接釋放報文段。

  若B已經沒有要向A發送的數據,其應用進程就通知TCP釋放連接。這時B發出的連接釋放報文段必須使用FIN=1。現假定B的序號為w(在半關閉狀態B可能又發送了一些數據)。B還必須重復上次已發送過的確認號ack=u+1。這是B就進入LAST-ACK狀態,等待A的確認。

  在A收到B的連接釋放報文段后,必須對此發出確認。在確認報文段中把ACK置為1,確認號ack=w+1,而自己的序號是seq=u+1(前面的FIN報文消耗了1個序號)。然后進入TIME-WAIT狀態。請注意,現在TCP連接還沒釋放掉。必須再經過2MSL后,A才進入到CLOSED狀態。MSL叫最長報文段壽命,一般為2分鍾。

  當B收到A發出的確認,就進入CLOSED狀態。由此可見B結束TCP連接的時間要比A早一些。等到2MSL結束后A也進入CLOSED狀態,至此完成了TCP四次揮手斷開連接全過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM