售前電話
135-3656-7657
售前電話 : 135-3656-7657
一、連接建立
TCP連接建立的三次握手過程如圖2.34所示。A、B分別為客戶和服務(wù)器,B執(zhí)行LISTEN和ACCEPf原語后,等待連接請求的到來。
A執(zhí)行CONNECT原語后,發(fā)出TCP段,其中SYN=I.ACK=0,初始序號(hào)設(shè)為X,段中可帶用戶數(shù)據(jù)(如口令)。該段到達(dá)B后,B的TCP實(shí)體查驗(yàn)是否有進(jìn)程在該段指明的日的端口守聽,如沒有,就返回一個(gè)段,置RST=1;如有就將該段送交守聽進(jìn)程,該進(jìn)程可決定接受還是拒絕該連接請求。如接受,則回送確認(rèn)段,置序號(hào)=Y確,認(rèn)號(hào)=X+1A收到此段后,也返回一個(gè)確認(rèn)段,置序號(hào)=X+1,確認(rèn)號(hào)=Y+1義至此,連接建立成功。
圖2.34TCP連接建立過程
上述三次握手過程可以有效地處理各種異常情況?,F(xiàn)以上圖2.35為例進(jìn)行說明。圖(a)為A、B雙方同時(shí)發(fā)起連接請求的碰撞情況。雙方都按照正常過程發(fā)送確認(rèn)段,對于任}方來說都已完成三次握手過秷。表面上看來建立了兩條連接,但由圖2.34TCP連接建立過和于它們的端點(diǎn)對相同,因此在插口表項(xiàng)中只占有-個(gè)表項(xiàng),也就是說只建立起一條連接。
圖(b)為一條連接建立、通信并釋放后,延遲重復(fù)的連接請求又到達(dá)B,B雖然回送確認(rèn)段,但A發(fā)現(xiàn)它并未發(fā)送關(guān)于該連接的請求,于是就回送拒絕段(RST=l),不可能錯(cuò)誤地再次建立此連接。
圖(c)為延遲重復(fù)的連接請求和數(shù)據(jù)段相繼到達(dá)B。B收到重復(fù)的數(shù)據(jù)段時(shí),因連接尚未建立,因此不會(huì)接受此數(shù)據(jù)。其后收到A發(fā)回的拒絕段,就終止連接的建立c另外需要注意飛點(diǎn),連接請求中的初始序號(hào)不能取為0。其原因是當(dāng)主機(jī)崩潰后重新恢復(fù)時(shí),如果以同樣的初始序號(hào)重新進(jìn)行連接建立,對方就會(huì)認(rèn)為原有的連接依然存在,而不理會(huì)此次連接請求。一般采用基于時(shí)鐘的方法隨機(jī)選擇初始序號(hào)。
二、連接釋放
連接釋放也采用三次握手過程,如圖2.36所示:
連接釋放可由任一方發(fā)起,釋放過程將連接視作兩條獨(dú)立的單工連接。如A方發(fā)出釋放請求(FIN=l),并收到B方對該釋放段的確認(rèn)以后,則A->B的連接關(guān)閉,即A---->B停止發(fā)送數(shù)據(jù),但8>A仍可發(fā)送數(shù)據(jù)。要關(guān)閉B---->A的連接需反向執(zhí)行同樣的操作。在圖2.36中,B收到A發(fā)來的釋放請求后,要經(jīng)過一定時(shí)間才能發(fā)出至A的釋放請求,因?yàn)锽需通知應(yīng)用進(jìn)程并獲得關(guān)閉連接的命令,其間可能涉及人機(jī)交互操作。為了防止超時(shí)重傳,B應(yīng)立即向A返回釋放確認(rèn),以先行關(guān)閉A.-B的連接。
如果發(fā)出釋放請求的一方在2倍分組最大生存時(shí)間內(nèi)未收到確認(rèn),則自行釋放該連接。其后,對端將檢測到對方進(jìn)程已不在通信狀態(tài),于是也將超時(shí)釋放連接。
三、連接管理狀態(tài)轉(zhuǎn)移圖
上述兀P連接管理過程可由圖2.37所示的狀態(tài)轉(zhuǎn)移圖完整地描述:
圖中,粗實(shí)線表示服務(wù)器的正常轉(zhuǎn)移路徑,細(xì)實(shí)線表示客戶機(jī)的正常轉(zhuǎn)移路徑,虛線表示異常路徑。每條狀態(tài)轉(zhuǎn)移線旁標(biāo)有E/A標(biāo)記,E表示轉(zhuǎn)移觸發(fā)事件,A表示轉(zhuǎn)移時(shí)執(zhí)行的動(dòng)作。
現(xiàn)以一條正常路徑予以簡要說明。服務(wù)器調(diào)用LISTEN原語后從“關(guān)閉"狀態(tài)進(jìn)入“守聽”狀態(tài)。此時(shí)客戶機(jī)調(diào)用CONNECT原語后,發(fā)出連接請求(SYN=l),進(jìn)入“同步已發(fā)送”狀態(tài),服務(wù)器收到此請求后,返送確認(rèn)(SYN+ACK)段后進(jìn)入“同步已接收”狀態(tài)??蛻魴C(jī)收到此確認(rèn)后向服務(wù)器回送確認(rèn),進(jìn)入“連接已建“狀態(tài),服務(wù)器收到客戶機(jī)發(fā)來的確認(rèn)后也進(jìn)入“連接已建“狀態(tài)。
隨后,客戶機(jī)調(diào)用CWSE原語,發(fā)出釋放請求(FIN),主動(dòng)關(guān)閉連接,進(jìn)入“關(guān)閉等待1"狀態(tài)。服務(wù)器收到此釋放請求立即返回確認(rèn)(ACK),進(jìn)入“關(guān)閉等待”狀態(tài)Q客戶機(jī)收到確認(rèn)后進(jìn)入“關(guān)閉等待2"狀態(tài)其后,服務(wù)器調(diào)用CLOSE原語,發(fā)出釋放請求,進(jìn)入“最終確認(rèn)"狀態(tài)??蛻魴C(jī)收到此請求后,立即發(fā)回確認(rèn),進(jìn)入“定時(shí)等待"狀態(tài),以作資源釋放等善后工作,定時(shí)器時(shí)間到就回到“關(guān)閉"狀態(tài)。服務(wù)器收到客戶機(jī)發(fā)回的確認(rèn)后,也回到“關(guān)閉"狀態(tài)。