專利名稱:網(wǎng)絡(luò)設(shè)備之間持續(xù)http連接的仿真的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及網(wǎng)絡(luò),并且更具體地,涉及對網(wǎng)絡(luò)節(jié)點(diǎn)之間的持續(xù)HTTP連接進(jìn) 行仿真(emulate)。
背景技術(shù):
超文本傳輸協(xié)議(HTTP)是用于在萬維網(wǎng)(WWW)上傳送數(shù)據(jù)的重要標(biāo)準(zhǔn)。與獨(dú)立 于所傳送的實(shí)際數(shù)據(jù)而進(jìn)行操作的傳輸控制協(xié)議(TCP)相反,HTTP是OSI (開放系統(tǒng)互連) 模型中的應(yīng)用層協(xié)議,其操作與如何傳送數(shù)據(jù)無關(guān)。一般地,HTTP允許客戶端與諸如服務(wù)器 或者其他客戶端的網(wǎng)絡(luò)資源進(jìn)行通信。例如,客戶端可以請求存儲在服務(wù)器上的網(wǎng)頁。為 此,客戶端向服務(wù)器進(jìn)行請求,而服務(wù)器發(fā)送響應(yīng)。HHTP協(xié)議的1. 0版本(HTTP 1. 0)是常用的HTTP協(xié)議。HTTP1. 0使用的請求/響 應(yīng)范式具有四個(gè)階段建立TCP連接,客戶端HTTP請求,服務(wù)器HTTP響應(yīng),以及終止TCP連 接。由于HTTP是無狀態(tài)協(xié)議,其在四個(gè)階段過程發(fā)生之后并不維持連接。因此,對于另一 事務(wù),必須重新建立連接。由此,使用HTTP 1.0的通信可能非常慢,因?yàn)槊慨?dāng)客戶端生成新 的HTTP請求時(shí),新的TCP連接開啟并繼而關(guān)閉。對于諸如會議應(yīng)用的實(shí)時(shí)數(shù)據(jù)應(yīng)用而言, 這可能導(dǎo)致不佳的性能。解決該限制的一種技術(shù)是,在HTTP響應(yīng)或者請求內(nèi)設(shè)置Ke印Alive (保持活躍) 報(bào)頭。Ke印Alive報(bào)頭不是HTTP 1. 0定義的,其指示連接應(yīng)當(dāng)為特定數(shù)目的HTTP事務(wù)保 持為開啟。盡管Keep Alive技術(shù)嘗試提供持續(xù)超過單個(gè)事務(wù)的連接,但存在與Keep Alive 技術(shù)相關(guān)聯(lián)的問題。首先,很多客戶端和服務(wù)器并不支持Keep Alive技術(shù),特別是那些使 用HTTP 1.0的客戶端和服務(wù)器。第二,Ke印Alive技術(shù)可能是不穩(wěn)定的,因?yàn)榭蛻舳擞?jì)算 機(jī)與服務(wù)器計(jì)算機(jī)之間的Ke印Alive連接可能不期待地終止。例如,如果Ke印Alive報(bào) 頭沒有包括在客戶端與服務(wù)器之間的每個(gè)請求和響應(yīng)中,則連接可能關(guān)閉。第三,防火墻和 代理服務(wù)器經(jīng)常將客戶端和服務(wù)器與外部網(wǎng)絡(luò)隔開,并且阻止建立Ke印Alive連接,或是 在Ke印Alive連接建立之后突然將其關(guān)閉。因此,無法確保Ke印Alive技術(shù)對已有的客 戶端和服務(wù)器是有效的。因此,需要仿真或者建立持續(xù)HTTP連接的系統(tǒng)和方法,以克服上述局限。而且,該 系統(tǒng)和方法應(yīng)當(dāng)是平臺無關(guān)的,即客戶端和服務(wù)器無需特別地支持持續(xù)連接。
發(fā)明內(nèi)容
本發(fā)明提供用于對持續(xù)連接進(jìn)行仿真的系統(tǒng)和方法,從而解決上述問題。在一個(gè) 實(shí)施方式中,通過調(diào)整HTTP請求和/或HTTP響應(yīng)中的內(nèi)容長度值,來維持持續(xù)的超文本傳 輸協(xié)議(HTTP)連接。一般地,內(nèi)容長度值是包括在HTTP請求或者響應(yīng)中的報(bào)頭,其指示消 息數(shù)據(jù)的長度。消息數(shù)據(jù)可以包括與諸如GET動作或者POST動作的方法相關(guān)聯(lián)的應(yīng)用數(shù) 據(jù)。確定內(nèi)容長度的值,以保持HTTP連接在估計(jì)的時(shí)段內(nèi)是開啟的。在該時(shí)段超時(shí)之前, 發(fā)送新的HTTP請求或者響應(yīng),以保持HTTP連接在附加時(shí)段內(nèi)是開啟的。如果HTTP連接被過早關(guān)閉,則可以縮短估計(jì)的時(shí)段,或者可以增加內(nèi)容長度值。在一個(gè)實(shí)施方式中,一種系統(tǒng),包括客戶端和服務(wù)器,其中的至少一個(gè)包括用以維 持持續(xù)連接的持續(xù)連接模塊。持續(xù)連接模塊可以為需要低延遲(例如,用于實(shí)時(shí)性能)的 高帶寬數(shù)據(jù)傳送的應(yīng)用(諸如,會議應(yīng)用)啟動持續(xù)連接。在另一實(shí)施方式中,持續(xù)連接模塊還包括網(wǎng)絡(luò)狀況檢測器。網(wǎng)絡(luò)狀況檢測器使用 各種技術(shù)(例如,Ping)來確定網(wǎng)絡(luò)的特性(例如,帶寬)。該特性被反饋給持續(xù)連接模塊, 以便在確定估計(jì)時(shí)段和內(nèi)容長度值時(shí)使用。有益地,通過就像存在持續(xù)連接一樣進(jìn)行操作(例如,通過提供高分辨率視頻), 諸如會議應(yīng)用的應(yīng)用可以具有改進(jìn)的性能。持續(xù)連接是平臺無關(guān)的,因?yàn)榭梢越⒊掷m(xù)連 接,而無需考慮客戶端或者服務(wù)器通過Keep-Alive或者需要顯式支持的其他技術(shù)對持續(xù) 連接的支持。此外,即使存在代理服務(wù)器、防火墻或者其他阻礙,仍然可以實(shí)現(xiàn)持續(xù)連接。說明書中所描述的特征和優(yōu)點(diǎn)不是排他性的,具體地,根據(jù)附圖、說明書和權(quán)利要 求書,很多其他特征和優(yōu)點(diǎn)對于本領(lǐng)域普通技術(shù)人員而言將是易見的。而且,應(yīng)當(dāng)注意,說 明書中所使用的語言原則上為了可讀性和教導(dǎo)的目的而選擇的,而不是為了描繪或者限制 發(fā)明主題而選擇的。
通過結(jié)合附圖考慮下文的詳細(xì)描述,可以容易地理解本發(fā)明的教導(dǎo)。圖1是示出按照本發(fā)明某些實(shí)施方式的、用于維持持續(xù)超文本傳輸協(xié)議(HTTP)連 接的系統(tǒng)的框圖。圖2是示出按照本發(fā)明某些實(shí)施方式的系統(tǒng)的持續(xù)連接模塊的框圖。圖3a、圖3b是示出按照本發(fā)明某些實(shí)施方式的HTTP請求和HTTP響應(yīng)的示意圖。圖4是示出按照本發(fā)明某些實(shí)施方式的、用于維持持續(xù)HTTP連接的方法的流程 圖。圖5是示出按照本發(fā)明某些實(shí)施方式的、用于在客戶端中維持與服務(wù)器的持續(xù) HTTP連接的方法的流程圖。圖6是示出按照本發(fā)明某些實(shí)施方式的、用于在服務(wù)器中維持與客戶端的持續(xù) HTTP連接的方法的流程圖。
具體實(shí)施例方式描述了用于仿真持續(xù)連接的系統(tǒng)和方法。類似或者相同的標(biāo)號可能在附圖中使 用,并且可以表示類似或者相同的功能。在一個(gè)實(shí)施方式中,通過調(diào)整HTTP請求和/或HTTP 響應(yīng)中的內(nèi)容長度值來維持持續(xù)的超文本傳輸協(xié)議(HTTP)連接。這里使用的“持續(xù)HTTP 連接”表示在諸如傳輸控制協(xié)議(TCP)連接的底層連接之上進(jìn)行的HTTP事務(wù),而無須針對 新的事務(wù)而重新建立連接。事務(wù)包括在具有元數(shù)據(jù)和消息數(shù)據(jù)字段的數(shù)據(jù)包中實(shí)現(xiàn)的HTTP 請求和HTTP響應(yīng)。一般地,內(nèi)容長度值是指示消息數(shù)據(jù)長度的元數(shù)據(jù)。內(nèi)容長度值可以在 編碼中表示為與描述報(bào)頭(例如,“內(nèi)容長度”)和值(例如,3495)相對應(yīng)的鍵/值配對。消 息數(shù)據(jù)可以包括與諸如GET或者POST動作(例如,用以取回超文本標(biāo)記語言(或稱HTML) 頁面)的方法相關(guān)聯(lián)的應(yīng)用數(shù)據(jù)。注意,在TCP協(xié)議上使用HTTP事務(wù)僅僅是示例性的,其
5他實(shí)施方式可以使用備選的協(xié)議來維持持續(xù)連接。圖1是按照本發(fā)明某些實(shí)施方式的、用于維持持續(xù)HTTP連接的系統(tǒng)100的框圖。 圖1的系統(tǒng)100包括客戶端110和服務(wù)器120,其通過網(wǎng)絡(luò)106進(jìn)行通信,但是其他實(shí)施方 式可以包括其他客戶端、服務(wù)器以及其他網(wǎng)絡(luò)節(jié)點(diǎn)。例如,系統(tǒng)100可以包括防火墻或者代 理服務(wù)器??蛻舳?10可以是能夠與服務(wù)器120建立連接并交換數(shù)據(jù)的任何類型的電子設(shè) 備。例如,客戶端Iio可以是桌面計(jì)算機(jī)、膝上型計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)或者蜂窩電 話。客戶端110還包括應(yīng)用112、持續(xù)連接模塊130a以及通信模塊116。在某些實(shí)施方式 中,客戶端110可以包括其他組件(未示出),諸如處理器(例如,x86平臺處理器或者ARM 處理器)、存儲器(例如,SRAM或者DRAM、硬盤或者閃存)以及操作系統(tǒng)(例如,Windows操 作系統(tǒng)或者UNIX操作系統(tǒng))。此外,服務(wù)器120包括應(yīng)用122、持續(xù)連接模塊130b以及通 信模塊126。在某些實(shí)施方式中,服務(wù)器120還可以存儲網(wǎng)頁以供客戶端110訪問,或者主 控諸如視頻會議應(yīng)用的分布式應(yīng)用。應(yīng)用112、122可以是任何類型的軟件和/或硬件(例如,web瀏覽器、文字處理應(yīng) 用、電子表格應(yīng)用或者計(jì)算機(jī)輔助起草(drafting)應(yīng)用)。應(yīng)用112、122可以在分布式計(jì) 算環(huán)境中通過網(wǎng)絡(luò)106與網(wǎng)絡(luò)資源和其他應(yīng)用通信。在一個(gè)實(shí)施方式中,應(yīng)用112、122與 底層通信協(xié)議無關(guān),而是,其依賴于通信模塊116來提供跨越網(wǎng)絡(luò)106的通信信道。在某些 實(shí)施方式中,應(yīng)用112、122要求高數(shù)據(jù)率和低延遲,以用于例如實(shí)時(shí)應(yīng)用、會議應(yīng)用(例如, 視頻或音頻會議)、多媒體應(yīng)用、數(shù)據(jù)存儲應(yīng)用等的最優(yōu)性能。在一個(gè)示例中,視頻會議應(yīng)用 可以設(shè)置為需要高數(shù)據(jù)傳送速率的分辨率和幀率。而且,利用高數(shù)據(jù)率遞送,相關(guān)的視頻饋 送具有較好的質(zhì)量(例如,較少的丟幀)。持續(xù)連接模塊130a、130b可以作為應(yīng)用112、122 (例如,web瀏覽器)的部分并入, 作為通信模塊116、126(例如,協(xié)議應(yīng)用)的部分并入,或者作為獨(dú)立的模塊并入。在一個(gè) 實(shí)施方式中,持續(xù)連接模塊130a、130b可以檢測應(yīng)用112、122何時(shí)加載(例如,使用守護(hù)進(jìn) 程(daemon)),而在另一實(shí)施方式中其由應(yīng)用112、122來啟動(例如,使用功能調(diào)用)。在一個(gè)實(shí)施方式中,持續(xù)連接模塊130a、130b維持客戶端110與服務(wù)器120之間 的HTTP連接,直到該連接被顯式終止(例如,應(yīng)用112、122關(guān)閉)。在一個(gè)實(shí)施方式中,持 續(xù)連接模塊130a、130b通過確定內(nèi)容長度字段的值來維持連接,以便在預(yù)定時(shí)段(也即,估 計(jì)的時(shí)段)內(nèi)將連接保持為開啟。連接可以保持為開啟,而不考慮已經(jīng)發(fā)生了多少HTTP事 務(wù)。繼而,在預(yù)定的時(shí)間量超時(shí)之前,持續(xù)連接模塊130a、130b持續(xù)地發(fā)送包,這些包具有 經(jīng)過修改的內(nèi)容長度值。內(nèi)容長度值例如可以與通信模塊116、126合作實(shí)現(xiàn),或者可以通 過創(chuàng)建、解釋和修改由通信模塊116、126發(fā)出的包來實(shí)現(xiàn)。在另一實(shí)施方式中,持續(xù)連接模塊130a、130b在試圖重新建立關(guān)閉的連接之前檢 測客戶端110或者服務(wù)器120是否仍然在線。持續(xù)連接模塊130a、130b在下文參考圖2更 為詳細(xì)地描述。通信模塊116、126例如可以包括以太網(wǎng)卡、無線網(wǎng)卡(例如,IEEE 802. 11協(xié)議)、 網(wǎng)絡(luò)處理器、協(xié)議應(yīng)用(例如,HTTP應(yīng)用)等。在一個(gè)實(shí)施方式中,通信模塊116、126將例 如來自應(yīng)用112、122的數(shù)據(jù)嵌入到適于通過網(wǎng)絡(luò)106傳送的包中(例如,參見圖3a、圖3b)。 例如,通信模塊116可以按照OSI網(wǎng)絡(luò)棧的層來添加TCP/IP報(bào)頭,諸如內(nèi)容長度值。網(wǎng)絡(luò)
6106可以是用于在客戶端110與服務(wù)器120之間傳輸通信(例如,數(shù)據(jù))的媒介(例如,互 聯(lián)網(wǎng)、LAN、WAN等)或者蜂窩網(wǎng)絡(luò)。在一個(gè)實(shí)施方式中,網(wǎng)絡(luò)106提供無連接通信信道,用 于發(fā)送具有元數(shù)據(jù)和消息數(shù)據(jù)的數(shù)據(jù)包。報(bào)頭可以用來指示消息數(shù)據(jù)的內(nèi)容長度。而且, 報(bào)頭可以指示源IP地址和目的IP地址、端口號、時(shí)間戳等。網(wǎng)絡(luò)106可以具有動態(tài)狀況, 諸如當(dāng)前最小帶寬和最大延遲。狀況可以根據(jù)訪問網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)、數(shù)據(jù)傳送的類型等而變 化。圖2是示出按照本發(fā)明某些實(shí)施方式的系統(tǒng)100的持續(xù)連接模塊130的框圖。持 續(xù)連接模塊130包括連接模塊210、HTTP請求模塊220、HTTP響應(yīng)模塊230以及網(wǎng)絡(luò)狀況 檢測器240。在客戶端110發(fā)起的與服務(wù)器120的HTTP通信中,通常有四個(gè)步驟建立TCP 連接,發(fā)送HTTP請求,發(fā)送HTTP響應(yīng),以及終止TCP連接。連接模塊210通過從客戶端110向服務(wù)器120發(fā)送請求來建立TCP連接。由此, TCP連接被開啟,以便在終止前允許客戶端110進(jìn)行多個(gè)HTTP請求,并允許服務(wù)器120發(fā)送 多個(gè)HTTP響應(yīng)。TCP連接可以在諸如端口 80的端口上開啟。因?yàn)镠TTP請求模塊220和 響應(yīng)模塊230之一或者二者進(jìn)行操作以持續(xù)地發(fā)送HTTP請求和/或響應(yīng),來阻止TCP連接 的終止,因此連接模塊210進(jìn)行等待,直到使用HTTP的(0SI應(yīng)用層)連接超時(shí),此后終止 (傳輸層)TCP連接。HTTP請求模塊220將HTTP請求從客戶端110提供給服務(wù)器120。在一個(gè)實(shí)施方 式中,HTTP請求模塊220發(fā)起使用HTTP的持續(xù)連接。HTTP請求模塊220根據(jù)內(nèi)容長度值 來確定客戶端110與服務(wù)器120將維持連接的估計(jì)時(shí)段。在該時(shí)段超時(shí)之前,HTTP請求模 塊220生成附加的HTTP請求,其具有經(jīng)過修改的內(nèi)容長度值。在一個(gè)實(shí)施方式中,HTTP請 求模塊220接收連接被過早關(guān)閉的通知,并調(diào)整其操作以進(jìn)行響應(yīng)。在一個(gè)實(shí)施方式中,可 以增大內(nèi)容長度值,以延長客戶端110和服務(wù)器120將連接保持為開啟的時(shí)段。在另一實(shí) 施方式中,縮短估計(jì)的時(shí)段,從而使HTTP請求以更高的速率發(fā)送。圖3a中示出了示例性HTTP請求310。HTTP請求310包括元數(shù)據(jù)字段320和消息 數(shù)據(jù)字段330。在一個(gè)實(shí)施方式中,元數(shù)據(jù)字段320表示初始行或者狀態(tài)行。元數(shù)據(jù)字段 320可以包括方法名稱字段325以及其他信息,諸如所請求資源的本地路徑(也即,URL)、所 使用的HTTP的版本(例如,HTTP 1.0)以及其他信息。方法名稱325指明所請求事務(wù)的類 型,諸如GET或者POST動作。在某些實(shí)施方式中,元數(shù)據(jù)字段320包括內(nèi)容長度字段327, 并且還包括內(nèi)容編碼和內(nèi)容類型。內(nèi)容長度字段327包括指明消息數(shù)據(jù)字段330的大小的 值(例如,大小可以表示為8位字節(jié)的十進(jìn)制數(shù))。例如,當(dāng)方法是POST動作時(shí),內(nèi)容長度 字段327中的值指明有多少消息數(shù)據(jù)從客戶端110被發(fā)送到服務(wù)器120。HTTP請求模塊 220可以調(diào)整內(nèi)容長度字段327的值,以便在特定的時(shí)段內(nèi)維持HTTP連接。內(nèi)容編碼描述 編碼的類型,而內(nèi)容類型描述媒體類型。再次參考圖2,HTTP響應(yīng)模塊230將HTTP響應(yīng)從服務(wù)器120提供給客戶端110。 在第一實(shí)施方式中,HTTP響應(yīng)模塊230通過對從客戶端110接收的HTTP請求進(jìn)行反應(yīng),來 被動地維持持續(xù)HTTP連接。在第二實(shí)施方式中,響應(yīng)模塊230通過如下方式來主動地維持 持續(xù)HTTP連接基于內(nèi)容長度值來估計(jì)將連接保持為開啟的時(shí)段,和/或修改內(nèi)容長度值。 如請求模塊220 —樣,響應(yīng)模塊230響應(yīng)于連接的過早終止而調(diào)整參數(shù)。圖3b中示出了示例性HTTP響應(yīng)350。HTTP響應(yīng)350包括元數(shù)據(jù)字段360和消息數(shù)據(jù)字段370。元數(shù)據(jù)字段360可以包括初始行(或者狀態(tài)行),用以存儲版本、編碼和報(bào) 頭行。消息數(shù)據(jù)字段370可以例如響應(yīng)于GET動作來存儲數(shù)據(jù)。例如,消息數(shù)據(jù)字段370 可以包括響應(yīng)于針對URL的HTTP請求310的HTML代碼。在圖2中,HTTP請求模塊和HTTP響應(yīng)模塊220、230可以在通信期間使用HTTP報(bào) 頭,諸如GET和POST。GET命令是從客戶端110向服務(wù)器120發(fā)送數(shù)據(jù)的請求。POST命令 允許客戶端110向服務(wù)器120發(fā)送數(shù)據(jù)。在使用GET或者POST命令時(shí),內(nèi)容長度報(bào)頭可以 是HTTP中的所需報(bào)頭,沒有該報(bào)頭將導(dǎo)致“411 length required (需要長度)”錯(cuò)誤。一 般地,內(nèi)容長度值指明期望多少字節(jié)的數(shù)據(jù)用于傳輸。在一個(gè)實(shí)施方式中,通信模塊116從 持續(xù)連接模塊130a接收內(nèi)容長度值??蛇x地,網(wǎng)絡(luò)狀況檢測器240向HTTP請求模塊和HTTP響應(yīng)模塊220、230提供與 網(wǎng)絡(luò)106(圖1中所示)相關(guān)聯(lián)的網(wǎng)絡(luò)狀況的反饋。在一個(gè)實(shí)施方式中,網(wǎng)絡(luò)狀況可以從網(wǎng) 絡(luò)上的節(jié)點(diǎn)處獲得。在另一實(shí)施方式中,網(wǎng)絡(luò)狀況可以使用各種詢問來計(jì)算,其中詢問例如 Ping請求,其用來測量包例如從客戶端110到服務(wù)器120的傳輸所用的時(shí)間量。圖4是示出按照本發(fā)明一個(gè)實(shí)施方式的、用于仿真使用HTTP的持續(xù)連接的方法 400的流程圖。由例如客戶端110或者服務(wù)器120啟動(410)會議應(yīng)用或者其他應(yīng)用(例 如,應(yīng)用112、122)。會議應(yīng)用可以指明期望持續(xù)連接,或者可以自動激活持續(xù)連接。在客戶端與服務(wù)器之間建立(420)TCP連接,以提供用于會議應(yīng)用的通信信道(例 如,由連接模塊210在客戶端110與服務(wù)器120之間建立)。使用該TCP連接,在客戶端與 服務(wù)器之間維持(430)持續(xù)的HTTP連接。在一個(gè)實(shí)施方式中,客戶端通過修改發(fā)送至服務(wù) 器的HTTP請求中的內(nèi)容長度參數(shù)的值(例如,HTTP請求模塊220修改內(nèi)容長度值字段327) 來維持與服務(wù)器的持續(xù)連接。下文將結(jié)合圖5進(jìn)一步詳細(xì)描述由客戶端發(fā)起的持續(xù)連接。 在另一實(shí)施方式中,服務(wù)器通過修改返回給客戶端的HTTP響應(yīng)中的內(nèi)容長度參數(shù)的值(例 如,HTTP響應(yīng)模塊230修改內(nèi)容長度值字段365)來維持與客戶端的持續(xù)連接。下文將結(jié) 合圖6進(jìn)一步詳細(xì)描述由服務(wù)器發(fā)起的持續(xù)連接。在又一實(shí)施方式中,客戶端和服務(wù)器二 者都對維持持續(xù)連接有所貢獻(xiàn)。在一個(gè)實(shí)施方式中,可以使用諸如安全套接字層(SSL)協(xié) 議的附加協(xié)議來實(shí)現(xiàn)持續(xù)連接。連接保持活躍,直到會議應(yīng)用終止(440)。一旦會議應(yīng)用終止,則可以向持續(xù)連接 模塊發(fā)送(450)消息。通信模塊可以終止(460)TCP連接。圖5是示出按照本發(fā)明一個(gè)實(shí)施方式的、用于由服務(wù)器維持持續(xù)連接的方法430a 的流程圖。服務(wù)器從客戶端接收(510)HTTP請求。在一個(gè)實(shí)現(xiàn)中,HTTP請求未被客戶端修 改。響應(yīng)模塊確定(520)內(nèi)容長度值(例如,如下面的表1中所示),以便在(理論的) 時(shí)段內(nèi)維持與客戶端的持續(xù)HTTP連接。(預(yù)定的或者)實(shí)現(xiàn)的時(shí)段可以默認(rèn)各種值(通常 等于理論時(shí)段的一半),例如對于響應(yīng)而言是1秒。響應(yīng)于使用HTTP的持續(xù)連接的過早關(guān) 閉(也即,沒有接收到終止連接消息),響應(yīng)模塊可以縮短時(shí)段和/或增加內(nèi)容長度值???選地,響應(yīng)模塊可以響應(yīng)于網(wǎng)絡(luò)狀況而進(jìn)行調(diào)整。例如,如表1中所示,較高的帶寬可以導(dǎo) 致縮短的時(shí)段(例如,縮短25%)和增加的內(nèi)容長度值(例如,從32k字節(jié)到64k字節(jié)), 以便維持使用HTTP的連接。例如使用包括內(nèi)容長度值的GET或者POST動作來發(fā)送(530) HTTP響應(yīng)。
當(dāng)時(shí)段接近超時(shí)(540)、并且沒有接收到(550)使用HTTP的連接終止的消息時(shí),重 新開始或者重新建立時(shí)段。如果成功地將連接維持為開啟(560),則內(nèi)容長度值可以再次使 用。另一方面,如果連接過早關(guān)閉(560)(也即,在沒有接收到終止連接消息的情況下),則 縮短(570)時(shí)段的時(shí)間量,和/或增加內(nèi)容長度值。在某些實(shí)施方式中,HTTP響應(yīng)沒有(除了元數(shù)據(jù)之外的)數(shù)據(jù),因?yàn)檫@些響應(yīng)僅 僅是為了維持使用HTTP的連接而生成的。在其他實(shí)施方式中,HTTP響應(yīng)包括在服務(wù)器與 客戶端之間傳送的合法數(shù)據(jù)。在又一實(shí)施方式中,僅用于維持HTTP連接的HTTP響應(yīng)包括 隨機(jī)數(shù)據(jù),例如在代理服務(wù)器為確保數(shù)據(jù)被傳送而檢查該HTTP響應(yīng)的情況下。圖6是示出按照本發(fā)明一種實(shí)施方式的、用于由客戶端維持持續(xù)連接的方法430b 的流程圖。請求模塊確定(620)內(nèi)容長度值,以便在(理論)時(shí)段內(nèi)維持與服務(wù)器的HTTP 連接。時(shí)段可以默認(rèn)為各種值。繼而,響應(yīng)于HTTP連接的過早關(guān)閉(也即,沒有接收到終 止連接消息),HTTP請求模塊220可以縮短時(shí)段中的時(shí)間量和/或增加內(nèi)容長度值。可選 地,請求模塊可以響應(yīng)于網(wǎng)絡(luò)狀況而進(jìn)行調(diào)整。例如使用包括內(nèi)容長度值的GET或者POST 動作來發(fā)送(630)HTTP請求??蛻舳讼蚍?wù)器發(fā)送(630)HTTP請求。在一個(gè)實(shí)施方式中,服務(wù)器發(fā)送對該請求 的HTTP響應(yīng),而不對內(nèi)容長度值進(jìn)行修改。在服務(wù)器也維持持續(xù)連接的另一實(shí)施方式中, 服務(wù)器可以調(diào)整內(nèi)容長度值。在時(shí)段超時(shí)(640)之前,可以進(jìn)行查詢(650)以繼續(xù)該連接。如果連接已被過早 關(guān)閉(660)(也即,沒有接收到終止連接消息),則可以縮短(670)時(shí)段內(nèi)的時(shí)間量和/或增 加內(nèi)容長度值。如循環(huán)630-660所示,發(fā)送(630)另一 HTTP請求,以重新建立和維持連接。在此描述的系統(tǒng)和方法的其他變形是可能的。例如,在一個(gè)實(shí)施方式中,客戶端和 服務(wù)器二者可以進(jìn)行操作以維持持續(xù)連接,而不是只有一個(gè)設(shè)備如此操作。在客戶端與服務(wù)器之間包括代理服務(wù)器的另一實(shí)施方式中,客戶端可以維持與代 理服務(wù)器的持續(xù)連接。一般地,代理服務(wù)器可以將客戶端與內(nèi)部網(wǎng)絡(luò)隔離開,同時(shí)代表客戶 端來訪問外部網(wǎng)絡(luò)上的資源。因此,客戶端通過與代理服務(wù)器的相同持續(xù)連接來對各種服 務(wù)器進(jìn)行請求。在一個(gè)實(shí)施方式中,客戶端可以使代理服務(wù)器維持與外部網(wǎng)絡(luò)上的特定服 務(wù)器的連接。
在一個(gè)實(shí)施方式中,HTTP可以在持續(xù)連接上流水線化。特別地,可以在未接收到 HTTP響應(yīng)的情況下發(fā)送多個(gè)HTTP請求。類似地,可以針對單個(gè)HTTP請求發(fā)送多個(gè)HTTP響應(yīng)。本發(fā)明的方法步驟執(zhí)行的順序?qū)嶋H上只是示范性的。除非本發(fā)明特別指明,否則 步驟可以按照任意順序執(zhí)行或者并行執(zhí)行。本發(fā)明的方法可以通過在任意類型的單個(gè)計(jì)算 機(jī)或者多個(gè)計(jì)算機(jī)上運(yùn)行的硬件、固件、軟件或其結(jié)合來執(zhí)行。實(shí)現(xiàn)本發(fā)明的軟件可以包括 存儲在任意計(jì)算機(jī)可讀存儲介質(zhì)(例如,ROM、RAM、磁介質(zhì)、壓縮盤、DVD等)中的任意形式 的計(jì)算機(jī)指令(例如,源代碼、目標(biāo)代碼、解釋代碼等)。這種軟件的形式可以是在傳導(dǎo)介質(zhì) 上傳播的載波中所包含的電子數(shù)據(jù)信號,或者其形式可以是通過光纖傳播的光脈沖。盡管已經(jīng)示出和描述了本發(fā)明的具體實(shí)施方式
,但是對于本領(lǐng)域技術(shù)人員易見的 是,在不脫離本發(fā)明最廣泛方面的情況下,可以進(jìn)行改變和修改,因此所附權(quán)利要求將所有 這些改變和修改涵蓋在其范圍內(nèi),只要該改變和修改落入本發(fā)明的實(shí)質(zhì)精神內(nèi)。例如,本發(fā) 明的系統(tǒng)和方法可以用于在使用任意無狀態(tài)協(xié)議類型而不僅是HTTP協(xié)議的客戶端計(jì)算機(jī) 和服務(wù)器計(jì)算機(jī)之間建立連接。在上文描述中,為了闡釋的目的,記載了多個(gè)特定的細(xì)節(jié),以便提供對本發(fā)明的透 徹理解。然而,對于本領(lǐng)域技術(shù)人員易見的是,本發(fā)明可以在沒有這些特定細(xì)節(jié)的情況下實(shí) 施。在其他情況下,結(jié)構(gòu)和設(shè)備以框圖的形式示出,以避免使本發(fā)明模糊不清。在說明書中,對“一個(gè)實(shí)施方式”或者“實(shí)施方式”的引用表示與該實(shí)施方式結(jié)合 描述的特定特征、結(jié)構(gòu)或者特性包括在本發(fā)明的至少一個(gè)實(shí)施方式中。在說明書各處出現(xiàn) 的詞語“在一個(gè)實(shí)施方式中”并不一定表示同一實(shí)施方式。詳細(xì)描述的某些部分是按照針對計(jì)算機(jī)存儲器內(nèi)的數(shù)據(jù)比特的算法或者操作的 符號化表示而給出的。這些算法化描述和表示是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員用以最為有效地 向本領(lǐng)域的其他技術(shù)人員傳遞其工作實(shí)質(zhì)的手段。在此以及一般地,認(rèn)為算法是得到期望 結(jié)果的步驟的有條理的序列。步驟是需要對物理量進(jìn)行物理操作的那些步驟。通常,盡管 不是必須的,這些量的形式是能夠被存儲、傳送、合并、比較和以其他方式操作的電信號或 者磁信號。已經(jīng)證明,主要是出于共同使用的原因,有時(shí)將這些信號表示為比特、值、元素、 符號、字符、項(xiàng)、數(shù)字等是方便的。然而,應(yīng)當(dāng)記住,所有這些以及類似的術(shù)語將與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián),并且僅僅是 應(yīng)用于這些物理量的方便的標(biāo)示。除非在討論中明確地特別聲明,否則應(yīng)當(dāng)理解,在整個(gè)說 明書中,使用諸如“處理”或者“計(jì)算(computing或calculating),,或者“確定”或者“顯 示”等的討論表示計(jì)算機(jī)系統(tǒng)或者類似電子計(jì)算設(shè)備的動作和過程,其對將計(jì)算機(jī)系統(tǒng)的 寄存器和存儲器內(nèi)表示為物理量(電子量)的數(shù)據(jù)進(jìn)行操作和變換為計(jì)算機(jī)系統(tǒng)存儲器或 者寄存器或者其他這類信息存儲、傳輸或者顯示設(shè)備中類似地表示為物理量的其他數(shù)據(jù)。本發(fā)明還涉及用于執(zhí)行這里操作的裝置。該裝置可以針對所需目的而特別構(gòu)建, 或者其可以包括通用計(jì)算機(jī),該通用計(jì)算機(jī)由存儲在計(jì)算機(jī)中的計(jì)算機(jī)程序選擇性地激 活或者重配。這樣的計(jì)算機(jī)程序可以存儲在計(jì)算機(jī)可讀存儲介質(zhì)中,例如但不限于任何 類型的磁盤,包括軟盤、光盤、CD-ROM、磁光盤、只讀存儲器(ROM)、隨機(jī)訪問存儲器(RAM)、 EPROM、EEPR0M、磁卡或光卡、或者適合存儲電子指令的任意類型的介質(zhì),每個(gè)介質(zhì)都耦合至 計(jì)算機(jī)系統(tǒng)總線。
這里給出的算法和操作并不必然涉及任何特定的計(jì)算機(jī)或者其他裝置。根據(jù)這里 的教導(dǎo),可以將各種通用系統(tǒng)與程序結(jié)合使用,或者可以證明,構(gòu)建更為專門化的裝置來執(zhí) 行方法步驟是方便的。各種這些系統(tǒng)的所需結(jié)構(gòu)通過以下描述是易見的。此外,沒有參考 任何特定的編程語言來描述本發(fā)明。應(yīng)當(dāng)意識到,可以使用各種編程語言來實(shí)現(xiàn)在此描述 的本發(fā)明的啟示。此外,對于相關(guān)領(lǐng)域普通技術(shù)人員顯然的是,本發(fā)明的模塊、特征、屬性、 方法和其他方面可以實(shí)現(xiàn)為軟件、硬件、固件或三者的任意組合。當(dāng)然,只要本發(fā)明的組件 實(shí)現(xiàn)為軟件,該組件就可以實(shí)現(xiàn)為單機(jī)程序、較大程序的部分、多個(gè)獨(dú)立程序、靜態(tài)或者動 態(tài)鏈接庫、內(nèi)核可加載模塊、設(shè)備驅(qū)動器和/或計(jì)算機(jī)編程領(lǐng)域的技術(shù)人員現(xiàn)在或者將來 知曉的全部以及任何方式。而且,本發(fā)明決不限于任何特定操作系統(tǒng)或者環(huán)境中的實(shí)現(xiàn)。相關(guān)領(lǐng)域的技術(shù)人員將會理解,上述實(shí)現(xiàn)僅僅是示例性的,在不脫離本發(fā)明的實(shí) 質(zhì)精神和范圍的情況下,可以進(jìn)行多種改變。因此,所附權(quán)利要求旨在涵蓋處于本發(fā)明實(shí)質(zhì) 精神和范圍內(nèi)的所有這些改變和修改。
權(quán)利要求
一種用于維持客戶端與服務(wù)器之間的持續(xù)超文本傳輸協(xié)議(HTTP)連接的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括建立傳輸控制協(xié)議(TCP)連接;接收HTTP請求;確定內(nèi)容長度值,所述內(nèi)容長度值在預(yù)定時(shí)段內(nèi)維持使用HTTP的所述連接,所述內(nèi)容長度值基于所述客戶端與所述服務(wù)器之間的網(wǎng)絡(luò)帶寬以及所述預(yù)定時(shí)段二者來調(diào)整;生成針對所述HTTP請求的HTTP響應(yīng),每個(gè)響應(yīng)包括所述內(nèi)容長度值;以及在與針對所述HTTP請求的先前HTTP響應(yīng)相關(guān)聯(lián)的所述預(yù)定時(shí)段超時(shí)之前,發(fā)送針對所述HTTP請求的所述HTTP響應(yīng)。
2.如權(quán)利要求1的方法,其中生成響應(yīng)包括連續(xù)地生成對所述HTTP請求的響應(yīng),直到接收到終止所述連接的消息。
3.如權(quán)利要求1的方法,其中發(fā)送HTTP響應(yīng)包括向所述客戶端發(fā)送所述HTTP響應(yīng),其中所述客戶端并不顯式地支持持續(xù)連接。
4.如權(quán)利要求1的方法,其中發(fā)送HTTP響應(yīng)包括向所述客戶端發(fā)送所述HTTP響應(yīng),而不使用Ke印-Alive報(bào)頭。
5.如權(quán)利要求1的方法,其中獨(dú)立于發(fā)生的多個(gè)HTTP事務(wù)來維持所述連接。
6.如權(quán)利要求1的方法,還包括 發(fā)送ping ;以及響應(yīng)于沒有接收到Ping響應(yīng)而終止所述連接。
7.如權(quán)利要求1的方法,還包括 檢測到所述連接已經(jīng)過早終止; 重新建立所述連接;縮短所述預(yù)定時(shí)段;以及針對所述縮短的預(yù)定時(shí)段來調(diào)整所述內(nèi)容長度值。
8.如權(quán)利要求1的方法,其中建立所述連接包括 響應(yīng)于近似實(shí)時(shí)地傳送數(shù)據(jù)的應(yīng)用的啟動,建立所述連接。
9.如權(quán)利要求1的方法,還包括通過所述連接發(fā)送數(shù)據(jù),數(shù)據(jù)量與所述內(nèi)容長度值無關(guān)。
10.如權(quán)利要求1的方法,其中所述HTTP響應(yīng)包括由所述服務(wù)器確定的所述內(nèi)容長度 值,以便在所述預(yù)定時(shí)段內(nèi)維持與所述客戶端的所述HTTP連接。
11.如權(quán)利要求1的方法,其中所述HTTP請求包括由所述客戶端確定的所述內(nèi)容長度 值,以便在所述預(yù)定時(shí)段內(nèi)維持與所述服務(wù)器的使用HTTP的所述HTTP連接。
12.如權(quán)利要求1的方法,其中所述HTTP請求是GET請求和POST請求之一。
13.如權(quán)利要求1的方法,其中所述客戶端和所述服務(wù)器的至少一個(gè)使用HTTP協(xié)議的 1.0版本,用于HTTP通信。
14.如權(quán)利要求1的方法,其中所述客戶端和所述服務(wù)器的至少一個(gè)使用HTTP協(xié)議的 1. 1版本,用于HTTP通信。
15.如權(quán)利要求1的方法,還包括對針對所述HTTP請求的所述HTTP響應(yīng)進(jìn)行加密。
16.一種用于從客戶端維持與服務(wù)器的、使用HTTP的持續(xù)連接的計(jì)算機(jī)實(shí)現(xiàn)的方法, 所述方法包括建立連接;發(fā)送HTTP請求,每個(gè)HTTP請求包括內(nèi)容長度值,所述內(nèi)容長度值被確定用以在預(yù)定時(shí) 段內(nèi)維持所述連接,所述內(nèi)容長度值基于所述客戶端與所述服務(wù)器之間的網(wǎng)絡(luò)帶寬以及所 述預(yù)定時(shí)段二者來調(diào)整;以及在與先前HTTP請求相關(guān)聯(lián)的所述預(yù)定時(shí)段超時(shí)之前,發(fā)送所述HTTP請求。
17.如權(quán)利要求16的方法,其中發(fā)送HTTP請求包括向所述服務(wù)器發(fā)送所述HTTP請求,其中所述服務(wù)器并不顯式地支持持續(xù)連接。
18.如權(quán)利要求16的方法,其中發(fā)送HTTP請求包括向所述服務(wù)器發(fā)送所述HTTP請求,而不使用Ke印-Alive報(bào)頭。
19.一種用于從服務(wù)器維持與客戶端的持續(xù)HTTP連接的系統(tǒng),所述系統(tǒng)包括客戶端;服務(wù)器,其與所述客戶端通信,并配置用于建立與所述客戶端的連接,所述服務(wù)器配置 用于生成針對從所述客戶端接收的HTTP請求的響應(yīng),每個(gè)響應(yīng)包括在預(yù)定時(shí)段內(nèi)維持所 述連接的內(nèi)容長度值,所述內(nèi)容長度值基于所述客戶端與所述服務(wù)器之間的網(wǎng)絡(luò)帶寬以及 所述預(yù)定時(shí)段二者來調(diào)整,所述服務(wù)器配置用于在與針對所述HTTP請求的先前響應(yīng)相關(guān) 聯(lián)的所述預(yù)定時(shí)段超時(shí)之前,發(fā)送針對所述HTTP請求的所述HTTP響應(yīng)。
20.一種用于從客戶端維持與服務(wù)器的持續(xù)HTTP連接的系統(tǒng),所述系統(tǒng)包括服務(wù)器;客戶端,其與所述服務(wù)器進(jìn)行通信,并配置用于建立與所述服務(wù)器的連接,所述客戶端 配置用于生成發(fā)送至所述服務(wù)器的HTTP請求,每個(gè)HTTP請求包括在預(yù)定時(shí)段內(nèi)維持所述 連接的內(nèi)容長度值,所述內(nèi)容長度值基于所述客戶端與所述服務(wù)器之間的網(wǎng)絡(luò)帶寬以及所 述預(yù)定時(shí)段二者來調(diào)整,所述客戶端配置用于在與先前HTTP請求相關(guān)聯(lián)的所述預(yù)定時(shí)段 超時(shí)之前,發(fā)送所述HTTP請求。
21.如權(quán)利要求20的系統(tǒng),其中所述服務(wù)器是代表所述客戶端與外部網(wǎng)絡(luò)通信的代理 服務(wù)器,并且其中通過所述持續(xù)HTTP連接接收的所述HTTP請求針對所述外部網(wǎng)絡(luò)上的不 止一個(gè)服務(wù)器。
全文摘要
本發(fā)明涉及網(wǎng)絡(luò)設(shè)備之間的持續(xù)HTTP連接的仿真。具體地,本發(fā)明公開了用于對例如使用傳輸控制協(xié)議(TCP)連接之上的超文本傳輸協(xié)議(HTTP)事務(wù)的持續(xù)連接進(jìn)行仿真的系統(tǒng)和方法。通過調(diào)整HTTP請求和/或HTTP響應(yīng)中的內(nèi)容長度值來維持持續(xù)連接。內(nèi)容長度值與諸如GET動作和POST動作的方法相關(guān)聯(lián)。確定內(nèi)容長度的值,以便在估計(jì)的時(shí)段內(nèi)將連接保持為開啟。在該時(shí)段超時(shí)之前,發(fā)送新的HTTP請求或者響應(yīng),以便在附加時(shí)段內(nèi)將連接保持為開啟。如果連接被過早關(guān)閉,則可以縮短估計(jì)的時(shí)段和/或可以增加內(nèi)容長度值。網(wǎng)絡(luò)狀況檢測器確定諸如帶寬之類的網(wǎng)絡(luò)特性,以便在確定估計(jì)時(shí)段和內(nèi)容長度值時(shí)使用。
文檔編號H04L29/08GK101902449SQ20091013828
公開日2010年12月1日 申請日期2009年5月31日 優(yōu)先權(quán)日2009年5月31日
發(fā)明者梁庚榮 申請人:友益(Ux)有限公司