客戶端在輸入域名后通過DNS服務(wù)器解析得到IP地址;得到IP地址后腹暖,通過三次握手進(jìn)行TCP/IP連接抢呆;之后就進(jìn)行通信。
TCP在建立連接的時(shí)候需要三次握手刹缝,第一次握手將Client標(biāo)志位SYN設(shè)置為1葡兑,隨機(jī)產(chǎn)生一個(gè)值seq=J;Server在收到Client傳來的SYN時(shí)赞草,必須進(jìn)行確認(rèn)(ack=J+1),同時(shí)自己也發(fā)送一個(gè)SYN包吆鹤,此Server進(jìn)入SYN-RECV狀態(tài)厨疙;Client在收到SYN+ACK包后向Server發(fā)送確認(rèn)包ACK,發(fā)送完成后Client和Server進(jìn)入連接狀態(tài)疑务,這就完成了三次握手沾凄,開始通信梗醇。
TCP在斷開連接的時(shí)候需要進(jìn)行四次握手,如上圖所示撒蟀。由于TCP是全雙工的叙谨,每個(gè)方向都需要單獨(dú)關(guān)閉連接,當(dāng)一方完成數(shù)據(jù)發(fā)送任務(wù)后保屯,發(fā)送一個(gè)FIN來終止這一方向的連接手负,收到一個(gè)FIN只是意味著這一方向上沒有數(shù)據(jù)流動(dòng)了,即不會(huì)再收到數(shù)據(jù)了姑尺,但是在這個(gè)TCP連接上仍然能夠發(fā)送數(shù)據(jù)竟终,直到這一方向也發(fā)送了FIN。首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉切蟋,而另一方則執(zhí)行被動(dòng)關(guān)閉统捶。
第1步,Client發(fā)送FIN數(shù)據(jù)包來關(guān)閉Client到Server的連接柄粹;第2步喘鸟,Server收到FIN包后回復(fù)一個(gè)ack包,Servicer進(jìn)入CLOSE_WAIT狀態(tài)驻右;第3步什黑,Server發(fā)送一個(gè)FIN包用來斷開Server到Client的連接;第4步旺入,Client收到Server發(fā)來的FIN包后兑凿,回復(fù)一個(gè)ACK,至此連接全部斷開茵瘾。