TCP的三次握手和四次揮手,以及一些常見的問題

2021-09-24 11:40:26 字數 1089 閱讀 9700

一:tcp的三次握手過程:

客戶端和伺服器端建立一條tcp連線主要分為一下四步:

第一步:客戶端--->伺服器,傳送一段特殊的tcp報文段,其中:syn位置為1,seq=client_isn(客戶隨機選擇)。這時,伺服器處於syn_sent狀態;

第二步:伺服器端接收到客戶端發來的syn報文段之後,就會傳送一段允許連線的報文段給客戶端,其中:syn=1,seq=server_isn(伺服器自己的初始序號),ack=client_isn+1。這時,伺服器端由listen狀態 ---> syn_rcvn狀態;

第三步:客戶端接收到伺服器發來的synack報文段,然後客戶端也會傳送一段ack報文段給伺服器端,其中:syn=0,seq=client_isn+1,ack=server_isn+1。這時,客戶端由syn_sent狀態 ---> established狀態。

第四步: 伺服器端接收到客戶端發來的ack報文段後,就由syn_rcvd狀態 ---> established狀態。

如下圖所示:

二:tcp的四次揮手過程:

第一步: 客戶端傳送fin為1的報文段給伺服器端,並由established ---> fin_wait_1;

第二步:伺服器端接收到報文段後,這個時候,伺服器端可能還有資料沒有傳送完畢,所以它會先傳送ack為1的報文段給客戶端,並由established ---> closn_wait;客戶端接收到該報文之後,也由fin_wait_1 ---> fin_wait_2;

第三步:伺服器端資料都傳送完畢,可以關閉連線了,就會傳送fin=1的報文段給客戶端,並由last_ack ---> closed;

第四步:客戶端接收到報文段後,傳送ack=1的報文段給服務端,並由fin_wait_2 ---> time_wait(等待30s之後轉為closed);伺服器端收到後,由 last_ack ----> closed。 至此,這乙個tcp連線結束了它的生命週期。

如下圖:

tcp三次握手 以及四次揮手

首先client端傳送連線請求報文,server段接受連線後回覆ack報文,並為這次連線分配資源。client端接收到ack報文後也向server段發生ack報文,並分配資源,這樣tcp連線就建立了。那如何斷開連線呢?簡單的過程如下 注意 中斷連線端可以是client端,也可以是server端。假設...

tcp 四次揮手 TCP的三次握手和四次揮手

三次握手 第一次握手 客戶端傳送syn包 syn x 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack x 1 同時自己也傳送乙個syn包 syn y 即syn ack包,此時伺服器進入syn recv狀態 第三次握手 客戶端收到伺服...

TCP的三次握手以及四次揮手

tcp協議是傳輸層的乙個重要協議,在正常情況下,tcp要經過三次握手建立連線,四次揮手斷開連線 伺服器端狀態轉換 closed listen 伺服器端呼叫listen後進入listen狀態,等待客戶端連線 syn rcvd established 服務端一旦收到客戶端的確認報文,就進入establi...