理解TCP中的三次握手

2021-06-10 10:19:16 字數 1848 閱讀 9733

tcp三次握手

tcp(transmission control protocol) 傳輸控制協議

tcp是端到端的傳輸控制協議,提供可靠的連線服務,採用三次握手方式來建立連線。

要理解三次握手流程,需要先了解tcp協議格式,因為在三次握手過程中,傳送的都是沒有資料,只有報頭資訊的tcp報文,通過報頭中某些字段值的不同含義從而實現連線的建立。tcp報文格式如下:

上述的tcp報文格式中每個字段意義已經描述得很清楚,現針對三次握手中要用到的字段再做簡單描述,

tcp報文格式中有6位的tcp標誌位,每個標誌位對應著tcp連線的不同狀態,完整的6個標誌位組成了tcp連線的完整狀態。

具體每個標誌位的含義如下:

urg (urgent 緊急 =1時表示urgent pointer字段值有效)

ack (acknowledgement 確認 =1表示acknowledgement number字段值有效)

psh (push =1時表示傳送資料)

rst (reset =1時表示連線需要復位)

syn( synchronous =1時表示建立連線,序號同步)

fin (finish 結束 =1時表示終止連線)

三次連線具體過程描述:

第一次握手:client端傳送標誌位syn=1,隨機產生seq number=8000的syn包到server,此時client進入syn_send狀態。server根據syn=1知道client要求建立tcp連線

第二次握手:server收到syn請求後如果允許建立連線,就向client傳送ack number=8001 (client的seq number+1),隨機產生seq number=15000,狀態標誌位,syn=1,ack=1的syn+ack包,此時server進入syn_recv狀態。

第三次握手:client收到syn+ack包後檢查ack number是否正確,是否等於第一次握手中傳送的seq number+1,同時檢查標誌位ack是否為1,若兩項檢查都正確,client會再次傳送ack number=15001(server的seq number+1),ack=1的ack包,server收到後檢查ack number值與ack=1無誤後則連線建立成功, 此時client和server均進入established狀態。

完成三次握手後client與server開始傳送資料。

三次握手過程中報頭資訊的變化

第一次握手

syn包沒有攜帶任何資料,使用了報頭中syn標誌位和seq number欄位,其中syn=1標誌請求建立乙個連線

第二次握手

syn+ack包也沒有攜帶任何資料,使用了報頭中的syn和ack標誌位,以及seq number 和 ack number欄位,

其中syn=1標誌server端同步初始順序號,以便server向client傳送資訊。

ack=1標誌已確認收到syn包,同時給出期望從client端收到的下乙個序號。

需要注意的是在第二次握手中還定義了動態視窗大小。

第三次握手

ack包沒有攜帶任何資料,使用標誌位ack=1以及seq number和ack number欄位。

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 ip協議是乙個協議族,裡面包括了ip協議,imcp協議,tcp協議,以及我們更加熟悉的http ftp pop3協議等等,這些協議類似於國際語言,大家在交流時同一使用的語言。osi參考模型自上而下分別是 osi參考模型 tcp ip五層模型 應用層,表示層,會話層,傳輸層 應...

tcp的三次握手 傳輸層 TCP 三次握手

使用tcp協議進行通訊的雙方必須先建立連線,然後才能開始傳輸資料。為了確保連線雙方可靠性,在雙方建立連線時,tcp協議採用了三次握手策略。如圖 客戶端傳送帶有syn標誌的連線請求報文段,然後進入syn send狀態,等待服務端的確認。服務端接收到客戶端的syn報文段後,需要傳送ack資訊對這個syn...