面試 網路 TCP的三次握手

2021-08-08 13:22:37 字數 1579 閱讀 4351

tcp運輸連線的建立和釋放是每一次面向連線的通訊中必不可少的過程。

運輸連線有三個階段:連線建立、資料傳送和連線釋放。

tcp的連線建立可以簡稱為「三次握手(three-way handshake)」。

1、a—>b:嗨!我想跟你通訊~

2、b—>a:嗨!可以啊~

3、a—>b:嗨!我要給你傳資料了~

then—>資料傳送

1、連線準備:

1)客戶a和伺服器b均處於closed狀態;

a主動開啟連線,b被動開啟連線,均首先建立傳輸控制模組tcb。

2)b準備接受客戶程序的連線請求,處於listen狀態。

2、連線過程:

1)a向b發出連線請求報文段:

a)首部中的同步位syn=1;

b)選擇乙個初始序號seq=x;

c)a進入syn-sent狀態。

備註:syn報文段不能攜帶資料,但要消耗掉乙個序號。

2)b收到連線請求後,同意連線,向a傳送確認:

a)syn=1、ack=1;

b)確認號為ack=x+1;

c)選擇乙個初始序號seq=y;

d)b進入syn-rcvd狀態。

備註1:syn-ack報文段不能攜帶資料,但要消耗掉乙個序號。

備註2:按理說,此時已經可以進行資料傳送了,但是還需要增加一步,原因後續。

3)a收到b的確認之後,還要給b給出確認:

a)ack=1;

b)確認號為ack=y+1;

c)自己的序號seq=x+1;

d)a進入established狀態。

備註:ack報文段可以攜帶資料,但如果不攜帶資料則不消耗序號,在這種情況下,下乙個資料報文段的序號仍是seq=x+1。

then—>資料傳送

1、各狀態含義:

closed:關閉

listen:收聽

syn-sent:同步已傳送

syn-rcvd:同步收到

established:已建立連線

2、為什麼要多餘一步(a傳送資料前的確認)?為什麼不兩次握手?

答:防止已失效的連線請求報文忽然又傳回了b,因而產生錯誤。

分析:

1、若a傳送連線請求後,因連線請求報文在某些網路結點長時間滯留而未收到確認,a會再重傳一次連線請求;

2、收到確認,建立連線,資料傳送完畢之後,釋放了連線;

3、之前延誤的連線請求報文到達了b(早已失效的報文段),b誤認為a又發出一次新的連線請求,於是又向a傳送確認報文段;

4、由於a並沒有發出建立連線的請求,因此不會理睬b的確認,b會一直等待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協議採用了三次握手策略。如圖 客戶端傳送帶有syn標誌的連線請求報文段,然後進入syn send狀態,等待服務端的確認。服務端接收到客戶端的syn報文段後,需要傳送ack資訊對這個syn...

TCP 三次握手

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