1.TCP(Transmission Control Protocol,傳輸控制協(xié)議)是 面向連接的協(xié)議
三次握手
1.客戶端發(fā)送SYN信號(hào),表示告訴服務(wù)器,我要建立連接
2.服務(wù)器返回ACK=1和SYN=1給客戶端,表示我已經(jīng)接收到了客戶端的請(qǐng)求,并接收了請(qǐng)求。
3.客戶端收到來自服務(wù)端響應(yīng)后,知道服務(wù)端已經(jīng)接受連接請(qǐng)求,再次發(fā)送ACK給服務(wù)器,確認(rèn)服務(wù)端的SYN,其實(shí)也就是一個(gè)確認(rèn)的再確認(rèn)。
4次揮手
1.主動(dòng)方A發(fā)送一個(gè)FIN(終止信號(hào))給被動(dòng)方B,表示要終結(jié)主動(dòng)方A到被動(dòng)方B的連接;
2.被動(dòng)方B收到了FIN信號(hào),返回ACK信號(hào)給主動(dòng)方,表示從主動(dòng)方到被動(dòng)方的連接關(guān)閉了,也就是主動(dòng)方不能再發(fā)送數(shù)據(jù)給被動(dòng)方。
3.被動(dòng)方B在發(fā)送完數(shù)據(jù)后,給主動(dòng)方A發(fā)送一個(gè)FIN信號(hào),請(qǐng)求要終結(jié)被動(dòng)方B到主動(dòng)方A的連接;
4.主動(dòng)方A收到了FIN信號(hào),返回ACK信號(hào)給被動(dòng)方B,表示從被動(dòng)方B到主動(dòng)方A的連接關(guān)閉了,也就是被動(dòng)方不能再發(fā)送數(shù)據(jù)給主動(dòng)方
2.然后連接建立,為什么要進(jìn)行三次握手呢
A共發(fā)送了兩次連接請(qǐng)求報(bào)文段,其中第一個(gè)丟失,第二個(gè)到達(dá)了B,沒有“已失效的連接請(qǐng)求報(bào)文段”,但是還有異常情況下,A發(fā)送的請(qǐng)求報(bào)文連接段并沒有丟失,而是在某個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)滯留較長時(shí)間,以致延誤到請(qǐng)求釋放后的某個(gè)時(shí)間到達(dá)B,本來是一個(gè)早已失效的報(bào)文段,但是B收到了此失效連接請(qǐng)求報(bào)文段后,就誤以為A又重新發(fā)送的連接請(qǐng)求報(bào)文段,并發(fā)送確認(rèn)報(bào)文段給A,同意建立連接,如果沒有三次握手,那么B發(fā)送確認(rèn)后,連接就建立了,而此時(shí)A沒有發(fā)送建立連接的請(qǐng)求報(bào)文段,于是不理會(huì)B的確認(rèn),也不會(huì)給B發(fā)送數(shù)據(jù),而B卻一直等待A發(fā)送數(shù)據(jù),因此B的許多資源就浪費(fèi)了,采用三次握手的方式就可以防止這種事情發(fā)生,例如剛剛,A不理會(huì)B,就不會(huì)給B發(fā)送確認(rèn),B收不到A的確認(rèn),就知道A不要求建立連接,就不會(huì)白白浪費(fèi)資源,