萬盛學電腦網

 萬盛學電腦網 >> 電腦基本常識 >> TCP斷開連接過程詳解

TCP斷開連接過程詳解

  上次我們講了TCP三次握手建立連接的過程,今天我們結合雙方狀態的改變來講講TCP斷開連接的過程:TCP四次揮手。

TCP斷開連接過程詳解 三聯

  數據傳輸結束後,通信的雙方都可釋放連接。現在A和B都處於ESTABLISHED狀態。A的應用程序先向TCP發出連接釋放報文段,主動關閉TCP連接。A把連接釋放報文段的首部FIN置為1,序號seq=u,它等於前面已傳送過的數據的最後一個字節的序號加1。這時A進入FIN-WAIT-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狀態,等待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四次揮手斷開連接全過程。

 

  本文來源:網絡教學基地 原文地址:http://www.studynb1.com/wljc/404.html

copyright © 萬盛學電腦網 all rights reserved