三次握手和四次揮手

2021-09-12 18:55:00 字數 1039 閱讀 8618

1.三次握手:

(1)目的:連線伺服器指定埠,建立tcp連線,並同步連線雙方的序列號和確認號,並交換tcp視窗大小資訊;

(2)過程:(在socket程式設計中,客戶端執行connect()時進行三次握手)

如上圖所示,第一握手進行後,客戶端處於syn_sent狀態,客戶端的syn報文伺服器收到後,伺服器處於listen狀態,在伺服器端第二次握手進行後,伺服器端處於syn_recv狀態,在第二次握手和第三次握手之間的狀態成為半連線狀態,這時連線還沒有完全建立,當所有報文傳送完畢後,即三次握手過程進行完畢後,連線建立成功。

總的來說,第一次握手,客戶端向伺服器端傳送[syn]報文;第二次握手,伺服器端向客戶端傳送[syn,ack]報文;第三次握手,客戶端再向伺服器端傳送[ack]報文。

其中:seq:(4 bytes)序列號; ack:(4 bytes)確認號;

應答ack(1 bit):0無效,1有效

同步syn :同上; 終止fin:同上

2.四次揮手:

(1)客戶端和伺服器端均可主動發起揮手的請求,在socket程式設計中,任何一方執行close()操作即可產生揮手操作;

(2)過程:

如上圖所示:在四次揮手操作發生前,主動方和被動方都處於established(建立)狀態,第一次揮手操作進行後,主動方處於fin_wait_1狀態,在第二次揮手後,被動方處於close_wait狀態,主動方處於fin_wait_2狀態,第三次揮手後被動方處於last_ack狀態,第四次揮手後,主動方處於time_wait狀態,在time_wait狀態結束後,主動方和被動方都處於close狀態。

總的來說:第一次揮手,主動方向被動方傳送[fin,ack]報文;第二次揮手,被動方向主動方傳送[ack]報文;第三次揮手,被動方繼續向主動方傳送[fin,ack]報文;第四次揮手,主動方向被動方傳送[ack].

三次握手和四次揮手

三次握手和四次揮手如圖所示 為什麼是三次握手而不是兩次 因為當客戶端第傳送syn到服務端的時候,如果有幾次請求是因為網路等原因延時等情況的時候,如果沒有第三次握手的確定。服務端就會認為客戶端重寫傳送請求了,就會去開啟連線相應。為什麼關閉連線的時候是四次握手而不是三次?當客戶端傳送請求關閉連線的時候,...

三次握手和四次揮手

tcp三次握手和四次揮手的全過程 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種表示 syn synchronous建立連線 ack acknowledgement 表示響應 確認 psh push表示有data資料傳輸 fin fi...

三次握手和四次揮手

1.在學習tcp協議的時候,總是在強調三次握手,那麼為什麼是三次?而不是兩次或者四次?強迫症表示黑人問號?今天我們就來分析一下為什麼是三次,下圖是一次tcp通訊的時序 在這個例子中,首先客戶端主動發起連線 傳送請求,然後伺服器端響應請求,然後客戶端主動關閉連線。兩條豎線表示通訊的兩端,從上到下表 示...