三次握手
為了準(zhǔn)確無(wú)誤地把數(shù)據(jù)送達(dá)目標(biāo)處,TCP協(xié)議采用了三次握手策略。用TCP協(xié)議把數(shù)據(jù)包送出去后休蟹,TCP不會(huì)對(duì)傳送 后的情況置之不理,它一定會(huì)向?qū)Ψ酱_認(rèn)是否成功送達(dá)日矫。握手過(guò)程中使用了TCP的標(biāo)志:SYN和ACK赂弓。
發(fā)送端首先發(fā)送一個(gè)帶SYN標(biāo)志的數(shù)據(jù)包給對(duì)方。接收端收到后哪轿,回傳一個(gè)帶有SYN/ACK標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息盈魁。
最后,發(fā)送端再回傳一個(gè)帶ACK標(biāo)志的數(shù)據(jù)包窃诉,代表“握手”結(jié)束杨耙。 若在握手過(guò)程中某個(gè)階段莫名中斷赤套,TCP協(xié)議會(huì)再次以相同的順序發(fā)送相同的數(shù)據(jù)包。
斷開(kāi)一個(gè)TCP連接則需要“四次揮手”:
第一次揮手:主動(dòng)關(guān)閉方發(fā)送一個(gè)FIN珊膜,用來(lái)關(guān)閉主動(dòng)方到被動(dòng)關(guān)閉方的數(shù)據(jù)傳送容握,也就是主動(dòng)關(guān)閉方告訴被動(dòng)關(guān)閉方:我已經(jīng)不 會(huì)再給你發(fā)數(shù)據(jù)了(當(dāng)然,在fin包之前發(fā)送出去的數(shù)據(jù)辅搬,如果沒(méi)有收到對(duì)應(yīng)的ack確認(rèn)報(bào)文唯沮,主動(dòng)關(guān)閉方依然會(huì)重發(fā)這些數(shù)據(jù)),但是堪遂,此時(shí)主動(dòng)關(guān)閉方還可 以接受數(shù)據(jù)。
第二次揮手:被動(dòng)關(guān)閉方收到FIN包后萌庆,發(fā)送一個(gè)ACK給對(duì)方溶褪,確認(rèn)序號(hào)為收到序號(hào)+1(與SYN相同,一個(gè)FIN占用一個(gè)序號(hào))践险。
第三次揮手:被動(dòng)關(guān)閉方發(fā)送一個(gè)FIN猿妈,用來(lái)關(guān)閉被動(dòng)關(guān)閉方到主動(dòng)關(guān)閉方的數(shù)據(jù)傳送,也就是告訴主動(dòng)關(guān)閉方巍虫,我的數(shù)據(jù)也發(fā)送完了彭则,不會(huì)再給你發(fā)數(shù)據(jù)了。
第四次揮手:主動(dòng)關(guān)閉方收到FIN后占遥,發(fā)送一個(gè)ACK給被動(dòng)關(guān)閉方俯抖,確認(rèn)序號(hào)為收到序號(hào)+1,至此瓦胎,完成四次揮手芬萍。