1. 程式人生 > >tcp協議的三次握手四次揮手

tcp協議的三次握手四次揮手

第一次握手:建立連線時,客戶端傳送syn包到伺服器,並進入SYN_SENT狀態,等待伺服器確認;SYN:同步序列編號

第二次握手:伺服器收到syn包,必須確認客戶的SYN,同時自己也傳送一個SYN包和一個ack包,此時伺服器進入SYN_RECV狀態;

第三次握手:客戶端收到伺服器的SYN包和ACK包,向伺服器傳送確認包ACK,此包傳送完畢,客戶端和伺服器進入ESTABLISHED(TCP連線成功)狀態,完成三次握手。 完成三次握手,客戶端與伺服器開始傳送資料

第一次揮手:客戶端A傳送一個“FIN”報文段給伺服器B,其中該報文中的FIN標誌位被置為1。

第二次揮手:伺服器B收到了FIN報文段後,它會向客戶端傳送“ACK”報文段,表示允許斷開該TCP連線了。同時它還會通知高層應用程式,客戶端已經請求釋放連線。此時客戶端已經不再會給伺服器傳送資料了,但是伺服器到客戶端的TCP連線還沒有斷開,所以伺服器還是可以向客戶端傳送資料,此時狀態稱為“半關閉狀態”。

第三次揮手:當服務端的高層程式已經沒有資料要傳送了,它會通知TCP可以斷開連線了,這時候,伺服器就會向客戶端傳送FIN報文段。

第四次揮手:客戶端收到FIN報文段後,客戶端會發送“ACK”報文段給伺服器,同時客戶端會進入一個叫“TIME-WAIT”的狀態,需要再等待兩個報文壽命(MSL)時間後,才進入最後的“CLOSE”狀態。