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和乙個視窗大小 表示客戶端上用來...