TCP協議建立連接與釋放連接

TCP協議建立連接與釋放連接

TCP協議是面向連接的協議,要傳送數據,需要進行建立連接、傳送數據、釋放連接三個階段。其中建立連接需要三次握手,而釋放連接需要四次握手,其原理如下:

建立連接:

首先,服務器端要開啓服務,創建TCB(傳輸控制模塊),然後服務器端進入LISTEN狀態,等待客戶端的連接。

客戶端也需要建立TCB,然後向服務器端發出請求:SYN=1seq=w,然後進入SYN-SEND狀態,等待響應。

服務器端接收到請求後,發送:SYN=1ACK=1ack=w+1,seq=u,然後進入SYN-REVD狀態。

客戶端接收到後,發送:ACK=1seq=w+1,ack=u+1,進入ESTABLISHED階段。

服務器接收到後,進入ESTABLISHED階段,TCP連接正式建立。

三次握手原因

如果A發送給B的數據報中途耽擱,A會重發,B先收到了第二個,順利與A建立連接。AB傳送完數據之後釋放連接,此時B又收到了第一個,以爲A又要連接,於是進行響應,如果兩次連接則到此B已經與A建立了連接,此時B一直等A發送數據,消耗了資源。所以必須進行三次握手。

釋放連接

客戶端發出請求,請求釋放連接,發送:FIN=1seq=w,然後進入FIN-WAIT-1階段。

服務器端收到請求,發送:(1ACK=1,ack=w+1,seq=u,進入CLOSE-WAIT階段。此時如果服務器仍有數據需要發送,則繼續發送。直到沒有數據發送時,向客戶端發送:(2FIN=1,ACK=1,ack=w+1,seq=y,進入LAST-ACK階段。

客戶端收到(1),進入FIN-WAIT-2階段,收到(2),向服務器發送:ACK=1ack=y+1,seq=w+1,進入TIME-WAIT階段,客戶端等待兩個MSL(最長報文段壽命),關閉連接。

服務器端收到後,也關閉連接。

TIME-WAIT的作用

1.如果B收不到A最後發送的確認請求,則B會重新發送FINA2MSL時間內會收到B重發的,A可以再進行確認,這樣防止B收不到確認時,服務器端不能正確進入CLOSED.

2.2MSL中,網絡中所有與本次連接相關的數據包都被消耗掉,防止出現已失效的連接請求報文段的問題。

保活計時器

服務器端有一個保活計時器用於記錄客戶端狀態,以免白白等待,每收到一次客戶端的消息就更新保活計時器,通常爲兩小時,如果超過兩小時還沒收到新的,則服務器會發探測數據報來探測客戶端的狀態。

 

 

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