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 the
client
x: isn of the server
1. tcp的三次握手最主要是防止已過期的連線再次傳到被連線的主機。
如果採用兩次的話,會出現下面這種情況。
比如是a機要連到b機,結果傳送的連線資訊由於某種原因沒有到達b機;
於是,a機又發了一次,結果這次b收到了,於是就發資訊回來,兩機就連線。
傳完東西後,斷開。
結果這時候,原先沒有到達的連線資訊突然又傳到了b機,於是b機發資訊給a,然後b機就以為和a連上了,這個時候b機就在等待a傳東西過去。
2. 三次握手改成僅需要兩次握手,死鎖是可能發生
考慮計算機a和b之間的通訊,假定b給a傳送乙個連線請求分組,a收到了這個分組,並傳送了確認應答分組。按照兩次握手的協定,a認為連線已經成功地建立了,可以開始傳送資料分組。可是,b在a的應答分組在傳輸中被丟失的情況下,將不知道a是否已準備好,不知道a建議什麼樣的序列號,b甚至懷疑a是否收到自己的連線請求分組。在這種情況下,b認為連線還未建立成功,將忽略a發來的任何資料分組,只等待連線確認應答分組。而a在發出的分組超時後,重**送同樣的分組。這樣就形成了死鎖
tcp三次握手 TCP 三次握手總結
tcp特點概述 tcp segment structure 段結構 step2 server host receives syn,replie with syn ack segment 答覆syn ack報文段 step3 client receives synack,replies with ac...
TCP 三次握手
tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...
TCP三次握手
1.伺服器準備好接受外來連線。passive open 被動開啟 需呼叫 socket bind listen 函式來完成。2.客戶端通過呼叫 connect 主動開啟 active open 這使得客戶 tcp傳送乙個 syn 表示同步 分節,這個分節告訴伺服器,客戶端將在待建立的連線中傳送的資料...