1、三次握手
- 第一次握手:客戶端將標(biāo)志位
SYN置為1
,隨機(jī)產(chǎn)生一個(gè)值seq=J
,并將該數(shù)據(jù)包發(fā)送給服務(wù)器端染簇,客戶端進(jìn)入SYN_SENT
狀態(tài),等待服務(wù)器端確認(rèn) - 第二次握手:服務(wù)器端收到數(shù)據(jù)包后由標(biāo)志位
SYN=1
知道客戶端請求建立連接强岸,服務(wù)器端將標(biāo)志位SYN
和ACK
都置為1
锻弓,ack=J+1
,隨機(jī)產(chǎn)生一個(gè)值seq=K
蝌箍,并將該數(shù)據(jù)包發(fā)送給客戶端以確認(rèn)連接請求青灼,服務(wù)器端進(jìn)入SYN_RCVD
狀態(tài)。 - 第三次握手:客戶端收到確認(rèn)后十绑,檢查
ack
是否為J+1
聚至,ACK
是否為1
酷勺,如果正確則將標(biāo)志位ACK
置為1
本橙,ack=K+1
,并將該數(shù)據(jù)包發(fā)送給服務(wù)器端脆诉,服務(wù)器端檢查ack
是否為K+1
甚亭,ACK
是否為1
,如果正確則連接建立成功击胜,客戶端和服務(wù)器端進(jìn)入ESTABLISHED
狀態(tài)亏狰,完成三次握手,隨后客戶端與服務(wù)器端之間可以開始傳輸數(shù)據(jù)了偶摔。
2暇唾、四次分手
- 客戶端進(jìn)程發(fā)出連接釋放報(bào)文,并且停止發(fā)送數(shù)據(jù)。釋放數(shù)據(jù)報(bào)文首部策州,
FIN=1
瘸味,其序列號(hào)為seq=u
(等于前面已經(jīng)傳送過來的數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)加1),此時(shí)够挂,客戶端進(jìn)入FIN-WAIT-1
(終止等待1)狀態(tài)旁仿。TCP
規(guī)定,FIN
報(bào)文段即使不攜帶數(shù)據(jù)孽糖,也要消耗一個(gè)序號(hào)枯冈。 - 服務(wù)器收到連接釋放報(bào)文,發(fā)出確認(rèn)報(bào)文办悟,
ACK=1尘奏,ack=u+1
,并且?guī)献约旱男蛄刑?hào)seq= v
誉尖,此時(shí)罪既,服務(wù)端就進(jìn)入了CLOSE-WAIT
(關(guān)閉等待)狀態(tài)。TCP
服務(wù)器通知高層的應(yīng)用進(jìn)程铡恕,客戶端向服務(wù)器的方向就釋放了琢感,這時(shí)候處于半關(guān)閉狀態(tài),即客戶端已經(jīng)沒有數(shù)據(jù)要發(fā)送了探熔,但是服務(wù)器若發(fā)送數(shù)據(jù)驹针,客戶端依然要接受。這個(gè)狀態(tài)還要持續(xù)一段時(shí)間诀艰,也就是整個(gè)CLOSE-WAIT
狀態(tài)持續(xù)的時(shí)間柬甥。 - 客戶端收到服務(wù)器的確認(rèn)請求后,此時(shí)其垄,客戶端就進(jìn)入
FIN-WAIT-2
(終止等待2)狀態(tài)苛蒲,等待服務(wù)器發(fā)送連接釋放報(bào)文(在這之前還需要接受服務(wù)器發(fā)送的最后的數(shù)據(jù))。 - 服務(wù)器將最后的數(shù)據(jù)發(fā)送完畢后绿满,就向客戶端發(fā)送連接釋放報(bào)文臂外,
FIN=1,ack=u+1
喇颁,由于在半關(guān)閉狀態(tài)漏健,服務(wù)器很可能又發(fā)送了一些數(shù)據(jù),假定此時(shí)的序列號(hào)為seq=w
橘霎,此時(shí)蔫浆,服務(wù)器就進(jìn)入了LAST-ACK
(最后確認(rèn))狀態(tài),等待客戶端的確認(rèn)姐叁。
客戶端收到服務(wù)器的連接釋放報(bào)文后瓦盛,必須發(fā)出確認(rèn)洗显,ACK=1
,ack=w+1
原环,而自己的序列號(hào)是seq=u+1
墙懂,此時(shí),客戶端就進(jìn)入了TIME-WAIT
(時(shí)間等待)狀態(tài)扮念。注意此時(shí)TCP
連接還沒有釋放损搬,必須經(jīng)過2??MSL
(最長報(bào)文段壽命)的時(shí)間后,當(dāng)客戶端撤銷相應(yīng)的TCP
后柜与,才進(jìn)入CLOSED狀
態(tài)巧勤。