TCP三次握手、四次揮手概念圖詳解

Jiangxl~發表於2020-11-20

TCP三次握手、四次揮手概念圖詳解

1.TCP連線的11中狀態

tcp11中狀態
ESTABLISHED
SYN_SENT
SYN_RECV
FIN_WAIT1
FIN_WAIT2
TIME_WAIT
CLOSE
CLOSE_WAIT
LAST_ACK
LISTEN
CLOSING

2.TCP 三次握手、四次揮手

三次握手:

​ 首先客戶端處於close關閉狀態,與伺服器傳送第一個SYN請求後(這個SYN請求會帶一個seq隨機序列),客戶端處於SYN_SENT狀態,伺服器在接收客戶端傳送的請求的同時一定要處於listen監聽狀態,否則無法收到請求包,收到請求包之後處於SYN_RCVD狀態,這時也會給客戶端傳送一個SYN的請求包(也有隨機序列),併傳送一個ACK的確認包(這裡ACK的隨機序列值就是客戶端傳送SYN的序列號+1),客戶端收到這兩個包後會處於ESTABLISHED狀態,這時也會給伺服器端傳送一個ACK的包(這裡ACK的隨機序列值就是服務端傳送的SYN序列+1),服務端收到後狀態處於ESTABLISHED

注意這個狀態的請求數如果很多會遭到ddos攻擊

四次揮手:

​ 需要斷開連線時時由服務端主動斷開連線的,因為資料傳輸是服務端發起的,因此斷開也是由伺服器發起

​ 首先服務端給客戶端傳送一個FIN的請求包(表示要求斷開連線),傳送完成後服務端處於FIN_WAIT_1狀態(_1只是為了和第二次揮手做一個區分)客戶端收到後會傳送一個ACK的確認包,傳送完成後,客戶端處於CLOSE_WAIT狀態,服務端收到後會處於FIN_WAIT_2狀態,這時客戶端也會傳送一個FIN的請求包,請求斷開連線,客戶端傳送完成後悔處於LAST_ACK狀態,服務端收到FIN請求包後會處於TIME_WAIT狀態,這時會有一個2MSL時間(MSL時間為60s,2MSL就是120s),2分鐘後會給客戶端傳送一個ACK的確認包,表示確認斷開連線,客戶端收到後會處於close狀態,四次揮手完成

在這裡插入圖片描述

相關文章