專利名稱:面向遠過程調用的持久tcp連接方法
技術領域:
本發明涉及ー種TCP連接方法,尤其是涉及ー種面向遠過程調用的持久TCP連接方法。
背景技術:
遠程過程調用協議(Remote Procedure Call Protocol, RPC)采用客戶機/服務器模型。請求發起程序相當于ー個客戶機,它通過網絡調用遠程計算機上提供的服務程序。 RPC有多種模式,其主流為Sun RPC、DEC及ORPC。網絡文件系統(Network File System, NFS)是ー個使用Sim RPC構造的客戶機/服務器應用程序,NFS客戶機通過它的TCP/IP模塊(或者是UDP/IP模塊)向NFS服務器發送RPC請求,NFS底層的傳輸協議為用戶數據報 UDP或傳輸控制協議TCP。NFSv3版本在實現中,基本是為每個NFS請求建立ー個TCP連接, 具體是指每次服務器完成一個應答后相關的TCP連接就被關閉,即每個連接沒有持續到可以傳輸其他請求。這種連接方法稱為非持久連接,這種做法的開銷很大。經過對現有文獻的檢索發現,((TheAdvancement of NFS Benchmarking :SFS2. 0)) (該文最初發表于1999年在美國華盛頓州西雅圖市舉辦的第13屆大型裝置系統管理 “LISA”學術研討會的論文集里)中,NFSv3開始引入TCP作為傳輸協議,客戶端可以選擇傳輸協議為UDP或TCP。UDP作為ー種無連接輕量級的協議,消息的交互次數少,(每個請求處理TCP需要5個消息,而UDP需要僅需2個消息),但是,UDP不為IP提供可靠性、流控或差錯恢復功能,其丟包會導致嚴重的可靠性問題。經過對現有文獻的檢索發現,((TCP/IP詳解卷1 協議》第1-1版第10章以及第 17章至第21章中,TCP提供的是面向連接的,可靠的字節流服務,它不會導致嚴重的丟包問題。但是,兩個進程在使用TCP進行數據交換之前,必須建立ー個連接,完成數據交換后,需要關閉這個連接;這樣頻繁的建立與關閉TCP連接導致系統CPU資源浪費客戶得為每個等待請求的對象建立并維護ー個新的連接,并為其分配緩沖區,并維持TCP變量;而在關閉 TCP連接時釋放這些資源;不同的TCP連接之間完全獨立,使得TCP具有的擁塞控制功能不能發揮有效作用。所述的TCP協議提供可靠的連接服務,采用三次握手來初始化TCP連接,即通過三次握手來同步連接雙方的序列號和確認號并交換TCP窗ロ大小信息。所述的TCP關閉連接, 由于TCP連接是全雙エ,因此每個方向必須單獨地進行關閉, 終止ー個TCP連接要經過4 次握手。
發明內容
本發明的目的就是為了克服上述現有技術存在的缺陷而提供ー種面向遠過程調用的持久TCP連接方法。本發明的目的可以通過以下技術方案來實現一種面向遠過程調用的持久TCP連接方法,其特征在干,包括以下步驟
1)客戶端與服務器端三次握手建立TCP連接,傳輸數據并啟動倒計時計時器;2)設置倒計時計時起的初始值;3)倒計時計時器時間到點后,執行回調函數,客戶端向服務器端發起請求,請求斷開TCP連接;4)客戶端與服務器端第四次握手斷開TCP連接,結束本次持續的TCP連接。所述的設置倒計時計時起的初始值的依據為1)服務器和客戶端之間的中間節點負載程度;2)客戶端與服務器端的負載狀況;3)應用請求類型以及歷史連接時間。與現有技術相比,本發明具有以下優點客戶端與服務器端的TCP連接不再是非持續的,而是自適應關閉的,對于傳輸頻繁的客戶端與服務器端之間,減少了頻繁的TCP連接建立與關閉次數,可以使系統更充分利用網絡帶寬,提高傳輸效率。
圖1為本發明的實現硬件結構示意圖;圖2為本發明的軟件流程圖。
具體實施例方式下面結合附圖和具體實施例對本發明進行詳細說明。實施例如圖1、圖2所示,一種面向遠過程調用的持久TCP連接方法,包括以下步驟1)客戶端與服務器端三次握手建立TCP連接,傳輸數據并啟動倒計時計時器;2)設置倒計時計時起的初始值;3)倒計時計時器時間到點后,執行回調函數,客戶端向服務器端發起請求,請求斷開TCP連接;4)客戶端與服務器端第四次握手斷開TCP連接,結束本次持續的TCP連接。所述的設置倒計時計時起的初始值的依據為1)服務器和客戶端之間的中間節點負載程度,若中間節點(如路由器、網關、防火墻等)負載大,則可減短TCP連接時間,否則可將持續連接時間加長;2)客戶端與服務器端的負載狀況,因為創建TCP連接需要耗費一定的系統資源, 若TCP連接兩段的主機負載重,則可減短TCP連接時間,以便及時釋放所占用的系統資源;3)應用請求類型以及歷史連接時間,在計時器中存有各類型操作前幾次TCP連接的持續時間(各類型操作的TCP連接首次持續時間),根據操作的不同(如讀文件和寫文件)和歷史數據的變化來動態更改連接持續時間。本發明所提出的方法,是依托于現NFS對基于TCP的RPC調用,是對現有NFS執行 RPC調用的缺點的改進,具有良好的適應性。只需對現有的NFS客戶端模塊做些改動,就可以很好的實現。
權利要求
1.一種面向遠過程調用的持久TCP連接方法,其特征在干,包括以下步驟1)客戶端與服務器端三次握手建立TCP連接,傳輸數據并啟動倒計時計時器;2)設置倒計時計時起的初始值;3)倒計時計時器時間到點后,執行回調函數,客戶端向服務器端發起請求,請求斷開 TCP連接;4)客戶端與服務器端第四次握手斷開TCP連接,結束本次持續的TCP連接。
2.根據權利要求1所述的ー種面向遠過程調用的持久TCP連接方法,其特征在干,所述的設置倒計時計時起的初始值的依據為1)服務器和客戶端之間的中間節點負載程度;2)客戶端與服務器端的負載狀況;3)應用請求類型以及歷史連接時間。
全文摘要
本發明涉及一種面向遠過程調用的持久TCP連接方法,包括以下步驟1)客戶端與服務器端三次握手建立TCP連接,傳輸數據并啟動倒計時計時器;2)設置倒計時計時起的初始值;3)倒計時計時器時間到點后,執行回調函數,客戶端向服務器端發起請求,請求斷開TCP連接;4)客戶端與服務器端第四次握手斷開TCP連接,結束本次持續的TCP連接。與現有技術相比,本發明具有可以使系統更充分利用網絡帶寬、提高傳輸效率等優點。
文檔編號H04L29/08GK102546659SQ20121003966
公開日2012年7月4日 申請日期2012年2月21日 優先權日2012年2月21日
發明者戰科宇, 李小勇, 王玲惠, 王皓, 胡鵬, 閆鶴 申請人:上海交通大學