學(xué)習(xí)整理,純屬個人理解其障,如有問題歡迎聯(lián)系,文末有參考大神資料說明
tcp的三次握手:
1.第一次握手堰乔,客戶端嘗試建立連接伴找,發(fā)送SYN包(syn=j)到服務(wù)器,并且進(jìn)入SYN_SENT狀態(tài)進(jìn)行等待锰镀;
2.第二次握手, 服務(wù)器收到客戶端syn包,確認(rèn)客戶端的syn 并且生成ACK(j+1)和自己的SYN(k)着降,發(fā)送SYN+ACK包給客戶端差油,然后服務(wù)端進(jìn)入SYN_RECV狀態(tài)
3.第三次握手,客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)端發(fā)送ACK(k+1),此包發(fā)送完成任洞,客戶端和服務(wù)器同時進(jìn)入ESTABLISHED狀態(tài)(tcp連接成功)蓄喇,至此三次握手完成
通俗點(diǎn)的理解(打電話:)
A:歪?能聽到么?( 第一次握手交掏,發(fā)起連接)
B:能聽到妆偏,可以了,什么事情?(第二次握手,目標(biāo)收到盅弛,并回復(fù)確認(rèn)钱骂,可以進(jìn)行通訊)
A&B:聊天進(jìn)行中(第三次握手,連接建立挪鹏,進(jìn)行數(shù)據(jù)傳輸)
流程圖如下,
同樣結(jié)束連接時候需要4次揮手:
1.第一次揮手,客戶端發(fā)送連接釋放報文见秽,并且停止發(fā)送數(shù)據(jù), 釋放報文主要攜帶參數(shù)(FIN=1,seq=u)讨盒。此時解取,客戶端將進(jìn)入FIN-WAIT-1狀態(tài)
2.第二次揮手,服務(wù)端收到客戶端釋放報文,發(fā)出確認(rèn)報文,ACK=1返顺,seq=v禀苦,ack=u+1,此時服務(wù)端進(jìn)入CLOSE-WAIT狀態(tài)蔓肯。第二次揮手完成后,客戶端到服務(wù)端方向的連接已經(jīng)釋放伦忠,服務(wù)端不會再接收數(shù)據(jù)省核,客戶端也不會再發(fā)送數(shù)據(jù)稿辙。但服務(wù)端到客戶端方向的連接仍然存在昆码,可以繼續(xù)向客戶端發(fā)送數(shù)據(jù)。
3.第三次揮手,當(dāng)服務(wù)端向客戶端發(fā)完所有數(shù)據(jù)后邻储,向客戶端發(fā)送連接釋放請求赋咽,請求頭:FIN=1,ACK=1吨娜,seq=w脓匿,ack=u+1。服務(wù)端便進(jìn)入LAST-ACK狀態(tài)宦赠。
4.第四次揮手,客戶端收到釋放請求后陪毡,向服務(wù)端發(fā)送確認(rèn)應(yīng)答,此時客戶端進(jìn)入TIME-WAIT狀態(tài)勾扭。該狀態(tài)會持續(xù)2MSL時間毡琉,若該時間段內(nèi)沒有服務(wù)單的重發(fā)請求的話,就進(jìn)入CLOSED狀態(tài)妙色。當(dāng)服務(wù)端收到確認(rèn)應(yīng)答后桅滋,也便進(jìn)入CLOSED狀態(tài)
通俗點(diǎn)的理解(打電話:)
A&B:通話中...
A:行,我要掛了身辨,還有什么其他事情么?(第一次揮手丐谋,發(fā)送釋放報文)
B:好,我想想哈,.@#$@#$@#$@#$@(第二次揮手,發(fā)回確認(rèn)報文,如果有往客戶端的數(shù)據(jù)仍可傳輸)
B:沒了煌珊,掛了吧(第三次揮手,向客戶端發(fā)送釋放報文)
A:好,你先掛吧 (第四次号俐,客戶單收到釋放報文,發(fā)給服務(wù)端確認(rèn)報文)
B:掛斷.(收到確認(rèn)報文 close)
A:(等2ms)定庵,掛斷(close)
本文借鑒參考
資料鏈接: