国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      維持會話連接的制作方法

      文檔序號:7695826閱讀:205來源:國知局
      專利名稱:維持會話連接的制作方法
      技術(shù)領(lǐng)域
      所描述的技術(shù)一般涉及數(shù)據(jù)通信網(wǎng)絡(luò),尤其涉及維持會話連接。
      背景技術(shù)
      計算設(shè)備用戶有時使用其計算設(shè)備來與其它用戶進(jìn)行通信。例如,用戶可使用計算設(shè)備,通過發(fā)送或接收鍵入的消息,如通過使用MICR0S0FTMESSENGER( “MESSENGER”)即時消息通信產(chǎn)品,而與另一用戶進(jìn)行通信。作為另一個例子,用戶可通過使用話筒說話并通過揚聲器或頭戴式耳機聽見其他用戶,如通過使用互聯(lián)網(wǎng)協(xié)議上的話音(“VoIP”)應(yīng)用程序,而與另一個用戶進(jìn)行通信。這些用戶可使用各種計算設(shè)備,如個人計算機、個人數(shù)字助理、蜂窩電話、啟用VoIP的電話,等等。將這些類型的通信服務(wù)提供給用戶的應(yīng)用程序也可能需要提供存在信息 (presence information)。存在信息傳達(dá)用戶的能力或者意愿,以使用計算設(shè)備進(jìn)行通信。 存在信息可由計算設(shè)備自動檢測,或者可由用戶主動選擇。計算設(shè)備可自動觀察并傳遞存在信息,如用戶“狀態(tài)”。例如,當(dāng)用戶沒有登錄到任何計算設(shè)備或沒有使用(或登錄到)觀察并傳遞存在信息的應(yīng)用程序時,用戶狀態(tài)可被自動表示為“脫機”。當(dāng)用戶啟動或登錄到諸如MESSENGER等觀察并傳達(dá)存在信息的應(yīng)用程序時,用戶狀態(tài)可被自動表示為“聯(lián)機”。 當(dāng)用戶一段時間沒有在計算設(shè)備上執(zhí)行任何行動時,應(yīng)用程序可自動表示用戶“離開”。用戶也可主動選擇其狀態(tài)。例如,用戶可表示他們“外出就餐”或者“忙碌”,這可表示他們可能無法立即對來自其他用戶的消息做出響應(yīng)。多個計算設(shè)備可向一注冊服務(wù)器計算設(shè)備注冊其存在信息,這樣以使“監(jiān)視程序”,即希望確定用戶狀態(tài)的應(yīng)用程序,可通過查詢注冊服務(wù)器或預(yù)訂自動接收存在信息來確定有意義的存在信息。例如,MESSENGER可向注冊服務(wù)器表明,用戶在一段時間內(nèi)還沒有在計算設(shè)備上執(zhí)行任何行動,因此用戶存在信息可以是“離開”。啟用VoIP的電話可向注冊服務(wù)器表明,用戶已經(jīng)打了電話,因此該用戶的存在信息可以是“接聽電話”。當(dāng)監(jiān)視程序從注冊服務(wù)器接收到該存在信息時,它可確定用戶狀態(tài)是“接聽電話,且不能對計算設(shè)備上的消息做出響應(yīng)”。然而,若用戶開始在計算設(shè)備上執(zhí)行行動,則監(jiān)視程序可確定用戶狀態(tài)是 “接聽電話,但能夠?qū)τ嬎阍O(shè)備上的消息做出響應(yīng)”。若用戶主動在計算設(shè)備上表明其用戶狀態(tài)是“離開”,并使用啟用VoIP的電話,則監(jiān)視程序可確定用戶狀態(tài)是“漫游”。通信應(yīng)用程序有時需要確立并管理計算設(shè)備之間的會話。會話是在一段時間內(nèi)出現(xiàn)的計算設(shè)備之間的一組交互。例如,諸如MESSENGER或VoIP等實時通信應(yīng)用程序代表用戶建立通信設(shè)備之間的會話。這些應(yīng)用程序可使用諸如“會話發(fā)起協(xié)議”(“SIP”)等各種機制來建立會話。SIP是一種應(yīng)用層控制協(xié)議,計算設(shè)備可使用它來發(fā)現(xiàn)另一個計算設(shè)備, 并建立、修改和終止計算設(shè)備之間的會話。
      應(yīng)用程序可將SIP用于另一個協(xié)議來發(fā)送或接收信息。通過將SIP用于其它協(xié)議,應(yīng)用程序可創(chuàng)建并管理會話,并在會話期間交換信息。以SIP來使用以交換信息的協(xié)議可將該信息分割為消息。例如,VoIP應(yīng)用程序可將長的敘述分割為較短的消息。在會話期間交換消息被稱為“對話”。SIP可使用較低級通信層來傳輸對話的消息,如傳輸控制協(xié)議 /互聯(lián)網(wǎng)協(xié)議(“TCP/IP”),它通常用于傳輸層以及網(wǎng)絡(luò)層協(xié)議。傳輸控制協(xié)議(”TCP”)是面向連接的、可靠的傳遞傳輸層協(xié)議。TCP通常被描述為一傳輸層,它提供應(yīng)用層(如使用SIP的應(yīng)用程序)和網(wǎng)絡(luò)層之間的接口。應(yīng)用層一般通過發(fā)送或接收數(shù)據(jù)流(如許多數(shù)據(jù)字節(jié))來與TCP層進(jìn)行通信。TCP將這個數(shù)據(jù)流組織為段,它可由諸如互聯(lián)網(wǎng)協(xié)議(“IP”)等在網(wǎng)絡(luò)層使用的協(xié)議攜帶。這些數(shù)據(jù)段通常被稱為“分組”、“幀”或者“消息”。每條消息一般包含報頭和凈荷。報頭包含用于路由和解釋消息所需的數(shù)據(jù)。凈荷包含被發(fā)送或接收的實際數(shù)據(jù)。應(yīng)用層、傳輸層以及網(wǎng)絡(luò)層,連同其它層,共同被稱為數(shù)據(jù)通信棧。連接中的消息可經(jīng)過中間計算設(shè)備。當(dāng)發(fā)送計算設(shè)備數(shù)據(jù)通信棧的傳輸層或網(wǎng)絡(luò)層建立與接收計算設(shè)備中數(shù)據(jù)通信棧的相應(yīng)層的連接時,由計算設(shè)備交換的消息可經(jīng)過幾個中間計算設(shè)備。例如,消息可經(jīng)過代理服務(wù)器、網(wǎng)絡(luò)地址轉(zhuǎn)換器或者網(wǎng)關(guān)。這些中間計算設(shè)備接收、處理并轉(zhuǎn)發(fā)消息。例如,代理服務(wù)器可以是連接到內(nèi)聯(lián)網(wǎng)的計算設(shè)備和連接到因特網(wǎng)的計算設(shè)備之間的中介。該代理服務(wù)器可例如通過忽略來自內(nèi)聯(lián)網(wǎng)外部的連接請求, 試圖使內(nèi)聯(lián)網(wǎng)更安全。中間計算設(shè)備可終止兩個計算設(shè)備之間的空閑連接,以有效地使用網(wǎng)絡(luò)資源。例如,在連接到內(nèi)聯(lián)網(wǎng)的用戶計算設(shè)備(“計算設(shè)備A”)上執(zhí)行的MESSENGER或VoIP應(yīng)用程序可建立與在連接到因特網(wǎng)的另一個計算設(shè)備(“計算設(shè)備B”)上執(zhí)行的應(yīng)用程序的基于 SIP的會話。該會話可使用計算設(shè)備A和B之間的TCP/IP連接,而且由計算設(shè)備交換的消息可經(jīng)過代理服務(wù)器。當(dāng)在一段時間內(nèi)沒有在連接中交換消息時,代理服務(wù)器可關(guān)閉它與計算設(shè)備B之間的連接,以保存網(wǎng)絡(luò)資源。然而,計算設(shè)備A可能不知道該連接已被關(guān)閉, 因為它與代理服務(wù)器的連接保持打開。結(jié)果,在計算設(shè)備B上執(zhí)行的應(yīng)用程序可能錯誤地假定計算設(shè)備A的應(yīng)用程序(或用戶)不再處于聯(lián)機狀態(tài)或者使用該連接。此外,為使代理服務(wù)器所連接的內(nèi)聯(lián)網(wǎng)更加安全,代理服務(wù)器可忽略來自未連接到內(nèi)聯(lián)網(wǎng)的設(shè)備,諸如連接到因特網(wǎng)的計算設(shè)備的連接請求。隨后,在連接到內(nèi)聯(lián)網(wǎng)的計算設(shè)備B上執(zhí)行的應(yīng)用程序可能無法查詢在計算設(shè)備A上執(zhí)行的應(yīng)用程序的狀態(tài)或請求重新建立會話。中間計算設(shè)備即使在計算設(shè)備使用“保持活躍”機制的時候也可關(guān)閉連接。某些計算設(shè)備使用保持活躍機制來保持連接活躍,而不論消息缺乏與否。該機制包括發(fā)送“保持活躍”消息,以表明發(fā)送者還沒有關(guān)閉連接。然而,有效的中間計算設(shè)備可識別保持活躍消息, 并在保持發(fā)送計算設(shè)備和中間計算設(shè)備之間的連接活躍時,可終止與在保持活躍消息中表明的接收者的連接(如,與連接到因特網(wǎng)的計算設(shè)備的連接)。連接可通過發(fā)送應(yīng)用層的有效消息而得到維持。例如,使用傳輸層中的TCP的SIP 應(yīng)用程序可周期性地發(fā)送有效的SIP消息,如REGISTER(寄存器)消息。REGISTER消息可用于使SIP服務(wù)器能夠?qū)⑾l(fā)送者的統(tǒng)一資源標(biāo)識符(“URI”)與發(fā)送者使用的計算設(shè)備相關(guān)聯(lián)。當(dāng)有效SIP消息不能被發(fā)送或接收時,SIP應(yīng)用程序可檢測到其TCP連接是不可用的。發(fā)送REGISTER,或者實際上包含有效數(shù)據(jù)的任何有效SIP消息的問題,是當(dāng)多個客戶機和服務(wù)器需要這樣做以維持連接時,這樣做可能是計算密集的。在REGISTER消息的情況下,接收這樣消息的服務(wù)器可能需要對該消息進(jìn)行語法分析,以確定發(fā)送者計算設(shè)備的URI 和身份,并且可能進(jìn)一步需要將數(shù)據(jù)儲存在可能在另一個服務(wù)器上的數(shù)據(jù)庫中。這樣,不依賴于消息TCP保持活躍或廣泛計算處理來維持會話連接的有效方法將具有顯著的實用性。SIP是一種因特網(wǎng)提議標(biāo)準(zhǔn)。其規(guī)范“RFC 3261”,可在<http://www. ietf. org/ rfC/rfC;^61.tXt>處獲得。用于對涉及事件通知的SIP的擴(kuò)展的規(guī)范“RFC 3沈5”可在<http://www. ietf. org/rfc/rfc3265. txt>處獲得。涉及即時消息通信系統(tǒng)中的存在信息的規(guī)范“RFC 2778” 可在 <http//www. ietf. org/rfc/rfc2778. txt> 處獲得。涉及SIP 中的存在信息的提議規(guī)范的草稿可在<http://www. ietf. org/intemet-drafts/ draft-ietf-simple-presene-10. txt>處獲得。所有這四個規(guī)范通過整體引用合并于此。

      發(fā)明內(nèi)容
      在一實施例中,提供了用于維持會話連接的技術(shù)。該技術(shù)在不發(fā)送消息時可導(dǎo)致會話連接由于超時條件而關(guān)閉時發(fā)送心跳消息。心跳消息是有效的傳輸層消息,它會被數(shù)據(jù)通信棧的較高層處的協(xié)議忽略。例如,該技術(shù)可發(fā)送其凈荷中僅包含回車和換行 (“CRLF”)的TCP消息。因為TCP層將僅包含CRLF的消息認(rèn)為是有效TCP消息,所以諸如代理服務(wù)器這樣的中間計算設(shè)備可以不將心跳消息解釋為“保持活躍”消息,并可維持會話連接。


      圖1是示出用于維持會話連接的系統(tǒng)的實施例的框圖。圖2是示出圖1的網(wǎng)絡(luò)的實施例的框圖。圖3是示出由計算設(shè)備所使用的數(shù)據(jù)通信棧的實施例的框圖。圖4是示出sendjnessage例程的實施例的流程圖。圖5是示出sustain_connection例程的實施例的流程圖。圖6是示出sendjieartbeat子例程的實施例的流程圖。圖7是示出receive_message子例程的實施例的流程圖。圖8是示出一實施例中的消息流的消息流圖。圖9是示出一實施例中的消息流的消息流圖。圖10是示出一實施例中的消息流的框圖。
      具體實施例方式在一實施例中,提供了用于維持會話連接的技術(shù)。該技術(shù)在不發(fā)送消息可導(dǎo)致會話連接由于超時條件而關(guān)閉時發(fā)送心跳消息。心跳消息是包含非空凈荷的有效傳輸層消息,它會被數(shù)據(jù)通信棧的較高層處的協(xié)議忽略。例如,該技術(shù)可發(fā)送在其凈荷中僅包含回車和換行(“CRLF’)的TCP消息。因為TCP層將僅包含CRLF的消息認(rèn)為是有效的TCP消息, 所以諸如代理服務(wù)器這樣的中間計算設(shè)備可復(fù)位涉及其中發(fā)送或接收消息的連接的消息時鐘。該消息時鐘表明自從消息在連接中被最后一次發(fā)送或接收以來已過去的時間量。當(dāng)
      6連接的消息時鐘表明已經(jīng)過了閾值量的時間(如表明超時條件已經(jīng)出現(xiàn))時,中間計算設(shè)備可關(guān)閉該連接。因為消息時鐘在消息被發(fā)送或接收時被復(fù)位,所以該連接可可以不被關(guān)閉,除非另一個消息在閾值量的時間過去之前沒有被發(fā)送或接收。當(dāng)接收者計算設(shè)備的TCP 層將接收到的心跳消息轉(zhuǎn)發(fā)到其數(shù)據(jù)通信棧的較高層時,該較高層可忽略心跳消息。例如, SIP可忽略僅包含諸如空格、制表符、回車、換行或CRLF等空白的其它有效SIP消息。若接收到包含除CRLF之外信息的消息,則較高層可試圖將這些消息解釋為包含不能被忽略的信息。在各種實施例中,心跳可只包含回車、換行或可在傳輸層有效但被數(shù)據(jù)通信棧的較高層忽略的任何數(shù)據(jù)。這樣,通過發(fā)送有效傳輸層消息,如被SIP忽略的心跳消息,即使在處于數(shù)據(jù)通信棧中高于傳輸層的層的計算設(shè)備之間沒有交換任何信息,該技術(shù)也可維持會話連接。可在協(xié)議的規(guī)范或定義中定義何種類型的消息是有效但可被忽略的。在一實施例中,被傳輸層以上的層所忽略的消息可包括,如回車、換行、空格、制表符、或者任何一般的空白字符。在一實施例中,只包含空白字符的這樣的消息能以回車或換行結(jié)束??捎糜谙⒅幸跃S持連接而不導(dǎo)致過量計算負(fù)擔(dān)的字符可通過分析在可能關(guān)閉連接的協(xié)議(如TCP)之上使用的協(xié)議來確定。現(xiàn)在轉(zhuǎn)到附圖,圖1是示出用于維持會話連接的系統(tǒng)的實施例的框圖。該系統(tǒng)可包含一個或多個客戶機102、一個或多個網(wǎng)絡(luò)104、以及將客戶機和網(wǎng)絡(luò)連接起來的網(wǎng)絡(luò), 如因特網(wǎng)114??蛻魴C可通過網(wǎng)絡(luò)連接108連接到因特網(wǎng)。網(wǎng)絡(luò)104可使用各種形式的數(shù)據(jù)通信鏈路110連接到因特網(wǎng)。客戶機可以是,如計算機、蜂窩電話、或者連接到因特網(wǎng)的其它設(shè)備。網(wǎng)絡(luò)可以是如內(nèi)聯(lián)網(wǎng)??蛻魴C也可使用專用數(shù)據(jù)通信鏈路112直接連接到網(wǎng)絡(luò)。 類似地,網(wǎng)絡(luò)可使用專用數(shù)據(jù)通信鏈路112直接連接到其它網(wǎng)絡(luò)。因特網(wǎng)也可連接到各種其它計算設(shè)備(未示出)。這里描述的連接可以是物理的、無線的,并且可實際上可以是任何形式的數(shù)據(jù)通信網(wǎng)絡(luò)連接。圖2是示出圖1的網(wǎng)絡(luò)的實施例的框圖。網(wǎng)絡(luò)200包含一個或多個客戶機202、服務(wù)器204、以及邊緣代理服務(wù)器212。網(wǎng)絡(luò)也可包含其它設(shè)備(未示出)。所示的網(wǎng)絡(luò)設(shè)備 (以及未示出的那些設(shè)備)可通過與網(wǎng)絡(luò)相關(guān)聯(lián)的數(shù)據(jù)通信網(wǎng)絡(luò)(未示出)而互聯(lián)??蛻魴C202和服務(wù)器204可執(zhí)行各種活動,包括交換SIP消息。邊緣代理服務(wù)器212可以同時連接到網(wǎng)絡(luò)200( “內(nèi)部”網(wǎng)絡(luò))相連和“外部”網(wǎng)絡(luò)。如因特網(wǎng)(未示出)。當(dāng)客戶機想要打開到網(wǎng)絡(luò)外部的服務(wù)器的會話時,邊緣代理可例如確定該會話是否應(yīng)被打開,以及應(yīng)使用哪個通信鏈路。圖3是示出由圖1和圖2的計算設(shè)備所使用的數(shù)據(jù)通信棧的實施例的框圖。計算設(shè)備可使用一個或多個數(shù)據(jù)通信棧來彼此通信。在所示的示例中,計算設(shè)備300使用與這些計算設(shè)備相關(guān)聯(lián)的數(shù)據(jù)通信棧來與計算設(shè)備303進(jìn)行通信。計算設(shè)備301和302可使用其相關(guān)聯(lián)的數(shù)據(jù)通信棧在計算設(shè)備300和303之間接收并轉(zhuǎn)發(fā)消息。計算設(shè)備300具有包含應(yīng)用層304、傳輸層306、網(wǎng)絡(luò)層308、數(shù)據(jù)鏈路層310以及物理層312的數(shù)據(jù)通信棧。應(yīng)用層可包含SIP應(yīng)用程序以及其它的應(yīng)用程序。SIP應(yīng)用程序可具有與傳輸層通信的組件或?qū)印IP應(yīng)用程序的這個通信層可發(fā)送或接收心跳消息。 計算設(shè)備301、302和303可具有類似的數(shù)據(jù)通信棧。具體地,計算設(shè)備303可具有包含應(yīng)用層314、傳輸層316、網(wǎng)絡(luò)層318、數(shù)據(jù)鏈路層320以及物理層322的數(shù)據(jù)通信棧。一些或所有這些應(yīng)用層可另外包含SIP應(yīng)用程序。
      當(dāng)兩個計算設(shè)備被連接起來時,其數(shù)據(jù)通信棧的層可具有彼此之間的邏輯或物理連接。例如,當(dāng)計算設(shè)備300通過計算設(shè)備301和302連接到計算設(shè)備303時,物理層312 可通過物理連接3M連接到計算設(shè)備301的物理層,計算設(shè)備301可通過物理連接連接到計算設(shè)備302的物理層,計算設(shè)備302可通過物理連接連接到計算設(shè)備303的物理層。每個計算設(shè)備可通過如調(diào)制解調(diào)器、網(wǎng)絡(luò)接口卡或者諸如通過因特網(wǎng)等其它連接而彼此相連。 因特網(wǎng)由各種物理連接組成,如電話線、微波鏈路、以及其它形式的有線和無線物理連接, 它們共同形成了消息的多條路線。實際上,因特網(wǎng)的早期目標(biāo)是讓發(fā)送者即使在網(wǎng)絡(luò)不工作時也能夠與接收者進(jìn)行通信。當(dāng)計算設(shè)備300將數(shù)據(jù)發(fā)送到計算設(shè)備303時,數(shù)據(jù)可通過因特網(wǎng)在不同的物理路線上行進(jìn)。數(shù)據(jù)通信棧的較高層,如數(shù)據(jù)鏈路層310和320、網(wǎng)絡(luò)層308和318、傳輸層306和 316,以及應(yīng)用層304和314可通過諸如邏輯連接3沈、3觀、330和332等邏輯連接而相連。 當(dāng)數(shù)據(jù)通信棧的兩層具有邏輯連接并交換數(shù)據(jù)時,該數(shù)據(jù)可通過物理連接沿著發(fā)送計算設(shè)備的數(shù)據(jù)通信?!跋蛳隆卑l(fā)送到數(shù)據(jù)通信棧的物理層,然后沿著接收計算設(shè)備的數(shù)據(jù)通信棧 “向上”發(fā)送。例如,當(dāng)計算設(shè)備300的SIP應(yīng)用程序304與計算設(shè)備303的SIP應(yīng)用程序 314進(jìn)行通信時,SIP應(yīng)用程序304可將數(shù)據(jù)傳遞到傳輸層306,傳輸層306可將數(shù)據(jù)傳遞到網(wǎng)絡(luò)層308,網(wǎng)絡(luò)層308可將數(shù)據(jù)傳遞到數(shù)據(jù)鏈路層310,數(shù)據(jù)鏈路層310可將數(shù)據(jù)傳遞到物理層312。物理層312可通過物理連接3M傳遞數(shù)據(jù),且最終可將數(shù)據(jù)傳遞到物理層 322。物理層322可將其接收的數(shù)據(jù)向上傳遞到數(shù)據(jù)鏈路層320,數(shù)據(jù)鏈路層320可將數(shù)據(jù)傳遞到網(wǎng)絡(luò)層318,網(wǎng)絡(luò)層318可將數(shù)據(jù)傳遞到傳輸層316,傳輸層最終可將數(shù)據(jù)傳遞到SIP 應(yīng)用程序314。當(dāng)計算設(shè)備301和302在其物理連接上接收數(shù)據(jù)時,它們也可沿其數(shù)據(jù)通信棧向上發(fā)送數(shù)據(jù)。可能的情況是,數(shù)據(jù)通信棧的較低層,而不是應(yīng)用層,能夠處理接收到的數(shù)據(jù), 而不將其發(fā)送到較高層。例如,當(dāng)SIP應(yīng)用程序304將SIP消息發(fā)送到SIP應(yīng)用程序時,它可將對應(yīng)于SIP消息的數(shù)據(jù)發(fā)送到傳輸層306。計算設(shè)備301和302的數(shù)據(jù)通信棧均接收其物理層上的數(shù)據(jù),它們可將接收到的數(shù)據(jù)沿著數(shù)據(jù)通信棧向上傳遞到其各自的傳輸層。 傳輸層可從接收到的數(shù)據(jù)中識別出在數(shù)據(jù)中表示的目的地是計算設(shè)備303,它可簡單地將數(shù)據(jù)轉(zhuǎn)發(fā)到傳輸層316 (通過其對應(yīng)的較低層)。這樣,計算設(shè)備301和302的應(yīng)用/SIP層可以不必處理或者甚至查看消息。當(dāng)任一計算設(shè)備301或者302的傳輸層在一段時間內(nèi)沒有接收到任何數(shù)據(jù)時,計算設(shè)備可關(guān)閉對應(yīng)于計算設(shè)備300和303之間的SIP會話的連接。例如,若計算設(shè)備301 不能在來自計算設(shè)備300或者計算設(shè)備302的連接上接收任何消息,則它可假定該連接不再是必要的,并關(guān)閉該連接。這樣,計算設(shè)備300和303之間的進(jìn)一步SIP消息也許無法經(jīng)過通過計算設(shè)備301和302的先前打開的連接。圖4是示出sendjnessage (發(fā)送消息)例程的實施例的流程圖。該例程可由應(yīng)用層組件執(zhí)行,如SIP應(yīng)用程序的組件,以發(fā)送消息。sendjnessage例程可由如在計算設(shè)備上執(zhí)行的SIP應(yīng)用程序在它將消息發(fā)送到在另一個計算設(shè)備上執(zhí)行的SIP應(yīng)用程序時使用。 該例程開始于方框402,那里它接收消息的指示作為參數(shù)。在方框404處,該例程復(fù)位時鐘值,如通過將其設(shè)置到零。時鐘值是自從消息被最后一次發(fā)送以來已經(jīng)過的時間的指示。這個值可由系統(tǒng)組件檢查,以確定連接是否應(yīng)被關(guān)閉。在方框406處,該例程將在方框402處接收到的消息發(fā)送到傳輸層。該例程可使用由傳輸層所展現(xiàn)的應(yīng)用程序接口來發(fā)送消息。 在方框408處,該例程返回到其調(diào)用者處。圖5是示出sustairucormection (維持連接)例程的實施例的流程圖。該例程由諸如SIP應(yīng)用程序的組件這樣的應(yīng)用層組件來執(zhí)行,以維持連接。該連接可能需要在如表示自從消息被最后一次發(fā)送以來已經(jīng)過的時間量的時鐘值超過超時值時候被維持。適當(dāng)?shù)某瑫r數(shù)可通過如使用傳輸層的API來確定傳輸層的屬性而確定,或者可由系統(tǒng)管理員來定義。該例程開始于方框502。在方框504處,該例程確定時鐘值是否在超時值附近。若時鐘值超過超時值,則該連接可能已經(jīng)被關(guān)閉了。結(jié)果,超時值之前的某段時間應(yīng)當(dāng)被選擇。 若時鐘值在超時值附近,則該例程繼續(xù)到方框506。否則,該例程繼續(xù)到方框508。在方框 506處,該例程調(diào)用sencLheartbeat (發(fā)送心跳)子例程,它發(fā)送可維持連接的消息。send_ heartbeat子例程在下文相關(guān)圖6來進(jìn)一步描述。在方框508處,該例程返回到其調(diào)用者處。sustairucormection例程可在與發(fā)送或接收消息的線程分離的線程循環(huán)中被重復(fù)調(diào)用?;蛘?,sustain_connection例程可響應(yīng)于在超時之前以某個指定時間間隔觸發(fā)的時鐘事件而被調(diào)用?;蛘?,sustairucormect例程可簡單地以小于超時值的某個時間間隔發(fā)送心跳消息,而不論時鐘值如何。例如,若代理服務(wù)器可在非活動狀態(tài)一分鐘之后超時,則該例程可每隔30秒發(fā)送一次心跳消息,即使消息在幾秒鐘之前已被發(fā)送或接收到。圖6是示出sencLheartbeat (發(fā)送心跳)子例程的實施例的流程圖。該子例程由諸如SIP應(yīng)用程序的組件等應(yīng)用層組件來執(zhí)行,以發(fā)送心跳消息。該心跳消息可被發(fā)送,以維持若在一段時間內(nèi)在連接中沒有發(fā)送消息可被關(guān)閉的連接。該子例程開始于方框602, 那里它接收會話指示作為參數(shù)。在方框604處,該子例程創(chuàng)建心跳消息。心跳消息是可被數(shù)據(jù)通信棧的一層所忽略但也許不能被數(shù)據(jù)通信棧的另一層所忽略的消息。例如,心跳消息可由SIP應(yīng)用程序發(fā)送,以在TCP連接具有被處理兩個具有打開的SIP會話的計算設(shè)備之間的消息的另一個計算設(shè)備(如代理服務(wù)器)關(guān)閉的風(fēng)險時,維持TCP連接。心跳消息例如可僅包含CRLF字符?;蛘?,心跳消息可包含以CRLF結(jié)束的一個或多個空格或制表符。 若不使用CRLF,心跳消息也可使用回車或換行字符。對TCP層而言,這樣的消息可以是有效消息,它在消息被發(fā)送或接收時復(fù)位時鐘值。然而,SIP應(yīng)用程序可忽略這樣的消息。這樣,通過發(fā)送這樣的心跳消息,TCP連接可保持打開,SIP存在信息由此可保持準(zhǔn)確,且沒有任何無用信息被呈現(xiàn)給SIP應(yīng)用程序。在另一個實施例中,僅回車或換行字符可在心跳消息中發(fā)送。在方框606處,子例程調(diào)用sencLmessage子例程,并將所創(chuàng)建的心跳消息作為參數(shù)傳遞給它。sencLmessage子例程在上文相關(guān)圖4描述。在方框608處,該子例程返回到其調(diào)用者處。圖7是示出receivejiiessage (接收消息)子例程的實施例的流程圖。該子例程可由接收者計算設(shè)備的應(yīng)用層組件,如SIP應(yīng)用程序的組件來執(zhí)行。該子例程開始于方框 702,那里它接收消息指示作為參數(shù)。在方框704處,該子例程確定接收到的消息是否為心跳消息。子例程可試圖通過檢查消息的內(nèi)容是否僅是回車、換行或者兩者兼有,來確定接收到的消息是否為心跳消息。或者,receivejiiessage子例程可被定制,以尋找消息中已知為
      9標(biāo)識心跳消息的任何其它信息。若接收到的消息是心跳消息,則該子例程繼續(xù)到方框706。 否則,該子例程繼續(xù)到方框708。在方框706處,該子例程可確認(rèn)消息。通常,傳輸層確認(rèn)消息。然而,在某些情況下,應(yīng)用層組件可能需要確認(rèn)消息。因為根據(jù)執(zhí)行該子例程的應(yīng)用層組件,這個步驟可以是可任選的,所以方框706被表示為虛線。在方框708處,該子例程可將消息轉(zhuǎn)發(fā)到如SIP應(yīng)用程序。在方框710處,該子例程返回到其調(diào)用者處。一接收到消息,子例程就可復(fù)位時鐘值(未示出),它可用于確定是否需要發(fā)送心跳消息以維持會話。圖8是示出一實施例中的消息流的消息流圖。在所示的實施例中,計算設(shè)備1已經(jīng)建立了與計算設(shè)備2的SIP會話。在會話中交換的消息經(jīng)過代理服務(wù)器。例如,當(dāng)計算設(shè)備1在時間0處發(fā)送消息1時,該消息經(jīng)過代理服務(wù)器,且計算設(shè)備2在時間1處接收該消息。類似地,當(dāng)計算設(shè)備2在時間2處發(fā)送消息2時,該消息在計算設(shè)備1在時間3處接收到它之前經(jīng)過代理服務(wù)器。每當(dāng)代理服務(wù)器轉(zhuǎn)發(fā)或接收消息時,它可復(fù)位時鐘。例如,當(dāng)代理服務(wù)器轉(zhuǎn)發(fā)消息1時,它將時鐘值復(fù)位為0。類似地,當(dāng)代理服務(wù)器接收到消息2時,它將時鐘值復(fù)位到0。時鐘值可例如響應(yīng)于系統(tǒng)時鐘而自動遞增。若時鐘值超過超時值,則代理服務(wù)器可關(guān)閉與會話相關(guān)聯(lián)的連接。在所示的示例中,計算設(shè)備1也許無法在時鐘值超過超時值之后發(fā)送消息3。圖9是示出一實施例中的消息流的消息流圖。在所示的實施例中,計算設(shè)備1和 2已經(jīng)在時間0和3之間交換了消息1和2,如圖8中所示并在上文中所解釋的。在時間4 處,計算設(shè)備1在識別出超時即將來臨(圖中用虛線表示)之后,可在時間5所表示的超時之前將心跳消息發(fā)送到計算設(shè)備2。在發(fā)送心跳消息之后,代理服務(wù)器可復(fù)位時鐘,因此,計算設(shè)備1能夠在時間6處發(fā)送消息3,這是因為代理服務(wù)器還沒有關(guān)閉連接。通過在代理服務(wù)器超時之前發(fā)送心跳消息,系統(tǒng)能夠維持計算設(shè)備1和2之間的連接。發(fā)送心跳消息的計算設(shè)備可能需要試圖在心跳消息接收者的時鐘值也不超過超時值的充足時間內(nèi)發(fā)送心跳消息。圖10是示出一實施例中的消息流的框圖。在所示的實施例中,發(fā)送者計算設(shè)備 1000已經(jīng)打開了與接收者計算設(shè)備1002的SIP會話。當(dāng)發(fā)送者計算設(shè)備通過其應(yīng)用/SIP 層1004來發(fā)送SIP消息1時,傳輸層1006可將消息分割成兩段Sl和S2。為防止超時,發(fā)送者計算設(shè)備可發(fā)送心跳消息S3。該心跳消息可包含回車、換行,或者兩者兼有,或者表示可被應(yīng)用程序忽略的心跳消息這樣的其它信息。然后,接收者計算設(shè)備可發(fā)送SIP消息2, 它被傳輸層1016分割成傳輸消息S4、S5和S6。被分割的消息可以有各種大小。在一實施例中,計算設(shè)備可在某些連接中發(fā)送心跳消息,并可將另一機制用于另一個連接來維持其連接。例如,計算設(shè)備可在將消息發(fā)送到其自己的“宿主(home)”服務(wù)器或與之相連的其它計算設(shè)備時使用心跳消息,這是因為宿主服務(wù)器能夠?qū)⑿奶⑴c計算設(shè)備的連接相關(guān)聯(lián),并處存該關(guān)聯(lián)指示。通過這樣做,若連接隨后丟失的話,服務(wù)器能夠有效地更新計算設(shè)備的存在信息。計算設(shè)備可在這樣做有利時在其它連接中發(fā)送REGISTER 器消息。例如,計算設(shè)備可在中間設(shè)備不能轉(zhuǎn)發(fā)心跳消息時發(fā)送REGISTER消息。盡管這里討論的特定示例涉及使用SIP和TCP,但是其它實施例可使用其它等效或類似的協(xié)議。在其上實現(xiàn)維持會話連接的技術(shù)的計算設(shè)備可包括中央處理單元、存儲器、輸入設(shè)備(如鍵盤和定位設(shè)備)、輸出設(shè)備(如顯示設(shè)備)以及存儲設(shè)備(如盤驅(qū)動器)。存儲器和存儲設(shè)備是計算機可讀介質(zhì),它可包含實現(xiàn)安全系統(tǒng)的指令。另外,數(shù)據(jù)結(jié)構(gòu)和消息結(jié)構(gòu)可被儲存或通過諸如通信鏈路上的信號等數(shù)據(jù)傳輸介質(zhì)來發(fā)送??墒褂酶鞣N通信鏈路, 如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)或者點對點撥號連接。圖1示出其中可實現(xiàn)維持會話連接的技術(shù)的合適操作環(huán)境的示例。該操作環(huán)境僅是合適操作環(huán)境的一個示例,并非暗示對本系統(tǒng)使用范圍或功能的任何限制。適合使用的其它公知的計算系統(tǒng)、環(huán)境和配置包括個人計算機、服務(wù)器計算機、包括“智能”蜂窩電話的手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費者電子設(shè)備、網(wǎng)絡(luò) PC、小型機、大型機、包括任何上面系統(tǒng)或設(shè)備的分布式計算環(huán)境,等等。可在諸如由一個或多個計算機或其它設(shè)備執(zhí)行的程序模塊等計算機可執(zhí)行指令的通用上下文中描述用于維持會話連接的技術(shù)。一般而言,程序模塊包括例程、程序、對象、 組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。通常,程序模塊的功能可如各實施例中所需的被組合或分布。如前述,應(yīng)當(dāng)認(rèn)識到,為說明的目的,此處已經(jīng)描述了本發(fā)明的具體實施例,但是在不背離本發(fā)明的精神和范圍的前提下,可做出不同的修改。因此,本發(fā)明只受到所附權(quán)利要求書的限制。
      權(quán)利要求
      1.一種由代理服務(wù)器計算設(shè)備執(zhí)行的用于維持第一計算設(shè)備和第二計算設(shè)備之間的會話連接的方法,包括在所述代理服務(wù)器計算設(shè)備處接收來自所述第一計算設(shè)備的心跳消息,所述第一計算設(shè)備和所述第二計算設(shè)備具有使用會話發(fā)起協(xié)議的打開的會話,并且所述心跳消息是傳輸層協(xié)議的有效消息,但被所述會話發(fā)起協(xié)議忽略;復(fù)位所述第一計算設(shè)備和所述第二計算設(shè)備之間的所述會話連接的消息時鐘;以及將所述心跳消息從所述代理服務(wù)器計算設(shè)備發(fā)送到所述第二計算設(shè)備,由此所述心跳消息的發(fā)送在所述第一計算設(shè)備和所述第二計算設(shè)備之間維持所述會話連接。
      2 如權(quán)利要求1所述的方法,其特征在于,復(fù)位所述消息時鐘發(fā)生在將所述心跳消息從所述代理服務(wù)器計算設(shè)備發(fā)送到所述第二計算設(shè)備之后。
      3.如權(quán)利要求1所述的方法,其特征在于,所述心跳消息包括空白字符。
      4.如權(quán)利要求3所述的方法,其特征在于,所述空白字符包括換行和回車中的一個或多個。
      5.如權(quán)利要求1所述的方法,其特征在于,所述傳輸層協(xié)議是TCP/IP。
      6.如權(quán)利要求1所述的方法,其特征在于,所述消息時鐘測量自從前一消息被發(fā)送或接收以來已經(jīng)過的時間。
      7.如權(quán)利要求1所述的方法,其特征在于,所述消息時鐘涉及由數(shù)據(jù)通信棧的傳輸層發(fā)送或接收的消息。
      8.如權(quán)利要求1所述的方法,其特征在于,所述代理服務(wù)器計算設(shè)備包括邊緣代理服務(wù)器。
      9.如權(quán)利要求8所述的方法,其特征在于,所述第一計算設(shè)備駐留在網(wǎng)絡(luò)內(nèi),并且所述第二計算設(shè)備駐留在所述網(wǎng)絡(luò)外。
      10.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括在停止所述會話連接后,在所述代理服務(wù)器計算設(shè)備處接收來自所述第一計算設(shè)備和所述第二計算設(shè)備中的一個的 REGISTER 消息。
      11.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括在接收所述心跳消息后的一段時間,在所述代理服務(wù)器計算設(shè)備處接收來自所述第一計算設(shè)備的第二心跳消息;以及確定是否一時鐘值被所述一段時間超過。
      12.如權(quán)利要求11所述的方法,其特征在于,進(jìn)一步包括在確定所述一段時間超過了所述時鐘值后,結(jié)束所述第一計算設(shè)備和所述第二計算設(shè)備之間的所述會話連接。
      13.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括在確定所述一段時間沒有超過所述時鐘值后,復(fù)位所述消息時鐘,從而維持所述會話連接。
      14.一種在第一計算設(shè)備和第二計算設(shè)備之間通信地耦合并被配置成維持所述第一計算設(shè)備和所述第二計算設(shè)備之間的會話連接的代理服務(wù)器,所述代理服務(wù)器包括通過與所述第一計算設(shè)備的通信接收消息的第一組件;將所接收的消息發(fā)送到所述第二計算設(shè)備的第二組件;以及確定所接收到的消息是否是心跳消息的第三組件,所述心跳消息是傳輸層協(xié)議的有效消息,但被所述會話發(fā)起協(xié)議忽略,并且在確定所接收到的消息是心跳消息后,復(fù)位所述第一計算設(shè)備和所述第二計算設(shè)備之間的所述會話連接的消息時鐘,從而維持所述第一計算設(shè)備和所述第二計算設(shè)備之間的所述會話連接。
      15.如權(quán)利要求14所述的代理服務(wù)器,其特征在于,所述代理服務(wù)器包括邊緣代理服務(wù)器。
      16.一種由計算設(shè)備執(zhí)行的用于維持會話連接的方法,包括使用會話發(fā)起協(xié)議建立與第二計算設(shè)備的會話,所述會話具有會話連接;以及使用傳輸層協(xié)議通過代理服務(wù)器從所述第二計算設(shè)備接收心跳消息,其中所述會話發(fā)起協(xié)議由數(shù)據(jù)通信棧中高于第二協(xié)議的較高層使用,其中所述心跳消息是傳輸層協(xié)議的有效消息,但被所述會話發(fā)起協(xié)議忽略,并且所述心跳消息的接收維持在所述計算設(shè)備處的所述會話連接;其中所述會話通過所述代理服務(wù)器在所述計算設(shè)備和所述第二計算設(shè)備之間建立并維持,并且其中在在所述計算設(shè)備處從所述第二計算設(shè)備接收所述心跳消息后,復(fù)位所述會話連接的消息時鐘。
      17.如權(quán)利要求16所述的方法,其特征在于,當(dāng)接收到所述會話連接的消息后經(jīng)過了一段時間,接收所述心跳消息,所述一段時間小于超時值。
      18.如權(quán)利要求16所述的方法,其特征在于,其中所述連接的消息時鐘在所述代理服務(wù)器處被管理。
      19.如權(quán)利要求18所述的方法,其特征在于,所述消息時鐘由所述代理服務(wù)器復(fù)位。
      20.如權(quán)利要求19所述的方法,其特征在于,所述代理服務(wù)器包括邊緣代理服務(wù)器。
      全文摘要
      在一實施例中,提供了用于維持會話連接的技術(shù)。該技術(shù)在不發(fā)送消息可導(dǎo)致會話連接由于超時條件而被關(guān)閉時發(fā)送心跳消息。心跳消息是有效傳輸層消息,它可被數(shù)據(jù)通信棧的較高層處的協(xié)議忽略。例如,該技術(shù)可發(fā)送在其凈荷中僅包含回車和換行(“CRLF”)的TCP消息。因為TCP層將僅包含CRLF的消息認(rèn)為是有效TCP消息,所以諸如代理服務(wù)器這樣的中間計算設(shè)備可以不將心跳消息解釋為“保持活躍”消息,并可維持會話連接。
      文檔編號H04L12/58GK102209119SQ20111016214
      公開日2011年10月5日 申請日期2005年6月30日 優(yōu)先權(quán)日2004年6月30日
      發(fā)明者J·E·安德瑞, M·馬爾卡良 申請人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1