在TCP/IP協(xié)議中漱牵,TCP協(xié)議提供可靠的連接服務(wù)生音,采用三次握手建立一個(gè)連接。
(1) 第一次握手:建立連接時(shí)晌杰,客戶端A發(fā)送SYN包(SYN=j)到服務(wù)器B,并進(jìn)入SYN_SEND狀態(tài)筷弦,等待服務(wù)器B確認(rèn)肋演。
(2) 第二次握手:服務(wù)器B收到SYN包抑诸,必須確認(rèn)客戶A的SYN(ACK=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(SYN=k)爹殊,即SYN+ACK包蜕乡,此時(shí)服務(wù)器B進(jìn)入SYN_RECV狀態(tài)。
(3) 第三次握手:客戶端A收到服務(wù)器B的SYN+ACK包梗夸,向服務(wù)器B發(fā)送確認(rèn)包ACK(ACK=k+1)层玲,此包發(fā)送完畢,客戶端A和服務(wù)器B進(jìn)入ESTABLISHED狀態(tài)反症,完成三次握手辛块。
完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)铅碍。
由于TCP連接是全雙工的润绵,因此每個(gè)方向都必須單獨(dú)進(jìn)行關(guān)閉。這個(gè)原則是當(dāng)一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個(gè)FIN來(lái)終止這個(gè)方向的連接胞谈。收到一個(gè) FIN只意味著這一方向上沒有數(shù)據(jù)流動(dòng)尘盼,一個(gè)TCP連接在收到一個(gè)FIN后仍能發(fā)送數(shù)據(jù)。首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉呜魄,而另一方執(zhí)行被動(dòng)關(guān)閉悔叽。
(1)客戶端A發(fā)送一個(gè)FIN莱衩,用來(lái)關(guān)閉客戶A到服務(wù)器B的數(shù)據(jù)傳送(報(bào)文段4)爵嗅。
(2)服務(wù)器B收到這個(gè)FIN,它發(fā)回一個(gè)ACK笨蚁,確認(rèn)序號(hào)為收到的序號(hào)加1(報(bào)文段5)睹晒。和SYN一樣,一個(gè)FIN將占用一個(gè)序號(hào)括细。
(3)服務(wù)器B關(guān)閉與客戶端A的連接伪很,發(fā)送一個(gè)FIN給客戶端A(報(bào)文段6)。
(4)客戶端A發(fā)回ACK報(bào)文確認(rèn)奋单,并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1(報(bào)文段7)锉试。