TCP為什麼三次握手

2021-09-30 06:21:54 字數 1229 閱讀 2585

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

x: isn (initial sequence number) of the

client

y: isn of the server

第一次是客戶端發起連線;第二次表示伺服器收到了客戶端的請求;第三次表示客戶端收到了伺服器的反饋。這之後雙方均確認了連線的有效性,如果第三次伺服器未收到,假設乙個c向s傳送了syn後無故消失了,那麼s在發出syn+ack應答報文後是無法收到c的ack報文的(第三次握手無法完成),這種情況下s一般會重試(再次傳送syn+ack給客戶端)並等待一段時間後丟棄這個未完成的連線,這段時間的長度我們稱為syn timeout,一般來說這個時間是分鐘的數量級(大約為30秒-2分鐘);

TCP為什麼三次握手

1 第一次握手 客戶端向伺服器端傳送tcp報文請求建立連線,其中 標記位為syn 1 序號為seq x 2 第二次握手 服務端收到資訊後知道自己與客戶端是可以連線成功的,但此時客戶端並不知道服務端是否已經接收到了它的請求,所以服務端接收到訊息後進行應答,這就是第二次握手,其中 標記位為syn 1,a...

為什麼TCP是三次握手

tcp 三次握手 首先簡單介紹一下tcp三次握手 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack ...

TCP為什麼需要三次握手

晚上看到的面試題,tcp三次握手的印象很深,但為什麼需要3次握手,還是想不起來了。簡單而言 如果不是三次握手的話,那麼到底需要幾次握手最佳呢?2次握手,或者4次以上的握手?先看2次握手的情況 客戶端給伺服器傳送建立連線的請求,伺服器同意連線請求發回應給客戶端,連線就此建立。有問題的就是網路中經常會出...