TCP連接和關閉的過程以及time_wait方法

1.客戶端、服務器和路由器

         很多初學者不理解客戶端和服務器的區分,包括很多資深的客戶端和服務器開發者,實際上對客戶端和服務器的區分也不足夠了解。而實際上,在通信中,客戶端和服務器是有明確的定義的。在一次通信中,主動發起請求的就是客戶端,而對請求進行響應的就是服務器;客戶端和服務器的地位是可以經常變換的。隨着計算機產業的發展,互聯網的發展,服務器的功能越來越強大,可以服務的內容也越來越多,客戶端也越來越變得易用。

       客戶端和服務器需要通信,必須通過一定連接和通信線路。在OSI的標準中,網絡通信的標準被劃分爲7層;但實際的工業標準,即由伯克利大學創建的通信標準,只有4層:物理鏈路層、網絡層、運輸層和應用層。在網絡中,確定網絡的位置的依據一般是網絡層,網絡層的區分標誌爲IP地址;而負責網絡尋址,並讓網絡傳輸到達目的地的設備,稱爲路由器。在通信鏈路中,路由器是相當重要的,因爲一般的物理鏈路層都是各個終端自己確定(如每臺機器都有自己的網卡),但離開物理鏈路的通信包,必須通過IP地址才能達到目的地。所以,路由器在通信中,發揮了傳媒中介的作用,地位是相當重要的。而隨着路由器功能的擴充,製造路由器的思科、華爲、阿爾卡特朗訊、諾基亞西門子都稱爲通信巨頭,則是另一個故事。

2.TCP連接與UDP連接

      在網絡通信中,除了運輸層進行尋址意外,通信的雙方還需要進行報文控制,即把自己的通信的數據或信息進行組裝後進行分發;這部分稱爲運輸層。運輸層最著名的兩個協議爲TCP和UDP。

      TCP的全稱爲ransmission Control Protocol,即傳輸控制協議;UDP全稱爲User Datagram Protocol,即用戶數據報協議。一般使用者都知道TCP是可靠協議,而UDP是不可靠協議。但很多人不知道TCP可靠的原因和UDP不可靠的原因。

       UDP不可靠,不是意味着UDP一定丟失數據,而是因爲UDP對丟失的傳輸,不具有可靠性。而TCP,則保證了數據的可靠性,保證丟失的數據重新傳輸。

        TCP保證可靠性的機制如下:

         1)三次握手;

         2)四次揮手;

         3)丟包重傳。

3.TCP的連接建立過程

       TCP連接的建立過程爲:

       1)客戶端主動向服務器發送一個同步(SYN)信號;

       2)服務器返回一個收到(ACK)信號,並返回一個同步(SYN)信號;

       3)客戶端對服務器的同步(SYN)信號進行一個收到(ACK)回覆。

       進過三次握手,客戶端和服務器建立了一個穩定的連接。

4.TCP連接關閉過程

       TCP關閉連接的過程:

       1)客戶端主動向服務器發送關閉連接(FIN)信號;

       2)服務器回覆收到關閉連接(ACK)信號;

       3)服務器給客戶端一個關閉連接(FIN)信號;

       4)客戶端回覆服務器一個收到關閉連接(ACK)信號。

       經過這幾次過程,TCP連接關閉。

       TCP的連接和關閉的過程如下:

        

5.time_wait狀態的意義

         通過上面圖片,可以得知,在TCP關閉連接的過程中,有一個time_wait的狀態。time_wait的狀態的意義在於:

        1)防止服務器位收到ACK命令而重發FIN;

        2)防止舊的關閉未關閉而建立新的連接。

       TIME_WAIT狀態持續2MSL,如果機器大規模出現這種狀態,意味着連接關閉沒有完成;比較好的方法是修改2MSL的時間和讓TCP回收連接。

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