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