TCP連接的三次握手和四次揮手

TCP連接的三次握手和四次揮手

1、tcp報(bào)文格式

序號:Seq序號,占32位,用來標(biāo)識從源端向目的端發(fā)送的字節(jié)流

確認(rèn)序號:Ack序號,占32位,只有當(dāng)ACK標(biāo)志為1時(shí),該序號才有效,Ack=seq + 1

標(biāo)志位:共六個(gè),即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下:

????? ? ????? ? (A)URG:緊急指針(urgent pointer)有效。

????????????? ? (B)ACK:確認(rèn)序號有效。

????????????? ? (C)PSH:接收方應(yīng)該盡快將這個(gè)報(bào)文交給應(yīng)用層。

????????????? ? (D)RST:重置連接。

????????????? ? (E)SYN:發(fā)起一個(gè)新連接。

????????????? ? (F)FIN:釋放一個(gè)連接。

、

2、三次握手


(1)Client向Server發(fā)送同步確認(rèn)包,將標(biāo)志位SYN=1,發(fā)送序列號seq=j,然后Client變成SYN_SEND狀態(tài)

(2)Server收到之后,發(fā)送SYN+ACK包。將標(biāo)志位ACK=1,確認(rèn)序列號ack=seq+1。將標(biāo)志位SYN=1,序列號seq=k。然后Server變成SYN_SEND狀態(tài)

(3)Client收到確認(rèn)后,檢查ack是否為j+1,ACK是否為1,如果正確則將標(biāo)志位ACK置為1,ack=K+1,并將該數(shù)據(jù)包發(fā)送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正確則連接建立成功,Client和Server進(jìn)入ESTABLISHED狀態(tài),完成三次握手,隨后Client與Server之間可以開始傳輸數(shù)據(jù)了

3、四次揮手


(1)Client發(fā)送FIN包,將FIN標(biāo)志位設(shè)置為1,發(fā)送序列號seq=j,Client進(jìn)入FIN_WAIT_1狀態(tài)

(2)Server收到該請求后,發(fā)送確認(rèn)包,將標(biāo)志位ACK設(shè)置為1,發(fā)送確認(rèn)序列號ack=j+1,Server進(jìn)入CLOSE_WAIT狀態(tài)。因?yàn)镾erver端此時(shí)有可能還有數(shù)據(jù)要發(fā)送,只是給客戶端發(fā)送了我知道你要關(guān)閉了,但是我還有數(shù)據(jù)要發(fā)送。然后可以繼續(xù)發(fā)送數(shù)據(jù)

(3)如果Server端把數(shù)據(jù)發(fā)送完之后,再給客戶端發(fā)送一個(gè)FIN包,將FIN標(biāo)志位設(shè)置1,發(fā)送序列號seq=k。然后進(jìn)入LAST_ACK狀態(tài)。

?(4)Client收到之后,發(fā)送確認(rèn)包,將標(biāo)志位ACK設(shè)置為1,ack=k+1。隨后雙方進(jìn)入CLOSED狀態(tài)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容