為什麼TCP是三次握手

2021-07-09 15:44:03 字數 1480 閱讀 5237

tcp 三次握手

首先簡單介紹一下tcp三次握手

在tcp/ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。 

第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認; 

第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器 進入syn_recv狀態; 

第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入 established狀態,完成三次握手。 

通過這樣的三次握手,客戶端與服務端建立起可靠的雙工的連線,開始傳送資料。 

三次握手的最主要目的是保證連線是雙工的,可靠更多的是通過重傳機制來保證的。 

tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程:

1. 客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小(表示客戶端上用來儲存從伺服器傳送來的傳入段的緩衝區的大小)。

2. 伺服器收到客戶端傳送過來的syn報文後,向客戶端傳送乙個syn和ack都置位的tcp報文,其中包含它選擇的初始序列號y、對客戶端的序列號的確認x+1和乙個視窗大小(表示伺服器上用來儲存從客戶端傳送來的傳入段的緩衝區的大小)。

3. .客戶端接收到伺服器端返回的syn+ack報文後,向伺服器端返回乙個確認號y+1和序號x+1的ack報文,乙個標準的tcp連線完成。

tcp 使用類似的握手過程來結束連線。這可確保兩個主機均能完成傳輸並確保所有的資料均得以接收

tcp client

flags

tcp server

1 send syn (seq=x)

----syn--->

syn received

2 syn/ack received 

<---syn/ack----

send syn (seq=y), ack (x+1) 

3 send ack (y+1)

----ack--->

ack received, 

connection

established 

w: isn (initial sequence number) of 

theclient

x: isn of the server

1. tcp的三次握手最主要是防止已過期的連線再次傳到被連線的主機。

如果採用兩次的話,會出現下面這種情況。

比如是a機要連到b機,結果傳送的連線資訊由於某種原因沒有到達b機;

於是,a機又發了一次,結果這次b收到了,於是就發資訊回來,兩機就連線。

傳完東西後,斷開。

結果這時候,原先沒有到達的連線資訊突然又傳到了b機,於是b機發資訊給a,然後b機就以為和a連上

TCP為什麼是三次握手?

tcp的三次握手過程 1 第一次握手 建立連線時,客戶先傳送syn 1,seq x到伺服器,客戶端進入syn send狀態,等待伺服器確認 2 第二次握手 伺服器收到syn包後必須確認收到客戶的syn包,傳送ack ack x 1 同時自己也傳送乙個syn包 seq k 此時伺服器進入syn rec...

什麼是TCP 三次握手及為什麼進行三次握手?

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

TCP為什麼三次握手

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