TCP連接 三次握手 四次揮手
前言:
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連接 三次握手 四次揮手