一冲秽、TCP/IP 協(xié)議C/S架構(gòu)建立連接過程分析
1忿危、過程描述
第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn=j)到服務(wù)器七扰,并進(jìn)入SYN_SENT狀態(tài)奢赂,等待服務(wù)器確認(rèn);SYN:同步序列編號(hào)(seq)
第二次握手:服務(wù)器收到syn包颈走,必須確認(rèn)客戶的SYN(ack=j+1)呈驶,同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包疫鹊,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務(wù)器的SYN+ACK包司致,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1)拆吆,此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED(TCP連接成功)狀態(tài)脂矫,完成第三次握手枣耀。
二、TCP/IP 協(xié)議C/S架構(gòu)建立斷開連接過程分析
1庭再、客戶端進(jìn)程發(fā)出進(jìn)程釋放報(bào)文捞奕,并且停止發(fā)送數(shù)據(jù)。釋放數(shù)據(jù)報(bào)文首部拄轻,F(xiàn)IN=1颅围,其序列號(hào)為seq=u(等于前面已經(jīng)傳過來的數(shù)據(jù)的最后一個(gè)字節(jié)的序列號(hào)+1),此時(shí)恨搓,客戶端進(jìn)入FIN-WAIT-1(終止等待1)狀態(tài)院促。TCP規(guī)定,F(xiàn)IN報(bào)文即使不攜帶數(shù)據(jù)斧抱,也要消耗一個(gè)序號(hào)常拓。
2、服務(wù)器收到連接釋放報(bào)文辉浦,發(fā)出確認(rèn)報(bào)文弄抬,ACK=1,ack=u+1宪郊,并且?guī)献约旱男蛄刑?hào)seq=v掂恕,此時(shí)拖陆,服務(wù)端就進(jìn)入了CLOSE-WAIT(關(guān)閉等待)狀態(tài)。TCP服務(wù)器通知高層的應(yīng)用進(jìn)程竹海,客戶端向服務(wù)器的方向就釋放了慕蔚,這時(shí)候出于半關(guān)閉狀態(tài),即客戶端已經(jīng)沒有數(shù)據(jù)要發(fā)送了斋配,但是服務(wù)器若發(fā)送數(shù)據(jù)孔飒,客戶端依然要接受。這個(gè)狀態(tài)還要持續(xù)一段時(shí)間艰争,也就是整個(gè)CLOSE-WAIT狀態(tài)持續(xù)的時(shí)間坏瞄。
3、客戶端收到服務(wù)器的確認(rèn)請(qǐng)求后甩卓,此時(shí)鸠匀,客戶端就進(jìn)入FIN-WAIT-2(終止等待2)狀態(tài),等待服務(wù)器發(fā)送連接釋放報(bào)文(在這之前還需要接受服務(wù)器發(fā)送的最后的數(shù)據(jù))逾柿。
4缀棍、服務(wù)器將最后的數(shù)據(jù)發(fā)送完畢后,就向客戶端發(fā)送連接釋放報(bào)文机错,F(xiàn)IN=1爬范,ack=u+1,由于在半關(guān)閉狀態(tài)弱匪,服務(wù)器很可能又發(fā)送了一些數(shù)據(jù)青瀑,假定此時(shí)的序列號(hào)為seq=w,此時(shí)服務(wù)器就進(jìn)入了LAST-ACK(最后確認(rèn))狀態(tài)萧诫,等待客戶端的確認(rèn)斥难。
5、客戶端收到服務(wù)器的連接釋放報(bào)文后帘饶,必須發(fā)出確認(rèn)哑诊,ACK=1,ack=w+1尖奔,而自己的序列號(hào)是seq=u+1搭儒,此時(shí)客戶端進(jìn)入了TIME-WAIT(時(shí)間等待)狀態(tài)。注意此時(shí)TCP連接還沒有釋放提茁,必須經(jīng)過2MSL(最長(zhǎng)報(bào)文段壽命)的時(shí)間后淹禾,當(dāng)客戶端撤銷相應(yīng)的TCB后,才進(jìn)入CLOSED狀態(tài)茴扁。
6铃岔、服務(wù)器只要收到了客戶端發(fā)出的確認(rèn),立即進(jìn)入CLOSED狀態(tài)。同樣毁习,撤銷TCB后智嚷,就結(jié)束了這次的TCP連接》那遥可以看到盏道,服務(wù)器結(jié)束TCP連接時(shí)間要比客戶端早一些。