TCP 三次握手 四次揮手

2021-09-24 01:35:50 字數 2247 閱讀 1854

一、三次握手 – 建立乙個tcp連線

三次握手過程:

客戶端發起,第一次握手時,syn=1(指明客戶端打算連線的伺服器的位址),客戶端發起第一次握手後處於syn-sent狀態;

服務端接收到訊息後,發起第二次握手作為應答,syn=1,ack=1,服務端發出握手後處於syn-rcvd狀態;

客戶端收到服務端連線,發起第三次握手,ack=1,客戶端發出握手後處於estab-lished狀態,服務端收到訊息後,也會進入estab-lished狀態;

服務端和客戶端都處於estab-lished狀態就可以進行雙向通訊了;

注意:傳送第乙個syn的一端將執行主動開啟,接受這個syn並發回下乙個syn的另一端是被動開啟;

二、四次揮手 – 終止乙個tcp連線

tcp建立連線需要三次握手,但釋放連線卻需要四次揮手,這是tcp的半關閉(tcp的半關閉:tcp提供了連線的一端在結束它的傳送後還能接收來自另一端資料的能力)造成的,tcp連線是全雙工,因此每個方向上都要單獨的進行關閉,就是當一方完成它的資料傳輸任務之後就可以傳送fin來終止這個單方向的連線,當一端收到乙個fin,必須通知應用層另一端幾經終止了那個方向的資料傳送,傳送fin通常只是應用層進行關閉的結果;

收到乙個fin意味著這個方向上沒有資料流動,乙個tcp連線在收到乙個fin後仍能向另一端傳送資料,但在實際中只有很少的tcp應用會這樣;

首先傳送fin的一端會執行主動關閉,而另一方則是執行被動關閉,在特殊情況下,會出現雙方都主動關閉的情況;

客戶端主動發起揮手過程:

客戶端主動發起第一次揮手,fin=1,客戶端發出揮手後,處於fin-wait-1狀態;

服務端接受到揮手訊息,發起第二次揮手,ack=1,服務端處於colse-wait狀態;

客戶端接收到第二次揮手訊息後,處於fin-wait-2狀態,客戶端不能再給服務端傳送訊息,但服務端可以給客戶端傳送訊息,由全雙工變為單項通行;

服務端發起第三次揮手,fin=1,ack=1,服務端處於last-ack狀態

客戶端接收到服務端揮手訊息,發起第四次揮手,ack=1,客戶端處於time-wait狀態;

服務端接收到客戶端揮手訊息,進入close狀態,客戶端在2msl定時器溢位後由time-wait狀態進入到close狀態;

上面的建立連線和關閉連線都是在假設是客戶端主動開啟或者主動關閉的基礎上討論的,在實際中也可能會出現兩個應用程式同時彼此主動開啟,或者同時關閉的情況。

三、同時開啟和同時關閉

同時開啟連線

兩個應用程式同時彼此主動開啟,每一方必須傳送乙個syn,且這些syn必須傳遞給對方,這就是同時開啟;

tcp是特意設計為了可以處理同時開啟,對於同時開啟它建立一條連線而不是兩條連線,當出現同時開啟的情況時,兩端幾乎同時傳送syn,並進入syn_sent狀態,當一端收到syn時,狀態變為syn_rcvd,同時它們都會再傳送syn並對收到的syn進行確認,當雙方都收到syn及相應的ack時,狀態都會變成established,過程如下圖;

乙個同時開啟的連線需要四個報文段,比正常的三次握手多乙個,這時不會將一端稱為客戶端或是伺服器端,因為每一端即是客戶端又是伺服器;

同時關閉連線

上面提到的四次揮手是客戶端(通常都是客戶端)傳送第乙個fin執行主動關閉,當客戶端和伺服器都執行主動關閉就是同時關閉,tcp也允許這樣的同時關閉;

當應用層發出關閉命令,兩端都從established變為fin_wait_1,雙方都會傳送乙個fin,兩個fin經過網路傳送後分別到達另一端,收到fin後,狀態由fin_wait_1變為closing,並傳送最後的ack,兩端在收到最後的ack時,狀態變化為time_wait。

同時關閉與正常關閉時使用的報文段交換數目相同;

四、tcp傳輸資料可靠性的體現:

五、tcp的狀態變遷圖

TCP三次握手 四次揮手

tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...

TCP三次握手 四次揮手

服務端的tcp程序先建立傳輸控制塊tcb,準備接受客戶端程序的連線請求,然後服務端程序處於listen狀態,等待客戶端的連線請求,如有,則作出響應。1 客戶端的tcp程序也首先建立傳輸控制模組tcb,然後向服務端發出連線請求報文段,該報文段首部中的syn 1,ack 0,同時選擇乙個初始序號seq ...

TCP三次握手四次揮手

tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。位碼即tcp標誌位,有6種標誌 urg urgent緊急 ack acknowledgement 確認 psh push傳送 rst...