三次握手(建立連接):
第一次握手:客戶端發(fā)送syn包(syn=x)到服務(wù)器,并進入SYN_SEND狀態(tài)擅威,等待服務(wù)器確認壕探;
第二次握手:服務(wù)器收到syn包,必須確認客戶的SYN(ack=x+1)郊丛,同時自己也發(fā)送一個SYN包(syn=y)李请,即SYN+ACK包,此時服務(wù)器進入SYN_RECV狀態(tài)厉熟;
第三次握手:客戶端收到服務(wù)器的SYN+ACK包孵坚,向服務(wù)器發(fā)送確認包ACK(ack=y+1),此包發(fā)送完畢妻味,客戶端和服務(wù)器進入ESTABLISHED狀態(tài)喳瓣,完成三次握手。
握手過程中傳送的包里不包含數(shù)據(jù),三次握手完畢后滤馍,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)岛琼。理想狀態(tài)下,TCP連接一旦建立巢株,在通信雙方中的任何一方主動關(guān)閉連接之前槐瑞,TCP 連接都將被一直保持下去。
四次揮手(斷開連接):
第一次揮手:主動關(guān)閉方發(fā)送一個FIN阁苞,用來關(guān)閉主動方到被動關(guān)閉方的數(shù)據(jù)傳送困檩,也就是主動關(guān)閉方告訴被動關(guān)閉方:我已經(jīng)不會再給你發(fā)數(shù)據(jù)了(當(dāng)然,在fin包之前發(fā)送出去的數(shù)據(jù)那槽,如果沒有收到對應(yīng)的ack確認報文悼沿,主動關(guān)閉方依然會重發(fā)這些數(shù)據(jù)),但是倦炒,此時主動關(guān)閉方還可 以接受數(shù)據(jù)显沈。
第二次揮手:被動關(guān)閉方收到FIN包后,發(fā)送一個ACK給對方逢唤,確認序號為收到序號+1(與SYN相同拉讯,一個FIN占用一個序號)。
第三次揮手:被動關(guān)閉方發(fā)送一個FIN鳖藕,用來關(guān)閉被動關(guān)閉方到主動關(guān)閉方的數(shù)據(jù)傳送魔慷,也就是告訴主動關(guān)閉方,我的數(shù)據(jù)也發(fā)送完了著恩,不會再給你發(fā)數(shù)據(jù)了院尔。
第四次揮手:主動關(guān)閉方收到FIN后,發(fā)送一個ACK給被動關(guān)閉方喉誊,確認序號為收到序號+1邀摆,至此,完成四次揮手伍茄。