1. 程式人生 > >TCP連接 三次握手 四次揮手

TCP連接 三次握手 四次揮手

一個 fin 表示 可靠 回復 ast 參考 等於 spa

前言:

TCP協議是面向連接、安全可靠、基於字節流的傳輸層協議,在進行http協議訪問時就用到了tcp連接。在建立TCP連接時需要經歷三次握手,斷開連接時需要經歷四次揮手。在此進行記錄。

內容:

  • TCP三次握手

   第一次握手:由客戶端發起,客戶端生成一個SYN,以及一個隨機數標記數X,然後將隨機標記數X和SYN發送為服務端,此時客戶端進入SYN_SENT狀態,等待服務端響應。

   第二次握手:服務端接收到SYN後得知客戶端請求連接,然後服務端將SYN和ACK都置為1,並將ack=X+1,再生成一個隨機數Y,將數據包發送給客戶端,進入SYN_RCVD狀態。

   第三次握手:客戶端接收到數據包之後,先檢測服務端發送回來的ack值是否等於X+1;如果正確就將ACK置1,並將ack=Y+1,發送給服務端。服務端再次檢測ack的值是否等於Y+1,如果正確則建立連接,完成。

  • TCP四次分手

   第一次分手:客戶端設置seq=x,向服務端發送一個FIN報文段;此時,主機1進入FIN_WAIT_1狀態;這表示客戶端沒有數據要發送給服務端了;
   第二次分手:服務端收到了客戶端發送的FIN=1,向客戶端回復ACK=1,ack=收到的seq+1=x+1,然後客戶端進入FIN_WAIT_2狀態;服務端告訴客戶端,在等待自己去關閉連接
   第三次分手:服務端向客戶端發送FIN=1,設置seq=y,請求關閉連接,同時服務端進入LAST_ACK狀態;
   第四次分手:客戶端收到服務端發送的FIN,向服務端發送ACK=1,ack=收到的seq+1=y+1,然後主機1進入TIME_WAIT狀態;服務端收到客戶端的ACK報文段以後,就關閉連接;此時,客戶端等待2MSL後依然沒有收到回復,則證明Server端已正常關閉,客戶端也關閉連接。

後期整理補充:為什麽要進行三次握手及四次握手

參考博文:https://blog.csdn.net/u011109589/article/details/80306479

結語:新的一年,堅持下去,有所改變。

TCP連接 三次握手 四次揮手