用于安全即時(shí)消息傳輸?shù)南到y(tǒng)與方法
【專利摘要】描述了用于安全即時(shí)消息傳輸?shù)南到y(tǒng)與方法。例如,在一種實(shí)施例中,第一用戶利用第二用戶的ID碼為即時(shí)消息傳輸會(huì)話識(shí)別第二用戶。作為響應(yīng),為第一用戶提供第二用戶的網(wǎng)絡(luò)信息和與第二用戶關(guān)聯(lián)的公鑰。然后,第一用戶利用第二用戶的公鑰和一個(gè)私鑰加密即時(shí)消息。在一種實(shí)施例中,第一用戶利用第二用戶的公鑰加密即時(shí)消息的內(nèi)容(例如,任何文字和/或附件)并且利用第一用戶的私鑰簽署內(nèi)容。加密的消息從第一用戶發(fā)送到第二用戶。然后,第二用戶利用第二用戶的私鑰解密該即時(shí)消息并且利用第一用戶的公鑰驗(yàn)證簽名。
【專利說明】用于安全即時(shí)消息傳輸?shù)南到y(tǒng)與方法
[0001]對(duì)優(yōu)先權(quán)的保護(hù)
[0002]本申請(qǐng)根據(jù)美國(guó)法典第35章119 (e)條要求于2011年6月3日提交的美國(guó)臨時(shí) 申請(qǐng)?zhí)?1/492,903的申請(qǐng)日的利益。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明總體上涉及計(jì)算機(jī)聯(lián)網(wǎng)領(lǐng)域。更具體地說,本發(fā)明涉及用于安全即時(shí)消息 傳輸?shù)母倪M(jìn)裝置與方法。
【背景技術(shù)】
[0004]對(duì)等(“P2P”)計(jì)算指由計(jì)算節(jié)點(diǎn)組成的分布式網(wǎng)絡(luò)體系結(jié)構(gòu),這些計(jì)算節(jié)點(diǎn)使其 資源的一部分可以讓其它的網(wǎng)絡(luò)參與者直接獲得。與其中服務(wù)器提供資源而客戶端消費(fèi)資 源的傳統(tǒng)客戶端-服務(wù)器模型形成對(duì)比,P2P網(wǎng)絡(luò)中的對(duì)等體彼此建立直接通信信道并且 既充當(dāng)客戶端又充當(dāng)服務(wù)器。
[0005]許多目前的P2P應(yīng)用,諸如即時(shí)消息傳輸和視頻聊天,都沒有提供保護(hù)在對(duì)等體 之間所發(fā)送的底層內(nèi)容的適當(dāng)安全措施。因此,需要改進(jìn)的技術(shù)來經(jīng)網(wǎng)絡(luò)識(shí)別對(duì)等體并且 提供安全的P2P事務(wù)。
【專利附圖】
【附圖說明】
[0006]對(duì)本發(fā)明的更好理解可以結(jié)合以下附圖從以下具體描述獲得,其中:
[0007]圖1說明了一種網(wǎng)絡(luò)體系結(jié)構(gòu),其中一組移動(dòng)設(shè)備與服務(wù)經(jīng)網(wǎng)絡(luò)通信。
[0008]圖2a_2c說明了連接數(shù)據(jù)交換(⑶X)服務(wù)、匹配器服務(wù)和/或邀請(qǐng)服務(wù)的一種實(shí) 施例之間的事務(wù)。
[0009]圖3說明了票據(jù)數(shù)據(jù)結(jié)構(gòu)的一種實(shí)施例。
[0010]圖4說明了由⑶X服務(wù)實(shí)現(xiàn)的方法的一種實(shí)施例。
[0011]圖5說明了由移動(dòng)設(shè)備實(shí)現(xiàn)的方法的一種實(shí)施例。
[0012]圖6說明了通過主要和次要通信信道連接的一組移動(dòng)設(shè)備。
[0013]圖7說明了用于在主要和次要通信信道之間進(jìn)行選擇的移動(dòng)設(shè)備的一種實(shí)施例。
[0014]圖8a_8b說明了通過主要和次要通信信道連接的一組移動(dòng)設(shè)備及結(jié)果產(chǎn)生的網(wǎng) 絡(luò)拓?fù)洹?br>
[0015]圖9說明了用于在主要和次要通信信道之間進(jìn)行選擇的計(jì)算機(jī)實(shí)現(xiàn)方法的一種 實(shí)施例。
[0016]圖10說明了一種網(wǎng)絡(luò)體系結(jié)構(gòu),其中一組移動(dòng)設(shè)備和服務(wù)經(jīng)網(wǎng)絡(luò)通信,其中服務(wù) 包括目錄服務(wù)和推送通知服務(wù)。
[0017]圖11說明了邀請(qǐng)服務(wù)、推送通知服務(wù)和連接數(shù)據(jù)交換(⑶X)服務(wù)的一種實(shí)施例之 間的事務(wù)。
[0018]圖12說明了邀請(qǐng)服務(wù)、推送通知服務(wù)和中繼服務(wù)的一種實(shí)施例之間的事務(wù)。[0019]圖13說明了用于在兩個(gè)或更多個(gè)移動(dòng)設(shè)備之間建立中繼連接的中繼服務(wù)的一種 實(shí)施例。
[0020]圖14說明了用于確定NAT兼容性的NAT兼容性圖表的一種實(shí)施例。
[0021]圖15說明了用于為在線應(yīng)用匹配移動(dòng)設(shè)備的匹配器服務(wù)的一種實(shí)施例。
[0022]圖16說明了用于匹配用戶/設(shè)備的方法的一種實(shí)施例。
[0023]圖17a_17d說明了為匹配用戶/設(shè)備而執(zhí)行的示例性表更新序列。
[0024]圖18說明了利用不同的匹配適合變量來匹配用戶/設(shè)備的方法。
[0025]圖19說明了揭示用于應(yīng)用的應(yīng)用編程接口(API)和用于與一組服務(wù)通信的服務(wù) API的框架。
[0026]圖20說明了具有用于應(yīng)用的AP1、游戲守護(hù)進(jìn)程和用于與服務(wù)通信的游戲服務(wù)模 塊的游戲框架的一種實(shí)施例。
[0027]圖21說明了 API實(shí)現(xiàn)軟件組件和API調(diào)用軟件組件的一種實(shí)施例。
[0028]圖22說明了其中在操作系統(tǒng)、服務(wù)與應(yīng)用之間進(jìn)行API調(diào)用的一種實(shí)施例。
[0029]圖23說明了示例性計(jì)算機(jī)系統(tǒng)體系結(jié)構(gòu)的一種實(shí)施例。
[0030]圖24說明了示例性計(jì)算機(jī)系統(tǒng)體系結(jié)構(gòu)的另一種實(shí)施例。
[0031]圖25說明了通過多個(gè)不同的服務(wù)提供商連接的多個(gè)用戶。
[0032]圖26說明了采用布隆過濾器(bloom filter)來識(shí)別用戶位置的本發(fā)明的實(shí)施 例。
[0033]圖27說明了使用布隆過濾器的方法的一種實(shí)施例。
[0034]圖28說明了使用布隆過濾器的方法的另一種實(shí)施例。
[0035]圖29說明了根據(jù)本發(fā)明一種實(shí)施例、建立點(diǎn)到點(diǎn)(P2P)連接的兩個(gè)用戶。
[0036]圖30說明了通過由特定服務(wù)提供商使用的中繼服務(wù)建立P2P連接的兩個(gè)用戶。
[0037]圖31說明了用于通過中繼服務(wù)建立P2P連接的本發(fā)明的另一種實(shí)施例。
[0038]圖32說明了在本發(fā)明一種實(shí)施例中采用的、具有RFC3984首部的RTP分組。
[0039]圖33說明了推送通知服務(wù)與安全即時(shí)消息傳輸服務(wù)。
[0040]圖34說明了用于建立安全即時(shí)消息傳輸會(huì)話的方法的一種實(shí)施例。
[0041]圖35說明了用于建立安全即時(shí)消息傳輸會(huì)話的方法的另一種實(shí)施例。
[0042]圖36說明了包括身份服務(wù)與應(yīng)用認(rèn)證服務(wù)的系統(tǒng)體系結(jié)構(gòu)。
[0043]圖37說明了用于安全地認(rèn)證用戶的方法的一種實(shí)施例。
[0044]圖38說明了利用高速緩存與指紋有效地改善認(rèn)證的本發(fā)明的一種實(shí)施例。
【發(fā)明內(nèi)容】
[0045]描述了用于安全即時(shí)消息傳輸?shù)南到y(tǒng)與方法。例如,在一種實(shí)施例中,第一用戶利 用第二用戶的ID碼為即時(shí)消息傳輸會(huì)話識(shí)別第二用戶。作為響應(yīng),為第一用戶提供第二用 戶的網(wǎng)絡(luò)信息和與第二用戶關(guān)聯(lián)的公鑰。然后,第一用戶利用第二用戶的公鑰和一個(gè)私鑰 加密即時(shí)消息。在一種實(shí)施例中,第一用戶利用第二用戶的公鑰加密即時(shí)消息的內(nèi)容(例 如,任何文字和/或附件)并且利用第一用戶的私鑰簽署內(nèi)容。加密的消息從第一用戶發(fā)送 到第二用戶。然后,第二用戶利用第二用戶的私鑰解密該即時(shí)消息并且利用第一用戶的公 鑰驗(yàn)證簽名。具體實(shí)施例
[0046]以下描述的是用于在網(wǎng)絡(luò)上建立、維護(hù)和利用主要和/或備份對(duì)等(“P2P”)通信 信道的裝置、方法與機(jī)器可讀介質(zhì)的實(shí)施例。還描述了分別用于邀請(qǐng)用戶和匹配用戶以進(jìn) 行P2P會(huì)話的邀請(qǐng)服務(wù)和匹配器服務(wù)。此外,還描述了允許用戶在某些具體條件下建立中 繼連接的中繼服務(wù)。最后,描述了允許應(yīng)用開發(fā)者設(shè)計(jì)利用本文所述各種協(xié)作在線特征的 應(yīng)用的應(yīng)用框架和關(guān)聯(lián)的應(yīng)用編程接口(API)。
[0047]貫穿本描述,為了解釋,闡述了各種具體細(xì)節(jié),以便提供對(duì)本發(fā)明的透徹理解。但 是,對(duì)本領(lǐng)域技術(shù)人員來說將很顯然,本發(fā)明沒有這些具體細(xì)節(jié)中的一些也可以實(shí)踐。在其 它情況下,眾所周知的結(jié)構(gòu)與設(shè)備沒有示出或者以框圖形式示出,以避免模糊本發(fā)明的基 本原理。
[0048]用于有效且安全地交換連接數(shù)據(jù)的裝置與方法
[0049]如圖1中所說明的,在本發(fā)明一種實(shí)施例中實(shí)現(xiàn)的通用網(wǎng)絡(luò)拓?fù)淇梢园ㄒ唤M “客戶端”或“對(duì)等體”移動(dòng)計(jì)算設(shè)備A-D,分別為120-123,這些移動(dòng)設(shè)備經(jīng)網(wǎng)絡(luò)120彼此并 且與一個(gè)或多個(gè)服務(wù)110-112通信。雖然在圖1中說明為單個(gè)網(wǎng)絡(luò)云,但是“網(wǎng)絡(luò)”120可 以包括多種不同組件,包括諸如互聯(lián)網(wǎng)的公共網(wǎng)絡(luò)和諸如本地W1-Fi網(wǎng)絡(luò)(例如,802.1ln 家用無線網(wǎng)絡(luò)或者無線熱點(diǎn))、局域以太網(wǎng)、蜂窩數(shù)據(jù)網(wǎng)絡(luò)(例如,3G、Edge等)和WiMAX網(wǎng) 絡(luò)的專用網(wǎng)絡(luò),這僅僅是一些例子。例如,移動(dòng)設(shè)備A120可以連接到由網(wǎng)絡(luò)鏈路125表示 的家用W1-Fi網(wǎng)絡(luò),移動(dòng)設(shè)備B121可以連接到由網(wǎng)絡(luò)鏈路126表示的3G網(wǎng)絡(luò)(例如,通用 移動(dòng)電信系統(tǒng)(“UMTS”)、高速上行鏈路分組接入(“HSUPA”)等),移動(dòng)設(shè)備C122可以連接到 由網(wǎng)絡(luò)鏈路127表示的WiMAX網(wǎng)絡(luò),而移動(dòng)設(shè)備123可以連接到由網(wǎng)絡(luò)鏈路128表示的公 共W1-Fi網(wǎng)絡(luò)。移動(dòng)設(shè)備120-123在其上連接的每個(gè)本地網(wǎng)絡(luò)鏈路125-128都可以通過網(wǎng) 關(guān)和/或NAT設(shè)備(圖1中未示出)耦合到諸如互聯(lián)網(wǎng)的公共網(wǎng)絡(luò),由此啟用各個(gè)移動(dòng)設(shè)備 120-123之間經(jīng)公共網(wǎng)絡(luò)的通信。但是,如果兩個(gè)移動(dòng)設(shè)備在相同的本地或?qū)S镁W(wǎng)絡(luò)(例如, 相同的W1-Fi網(wǎng)絡(luò))上,則這兩個(gè)設(shè)備可以經(jīng)那個(gè)本地/專用網(wǎng)絡(luò)直接通信,從而繞過公共 網(wǎng)絡(luò)。當(dāng)然,應(yīng)當(dāng)指出,本發(fā)明的基本原理不限于任何特定集合的網(wǎng)絡(luò)類型或網(wǎng)絡(luò)拓?fù)洹?br>
[0050]圖1中所說明的每個(gè)移動(dòng)設(shè)備120-123都可以與連接數(shù)據(jù)交換(⑶X)服務(wù)110、匹 配器服務(wù)111和邀請(qǐng)服務(wù)112通信。在一種實(shí)施例中,服務(wù)110-112可以實(shí)現(xiàn)為跨諸如服務(wù) 器的一個(gè)或多個(gè)物理計(jì)算設(shè)備執(zhí)行的軟件。如圖1中所示,在一種實(shí)施例中,服務(wù)110-112 可以在由相同實(shí)體(例如,相同的數(shù)據(jù)服務(wù)提供商)管理并且可以由每個(gè)移動(dòng)設(shè)備120-123 經(jīng)網(wǎng)絡(luò)120訪問的更大數(shù)據(jù)服務(wù)100的背景下實(shí)現(xiàn)。數(shù)據(jù)服務(wù)100可以包括連接各種類型 服務(wù)器與數(shù)據(jù)庫的局域網(wǎng)(例如,基于以太網(wǎng)的LAN)。數(shù)據(jù)服務(wù)100也可以包括用于存儲(chǔ)數(shù) 據(jù)的一個(gè)或多個(gè)存儲(chǔ)區(qū)域網(wǎng)絡(luò)(“SAN”)。在一種實(shí)施例中,數(shù)據(jù)庫存儲(chǔ)并管理與每個(gè)移動(dòng)設(shè) 備120-123及那些設(shè)備的用戶相關(guān)的數(shù)據(jù)(例如,用戶帳號(hào)數(shù)據(jù)、設(shè)備帳號(hào)數(shù)據(jù)、用戶應(yīng)用 數(shù)據(jù)、...等等)。
[0051]在一種實(shí)施例中,匹配器服務(wù)111可以基于規(guī)定的條件集合匹配兩個(gè)或更多個(gè)移 動(dòng)設(shè)備以進(jìn)行協(xié)作性P2P會(huì)話。例如,兩個(gè)或更多個(gè)移動(dòng)設(shè)備的用戶可能對(duì)玩一個(gè)特定的 多玩家游戲感興趣。在這種情況下,匹配器服務(wù)111可以基于多個(gè)變量來識(shí)別要參與該游 戲的一組移動(dòng)設(shè)備,所述變量諸如是每個(gè)用戶的經(jīng)驗(yàn)級(jí)別、每個(gè)用戶的年齡、匹配請(qǐng)求的定時(shí)、為其請(qǐng)求匹配的特定游戲及各種特定于游戲的變量。作為例子但不是限制,匹配器服務(wù) 111可以嘗試在玩一個(gè)特定的游戲時(shí)匹配具有相似經(jīng)驗(yàn)級(jí)別的用戶。此外,成人可以與其他 成人匹配,兒童可以與其他兒童匹配。而且,匹配器服務(wù)111可以基于接收那些請(qǐng)求的次序 給用戶請(qǐng)求排定優(yōu)先次序。本發(fā)明的基本原理不限于任何特定的匹配標(biāo)準(zhǔn)設(shè)置或者任何特 定類型的P2P應(yīng)用。
[0052]如以下具體描述的,響應(yīng)于匹配請(qǐng)求,匹配器服務(wù)111可以與⑶X服務(wù)111配合, 以確保所有匹配的參與者都接收到必要的連接數(shù)據(jù),用于以有效且安全的方式建立P2P會(huì) 話。
[0053]在一種實(shí)施例中,邀請(qǐng)服務(wù)112也識(shí)別要參與協(xié)作性P2P會(huì)話的移動(dòng)設(shè)備。但是, 在邀請(qǐng)服務(wù)112的情況下,至少一個(gè)參與者被另一個(gè)參與者具體地識(shí)別。例如,移動(dòng)設(shè)備 A120的用戶可以具體地請(qǐng)求與移動(dòng)設(shè)備B121的用戶的協(xié)作會(huì)話(例如,利用用戶ID或電話 號(hào)碼識(shí)別移動(dòng)設(shè)備B)。與匹配器服務(wù)111 一樣,響應(yīng)于邀請(qǐng)請(qǐng)求,邀請(qǐng)服務(wù)112可以識(shí)別參 與者集合并且與CDX服務(wù)110配合,以確保所有參與者都接收到必要的連接數(shù)據(jù),以用于以 有效且安全的方式建立P2P會(huì)話。
[0054]如以上所提到的,在一種實(shí)施例中,CDX服務(wù)110作為用于在兩個(gè)或更多個(gè)移動(dòng)設(shè) 備之間建立P2P會(huì)話所需的連接數(shù)據(jù)的中心交換點(diǎn)操作。具體而言,響應(yīng)于使外部服務(wù)和 客戶端通過每個(gè)移動(dòng)設(shè)備的NAT通信(即,“打孔”通過NAT,以到達(dá)設(shè)備)的移動(dòng)設(shè)備請(qǐng)求, CDX服務(wù)的一種實(shí)施例生成NAT遍歷數(shù)據(jù)(有時(shí)候稱為“打孔”數(shù)據(jù))。例如,在一種實(shí)施例 中,CDX服務(wù)檢測(cè)與移動(dòng)設(shè)備通信所需的外部IP地址與端口并且把這個(gè)信息提供給移動(dòng)設(shè) 備。在一種實(shí)施例中,⑶X服務(wù)還接收并處理由匹配器服務(wù)111和邀請(qǐng)服務(wù)112生成的移 動(dòng)設(shè)備的列表,并且有效且安全地把連接數(shù)據(jù)分發(fā)到這個(gè)列表上包括的每個(gè)移動(dòng)設(shè)備(如 以下具體描述的)。
[0055]在一種實(shí)施例中,移動(dòng)設(shè)備與CDX服務(wù)110之間的通信是利用相對(duì)輕量級(jí)的網(wǎng)絡(luò) 協(xié)議,諸如用戶數(shù)據(jù)報(bào)協(xié)議(“m)P”)套接字,建立的。如本領(lǐng)域技術(shù)人員已知的,m)P套接字 連接不需要握手對(duì)話來保證分組的可靠性、排序或者數(shù)據(jù)完整性,而且,因此,不消耗像TCP 套接字連接那么多的分組處理開銷。因此,UDP的輕量級(jí)、無狀態(tài)本質(zhì)對(duì)于應(yīng)答來自大量客 戶端的小查詢的服務(wù)器來說是有用的。而且,不像TCP,UDP與分組廣播(其中,分組發(fā)送到 本地網(wǎng)絡(luò)上的所有設(shè)備)和多播(其中,分組發(fā)送到本地網(wǎng)絡(luò)上所有設(shè)備的一個(gè)子集)兼容。 如以下所描述的,即使UDP可以使用,也可以通過利用會(huì)話密鑰加密NAT遍歷數(shù)據(jù)來維護(hù)關(guān) 于⑶X服務(wù)110的安全性。
[0056]與⑶X服務(wù)110所使用的低開銷、輕量級(jí)網(wǎng)絡(luò)協(xié)議形成對(duì)比,在一種實(shí)施例中, 移動(dòng)設(shè)備120-123與匹配器服務(wù)111和/或邀請(qǐng)服務(wù)112之間的通信是利用固有的安全 網(wǎng)絡(luò)協(xié)議,諸如超文本傳輸協(xié)議安全(“HTTPS”),建立的,其中HTTPS依賴于安全套接字層 (“SSL”)或傳輸層安全(“TLS”)連接。與這些協(xié)議關(guān)聯(lián)的細(xì)節(jié)是本領(lǐng)域技術(shù)人員眾所周知 的。
[0057]圖2a說明了可以由CDX服務(wù)器實(shí)現(xiàn)的示例性事務(wù)序列。當(dāng)描述CDX服務(wù)的一種 實(shí)施例的操作時(shí),以下術(shù)語將具有以下意義:
[0058]連接數(shù)據(jù)-這是潛在對(duì)等體為了建立對(duì)等會(huì)話而需要彼此交換的信息。以下描 述的是這種信息可以如何交換的機(jī)制的實(shí)施例。[0059]⑶X服務(wù)器-在一種實(shí)施例中,⑶X服務(wù)器是經(jīng)過認(rèn)證的多播反射器,它允許被授 權(quán)的實(shí)體交換任意數(shù)據(jù)。這個(gè)數(shù)據(jù)被稱為有效載荷。
[0060]⑶X會(huì)話-⑶X會(huì)話指可以經(jīng)⑶X服務(wù)器彼此通信的一組客戶端設(shè)備。為作為會(huì) 話一部分的每個(gè)客戶端設(shè)備指定一張CDX票據(jù)。每個(gè)會(huì)話都具有唯一的CDX會(huì)話ID,這個(gè) ID是一個(gè)大整數(shù),其可以用于識(shí)別或指代個(gè)別的會(huì)話。
[0061]⑶X請(qǐng)求-從客戶端設(shè)備發(fā)送到⑶X服務(wù)器的請(qǐng)求。一個(gè)請(qǐng)求通常包括兩部分: CDX票據(jù)與有效載荷。在這種實(shí)施例中,有效載荷是利用會(huì)話密鑰加密的連接數(shù)據(jù)。
[0062]⑶X響應(yīng)-⑶X響應(yīng)是在一個(gè)⑶X會(huì)話中當(dāng)⑶X服務(wù)器從該⑶X會(huì)話的一個(gè)成員 接收到CDX請(qǐng)求時(shí)“反射”回到另一個(gè)設(shè)備的內(nèi)容。它是通過把有效載荷附加到給定CDX請(qǐng) 求中使用的CDX票據(jù)的CDX票據(jù)根而構(gòu)成的。
[0063]⑶X票據(jù)-⑶X票據(jù)告訴⑶X服務(wù)器如何向⑶X會(huì)話的成員發(fā)送有效載荷。在一 種實(shí)施例中,它是利用CDX票據(jù)密鑰“簽署的”,以防偽造或篡改。如圖3中所說明的,在一 種實(shí)施例中,⑶X票據(jù)包含以下信息:
[0064]會(huì)話ID301,在一種實(shí)施例中,其沒有被加密或混淆(obfusticate)。
[0065]會(huì)話中參與者的數(shù)目302,在一種實(shí)施例中,這沒有被加密或混淆。
[0066]會(huì)話中這個(gè)票據(jù)所指的參與者的索引303 (在一種實(shí)施例中,沒有被加密或混淆)。
[0067]到期時(shí)間/日期304,在這個(gè)時(shí)間/日期之后,票據(jù)被認(rèn)為是無效的(在一種實(shí)施例 中,沒有被加密或混淆)。
[0068]用于會(huì)話中每個(gè)參與者的⑶X打孔數(shù)據(jù)305-306,在一種實(shí)施例中,其被利用⑶X 票據(jù)密鑰加密。
[0069]利用⑶X票據(jù)密鑰的消息認(rèn)證碼307,這充當(dāng)“數(shù)字簽名”來確保票據(jù)是可信的。
[0070]⑶X票據(jù)根-⑶X票據(jù)的第一部分,除去⑶X打孔數(shù)據(jù)與消息認(rèn)證碼。
[0071]有效載荷-這是⑶X請(qǐng)求和⑶X響應(yīng)的第二部分。有效載荷是客戶端設(shè)備希望 在CDX會(huì)話中傳送到其它設(shè)備的數(shù)據(jù)。在這種實(shí)施例中,有效載荷是利用會(huì)話密鑰加密的 連接數(shù)據(jù)。在一種實(shí)施例中,⑶X服務(wù)器不解密有效載荷,只是保持不變地傳遞它。
[0072]會(huì)話密鑰-這是由客戶端用于加密連接數(shù)據(jù)的密鑰。在一種實(shí)施例中,這個(gè)密鑰 是CDX服務(wù)器不知道的。在這種實(shí)施例中,會(huì)話密鑰是通過匹配器服務(wù)生成的并且連同它 們個(gè)別的CDX票據(jù)發(fā)送到客戶端。
[0073]⑶X票據(jù)密鑰-這是用于創(chuàng)建并“簽署”⑶X票據(jù)的密鑰。⑶X票據(jù)密鑰只有⑶X 服務(wù)器和生成CDX票據(jù)的服務(wù)(如下所述,這可以是匹配器服務(wù)和/或邀請(qǐng)服務(wù))知道。
[0074]⑶X打孔請(qǐng)求-一種具體的⑶X請(qǐng)求類型,用于從⑶X服務(wù)器獲得⑶X打孔數(shù)據(jù)。
[0075]⑶X打孔數(shù)據(jù)-這是描述⑶X服務(wù)器如何可以把信息發(fā)送到最初請(qǐng)求它的客戶端 的不透明數(shù)據(jù)塊。它是通過向CDX服務(wù)器發(fā)送CDX打孔請(qǐng)求獲得的。CDX打孔數(shù)據(jù)必須在 可以生成CDX票據(jù)之前在CDX會(huì)話中從每個(gè)客戶端設(shè)備收集。CDX打孔數(shù)據(jù)(有時(shí)候稱為 “NAT遍歷數(shù)據(jù)”)可以包括發(fā)出請(qǐng)求的設(shè)備的公共IP地址與端口。
[0076]現(xiàn)在轉(zhuǎn)向圖2a,在一種實(shí)施例中,移動(dòng)設(shè)備A120和移動(dòng)設(shè)備B121可以執(zhí)行協(xié)作應(yīng) 用,諸如需要與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行P2P連接的多玩家游戲或者協(xié)作聊天會(huì)話。 在201a,移動(dòng)設(shè)備A120向⑶X服務(wù)器110發(fā)送⑶X打孔請(qǐng)求。然后,在202a,⑶X服務(wù)器 110利用CDX打孔數(shù)據(jù)作出響應(yīng)。在一種實(shí)施例中,打孔數(shù)據(jù)括移動(dòng)設(shè)備A的公共IP地址與端口和/或打孔通過移動(dòng)設(shè)備A的NAT所需的任何其它數(shù)據(jù)(例如,定義移動(dòng)設(shè)備A的 NAT類型的NAT類型數(shù)據(jù))。類似的事務(wù)分別在201b和202b對(duì)移動(dòng)設(shè)備B執(zhí)行。
[0077]然后,在203a和203b,移動(dòng)設(shè)備A和B向匹配器服務(wù)發(fā)送包括⑶X打孔數(shù)據(jù)的匹 配請(qǐng)求,連同任何的附加的匹配標(biāo)準(zhǔn)(以下描述)。在這個(gè)階段,移動(dòng)設(shè)備A和B可以開始構(gòu) 造建立P2P連接所需的連接數(shù)據(jù)。例如,這可以(例如,由NAT遍歷服務(wù))利用諸如標(biāo)準(zhǔn)互聯(lián) 網(wǎng)連接建立(“ICE”)事務(wù)的事務(wù)來實(shí)現(xiàn)。但是,本發(fā)明的基本原理不限于用于確定連接數(shù) 據(jù)的任何特定機(jī)制。
[0078]在一種實(shí)施例中,一旦匹配器服務(wù)111已經(jīng)發(fā)現(xiàn)了帶匹配標(biāo)準(zhǔn)的一組客戶端設(shè) 備,它就可以生成唯一 CDX會(huì)話ID、針對(duì)CDX會(huì)話的每個(gè)成員的唯一 CDX票據(jù),及唯一會(huì)話 密鑰。在一種實(shí)施例中,匹配器服務(wù)111可以利用唯一 CDX票據(jù)密鑰加密用于CDX票據(jù)的 ⑶X打孔數(shù)據(jù)。然后,在204a和204b,匹配器服務(wù)可以向移動(dòng)設(shè)備A和B中的每一個(gè)發(fā)送 它們的CDX票據(jù)和所述會(huì)話密鑰。
[0079]移動(dòng)設(shè)備A接收CDX票據(jù)和會(huì)話密鑰并且利用該會(huì)話密鑰加密其先前確定的連接 數(shù)據(jù),產(chǎn)生有效載荷。在一種實(shí)施例中,移動(dòng)設(shè)備A通過把構(gòu)造好的有效載荷附加到CDX票 據(jù)來構(gòu)造CDX請(qǐng)求。在205a,移動(dòng)設(shè)備A把CDX請(qǐng)求發(fā)送到CDX服務(wù)器110。移動(dòng)設(shè)備B 也可以執(zhí)行相同的操作并且在205b把請(qǐng)求發(fā)送到⑶X服務(wù)器。
[0080]在206a,⑶X服務(wù)器110接收⑶X請(qǐng)求,檢查票據(jù)以便確保它是有效而且可信的 (例如,基于消息認(rèn)證碼307)。如果CDX票據(jù)是無效的,則請(qǐng)求被丟棄。在一種實(shí)施例中,隨 后CDX服務(wù)器利用CDX票據(jù)密鑰解密包含在CDX票據(jù)中的CDX打孔數(shù)據(jù)集。在一種實(shí)施例 中,CDX票據(jù)密鑰可以包括也可以利用票據(jù)發(fā)送的到期時(shí)間/日期。CDX服務(wù)110與匹配器 服務(wù)111可以存儲(chǔ)用于加密/解密的兩個(gè)(或更多個(gè))不同的CDX票據(jù)密鑰-第一個(gè)是目 前有效的而第二個(gè)將在到達(dá)第一個(gè)的到期時(shí)間/日期的時(shí)候變得有效。一接收到票據(jù),CDX 服務(wù)110就可以讀取到期時(shí)間/日期,以確定使用哪個(gè)票據(jù)密鑰。當(dāng)一個(gè)CDX票據(jù)密鑰已 經(jīng)到期時(shí),⑶X服務(wù)110和匹配器服務(wù)111每個(gè)都可以生成新的票據(jù)密鑰(這將是當(dāng)前票據(jù) 密鑰到期后要使用的下一個(gè)密鑰)。在一種實(shí)施例中,CDX服務(wù)110和匹配器服務(wù)111執(zhí)行 相同的密鑰生成算法,以確保與兩個(gè)票據(jù)密鑰的一致性。例如,可以使用諸如用于眾所周知 的RSA SecurID認(rèn)證機(jī)制的那些技術(shù)之類的技術(shù),其中以固定的間隔生成新的認(rèn)證代碼。在 一種實(shí)施例中,新的CDX票據(jù)密鑰按天生成。但是,本發(fā)明的基本原理不限于用于生成CDX 票據(jù)密鑰的任何特定機(jī)制。
[0081 ] 相同的操作可以像所示出的那樣在206b對(duì)移動(dòng)設(shè)備B執(zhí)行。⑶X服務(wù)器從⑶X請(qǐng) 求構(gòu)造CDX響應(yīng),然后使用CDX打孔數(shù)據(jù)把CDX響應(yīng)發(fā)送到CDX會(huì)話中的參與者(在207a 發(fā)送到移動(dòng)設(shè)備B并且在207b發(fā)送到移動(dòng)設(shè)備A)。
[0082]移動(dòng)設(shè)備B從⑶X服務(wù)器接收⑶X響應(yīng)207a??蛻舳嗽O(shè)備B檢查⑶X票據(jù)根,以 確保會(huì)話ID匹配它自己CDX票據(jù)的會(huì)話ID。然后,移動(dòng)設(shè)備B可以利用該會(huì)話密鑰解密有 效載荷,產(chǎn)生來自移動(dòng)設(shè)備A的連接數(shù)據(jù)。然后,移動(dòng)設(shè)備B使用來自移動(dòng)設(shè)備A的連接數(shù) 據(jù)來開始建立P2P會(huì)話的過程。在一種實(shí)施例中,這些涉及標(biāo)準(zhǔn)的ICE事務(wù)。但是,本發(fā)明 的基本原理不限于用于建立P2P通信的任何特定機(jī)制。
[0083]如以上所提到的,在一種實(shí)施例中,移動(dòng)設(shè)備A和B建立與匹配器服務(wù)111通信的 超本文傳輸協(xié)議安全(“HTTPS”)會(huì)話(例如,利用HTTPS請(qǐng)求/響應(yīng)事務(wù))并且建立與⑶X服務(wù)通信的M)P套接字。匹配請(qǐng)求204a、204b可以包括先前為每個(gè)對(duì)應(yīng)移動(dòng)設(shè)備確定的 NAT類型和打孔數(shù)據(jù)(例如,公共IP地址與端口)。在涉及多玩家游戲的一種實(shí)施例中,每個(gè) 匹配請(qǐng)求可以識(shí)別每個(gè)移動(dòng)設(shè)備上的玩家(例如,利用唯一玩家ID碼)、每個(gè)玩家想玩的游 戲、參與游戲的玩家數(shù)目和/或與期望的游戲關(guān)聯(lián)的其它游戲配置變量。作為例子但不是 限制,與游戲關(guān)聯(lián)的游戲配置變量可以包括難度級(jí)別(例如,容易、普通、困難)、用戶的年齡 (例如,“低于13歲”)、游戲的子區(qū)(例如,“第二關(guān)”)和/或玩家的經(jīng)驗(yàn)級(jí)別(例如,專家、初 級(jí)玩家、中級(jí)玩家)。如以下具體描述的,這些變量有時(shí)候稱為游戲“桶”(bucket)而且利 用唯一的“桶ID”來識(shí)別。每個(gè)游戲可以包括不同的桶ID設(shè)置,以便識(shí)別不同的游戲配置 變量。
[0084]在一種實(shí)施例中,移動(dòng)設(shè)備B在208a和209a發(fā)送確認(rèn)。類似地,移動(dòng)設(shè)備A的確 認(rèn)是在208b和20%發(fā)送的。如果移動(dòng)設(shè)備A或B的確認(rèn)在規(guī)定的時(shí)段之后沒有收到,則 連接數(shù)據(jù)207a可以重新發(fā)送到移動(dòng)設(shè)備B212?;蛘逤DX服務(wù)110可以啟動(dòng)重試和/或移 動(dòng)設(shè)備A120可以啟動(dòng)重試。
[0085]圖2b說明了一個(gè)更具體的例子,其中三個(gè)不同的移動(dòng)設(shè)備120-122利用CDX服務(wù) 和匹配器服務(wù)111協(xié)商P2P連接。圖2b還說明了由移動(dòng)設(shè)備120-122用于建立連接的兩 個(gè)附加服務(wù):用于確定NAT類型的NAT遍歷服務(wù)291和用于為每個(gè)移動(dòng)設(shè)備確定完全連接 數(shù)據(jù)的NAT遍歷服務(wù)290 (例如,利用ICE連接數(shù)據(jù)事務(wù))。但是,應(yīng)當(dāng)指出,單獨(dú)的服務(wù)不 是為了遵循本發(fā)明的基本原理所必需的。例如,在一種備用實(shí)施例中,由這些服務(wù)290-291 中每個(gè)執(zhí)行的NAT遍歷功能可以直接集成在⑶X服務(wù)110和/或匹配器服務(wù)111中。類似 地,NAT遍歷服務(wù)290-291都執(zhí)行的功能可以集成在單個(gè)NAT遍歷服務(wù)中。概括地說,圖2b 中所示的具體功能分離不是為了遵循本發(fā)明的基本原理所必需的。
[0086]現(xiàn)在轉(zhuǎn)向圖2b的具體細(xì)節(jié),在220,移動(dòng)設(shè)備A向NAT遍歷服務(wù)291發(fā)送NAT類型 請(qǐng)求。作為響應(yīng),NAT遍歷服務(wù)291可以使用各種已知的技術(shù),包括實(shí)現(xiàn)一系列事務(wù),來確 定移動(dòng)設(shè)備A所使用的NAT類型。例如,NAT遍歷服務(wù)291可以嘗試打開移動(dòng)設(shè)備A的NAT 上的不同IP地址與端口,并且利用不同的IP/端口組合通過那些端口與移動(dòng)設(shè)備A通信。 以這種方式,移動(dòng)設(shè)備A所采用的NAT可以歸類為上述NAT類型中的一種(例如,完全圓錐 形、受限錐形、端口受限錐形、對(duì)稱)或者備用的NAT類型。然后,這種信息可以提供給移動(dòng) 設(shè)備A120,如所說明的。
[0087]在221,移動(dòng)設(shè)備A120利用⑶X服務(wù)110啟動(dòng)NAT遍歷請(qǐng)求。作為響應(yīng),⑶X服 務(wù)110可以讀取用于該請(qǐng)求的公共IP地址與公共端口號(hào)并且把這種信息發(fā)送回移動(dòng)設(shè)備 A120。如上所述,如果設(shè)備在NAT的后面,則其公共端口和IP地址將分別與其私有端口和 IP地址不同。因而,依賴于所使用的NAT的類型,公共IP地址與端口可以用于“打孔”通過 NAT設(shè)備,到達(dá)移動(dòng)設(shè)備。
[0088]在222,移動(dòng)設(shè)備A120向匹配器服務(wù)111發(fā)送匹配請(qǐng)求222。如上所述,在一種實(shí) 施例中,移動(dòng)設(shè)備A利用超文本傳輸協(xié)議安全(“HTTPS ”)會(huì)話向匹配器服務(wù)111傳送(例如, 利用HTTPS請(qǐng)求/響應(yīng)事務(wù))。匹配請(qǐng)求可以包括先前為移動(dòng)設(shè)備A120確定的NAT類型與 打孔數(shù)據(jù)(例如,公共IP地址與端口)。在涉及多玩家游戲的一種實(shí)施例中,匹配請(qǐng)求可以 識(shí)別移動(dòng)設(shè)備A上的玩家(例如,利用唯一玩家ID碼)、用戶想玩的游戲、參與游戲的玩家的 數(shù)目和/或與期望的游戲關(guān)聯(lián)的其它游戲配置變量(如前面關(guān)于圖2a描述過的)。[0089]在223-225,為移動(dòng)設(shè)備B121執(zhí)行對(duì)應(yīng)于事務(wù)220-222的一組事務(wù),并且在 226-228,為移動(dòng)設(shè)備C122執(zhí)行對(duì)應(yīng)于事務(wù)220-222的一組事務(wù)。因而,在事務(wù)228之后, 匹配器服務(wù)111已經(jīng)接收到用于全部三個(gè)移動(dòng)設(shè)備120-122的匹配請(qǐng)求。在這個(gè)具體的例 子中,匹配請(qǐng)求導(dǎo)致移動(dòng)設(shè)備120-122對(duì)于特定的協(xié)作會(huì)話而匹配,特定的協(xié)作會(huì)話諸如 是多玩家游戲(例如,這些移動(dòng)設(shè)備的用戶可能已經(jīng)選擇了具有相同或相似變量設(shè)置的相 同游戲,由此導(dǎo)致匹配器服務(wù)111的匹配)。
[0090]匹配器服務(wù)111使用包含在每個(gè)匹配請(qǐng)求中的數(shù)據(jù)來生成票據(jù)A,在229它把票據(jù) A發(fā)送到移動(dòng)設(shè)備A ;生成票據(jù)B,在230它把票據(jù)B發(fā)送到移動(dòng)設(shè)備B ;并且生成票據(jù)C,在 231它把票據(jù)C發(fā)送到移動(dòng)設(shè)備C。雖然沒有在圖2b中示出,但是匹配器服務(wù)111可以利 用推送通知服務(wù)分別把票據(jù)A、B和C推送到移動(dòng)設(shè)備A、B和C (例如,像圖11-12中所說 明的推送通知服務(wù)1050)。用于票據(jù)A、B和C的票據(jù)數(shù)據(jù)結(jié)構(gòu)的一種實(shí)施例在以上關(guān)于圖 3進(jìn)行了描述。
[0091]在232,移動(dòng)設(shè)備A120與NAT遍歷服務(wù)290通信,以確定其自己的連接數(shù)據(jù)。在一 種實(shí)施例中,這可以包括標(biāo)準(zhǔn)的ICE連接數(shù)據(jù)事務(wù)。如前面所提到的,連接數(shù)據(jù)可以包括用 于移動(dòng)設(shè)備A120的公共/私有IP地址、端口和NAT類型。
[0092]移動(dòng)設(shè)備A120把它的連接數(shù)據(jù)附加到票據(jù)A并且在233把帶連接數(shù)據(jù)的票據(jù)A 發(fā)送到⑶X服務(wù)110。在一種實(shí)施例中,⑶X服務(wù)110如上所述地處理票據(jù)A并且在234把 (可能加密的)連接數(shù)據(jù)發(fā)送到移動(dòng)設(shè)備B121和移動(dòng)設(shè)備C122。對(duì)于這些事務(wù),⑶X服務(wù) 110可以利用與票據(jù)A —起包括的用于移動(dòng)設(shè)備B和C的NAT遍歷數(shù)據(jù)。
[0093]在236-238,利用票據(jù)B執(zhí)行對(duì)應(yīng)于事務(wù)232-234的一組事務(wù)并且在238-240為 票據(jù)C執(zhí)行對(duì)應(yīng)于事務(wù)232-234的一組事務(wù)。因而,在事務(wù)240之后,連接數(shù)據(jù)已經(jīng)在移動(dòng) 設(shè)備120-122中每個(gè)之間共享。利用連接數(shù)據(jù),P2P會(huì)話在移動(dòng)設(shè)備A和B、移動(dòng)設(shè)備A和 C及移動(dòng)設(shè)備B和C之間建立。
[0094]如圖2c中所說明的,邀請(qǐng)服務(wù)112也可以與⑶X服務(wù)110 —起使用(代替匹配器 服務(wù)111或者作為其補(bǔ)充)。在一種實(shí)施例中,邀請(qǐng)服務(wù)112處理用于與具體移動(dòng)設(shè)備和/ 或用戶的P2P連接的邀請(qǐng)請(qǐng)求。邀請(qǐng)服務(wù)112可以實(shí)現(xiàn)為無狀態(tài)服務(wù)(即,不附帶(tack)每 個(gè)無線設(shè)備之間事務(wù)的當(dāng)前狀態(tài)的服務(wù))。
[0095]轉(zhuǎn)向這個(gè)特定的例子,在250,移動(dòng)設(shè)備A120向NAT遍歷服務(wù)291發(fā)送NAT類型請(qǐng) 求。作為響應(yīng),NAT遍歷服務(wù)291可以使用各種已知的技術(shù)來確定移動(dòng)設(shè)備A所使用的NAT 類型(其中有些在上面描述過了)。在251,移動(dòng)設(shè)備A120對(duì)⑶X服務(wù)110啟動(dòng)NAT遍歷請(qǐng) 求。作為響應(yīng),⑶X服務(wù)110可以讀取用于該請(qǐng)求的公共IP地址與公共端口號(hào)并且把這個(gè) 信息發(fā)送回移動(dòng)設(shè)備A120。如上所述,如果一個(gè)設(shè)備在NAT后面,則其公共端口與IP地址 將分別與其私有端口和IP地址不同。因而,依賴于所使用的NAT類型,公共IP地址與端口 可以用于“打孔”通過NAT設(shè)備,以到達(dá)移動(dòng)設(shè)備。
[0096]就像對(duì)于匹配器服務(wù),在一種實(shí)施例中,每個(gè)移動(dòng)設(shè)備都利用超文本傳輸協(xié)議安 全(“HTTPS”)會(huì)話與邀請(qǐng)服務(wù)112通信(例如,利用HTTPS請(qǐng)求/響應(yīng)事務(wù))。
[0097]在252,移動(dòng)設(shè)備A120把邀請(qǐng)請(qǐng)求發(fā)送到邀請(qǐng)服務(wù)112,這個(gè)請(qǐng)求包括移動(dòng)設(shè)備A 的NAT遍歷數(shù)據(jù)(例如,NAT類型、公共IP地址/端口)。在使用推送通知服務(wù)(以下更具體 地描述)的實(shí)施例中,邀請(qǐng)請(qǐng)求還可以包括移動(dòng)設(shè)備A的推送令牌。邀請(qǐng)請(qǐng)求252還可以包括識(shí)別一個(gè)或多個(gè)其它用戶/設(shè)備-在這個(gè)例子中,是移動(dòng)設(shè)備B121和C122的用戶-的識(shí)別碼??梢允褂酶鞣N不同的識(shí)別碼類型。例如,在多玩家游戲的情況下,識(shí)別碼可以包 括特定于游戲的玩家ID碼。在音頻/視頻聊天會(huì)話的情況下,識(shí)別碼可以包括從移動(dòng)設(shè)備 A用戶的“伙伴”列表的用戶中識(shí)別一個(gè)或多個(gè)用戶的電話號(hào)碼或者唯一 ID碼。
[0098]在一種實(shí)施例中,邀請(qǐng)服務(wù)112從邀請(qǐng)請(qǐng)求讀取識(shí)別碼并且在注冊(cè)數(shù)據(jù)庫(未示 出)中執(zhí)行查找,以便定位移動(dòng)設(shè)備B和C中的每一個(gè)。在一種特定的實(shí)施例中,移動(dòng)設(shè)備 B和C中的每一個(gè)先前都注冊(cè)了從邀請(qǐng)服務(wù)112接收推送通知的推送服務(wù)。因而,在這種 實(shí)施例中,邀請(qǐng)服務(wù)112分別在253和254使用推送通知服務(wù)把邀請(qǐng)請(qǐng)求推送到移動(dòng)設(shè)備 B121和移動(dòng)設(shè)備C122。關(guān)于推送通知服務(wù)的附加細(xì)節(jié)在下面(見例如圖11-12和關(guān)聯(lián)的文 字)和以上引用的推送通知應(yīng)用中描述。
[0099]在一種實(shí)施例中,邀請(qǐng)請(qǐng)求253和254包括圖3中說明并且在以上參考圖2a_2b 描述過的票據(jù)數(shù)據(jù)結(jié)構(gòu)。具體而言,發(fā)送到移動(dòng)設(shè)備B的票據(jù)包括識(shí)別移動(dòng)設(shè)備A和B的 加密列表而且發(fā)送到移動(dòng)設(shè)備C的票據(jù)包括識(shí)別移動(dòng)設(shè)備A和C的加密列表。在一種實(shí)施 例中,因?yàn)檠?qǐng)服務(wù)112可能還沒有移動(dòng)設(shè)備B的NAT遍歷數(shù)據(jù),所以在253 “票據(jù)”可以 包括識(shí)別移動(dòng)設(shè)備B的其它信息。例如,如以下關(guān)于使用中繼服務(wù)和推送通知服務(wù)(見例如 圖11-12)的實(shí)施例所闡述的,在253 “票據(jù)”可以包括用于移動(dòng)設(shè)備A的NAT遍歷數(shù)據(jù)、設(shè) 備A的ID碼、設(shè)備A的推送令牌、設(shè)備B的ID碼及用于移動(dòng)設(shè)備B的推送令牌。在254可 以為移動(dòng)設(shè)備A和C提供相同類型的信息。
[0100]在255,移動(dòng)設(shè)備B可以與NAT遍歷服務(wù)291通信,以便確定其NAT類型并且,在 256,移動(dòng)設(shè)備B可以與CNX服務(wù)110通信,以確定其NAT遍歷數(shù)據(jù)(例如,公共IP地址/端 口)。在257,移動(dòng)設(shè)備B向邀請(qǐng)服務(wù)112發(fā)送邀請(qǐng)響應(yīng),該邀請(qǐng)響應(yīng)包含移動(dòng)設(shè)備A的和移 動(dòng)設(shè)備B的識(shí)別碼、NAT遍歷數(shù)據(jù)及,如果使用推送通知服務(wù)的話,用于移動(dòng)設(shè)備A和B的 推送令牌。在258,移動(dòng)設(shè)備B可以通過與NAT遍歷服務(wù)290通信檢索其當(dāng)前的連接數(shù)據(jù)。 在259,移動(dòng)設(shè)備B把帶其當(dāng)前連接數(shù)據(jù)的票據(jù)(票據(jù)B)發(fā)送到⑶X服務(wù)110。作為響應(yīng), ⑶X服務(wù)110如上所述地處理票據(jù)并且把連接數(shù)據(jù)轉(zhuǎn)發(fā)到移動(dòng)設(shè)備A120。
[0101]接收到移動(dòng)設(shè)備B的邀請(qǐng)響應(yīng),邀請(qǐng)服務(wù)112可以為移動(dòng)設(shè)備A生成加密的票據(jù) 并且在260把票據(jù)發(fā)送到移動(dòng)設(shè)備A。在一種實(shí)施例中,票據(jù)包括用于移動(dòng)設(shè)備A和B的 NAT遍歷數(shù)據(jù)、NAT類型和推送令牌(如果使用推送通知服務(wù)的話)。關(guān)于圖2c描述的“票 據(jù)”可以與關(guān)于匹配器服務(wù)111描述的“票據(jù)”的數(shù)據(jù)結(jié)構(gòu)相同或不同。例如,不是如上所 述地生成加密的“票據(jù)”,邀請(qǐng)服務(wù)112可以簡(jiǎn)單地生成唯一會(huì)話ID,以便識(shí)別與每個(gè)移動(dòng) 設(shè)備的邀請(qǐng)會(huì)話。
[0102]在261,移動(dòng)設(shè)備A通過與NAT遍歷服務(wù)290通信來檢索其當(dāng)前的連接數(shù)據(jù)。然 后,移動(dòng)設(shè)備A可以把其連接數(shù)據(jù)附加到票據(jù)并且在262把帶有其連接數(shù)據(jù)的票據(jù)發(fā)送到 ⑶X服務(wù)110。⑶X服務(wù)110如上所述地處理票據(jù)并且把移動(dòng)設(shè)備A的連接數(shù)據(jù)轉(zhuǎn)發(fā)到移動(dòng) 設(shè)備B。最后,在263,移動(dòng)設(shè)備A和B使用交換后的連接數(shù)據(jù)打開直接P2P連接。如下所 述,在移動(dòng)設(shè)備A和B的NAT類型不兼容的情況下,中繼服務(wù)可以用于啟用移動(dòng)設(shè)備A與B 之間的通信。
[0103]在264-272,移動(dòng)設(shè)備C122與移動(dòng)設(shè)備A可以執(zhí)行一系列事務(wù),以便為移動(dòng)設(shè)備B 和A建立如在255-263所描述的P2P連接。具體而言,在264,移動(dòng)設(shè)備C122與NAT遍歷服務(wù)291通信,以確定其NAT類型,并且在265與⑶X服務(wù)110通信,以確定其NAT遍歷數(shù)據(jù) (例如,公共IP地址/端口)。在266,移動(dòng)設(shè)備C發(fā)送包含移動(dòng)設(shè)備C和移動(dòng)設(shè)備A的NAT 類型、NAT遍歷數(shù)據(jù)和推送令牌(如果使用推送通知服務(wù)的話)的邀請(qǐng)響應(yīng)。在267,移動(dòng)設(shè) 備C通過NAT遍歷P2P服務(wù)290檢索其當(dāng)前的連接數(shù)據(jù)并且在268移動(dòng)設(shè)備C把其連接數(shù) 據(jù)附加到票據(jù)C并且把票據(jù)C發(fā)送到⑶X服務(wù)110。⑶X服務(wù)110如上所述地處理票據(jù)并 且把移動(dòng)設(shè)備C的連接數(shù)據(jù)轉(zhuǎn)發(fā)到移動(dòng)設(shè)備A120。
[0104]在269,移動(dòng)設(shè)備A120從邀請(qǐng)服務(wù)112接收移動(dòng)設(shè)備C的邀請(qǐng)響應(yīng),該響應(yīng)包括 移動(dòng)設(shè)備A和C的NAT類型、NAT遍歷數(shù)據(jù)和推送令牌(如果使用推送服務(wù)的話)。在270, 移動(dòng)設(shè)備A從NAT遍歷服務(wù)290檢索其當(dāng)前的連接數(shù)據(jù)、把其當(dāng)前的連接數(shù)據(jù)附加到票據(jù) A并且在271把票據(jù)A發(fā)送到⑶X服務(wù)110。作為替代,事務(wù)270可能是不需要的,因?yàn)橐?動(dòng)設(shè)備在事務(wù)261確定其連接數(shù)據(jù)。⑶X服務(wù)器110如上所述地處理票據(jù)A并且把移動(dòng)設(shè) 備A的連接數(shù)據(jù)轉(zhuǎn)發(fā)到移動(dòng)設(shè)備C。最后,在272,移動(dòng)設(shè)備A和C使用交換后的連接數(shù)據(jù) 建立直接的P2P連接272。
[0105]在一種實(shí)施例中,邀請(qǐng)服務(wù)112和匹配器服務(wù)111可以依賴推送通知服務(wù)(未示 出)把數(shù)據(jù)推送到移動(dòng)設(shè)備。例如,在圖2c中,邀請(qǐng)請(qǐng)求253和254可以經(jīng)推送通知服務(wù) 被推送到移動(dòng)設(shè)備B121和C122。類似地,在圖2a中,票據(jù)A和B可以被推送到移動(dòng)設(shè)備 A120和B121。在一種實(shí)施例中,當(dāng)移動(dòng)設(shè)備在網(wǎng)絡(luò)上被激活時(shí),它在可以由推送通知服務(wù) 訪問的中心注冊(cè)目錄中注冊(cè)其推送令牌。在一種實(shí)施例中,注冊(cè)目錄把受密碼保護(hù)的用戶 ID或電話號(hào)碼與推送令牌關(guān)聯(lián)。如果推送令牌可以在目錄中識(shí)別,則推送通知服務(wù)可以使 用該推送令牌把推送通知發(fā)送到移動(dòng)設(shè)備。在一種實(shí)施例中,推送通知服務(wù)是由本申請(qǐng)受 讓人設(shè)計(jì)并且在例如以上引用的推送通知應(yīng)用中描述的Apple推送通知服務(wù)(“APNS”)。但 是,應(yīng)當(dāng)指出,推送通知服務(wù)器不是圖2a-c中所示本發(fā)明的實(shí)施例所要求的。例如,推送通 知不是CDX服務(wù)110執(zhí)行本文所述操作所要求的。
[0106]圖4說明了可以由⑶X服務(wù)110實(shí)現(xiàn)以便交換連接數(shù)據(jù)的方法,而圖5說明了可 以由移動(dòng)設(shè)備實(shí)現(xiàn)以便交換連接數(shù)據(jù)并且建立P2P連接的方法。這些方法的某些方面已經(jīng) 在上面關(guān)于圖l_2c描述過了。特別地,這些方法可以在圖l_2c所示網(wǎng)絡(luò)體系結(jié)構(gòu)的背景 下實(shí)現(xiàn),但是它們不限于這種體系結(jié)構(gòu)。在一種實(shí)施例中,這些方法在程序代碼中體現(xiàn),程 序代碼當(dāng)被處理器執(zhí)行時(shí),使得該方法的操作得以執(zhí)行。在被處理器執(zhí)行的同時(shí),程序代碼 可以存儲(chǔ)在機(jī)器可讀介質(zhì)中,諸如隨機(jī)存取存儲(chǔ)器(“RAM”)。處理器可以是通用處理器(例 如,Intel? Core?處理器)或者專用處理器。但是,這些方法可以利用硬件、軟件和固件 的任意組合實(shí)現(xiàn)。此外,程序代碼可以存儲(chǔ)在諸如硬盤驅(qū)動(dòng)器、光盤(例如,數(shù)字視頻盤或致 密盤)之類的非易失性存儲(chǔ)設(shè)備或者諸如閃存存儲(chǔ)器設(shè)備的非易失性存儲(chǔ)器上。
[0107]現(xiàn)在轉(zhuǎn)向圖4中所示的方法,在401,為特定的移動(dòng)設(shè)備-在這個(gè)例子中是“移動(dòng) 設(shè)備A” -接收NAT遍歷請(qǐng)求(有時(shí)候也稱為“打孔”請(qǐng)求)。在402,生成NAT遍歷響應(yīng)并 且發(fā)送到移動(dòng)設(shè)備A。在一種實(shí)施例中,生成NAT遍歷響應(yīng)可以包括確定移動(dòng)設(shè)備A的當(dāng)前 公共IP地址/端口和/或NAT類型。
[0108]用于移動(dòng)設(shè)備A的票據(jù)可以隨后生成并且由諸如如上所述的匹配器服務(wù)111或邀 請(qǐng)服務(wù)112之類的票據(jù)生成實(shí)體加密。在403,接收為移動(dòng)設(shè)備A生成的票據(jù)(“票據(jù)A”), 該票據(jù)包括(用于設(shè)備A和一個(gè)或多個(gè)其它設(shè)備的)NAT遍歷數(shù)據(jù)及用于設(shè)備A的連接數(shù)據(jù)。在404,利用消息認(rèn)證碼認(rèn)證票據(jù)并且利用與票據(jù)生成實(shí)體加密票據(jù)所使用的密鑰相同的 CDX票據(jù)密鑰來解密打孔數(shù)據(jù)。如以上所提到的,在一種實(shí)施例中,正確的CDX票據(jù)密鑰是 利用與該CDX票據(jù)密鑰關(guān)聯(lián)的到期時(shí)間/日期識(shí)別的。
[0109]在405,提取用于移動(dòng)設(shè)備的NAT遍歷數(shù)據(jù)。在406,用于移動(dòng)設(shè)備A的連接數(shù)據(jù) 利用NAT遍歷數(shù)據(jù)發(fā)送到每個(gè)對(duì)等體。在407,從每個(gè)對(duì)等體接收確認(rèn)。如果在408確定還 沒有從所有對(duì)等體接收到確認(rèn),則在409移動(dòng)設(shè)備A的連接數(shù)據(jù)重新發(fā)送到那些還沒有響 應(yīng)的對(duì)等體。當(dāng)在408確定所有連接數(shù)據(jù)都確認(rèn)之后,該方法終止。
[0110]在一種實(shí)施例中,圖4中所示的方法可以對(duì)P2P事務(wù)中所涉及的每個(gè)對(duì)等體執(zhí)行, 以確保每個(gè)對(duì)等體都接收到建立P2P連接所需的連接數(shù)據(jù)。
[0111]圖5說明了根據(jù)本文所述本發(fā)明的實(shí)施例的可以由移動(dòng)設(shè)備執(zhí)行的方法。在501, 發(fā)送NAT遍歷請(qǐng)求并且,在502,接收NAT遍歷響應(yīng)。如前面所描述的,響應(yīng)中所包含的NAT 遍歷數(shù)據(jù)可以包括發(fā)出請(qǐng)求的設(shè)備的公共端口 /IP地址。在503,發(fā)送包含NAT遍歷數(shù)據(jù) 的匹配請(qǐng)求。用于移動(dòng)設(shè)備的票據(jù)可以隨后生成并且由諸如上述匹配器服務(wù)111或邀請(qǐng)服 務(wù)112之類的票據(jù)生成實(shí)體生成。作為上述票據(jù)數(shù)據(jù)結(jié)構(gòu)的一種備選,匹配器服務(wù)111和 /或邀請(qǐng)服務(wù)112可以簡(jiǎn)單地利用唯一會(huì)話ID識(shí)別每個(gè)參與者。
[0112]在504,可以接收票據(jù);在505,用于移動(dòng)設(shè)備的連接數(shù)據(jù)附加到票據(jù);而且,在 506,發(fā)送帶連接數(shù)據(jù)的票據(jù)。在507,接收建立與一個(gè)或多個(gè)其它對(duì)等體的P2P連接所需的 連接數(shù)據(jù)。在508,接收指示一個(gè)或多個(gè)其它無線設(shè)備已經(jīng)接收到在506發(fā)送的連接數(shù)據(jù)的 確認(rèn)。如果那時(shí)候還沒有接收到所有的確認(rèn),則在510,連接數(shù)據(jù)重新發(fā)送到那些還沒有從 其接收到確認(rèn)的移動(dòng)設(shè)備。如果在509確定接收到了所有確認(rèn),則在507接收到的連接數(shù) 據(jù)用于建立與其它移動(dòng)設(shè)備的P2P會(huì)話。
[0113]建立并利用備用通信信道的裝置與方法
[0114]目前的移動(dòng)設(shè)備能夠經(jīng)多種不同的通信信道通信。例如,Apple iPhone?能夠 經(jīng)W1-Fi網(wǎng)絡(luò)(例如,802.1lb,802.llg、802.1ln網(wǎng)絡(luò));3G網(wǎng)絡(luò)(例如,通用移動(dòng)電信系統(tǒng) (“UMTS”)網(wǎng)絡(luò)、高速上行鏈路分組接入(“HSUPA”)網(wǎng)絡(luò)等);及藍(lán)牙網(wǎng)絡(luò)(稱為個(gè)人區(qū)域網(wǎng)絡(luò) (“PAN”))通信。未來的移動(dòng)設(shè)備將能夠經(jīng)另外的通信信道通信,諸如WiMAX、高級(jí)國(guó)際移動(dòng) 電信(“ IMT")和高級(jí)長(zhǎng)期演進(jìn)(“ LTE ”),這僅僅是一些例子。
[0115]在操作中,目前的移動(dòng)設(shè)備從一組可用信道中選擇一個(gè)主要的通信信道。例如,如 果W1-Fi可用的話,移動(dòng)設(shè)備常常配置成選擇W1-Fi連接,而且如果W1-Fi不可用的話就選 擇蜂窩數(shù)據(jù)連接(例如,UTMS連接)。
[0116]在本發(fā)明的一種實(shí)施例中,一組移動(dòng)設(shè)備最初利用標(biāo)準(zhǔn)的ICE連接數(shù)據(jù)交換和/ 或利用上述連接數(shù)據(jù)交換技術(shù)來建立主要的對(duì)等(“P2P”)通信信道。然后,移動(dòng)設(shè)備可以 經(jīng)主要信道交換連接數(shù)據(jù),以便建立一個(gè)或多個(gè)次要通信信道,這些次要通信信道用作當(dāng) 任意主要信道發(fā)生故障時(shí)的備用信道。在一種實(shí)施例中,通過經(jīng)這些信道周期性地發(fā)送“心 跳”分組,次要通信信道通過NAT防火墻維持打開。
[0117]如本文所使用的,通信“信道”指兩個(gè)移動(dòng)設(shè)備之間的全網(wǎng)絡(luò)路徑,而通信“鏈路” 指通信路徑中所使用的一個(gè)特定連接。例如,如果設(shè)備A利用W1-Fi連接連接到互聯(lián)網(wǎng)而 設(shè)備B利用3G連接連接到互聯(lián)網(wǎng),則設(shè)備A與設(shè)備B之間的“信道”由W1-Fi鏈路與3G鏈 路二者共同來定義;設(shè)備A具有W1-Fi通信“鏈路”,而設(shè)備B具有3G通信“鏈路”。因此,如果設(shè)備A從W1-Fi鏈路切換到3G鏈路,則設(shè)備A與設(shè)備B之間的“信道”改變,雖然設(shè)備 B的3G鏈路的事實(shí)保持相同。
[0118]現(xiàn)在將關(guān)于圖6描述其中移動(dòng)設(shè)備建立主要和次要通信信道的具體例子。但是, 應(yīng)當(dāng)指出,本發(fā)明的基本原理不限于圖6中所示的通信鏈路與通信信道的特定設(shè)置。
[0119]在圖6中,移動(dòng)設(shè)備A601能夠利用NAT設(shè)備611經(jīng)通信鏈路605并且利用NAT設(shè) 備612經(jīng)通信鏈路606連接到網(wǎng)絡(luò)610 (例如,互聯(lián)網(wǎng))。類似地,設(shè)備C603能夠利用NAT 設(shè)備613經(jīng)通信鏈路609并且利用NAT設(shè)備614經(jīng)通信鏈路610連接到網(wǎng)絡(luò)610(例如,互 聯(lián)網(wǎng))。作為例子但不是限制,通信鏈路605與609可以是3G通信鏈路,而通信鏈路606與 610可以是W1-Fi通信鏈路。
[0120]因此,在這個(gè)例子中,在移動(dòng)設(shè)備A與移動(dòng)設(shè)備B之間可以建立四種不同的通信 信道:使用鏈路605和609的第一信道;使用鏈路605和610的第二信道;使用鏈路606和 609的第三信道;及使用鏈路606和610的第四信道。在一種實(shí)施例中,移動(dòng)設(shè)備A和B將 基于優(yōu)先化方案選擇這些信道中的一個(gè)作為主要通信信道,并且將選擇剩余的三個(gè)信道作 為備用通信信道。例如,一個(gè)優(yōu)先化方案可以是選擇具有最高帶寬的信道作為主要信道并 且使用剩余的信道作為次要信道。如果兩個(gè)或多個(gè)信道具有可比的帶寬,則優(yōu)先化方案可 以包括選擇最不貴的信道(假設(shè)用戶要為使用一個(gè)或多個(gè)信道付費(fèi))。作為替代,優(yōu)先化方 案可以是選擇最不貴的信道作為主要信道而且,如果每個(gè)信道的成本相同的話,就選擇最 高帶寬的信道。在仍然遵循本發(fā)明基本原理的同時(shí),可以實(shí)現(xiàn)各種不同的優(yōu)先化方案。
[0121]移動(dòng)設(shè)備A601和C603可以利用上述技術(shù)來建立主要通信信道(例如,通過經(jīng) ⑶X服務(wù)110交換連接數(shù)據(jù))。作為替代,移動(dòng)設(shè)備601、603可以實(shí)現(xiàn)標(biāo)準(zhǔn)互聯(lián)網(wǎng)連接建立 (“ICE”)事務(wù),以交換連接數(shù)據(jù)。不管主要信道是怎么建立的,一旦它成了主要信道,移動(dòng) 設(shè)備A601和C603就可以經(jīng)該主要通信信道交換用于次要通信信道的連接數(shù)據(jù)。例如,如 果圖6中的主要通信信道包括通信鏈路606和通信鏈路609,則這個(gè)連接一旦建立之后就 可以用于交換用于次要通信信道的連接數(shù)據(jù),其中次要通信信道包括通信鏈路605和609。 在這個(gè)例子中,經(jīng)主要通信信道交換的連接數(shù)據(jù)可以包括用于NAT611和NAT613的NAT遍 歷數(shù)據(jù)與NAT類型數(shù)據(jù),包括用于每個(gè)移動(dòng)設(shè)備的公共和私有IP地址/端口。
[0122]一旦次要通信信道已經(jīng)建立,它們就利用心跳分組保持打開。例如,設(shè)備A可以周 期性地向設(shè)備C發(fā)送小的“心跳”分組和/或設(shè)備C可以周期性地向設(shè)備A發(fā)送小的“心跳” 分組,以確保用于次要信道的NAT端口保持打開(NAT將常常由于不活動(dòng)性而關(guān)閉端口)。 心跳分組可以是無有效載荷的UDP分組,雖然本發(fā)明的基本原理不限于任何特定的分組格 式。心跳分組可以是在其有效載荷首部中具有自識(shí)別類型字段的UDP分組,而且可以包含 可選的附加格式化信息,包括但不限于信道生存時(shí)間值。
[0123]如圖7中所說明的,每個(gè)移動(dòng)設(shè)備601都存儲(chǔ)并維護(hù)一個(gè)包含主要和次要通信信 道的列表的數(shù)據(jù)結(jié)構(gòu)710 (例如,表、文本文件、數(shù)據(jù)庫等)。為每個(gè)通信信道提供單獨(dú)的條 目并且條目包括利用那個(gè)信道所需的連接數(shù)據(jù)(例如,私有/公共IP地址、NAT類型,等等) 和那個(gè)信道的當(dāng)前狀態(tài)(例如,主要、次要1、次要2,等等)。
[0124]在一種實(shí)施例中,通信接口 701和702分別用于經(jīng)通信鏈路605和通信鏈路606 通信。故障檢測(cè)模塊705可以在移動(dòng)設(shè)備601上執(zhí)行,以便檢測(cè)何時(shí)特定的通信接口 /鏈 路故障或者降級(jí)到低于規(guī)定的閾值。作為響應(yīng),鏈路管理模塊706可以讀取主要/次要連接數(shù)據(jù)710,以便把具有次最高優(yōu)先級(jí)的次要信道提升成主要信道。次要信道的優(yōu)先化可以 利用與以上對(duì)主要信道討論過的相同原理來實(shí)現(xiàn)(例如,基于帶寬、成本、可靠性等)。一旦 已經(jīng)選擇了次要信道,鏈路管理模塊706就可以向其它移動(dòng)設(shè)備上的鏈路管理模塊發(fā)送鏈 路故障指示,通知那些設(shè)備把次要通信信道提升成主要通信信道。然后,那些設(shè)備將利用與 選定的主要信道關(guān)聯(lián)的連接數(shù)據(jù)。
[0125]在一種實(shí)施例中,主要通信信道的完全“故障”不是強(qiáng)迫切換到一個(gè)次要通信信道 所必需的。例如,在一種實(shí)施例中,如果主要通信信道劣化足夠多(例如,低于特定的帶寬、 比特速率或者可靠性閾值),則改變到次要信道可以如本文所述的那樣實(shí)現(xiàn)。在一種實(shí)施例 中,只有當(dāng)次要信道能夠支持比當(dāng)前主要信道更好的性能(例如,帶寬、比特速率或可靠性) 時(shí),才執(zhí)行到次要信道的切換。
[0126]圖8a說明了與圖6中所示相同的網(wǎng)絡(luò)配置,添加了直接連接到網(wǎng)絡(luò)610并且通過 專用網(wǎng)絡(luò)連接620連接到設(shè)備C603的移動(dòng)設(shè)備B602。專用網(wǎng)絡(luò)620可以是設(shè)備B602與 設(shè)備C603之間的藍(lán)牙PAN連接。從這個(gè)例子可以看到,從主要信道切換到次要信道可能顯 著改變網(wǎng)絡(luò)拓?fù)?。例如,如圖8b中所示,如果用于移動(dòng)設(shè)備的主要信道801包括通信鏈路 609 (導(dǎo)致設(shè)備A、B與C之間的直接連接)而且次要信道包括專用網(wǎng)絡(luò)620,則網(wǎng)絡(luò)拓?fù)淇?以如圖Sc中所說明的那樣改變,因?yàn)樵O(shè)備A和設(shè)備C利用該專用網(wǎng)絡(luò)通信的唯一途徑是通 過設(shè)備B。雖然這是只具有三個(gè)設(shè)備的簡(jiǎn)化例子,但是可以使用顯著更大量的設(shè)備,從而當(dāng) 在主要與次要通信信道之間切換時(shí)導(dǎo)致非常不同的網(wǎng)絡(luò)拓?fù)渑渲谩?br>
[0127]用于建立和維護(hù)次要信道的方法的一種實(shí)施例在圖9中說明。在一種實(shí)施例中, 該方法可以由每個(gè)移動(dòng)設(shè)備上的鏈路管理模塊706執(zhí)行。但是,該方法不限于任何特定的 設(shè)備配置。
[0128]在901,選擇主要P2P通信信道。如以上所提到的,主要信道可以基于預(yù)定義的優(yōu) 先化方案來選擇。例如,某些通信信道類型可以比其它通信信道類型優(yōu)先。信道還可以基 于諸如帶寬、使用成本和/或可靠性的變量來優(yōu)先化。
[0129]在902,建立備用P2P通信信道。在一種實(shí)施例中,這是通過經(jīng)主要通信信道在所 有移動(dòng)設(shè)備之間共享連接數(shù)據(jù)來實(shí)現(xiàn)的。在903,維護(hù)備用信道。在一種實(shí)施例中,這涉及 經(jīng)次要通信信道周期性地發(fā)送數(shù)據(jù)(例如,以周期性心跳分組的形式)。
[0130]在904,如果主要P2P信道發(fā)生故障(例如,因?yàn)樘囟ㄒ苿?dòng)設(shè)備的通信鏈路失敗或 者移動(dòng)設(shè)備移出通信鏈路的范圍),則在905,移動(dòng)設(shè)備把最高優(yōu)先級(jí)的備用信道提升成主 要信道。在一種實(shí)施例中,這涉及具有故障鏈路的移動(dòng)設(shè)備經(jīng)次要信道向其它設(shè)備發(fā)送其 鏈路故障的通知。最后,在906,使備用信道成為主要信道,而且過程返回到902 (其中,任 何附加的備用信道都被發(fā)現(xiàn)并添加到優(yōu)先化方案)。
[0131]為邀請(qǐng)服務(wù)建立對(duì)等(P2P)通信信道的裝置與方法
[0132]如圖10中所說明的,除了⑶X服務(wù)110,匹配器服務(wù)111和邀請(qǐng)服務(wù)112 (其有些 實(shí)施例在上面描述了),本發(fā)明的一種實(shí)施例還可以包括注冊(cè)/目錄服務(wù)1052、推送通知服 務(wù)1050和中繼服務(wù)1051。如以上所提到的,在一種實(shí)施例中,邀請(qǐng)服務(wù)112和/或匹配器 服務(wù)111可以使用注冊(cè)/目錄服務(wù)1052識(shí)別所注冊(cè)的移動(dòng)設(shè)備并使用推送通知服務(wù)1050 把數(shù)據(jù)推送到移動(dòng)設(shè)備。在一種實(shí)施例中,當(dāng)移動(dòng)設(shè)備在網(wǎng)絡(luò)上被激活時(shí),通過關(guān)聯(lián)推送令 牌與受密碼保護(hù)的用戶ID或電話號(hào)碼,它向由注冊(cè)/目錄服務(wù)1052維護(hù)的數(shù)據(jù)庫注冊(cè)“推送令牌”(在推送通知應(yīng)用中有時(shí)候稱為“通知服務(wù)帳號(hào)標(biāo)識(shí)符”)。如果推送令牌在注冊(cè)目 錄中被識(shí)別出來(例如,通過利用用戶ID執(zhí)行查詢),則推送通知服務(wù)1050可以使用該推送 令牌把推送通知發(fā)送到移動(dòng)設(shè)備。在一種實(shí)施例中,推送通知服務(wù)是由本申請(qǐng)受讓人設(shè)計(jì) 并且在例如以上引用的推送通知應(yīng)用中描述的Apple推送通知服務(wù)(“APNS”)。
[0133]圖11說明了本發(fā)明的一種實(shí)施例,其中推送通知服務(wù)1051用于在兩個(gè)移動(dòng)設(shè)備 之間建立直接P2P連接,而圖12說明了用于通過中繼服務(wù)1051建立P2P連接的實(shí)施例。如 以下所描述的,關(guān)于是否使用中繼服務(wù)1051建立P2P連接的決定可以基于在移動(dòng)設(shè)備之間 建立直接P2P連接的可行性(例如,基于NAT兼容性問題)。
[0134]現(xiàn)在轉(zhuǎn)向圖11,在1101,移動(dòng)設(shè)備A120發(fā)送邀請(qǐng)移動(dòng)設(shè)備B121進(jìn)入P2P通信會(huì) 話(例如,協(xié)作視頻游戲、P2P視頻聊天等)的邀請(qǐng)。在一種實(shí)施例中,邀請(qǐng)包括在特定在線 應(yīng)用的背景下識(shí)別移動(dòng)設(shè)備B121 (和/或移動(dòng)設(shè)備B的用戶)的用戶ID。例如,用戶ID碼 可以是用于特定多玩家P2P游戲的玩家ID,而且可以采用例如通用唯一標(biāo)識(shí)符(UUID)的形 式。作為替代,在有些實(shí)施例中,ID碼可以是移動(dòng)設(shè)備B121的電話號(hào)碼。游戲ID碼可以 用于識(shí)別移動(dòng)設(shè)備A邀請(qǐng)移動(dòng)設(shè)備B加入的多玩家游戲。桶ID可以用于識(shí)別用于那個(gè)游 戲的配置(如本文關(guān)于匹配器服務(wù)所描述過的)。
[0135]邀請(qǐng)1101還可以包括識(shí)別移動(dòng)設(shè)備A120的ID碼和與移動(dòng)設(shè)備A關(guān)聯(lián)的NAT遍 歷/連接數(shù)據(jù)(例如,用于移動(dòng)設(shè)備A的公共/私有IP地址與端口和用于設(shè)備A的NAT設(shè)備 的NAT類型)。NAT遍歷/連接數(shù)據(jù)或NAT類型數(shù)據(jù)可以先前已經(jīng)在邀請(qǐng)請(qǐng)求1101之前由 移動(dòng)設(shè)備A確定了(例如,經(jīng)NAT遍歷、NAT類型與連接數(shù)據(jù)事務(wù),諸如在以上關(guān)于圖2a_2c 所討論過的那些)。如前面所提到的,邀請(qǐng)請(qǐng)求1101可以采用HTTPS請(qǐng)求的形式。此外,為 了附加的安全性,邀請(qǐng)請(qǐng)求1101可以包括由預(yù)先規(guī)定的證書機(jī)構(gòu)簽署的客戶端證書。
[0136]不管用于識(shí)別移動(dòng)設(shè)備B的ID碼的特定類型,該ID碼是由邀請(qǐng)服務(wù)112接收的 并且,在1102,邀請(qǐng)服務(wù)112可以在目錄服務(wù)1052 (在圖11中未示出)中執(zhí)行查找,以便 識(shí)別通知服務(wù)帳號(hào)標(biāo)識(shí)符,諸如用于把通知推送到移動(dòng)設(shè)備B的推送令牌(“推送令牌B”)。 在一種實(shí)施例中,查找操作可以執(zhí)行幾種檢查,以確定邀請(qǐng)是否應(yīng)當(dāng)被允許。首先,它可以 確認(rèn)用于移動(dòng)設(shè)備A的標(biāo)識(shí)碼(“ ID-A”)和設(shè)備A的推送令牌(“推送令牌-A”)是目錄服務(wù) 數(shù)據(jù)庫中注冊(cè)的關(guān)聯(lián)。查找操作1102還可以確認(rèn)移動(dòng)設(shè)備A的用戶被允許邀請(qǐng)移動(dòng)設(shè)備 B的用戶(例如,移動(dòng)設(shè)備B的用戶可以規(guī)定只有注冊(cè)為B的朋友的那些其他用戶才能邀請(qǐng) 用戶B ;或者可以規(guī)定不允許邀請(qǐng))。在一種實(shí)施例中,如果任何這些檢查都失敗,則取消邀 請(qǐng),而且邀請(qǐng)服務(wù)112向移動(dòng)設(shè)備B返回錯(cuò)誤。
[0137]雖然在這種實(shí)施例中描述了 “推送令牌”,但是應(yīng)當(dāng)指出,本發(fā)明的基本原理不限 于將“推送令牌”或者任何其它特定數(shù)據(jù)結(jié)構(gòu)用于認(rèn)證和把通知推送到移動(dòng)設(shè)備。
[0138]在一種實(shí)施例中,在識(shí)別出推送令牌之后,邀請(qǐng)服務(wù)112可以生成指定給邀請(qǐng)會(huì) 話并且在所有進(jìn)一步事務(wù)中用于識(shí)別會(huì)話的安全的、一次性“會(huì)話令牌”。然后,該會(huì)話令牌 的拷貝發(fā)送回移動(dòng)設(shè)備A120并且和邀請(qǐng)請(qǐng)求一起發(fā)送到移動(dòng)設(shè)備B。在一種實(shí)施例中,會(huì) 話令牌與上述票據(jù)數(shù)據(jù)結(jié)構(gòu)一起使用,而在另一種實(shí)施例中,只使用會(huì)話令牌。
[0139]在1103,邀請(qǐng)服務(wù)112向推送通知服務(wù)1050發(fā)送推送請(qǐng)求。在一種實(shí)施例中,推 送請(qǐng)求可以包括用于移動(dòng)設(shè)備A的NAT遍歷數(shù)據(jù)、設(shè)備A的ID碼、推送令牌A、設(shè)備B的ID 碼和推送令牌B。在一種實(shí)施例中,這種信息可以在“票據(jù)”數(shù)據(jù)結(jié)構(gòu)中打包并且加密,如上所述。在另一種實(shí)施例中,數(shù)據(jù)簡(jiǎn)單地和邀請(qǐng)會(huì)話ID—起發(fā)送。
[0140]因?yàn)樵谶@個(gè)例子中移動(dòng)設(shè)備B121注冊(cè)了推送通知服務(wù)1050,所以在1104推送通知服務(wù)1050能夠定位邀請(qǐng)請(qǐng)求并把它推送到移動(dòng)設(shè)備B121。被推送的邀請(qǐng)1104可以包括會(huì)話令牌、移動(dòng)設(shè)備A的NAT遍歷數(shù)據(jù)/連接數(shù)據(jù)和移動(dòng)設(shè)備B的ID碼。響應(yīng)于該邀請(qǐng)請(qǐng)求,移動(dòng)設(shè)備B可以通過如上所述調(diào)用NAT遍歷服務(wù)或⑶X服務(wù)110來確定其聯(lián)網(wǎng)信息(例如,NAT遍歷/連接數(shù)據(jù)、NAT類型等)。
[0141]在1105,移動(dòng)設(shè)備B接受邀請(qǐng)。接受1105可以采用對(duì)邀請(qǐng)服務(wù)112的HTTPS調(diào)用的形式而且可以包括由預(yù)先規(guī)定的證書機(jī)構(gòu)簽署的客戶端證書(以上關(guān)于邀請(qǐng)請(qǐng)求所提到的)。在一種實(shí)施例中,接受1105可以包括用于移動(dòng)設(shè)備A和B的ID碼和用于移動(dòng)設(shè)備A和B的NAT遍歷/連接數(shù)據(jù)和/或NAT類型。接受1105還可以包括用于移動(dòng)設(shè)備A和B的推送令牌和/或會(huì)話令牌。在一種實(shí)施例中,接受1105還可以包含關(guān)于它是否是來自前面失敗的直接連接嘗試的重試的指示。但是,在另一種實(shí)施例中,接受1105不包含重試指示。相反,一檢測(cè)到失敗的P2P連接嘗試,兩個(gè)移動(dòng)設(shè)備中的一個(gè)就可以向邀請(qǐng)服務(wù)112發(fā)送特定的“中繼邀請(qǐng)”。作為響應(yīng),服務(wù)可以直接啟動(dòng)以下關(guān)于圖12所述的中繼事務(wù)序列(在1201開始)。
[0142]在1106,邀請(qǐng)服務(wù)112可以執(zhí)行兼容性檢查,以確定移動(dòng)設(shè)備A與B之間的直接P2P連接是否可行。例如,在一種實(shí)施例中,如果從移動(dòng)設(shè)備B接收到的接受1105指示它是來自一次前面失敗的直接連接嘗試的重試(或者規(guī)定次數(shù)的前面失敗的直接連接嘗試的重試),則邀請(qǐng)服務(wù)可以得出直接P2P連接不可行的結(jié)論。邀請(qǐng)服務(wù)112可以比較用于移動(dòng)設(shè)備A與B的NAT類型數(shù)據(jù),以確定移動(dòng)設(shè)備A與B的NAT設(shè)備是否將支持直接P2P連接。已知NAT類型的某些組合是與建立P2P連接不兼容的。例如,除閉合/防火墻NAT外,完全圓錐形NAT可以與任何其它NAT類型一起用于建立直接P2P連接。作為對(duì)比,對(duì)稱NAT只能與完全圓錐形NAT —起用于建立直接P2P連接。在本發(fā)明一種實(shí)施例中組合各種NAT類型的可行性在圖14中所示的NAT兼容性表1400中闡述,其中列代表一個(gè)移動(dòng)設(shè)備(例如,移動(dòng)設(shè)備A)的NAT類型,而行代表另一個(gè)移動(dòng)設(shè)備(例如,移動(dòng)設(shè)備B)的NAT類型。單元格中的“1.0”指示所關(guān)聯(lián)的行與列中的NAT類型是兼容的,而“0.0”指示NAT類型是不兼容的。
[0143]在一種實(shí)施例中,如果兼容性檢查1106確定直接P2P是不可行的,則邀請(qǐng)服務(wù)112可以如以下關(guān)于圖12所描述的那樣發(fā)送中繼查找請(qǐng)求1201。但是,如果兼容性檢查1106確定直接P2P連是可行的,則邀請(qǐng)服務(wù)112可以把推送請(qǐng)求1107發(fā)送到推送通知服務(wù)1050,該請(qǐng)求包含移動(dòng)設(shè)備B對(duì)移動(dòng)設(shè)備A的邀請(qǐng)的接受。推送請(qǐng)求1107和從推送通知服務(wù)1050到移動(dòng)設(shè)備A的后續(xù)推送通信1108可以包括會(huì)話令牌及移動(dòng)設(shè)備A和B 二者的推送令牌、ID碼和/或NAT遍歷/連接數(shù)據(jù)。在一種實(shí)施例中,這種信息可以在上述“票據(jù)”數(shù)據(jù)結(jié)構(gòu)中打包(見例如圖2a_2c和關(guān)聯(lián)的文字)而且可以利用唯一的密鑰加密。作為替代,這種信息可以簡(jiǎn)單地與唯一邀請(qǐng)會(huì)話ID —起發(fā)送。邀請(qǐng)服務(wù)1050還可以通知移動(dòng)設(shè)備B將嘗試直接連接。
[0144]在這個(gè)階段,移動(dòng)設(shè)備A和B具有足夠的信息來建立直接P2P連接。在一種實(shí)施例中,這是利用上述CDX服務(wù)110實(shí)現(xiàn)的。例如,移動(dòng)設(shè)備B把其連接數(shù)據(jù)附加到票據(jù)B而且,在1109,把(帶連接數(shù)據(jù)的)票據(jù)B發(fā)送到⑶X服務(wù)。就在這個(gè)事務(wù)之前,移動(dòng)設(shè)備B可以實(shí)現(xiàn)例如圖2b中所示事務(wù)235的事務(wù),以確保其連接數(shù)據(jù)是當(dāng)前的。然后,CDX服務(wù)110認(rèn)證票據(jù)(例如,利用如上所述的唯一會(huì)話密鑰)、提取移動(dòng)設(shè)備B的連接數(shù)據(jù)并且在1110把該連接數(shù)據(jù)轉(zhuǎn)發(fā)到移動(dòng)設(shè)備A。類似地,移動(dòng)設(shè)備A把其連接數(shù)據(jù)附加到票據(jù)A并且,在1111,把(帶連接數(shù)據(jù)的)票據(jù)A發(fā)送到⑶X服務(wù)110。就在這個(gè)事務(wù)之前,移動(dòng)設(shè)備A可以實(shí)現(xiàn)例如圖2b中所示事務(wù)232的事務(wù),以確保其連接數(shù)據(jù)是當(dāng)前的。然后,CDX服務(wù)110認(rèn)證票據(jù)(例如,利用如上所述的唯一會(huì)話密鑰)、提取移動(dòng)設(shè)備A的連接數(shù)據(jù)并且在1111把該連接數(shù)據(jù)轉(zhuǎn)發(fā)到移動(dòng)設(shè)備B。最后,在1113,移動(dòng)設(shè)備A和B利用交換后的連接數(shù)據(jù)進(jìn)入直接P2P連接。
[0145]現(xiàn)在轉(zhuǎn)向圖12,如果兼容性檢查1106確定直接P2P連接不可行,則邀請(qǐng)服務(wù)112可以向中繼服務(wù)1051發(fā)送中繼查找請(qǐng)求1201,以確定由每個(gè)移動(dòng)設(shè)備所使用的中繼主機(jī)。請(qǐng)求1201可以包含用于移動(dòng)設(shè)備A和B的聯(lián)網(wǎng)信息(例如,NAT遍歷/連接數(shù)據(jù)和/或NAT類型數(shù)據(jù)),這些信息由中繼服務(wù)1051用于為兩個(gè)移動(dòng)設(shè)備選擇適當(dāng)?shù)闹欣^主機(jī)。如圖13中所說明的,中繼服務(wù)1051的一種實(shí)施例包括多個(gè)中繼主機(jī)1302-1303以及包含與每個(gè)中繼主機(jī)關(guān)聯(lián)的網(wǎng)絡(luò)信息的中繼主機(jī)數(shù)據(jù)庫1301。邀請(qǐng)服務(wù)112向中繼查找服務(wù)1300發(fā)送中繼查找請(qǐng)求1201,其中中繼查找服務(wù)1300利用用于移動(dòng)設(shè)備A和B的網(wǎng)絡(luò)信息查詢中繼主機(jī)數(shù)據(jù)庫1301。一接收到數(shù)據(jù)庫結(jié)果,中繼查找服務(wù)1300就提供識(shí)別選定的中繼主機(jī)1302-1303 的響應(yīng) 1202。
[0146]在一種實(shí)施例中,中繼查找響應(yīng)1202包含由中繼服務(wù)生成的中繼令牌和由移動(dòng)設(shè)備A和B用于中繼連接的中繼主機(jī)1302-1303的網(wǎng)絡(luò)地址(IP地址/端口)。在一種實(shí)施例中,中繼令牌與中繼會(huì)話關(guān)聯(lián)并且由中繼主機(jī)1302-1303用于一連接到中繼服務(wù)1051就認(rèn)證移動(dòng)設(shè)備A和B。令牌可以采用各種形式,包括例如唯一 ID中繼會(huì)話ID碼、數(shù)字證書和/或與中繼會(huì)話關(guān)聯(lián)的唯一加密密鑰。
[0147]在1203,邀請(qǐng)服務(wù)向移動(dòng)設(shè)備B121發(fā)送包含將進(jìn)行中繼連接的指示的中繼響應(yīng)1203。在一種實(shí)施例中,中繼響應(yīng)1203可以包括中繼令牌和用于中繼主機(jī)B1303的網(wǎng)絡(luò)信息。在一種實(shí)施例中,響應(yīng)1203可以直接發(fā)送到移動(dòng)設(shè)備B (繞過推送通知服務(wù)1050),因?yàn)樗琼憫?yīng)于移動(dòng)設(shè)備B的接受1105而發(fā)送的。
[0148]邀請(qǐng)服務(wù)112向移動(dòng)設(shè)備A發(fā)送可以包括用于中繼主機(jī)B1303的網(wǎng)絡(luò)信息和中繼令牌的中繼響應(yīng)1204。在這種情況下,響應(yīng)1204在事務(wù)1205經(jīng)推送通知服務(wù)1050推送到移動(dòng)設(shè)備A。
[0149]在1206,移動(dòng)設(shè)備A120使用用于中繼主機(jī)A1302的網(wǎng)絡(luò)信息與中繼服務(wù)1051建立連接。類似地,在1207,移動(dòng)設(shè)備B121使用用于中繼主機(jī)B1303的網(wǎng)絡(luò)信息來建立與中繼服務(wù)1051的連接。在這些事務(wù)的每一個(gè)當(dāng)中,在移動(dòng)設(shè)備A和B的任何NAT防火墻中打開新的洞而且用于移動(dòng)設(shè)備A和B的NAT遍歷/連接數(shù)據(jù)可以由中繼服務(wù)1051確定并分別返回到移動(dòng)設(shè)備A和B (例如,通過確定用于設(shè)備的公共IP/端口)。在一種實(shí)施例中,中繼服務(wù)1051及移動(dòng)設(shè)備A和B實(shí)現(xiàn)利用中繼NAT的遍歷(“TURN”)協(xié)議,如本領(lǐng)域技術(shù)人員所理解的,該協(xié)議允許NAT或防火墻后面的元素經(jīng)TCP或UDP連接接收進(jìn)入的數(shù)據(jù)。
[0150]在1208,移動(dòng)設(shè)備A向邀請(qǐng)服務(wù)112發(fā)送中繼更新,該中繼更新在1209轉(zhuǎn)發(fā)到推送通知服務(wù)并且在1210推送到移動(dòng)設(shè)備B。類似地,在1211,移動(dòng)設(shè)備B向邀請(qǐng)服務(wù)112發(fā)送中繼更新,該中繼更新在1212轉(zhuǎn)發(fā)到推送通知服務(wù)并且在1213推送到移動(dòng)設(shè)備A。由移動(dòng)設(shè)備A發(fā)送的中繼更新可以包括會(huì)話令牌、每個(gè)設(shè)備的ID碼及由中繼器在1206和1207確定的NAT遍歷/連接數(shù)據(jù)(即,移動(dòng)設(shè)備A把其NAT遍歷/連接數(shù)據(jù)發(fā)送到移動(dòng)設(shè)備B,并且反之亦然)。在一種實(shí)施例中,因?yàn)槊總€(gè)移動(dòng)設(shè)備的NAT信息都可能改變,所以執(zhí)行中繼更新操作。
[0151]最后,在1214和1215,移動(dòng)設(shè)備A和B分別通過中繼服務(wù)1051建立P2P連接。在一種實(shí)施例中,中繼連接可以在移動(dòng)設(shè)備A向中繼服務(wù)1051發(fā)送移動(dòng)設(shè)備B的NAT遍歷/連接數(shù)據(jù)的時(shí)候建立,而且反之亦然,由此允許中繼服務(wù)確定到每個(gè)對(duì)等體的中繼主機(jī)1302-1303的正確路徑。
[0152]利用上述技術(shù),邀請(qǐng)服務(wù)112可以實(shí)現(xiàn)為無狀態(tài)服務(wù),這種服務(wù)本質(zhì)上是可縮放和有彈性的,即使在具有非常大量移動(dòng)設(shè)備的大規(guī)模系統(tǒng)中也是這樣。例如,因?yàn)橥扑屯ㄖ?wù)1050本質(zhì)上能夠定位并把內(nèi)容推送到注冊(cè)了的移動(dòng)設(shè)備,所以不需要邀請(qǐng)服務(wù)跟蹤每個(gè)設(shè)備的當(dāng)前位置。此外,因?yàn)樵O(shè)備可以對(duì)每個(gè)請(qǐng)求與響應(yīng)發(fā)送整個(gè)會(huì)話狀態(tài)數(shù)據(jù),所以從不需要邀請(qǐng)服務(wù)維護(hù)任何每連接狀態(tài)信息,由此減少邀請(qǐng)服務(wù)的存儲(chǔ)與處理需求。這種實(shí)現(xiàn)在大規(guī)模系統(tǒng)中特別有用。
[0153]用于為在線會(huì)話匹配用戶的系統(tǒng)與方法
[0154]如圖15中所說明的,匹配器服務(wù)111的一種實(shí)施例可以包括用于接收匹配請(qǐng)求并且把匹配響應(yīng)推送到移動(dòng)設(shè)備120-122的匹配器調(diào)度器1501 ;用于在請(qǐng)求表1502中存儲(chǔ)匹配請(qǐng)求并且用于在匹配表集合標(biāo)識(shí)符(“MSI”)表1503中存儲(chǔ)可匹配集合數(shù)據(jù)的數(shù)據(jù)庫1512 ;及用于從數(shù)據(jù)庫1512提取匹配請(qǐng)求、執(zhí)行匹配操作并且把匹配結(jié)果存儲(chǔ)回?cái)?shù)據(jù)庫1512中的一個(gè)或多個(gè)匹配器1510。但是,應(yīng)當(dāng)指出,本發(fā)明的基本原理不限于圖15中所示的具體體系結(jié)構(gòu)。
[0155]在一種實(shí)施例中,匹配器調(diào)度器1501充當(dāng)?shù)狡ヅ淦鞣?wù)111的接口,從移動(dòng)設(shè)備120-122接收請(qǐng)求、把那些請(qǐng)求翻譯成命令以在數(shù)據(jù)庫1512中存儲(chǔ)請(qǐng)求、從數(shù)據(jù)庫1512讀取匹配結(jié)果并且翻譯那些結(jié)果并傳送到移動(dòng)設(shè)備120-122。
[0156]在操作中,當(dāng)新的匹配請(qǐng)求到達(dá)時(shí),匹配器調(diào)度器1501可以在一排請(qǐng)求表1502中存儲(chǔ)請(qǐng)求。在一種實(shí)施例中,調(diào)度器1501為每個(gè)匹配請(qǐng)求指定請(qǐng)求ID (“RID”)碼,在圖15中簡(jiǎn)單地說明為和“C”(分別對(duì)應(yīng)于移動(dòng)設(shè)備A、B和C)。雖然在圖15中為了簡(jiǎn)單而使用字母命名,但是RID碼可以是串、整數(shù)或者任何其它適于跟蹤數(shù)據(jù)庫中的匹配請(qǐng)求的任何其它變量類型。
[0157]可以為每個(gè)匹配請(qǐng)求指定存儲(chǔ)在請(qǐng)求表1502中的可匹配集合標(biāo)識(shí)符(“MSI”)值。在一種實(shí)施例中,MSI可以識(shí)別為其請(qǐng)求匹配的具體應(yīng)用和/或要為那個(gè)應(yīng)用使用的配置參數(shù)。例如,12:4的MSI值可以識(shí)別具有標(biāo)識(shí)符“12”的特定多玩家游戲而且可以識(shí)別具有標(biāo)識(shí)符“4”的用于該游戲的特定配置。更具體地說,12的ID碼可以識(shí)別特定的多玩家賽車游戲而且4的ID碼可以規(guī)定特定的賽車道、速度或賽車游戲的玩家經(jīng)驗(yàn)級(jí)別。在一種實(shí)施例中,為應(yīng)用開發(fā)者提供了以這種方式利用MSI值規(guī)定應(yīng)用配置參數(shù)的選項(xiàng)。在一種實(shí)施例中,不是直接規(guī)定MSI,而是應(yīng)用開發(fā)者規(guī)定游戲ID (以便識(shí)別特定的游戲)和桶ID (以便識(shí)別特定的游戲配置)而且這些值由匹配器調(diào)度器1501映射到MSI值。
[0158]此外,幾個(gè)不同的MSI值可以在單個(gè)MSI中使用,以便規(guī)定多個(gè)不同的配置參數(shù)(例如,12:4:1可能代表:12=賽車游戲;4=賽車道;及1=經(jīng)驗(yàn)級(jí)別)。如以下更具體描述的,在一種實(shí)施例中,每個(gè)MSI由匹配器1510用于識(shí)別其中可以執(zhí)行匹配器操作的一組匹配請(qǐng)求(例如,請(qǐng)求是基于MSI分組的而且匹配在每個(gè)MSI組中執(zhí)行)。在一種實(shí)施例中,每個(gè)MSI可以由調(diào)度器動(dòng)態(tài)修改/選擇,以便包括識(shí)別不同機(jī)器分區(qū)的分區(qū)ID。例如,如果一個(gè)特定的MSI變得超載,則調(diào)度器可以在兩個(gè)或多個(gè)不同的服務(wù)器和/或存儲(chǔ)分區(qū)之間分割該MSI (例如,利用像4:3:1和4:3:2的指定,其中最后的數(shù)字分別識(shí)別分區(qū)I和2)。然后,不同的匹配器可以獨(dú)立地從來自每個(gè)不同服務(wù)器的每個(gè)不同MSI檢索并處理請(qǐng)求。
[0159]如圖15中所說明的,匹配請(qǐng)求數(shù)據(jù)還可以存儲(chǔ)在用于每個(gè)請(qǐng)求的請(qǐng)求表1502中。請(qǐng)求數(shù)據(jù)可以包括可用于給出匹配決策的任何數(shù)據(jù)和/或訪問經(jīng)網(wǎng)絡(luò)啟動(dòng)請(qǐng)求的移動(dòng)設(shè)備所需的任何數(shù)據(jù)。例如,在一種實(shí)施例中,用于每個(gè)請(qǐng)求的匹配請(qǐng)求數(shù)據(jù)包括用于啟動(dòng)請(qǐng)求的移動(dòng)設(shè)備的NAT類型數(shù)據(jù)和/或NAT遍歷/連接數(shù)據(jù)。其它類型的請(qǐng)求數(shù)據(jù)也可以存儲(chǔ)在請(qǐng)求表1502中,諸如設(shè)備連接速度(100kbps、IMbps等)、連接類型(例如,3G、EDGE、WiFi等)、設(shè)備位置(例如,由地理定位技術(shù)確定的)、語言(英語、西班牙語等)和/或用戶偏好。請(qǐng)求數(shù)據(jù)可以由每個(gè)移動(dòng)設(shè)備120-122確定并且與每個(gè)匹配請(qǐng)求一起發(fā)送到匹配器調(diào)度器1501。例如,每個(gè)移動(dòng)設(shè)備可以利用各種技術(shù)確定其連接數(shù)據(jù)、連接類型、設(shè)備位置等,其中有些技術(shù)在本文描述(例如,與NAT遍歷服務(wù)器通信以便確定NAT遍歷/連接數(shù)據(jù)、利用GPS確定設(shè)備位置、讀取HTTP信息以便確定語言,等等)。
[0160]如圖15中所說明的,在一種實(shí)施例中,每個(gè)有效的MSI都可以在MSI表1503中指定一行。在一種實(shí)施例中,當(dāng)新的請(qǐng)求到達(dá)時(shí),除了把該請(qǐng)求添加到請(qǐng)求表1502,調(diào)度器1501還檢查MSI表1503,以確定MSI是否已經(jīng)對(duì)那個(gè)請(qǐng)求存在(即,具有相同MSI的其它請(qǐng)求是否已經(jīng)接收到)。如果沒有找到匹配的MSI,則調(diào)度器1501可以在MSI表1503中為該新請(qǐng)求創(chuàng)建新的條目。如果找到匹配的MSI,則調(diào)度器可以簡(jiǎn)單地把該新請(qǐng)求添加到請(qǐng)求表1502,如上所述。
[0161]一旦請(qǐng)求表1502和MSI表1503被匹配器調(diào)度器1501更新,匹配器模塊1510的實(shí)例(下文中簡(jiǎn)單地稱為“匹配器1510”)就提取數(shù)據(jù),以便執(zhí)行牽線操作。多個(gè)匹配器實(shí)例可以同時(shí)執(zhí)行,以便執(zhí)行牽線請(qǐng)求,而且單個(gè)匹配器1510可以同時(shí)在多個(gè)不同的MSI組上處理多個(gè)匹配操作。
[0162]在一種實(shí)施例中,當(dāng)匹配器1510變得可用時(shí)(例如,在為一個(gè)MSI組完成匹配操作之后或者在初始化之后),它查詢MSI表1503,以便識(shí)別要處理的新MSI。在圖15中,匹配器ID字段中用于MSI3:1的“N/A”值指示用于處理這個(gè)MSI的責(zé)任還沒有指定給匹配器。在一種實(shí)施例中,每個(gè)MSI條目是加了時(shí)間戳的而且匹配器1510選擇具有最老時(shí)間戳的MSI。
[0163]在一種實(shí)施例中,當(dāng)匹配器1510假設(shè)對(duì)一個(gè)特定MSI有責(zé)任時(shí),它更新MSI表1503中其匹配器ID碼并且規(guī)定用于那個(gè)MSI的租賃持續(xù)時(shí)間(例如,5秒)。在一種實(shí)施例中,匹配器1510在其為那個(gè)MSI處理匹配的時(shí)候持續(xù)地更新租賃值。該租賃值可以用于識(shí)別指定給發(fā)生故障的匹配器1510的MSI。例如,如果租賃值到期,則那個(gè)MSI可以被新的匹配器認(rèn)領(lǐng),而不管MSI表1503指示該MSI已經(jīng)指定給一個(gè)匹配器的事實(shí)。
[0164]一旦匹配器1510已經(jīng)假設(shè)對(duì)一個(gè)MSI有責(zé)任,它就可以查詢請(qǐng)求表1502,以便把與那個(gè)MSI關(guān)聯(lián)的請(qǐng)求讀到存儲(chǔ)器中。然后,匹配器1510可以執(zhí)行匹配操作,以根據(jù)一組匹配標(biāo)準(zhǔn)匹配用戶與移動(dòng)設(shè)備(例如,如下所述)。匹配器1510可以更新請(qǐng)求表1512,以便指示何時(shí)進(jìn)行移動(dòng)設(shè)備的匹配。例如,匹配器可以從請(qǐng)求表1512中的MSI列除去MSI值并且輸入預(yù)先定義的值,以便指示匹配已經(jīng)完成。此外,匹配器1510可以更新用于每個(gè)參與者的“請(qǐng)求數(shù)據(jù)”字段,以便識(shí)別與那個(gè)參與者匹配的其它參與者(例如,通過寫與其它參與者通信所需的NAT遍歷/連接數(shù)據(jù))。
[0165]調(diào)度器1501可以周期性地查詢請(qǐng)求表1502,以便識(shí)別完成的匹配。響應(yīng)于檢測(cè)到完成的匹配,調(diào)度器1501可以向匹配中所涉及的移動(dòng)設(shè)備發(fā)送推送通知(例如,利用本文及共同未決的申請(qǐng)中所述的推送通知技術(shù))。在一種實(shí)施例中,推送通知包括上述“票據(jù)”數(shù)據(jù)結(jié)構(gòu)。然后,移動(dòng)設(shè)備可以使用它們的每張票據(jù)來經(jīng)CDX服務(wù)110交換連接數(shù)據(jù),如上所述。
[0166]除了使用推送通知,在一種實(shí)施例中,移動(dòng)設(shè)備120-122還可以周期性地查詢調(diào)度器1501,以便確定是否已經(jīng)進(jìn)行了匹配。在推送通知還沒有對(duì)移動(dòng)設(shè)備進(jìn)行時(shí),周期性的查詢是有用的。但是,因?yàn)槭褂昧送扑腕w系結(jié)構(gòu),所以周期性查詢可以設(shè)置到相對(duì)低的速率,由此減小匹配器服務(wù)111上的負(fù)荷。
[0167]圖16說明了其中兩個(gè)移動(dòng)設(shè)備,A和B,由匹配器服務(wù)111匹配的方法的示例性實(shí)施例。圖17a-17d說明了在所述方法前進(jìn)時(shí)可能發(fā)生的對(duì)請(qǐng)求表1502和MSI表1503的示例性更新。
[0168]在1601,從移動(dòng)設(shè)備A接收匹配請(qǐng)求。在1602,移動(dòng)設(shè)備A的請(qǐng)求輸入到請(qǐng)求表中而且新的MSI條目(MSI1:1)輸入到MSI表中(如果還不存在的話),如圖17a中所說明的。在1603,從設(shè)備B接收匹配請(qǐng)求并且,在1604,移動(dòng)設(shè)備B的匹配請(qǐng)求也輸入到請(qǐng)求表中,如圖17b中所說明的。
[0169]在1605,特定的匹配器實(shí)例(匹配器_)檢查MSI表并且檢測(cè)到MSIl:1還沒有被另一個(gè)匹配器實(shí)例認(rèn)領(lǐng)。作為替代,匹配器可以檢測(cè)具有到期租賃的MSI表?xiàng)l目,指示先前對(duì)該MSI工作的匹配器已經(jīng)發(fā)生故障。在一種實(shí)施例中,具有到期租賃的MSI條目比(還沒有指定匹配器的)新MSI條目被賦予更高的優(yōu)先級(jí)。此外,在一種實(shí)施例中,相對(duì)來說更舊的MSI條目可以比相對(duì)來說更新的MSI條目賦予更高的優(yōu)先級(jí)。不管匹配器如何選擇MSI,當(dāng)它在這么做的時(shí)候,它添加其標(biāo)識(shí)符并且為該MSI條目設(shè)定新的租賃值,如圖17c中所說明的(例如,在所說明的實(shí)施例中,利用5秒的租賃值)。然后,匹配器可以查詢請(qǐng)求表并把具有那個(gè)MSI的請(qǐng)求表?xiàng)l目讀到存儲(chǔ)器中,使得它們可以被處理。
[0170]在1606,匹配器執(zhí)行一系列匹配操作,以便為每個(gè)請(qǐng)求選擇適當(dāng)?shù)钠ヅ?。匹配操作的某些?shí)施例在下面關(guān)于圖18進(jìn)行描述。簡(jiǎn)而言之,在一種實(shí)施例中,為了確定“適當(dāng)”匹配而被評(píng)估的變量包括NAT類型(例如,完全圓錐形、端口受限、對(duì)稱等)、連接類型(例如,ffiF1.3G.Edge等)、與用戶關(guān)聯(lián)的語言(從HTTP請(qǐng)求接受語言首部得到的)及每個(gè)匹配請(qǐng)求的年齡??偟膩碚f,匹配器1510可以嘗試匹配具有兼容NAT類型(雖然有時(shí)候可以使用中繼服務(wù),如下所述)、相同連接類型和相同語言的移動(dòng)設(shè)備。在一種實(shí)施例中,基于匹配請(qǐng)求的年齡,匹配器1510可以對(duì)匹配需求更自由(即,請(qǐng)求越老,將更自由地應(yīng)用匹配約束)。
[0171]返回圖16,在1607,在匹配決策之后,匹配器1510可以更新請(qǐng)求表,以便指示匹配完成,如圖17d中所指示的。作為更新的一部分,匹配器還可以更新用于移動(dòng)設(shè)備A和B的請(qǐng)求數(shù)據(jù)。例如,在一種實(shí)施例中,匹配器1510在用于移動(dòng)設(shè)備A的請(qǐng)求數(shù)據(jù)列中寫移動(dòng)設(shè)備B的NAT遍歷/連接數(shù)據(jù),并且在用于移動(dòng)設(shè)備B的請(qǐng)求列中寫移動(dòng)設(shè)備A的NAT遍歷/連接數(shù)據(jù)。[0172]在1608,調(diào)度器1501可以從頭到尾讀一遍請(qǐng)求表,以便識(shí)別已經(jīng)匹配的請(qǐng)求條目。在一種實(shí)施例中,當(dāng)檢測(cè)到移動(dòng)設(shè)備A和B已經(jīng)匹配時(shí),它讀取(如上所述由匹配器更新的)請(qǐng)求數(shù)據(jù),并且為移動(dòng)設(shè)備A和B生成通知。在一種實(shí)施例中,通知是上述加密的“票據(jù)”數(shù)據(jù)結(jié)構(gòu)而且包括用于每個(gè)移動(dòng)設(shè)備的NAT遍歷/連接數(shù)據(jù)。如前面所描述的,在一種實(shí)施例中,推送通知服務(wù)1050用于把通知推送到移動(dòng)設(shè)備A和B。此外,移動(dòng)設(shè)備A和B可以周期性地輪詢調(diào)度器1501,以確定是否已進(jìn)行匹配。在這種實(shí)施例中,輪詢技術(shù)可以相對(duì)慢的速率進(jìn)行,以便識(shí)別出于某個(gè)原因而沒有成功推送到移動(dòng)設(shè)備之一的匹配。利用推送通知管理輪詢請(qǐng)求負(fù)荷顯著減小了匹配器服務(wù)111上的負(fù)荷,否則,這些負(fù)荷將由來自移動(dòng)設(shè)備的輪詢請(qǐng)求加載。
[0173]如果在1608確定附加的匹配請(qǐng)求對(duì)相同的MSI是未決的,則匹配器可以繼續(xù)匹配MSI中的移動(dòng)設(shè)備/用戶。在1610,匹配器可以重置MSI表1503中的租賃值。在1611,執(zhí)行附加的匹配并且請(qǐng)求表被更新(如上所述)。在1612,附加的匹配從請(qǐng)求表讀出而且附加的移動(dòng)設(shè)備被更新(如上所述)。如果沒有附加的匹配請(qǐng)求對(duì)該MSI是未決的,則在1609該MSI條目從MSI表除去(例如,經(jīng)來自調(diào)度器和/或匹配器的刪除命令)。
[0174]圖18說明了用于在移動(dòng)設(shè)備/用戶之間執(zhí)行匹配的方法的一種實(shí)施例(圖16中的操作1606)。在1801,所有當(dāng)前的MSI請(qǐng)求(例如,對(duì)于特定的應(yīng)用/桶組合)按對(duì)布置。在1802,評(píng)估每一對(duì)之間的匹配“適合”(Fit)并且,在1803,按適合的降序排列給這些對(duì)排序?!斑m合”是基于多個(gè)不同變量來評(píng)估的,包括但不限于NAT類型(例如,完全圓錐形、端口受限、對(duì)稱等)、連接類型(例如,WiF1、3G、Edge等)、與用戶關(guān)聯(lián)的語言(從HTTP請(qǐng)求接受語言首部得到的)及每個(gè)匹配請(qǐng)求的年齡??梢栽谄ヅ錄Q策中作為因素考慮的其它變量包括每個(gè)移動(dòng)設(shè)備的位置(例如,對(duì)于嘗試匹配特定位置的用戶);最小化和/或最大化玩家需求(例如,由用戶和/或應(yīng)用規(guī)定的);MSI中所包括的一個(gè)或多個(gè)用戶是否是“朋友”或者先前曾進(jìn)入到P2P連接中過(例如,優(yōu)選匹配“朋友”或之前的熟人);及用戶對(duì)應(yīng)用的經(jīng)驗(yàn)(例如,對(duì)于多玩家游戲,每個(gè)用戶的排行榜排名可以作為因素考慮,優(yōu)選匹配具有相似經(jīng)驗(yàn)的用戶)。
[0175]如下表A中所指示的,在一種實(shí)施例中,“適合性”的評(píng)估是0.0到1.0之間的一個(gè)數(shù)字值。利用浮點(diǎn)值允許對(duì)每個(gè)標(biāo)準(zhǔn)的適合性的規(guī)格化。為了避免浮點(diǎn)運(yùn)算,非規(guī)格化的整數(shù)值可以對(duì)合適的評(píng)估使用,使得適合性值可以比較。
[0176]在一種實(shí)施例中,所有標(biāo)準(zhǔn)都具有二進(jìn)制適合,其中它們是兼容的(具有規(guī)格化值
1.0)或者不兼容的(具有小于1.0的規(guī)格化值)。根據(jù)需要,這些可以被看作標(biāo)準(zhǔn),其中適合隨年齡而變(如下所述)。如果位置作為變量添加,則最佳適合可能是與匹配所需標(biāo)準(zhǔn)的最近玩家的適合。
[0177]匹配適合性-表A`
[0178]
因素權(quán)重規(guī)格化
NAT兼容性2.0074
連接類型 2.004語言 [Το[02
δο TTo
[0179]在一種實(shí)施例中,適合等于用于上述每個(gè)標(biāo)準(zhǔn)的(規(guī)格化權(quán)重*老化的因素值)之和。老化的因素值可以從值I開始并且在經(jīng)過預(yù)定時(shí)間段后增加。然后,它可以隨著更多時(shí)間經(jīng)過而繼續(xù)增加(例如,周期性地增加規(guī)定的量)。在一種實(shí)施例中,代替利用上述老化因素值,年齡閾值可以如下所述地建立。諸如連接類型與語言的某些變量的規(guī)格化/加權(quán)值可以高于某些年齡閾值而應(yīng)用(即使它們不匹配)。
[0180]在一種實(shí)施例中,一對(duì)請(qǐng)求,A和B,之間的“適合”是A與B和B與A的適合的平均值。而且,對(duì)于每個(gè)因素A與B的適合都可以基于A的年齡來調(diào)節(jié)(而且反之亦然)。在一種實(shí)施例中,1.0的適合對(duì)于兼容性匹配可能是需要的。這意味著A和B將只在NAT兼容性、連接類型和語言匹配的時(shí)候(導(dǎo)致1.0的規(guī)格化值)或者A和/或B已經(jīng)老化使得有些上述變量(例如,連接類型和語言)被有效忽略的時(shí)候(例如,利用閾值以上的或者以下的老化因素)匹配。
[0181]年齡-表B
[0182]
~I閾值I I閾值2 I閾值3 I閾值4 I閾值5~
比…老O秒 I秒 5秒 10秒 30秒
[0183]年齡閾值可以如上表B中闡述的那樣建立。當(dāng)通過每個(gè)年齡閾值時(shí)(即,當(dāng)請(qǐng)求變得比規(guī)定閾值老時(shí)),老化的因素值可以增加到后續(xù)更大的值(例如,1.5,2.0等)。作為替代,或者附加地,當(dāng)通過不同的年齡閾值時(shí),用于某些變量的加權(quán)值可以添加到匹配決策(例如,像以下所述的連接類型和語言)。
[0184]在一種實(shí)施例中,對(duì)于給定的MSI,表B中規(guī)定的請(qǐng)求年齡限制是根據(jù)匹配流速率調(diào)節(jié)的。在一種實(shí)施例中,流速率規(guī)定為每個(gè)規(guī)定的單位時(shí)間(例如,每10秒、每分鐘等)執(zhí)行的匹配的次數(shù)。因而,流速率提供了關(guān)于一個(gè)特定MSI集合有多忙的指示。在一種實(shí)施例中,該集合越忙,以上每個(gè)閾值可以在上表B中設(shè)置得越低,以便增加早期成功匹配的可能性并減小匹配器上的負(fù)荷。而且,給定MSI集合的負(fù)荷可以提供給終端用戶(例如,以估計(jì)的到匹配值的時(shí)間的形式),因此終端用戶可以選擇是否嘗試進(jìn)入特別忙的多玩家游戲。負(fù)荷值可以推送通知的形式提供給用戶。
[0185]現(xiàn)在轉(zhuǎn)向來自表A的每個(gè)變量,在一種實(shí)施例中,NAT兼容性是從圖14中所示的NAT兼容性圖表1400確定的。如果基于這個(gè)圖表確定兩個(gè)NAT兼容,則可以應(yīng)用NAT兼容性權(quán)重。
[0186]連接類型-表C
[0187]
A/B IWiFi IEdge |3G
WiFi 1.0 0.0 0.0~
【權(quán)利要求】
1.一種用于實(shí)現(xiàn)安全即時(shí)消息傳輸?shù)姆椒?,包?從第一用戶接收與第二用戶建立即時(shí)消息傳輸會(huì)話的請(qǐng)求,該請(qǐng)求包括識(shí)別第二用戶的識(shí)別碼;確定第二用戶是否具有在網(wǎng)絡(luò)服務(wù)上注冊(cè)的一個(gè)或多個(gè)移動(dòng)設(shè)備;如果第二用戶具有注冊(cè)的一個(gè)或多個(gè)移動(dòng)設(shè)備,則為第一用戶提供識(shí)別所述一個(gè)或多個(gè)移動(dòng)設(shè)備的尋址信息和與第二用戶關(guān)聯(lián)的公鑰;利用第二用戶的公鑰和第一用戶的私鑰加密即時(shí)消息來生成加密的即時(shí)消息;把加密的即時(shí)消息從第一用戶的移動(dòng)設(shè)備發(fā)送到第二用戶的所述一個(gè)或多個(gè)移動(dòng)設(shè)備;及在第二用戶的移動(dòng)設(shè)備處利用一私鑰解密該即時(shí)消息。
2.如權(quán)利要求1所述的方法,其中識(shí)別碼包括第二用戶的電子郵件地址。
3.如權(quán)利要求1所述的方法,其中地址信息包括在網(wǎng)絡(luò)服務(wù)上唯一識(shí)別第二用戶的所述一個(gè)或多個(gè)移動(dòng)設(shè)備的令牌。
4.如權(quán)利要求1所述的方法,其中發(fā)送進(jìn)一步包括:把加密的即時(shí)消息提供給第二移動(dòng)設(shè)備向其注冊(cè)的推送通知服務(wù),作為響應(yīng),該推送通知服務(wù)把加密的消息推送到第二移動(dòng)設(shè)備。
5.如權(quán)利要求1所述的方法,其中確定進(jìn)一步包括:查詢注冊(cè)數(shù)據(jù)庫以確定第二用戶是否在網(wǎng)絡(luò)服務(wù)上注冊(cè),該注冊(cè)數(shù)據(jù)庫把第二用戶與一個(gè)或多個(gè)識(shí)別碼關(guān)聯(lián)。
6.如權(quán)利要求1所述的方法,其·中加密即時(shí)消息進(jìn)一步包括利用第二用戶的公鑰加密包括任何文字和/或附件的即時(shí)消息的內(nèi)容,并且利用第一用戶的私鑰簽署該內(nèi)容。
7.如權(quán)利要求6所述的方法,其中第二用戶利用第二用戶的私鑰解密內(nèi)容并且利用第一用戶的公鑰驗(yàn)證簽名。
8.如權(quán)利要求7所述的方法,其中第二用戶從網(wǎng)絡(luò)服務(wù)檢索第一用戶的公鑰。
9.如權(quán)利要求1所述的方法,進(jìn)一步包括:為第一用戶提供會(huì)話密鑰,該會(huì)話密鑰包括利用第一和第二用戶的識(shí)別碼及第一和第二用戶的網(wǎng)絡(luò)信息生成的簽名。
10.如權(quán)利要求9所述的方法,進(jìn)一步包括:把會(huì)話密鑰和即時(shí)消息發(fā)送到安全即時(shí)消息服務(wù);及利用會(huì)話密鑰驗(yàn)證第一和第二用戶的識(shí)別碼及第一和第二用戶的網(wǎng)絡(luò)信息。
11.如權(quán)利要求10所述的方法,其中驗(yàn)證包括在安全即時(shí)消息傳輸服務(wù)處重新生成簽名。
12.—種實(shí)現(xiàn)安全即時(shí)消息傳輸?shù)南到y(tǒng),包括用于存儲(chǔ)程序代碼的存儲(chǔ)器和用于處理該程序代碼以便執(zhí)行以下操作的至少一個(gè)處理器:從第一用戶接收與第二用戶建立即時(shí)消息傳輸會(huì)話的請(qǐng)求,該請(qǐng)求包括識(shí)別第二用戶的識(shí)別碼;確定第二用戶是否具有在網(wǎng)絡(luò)服務(wù)上注冊(cè)的一個(gè)或多個(gè)移動(dòng)設(shè)備;如果第二用戶具有注冊(cè)的一個(gè)或多個(gè)移動(dòng)設(shè)備,則為第一用戶提供識(shí)別所述一個(gè)或多個(gè)移動(dòng)設(shè)備的尋址信息和與第二用戶關(guān)聯(lián)的公鑰;利用第二用戶的公鑰和第一用戶的私鑰加密即時(shí)消息來生成加密的即時(shí)消息;把加密的即時(shí)消息從第一用戶的移動(dòng)設(shè)備發(fā)送到第二用戶的所述一個(gè)或多個(gè)移動(dòng)設(shè)備;及在第二用戶的移動(dòng)設(shè)備處利用一私鑰解密該即時(shí)消息。
13.如權(quán)利要求12所述的系統(tǒng),其中識(shí)別碼包括第二用戶的電子郵件地址。
14.如權(quán)利要求12所述的系統(tǒng),其中地址信息包括在網(wǎng)絡(luò)服務(wù)上唯一識(shí)別第二用戶的所述一個(gè)或多個(gè)移動(dòng)設(shè)備的令牌。
15.如權(quán)利要求12所述的系統(tǒng),其中發(fā)送進(jìn)一步包括:把加密的即時(shí)消息提供給第二移動(dòng)設(shè)備向其注冊(cè)的推送通知服務(wù),作為響應(yīng),該推送通知服務(wù)把加密的消息推送到第二移動(dòng)設(shè)備。
16.如權(quán)利要求12所述的系統(tǒng),其中確定進(jìn)一步包括:查詢注冊(cè)數(shù)據(jù)庫,確定第二用戶是否在網(wǎng)絡(luò)服務(wù)上注冊(cè),該注冊(cè)數(shù)據(jù)庫把第二用戶與一個(gè)或多個(gè)識(shí)別碼關(guān)聯(lián)。
17.如權(quán)利要求12所述的系統(tǒng),其中加密即時(shí)消息進(jìn)一步包括利用第二用戶的公鑰加密包括任何文字和/或附件的即時(shí)消息的內(nèi)容,并且利用第一用戶的私鑰簽署該內(nèi)容。
18.如權(quán)利要求17所述的系統(tǒng),其中第二用戶利用第二用戶的私鑰解密內(nèi)容并且利用第一用戶的公鑰驗(yàn)證簽名。
19.如權(quán)利要求18所述的系統(tǒng),其中第二用戶從網(wǎng)絡(luò)服務(wù)檢索第一用戶的公鑰。
20.如權(quán)利要求12所述的系統(tǒng),包括附加的程序代碼,使處理器執(zhí)行以下附加操作: 為第一用戶提供會(huì)話密鑰,該會(huì)話密鑰包括利用第一和第二用戶的識(shí)別碼及第一和第二用戶的網(wǎng)絡(luò)信息生成的簽名。
21.如權(quán)利要求20所述的系統(tǒng),包括附加的程序代碼,使處理器執(zhí)行以下附加操作: 把會(huì)話密鑰和即時(shí)消息發(fā)送到安全即時(shí)消息服務(wù);及利用會(huì)話密鑰驗(yàn)證第一和第二用戶的識(shí)別碼及第一和第二用戶的網(wǎng)絡(luò)信息。
22.如權(quán)利要求21所述的系統(tǒng),其中驗(yàn)證包括在安全即時(shí)消息傳輸服務(wù)處重新生成簽名。
23.一種具有存儲(chǔ)在其上的程序代碼的機(jī)器可讀介質(zhì),當(dāng)程序代碼被機(jī)器執(zhí)行時(shí),使機(jī)器執(zhí)行以下操作:從第一用戶接收與第二用戶建立即時(shí)消息傳輸會(huì)話的請(qǐng)求,該請(qǐng)求包括識(shí)別第二用戶的識(shí)別碼;確定第二用戶是否具有在網(wǎng)絡(luò)服務(wù)上注冊(cè)的一個(gè)或多個(gè)移動(dòng)設(shè)備;如果第二用戶具有注冊(cè)的一個(gè)或多個(gè)移動(dòng)設(shè)備,則為第一用戶提供識(shí)別所述一個(gè)或多個(gè)移動(dòng)設(shè)備的尋址信息和與第二用戶關(guān)聯(lián)的公鑰;利用第二用戶的公鑰和第一用戶的私鑰加密即時(shí)消息來生成加密的即時(shí)消息;把加密的即時(shí)消息從第一用戶的移動(dòng)設(shè)備發(fā)送到第二用戶的所述一個(gè)或多個(gè)移動(dòng)設(shè)備;及在第二用戶的移動(dòng)設(shè)備處利用一私鑰解密該即時(shí)消息。
24.如權(quán)利要求23所述的機(jī)器可讀介質(zhì),其中識(shí)別碼包括第二用戶的電子郵件地址。
25.如權(quán)利要求23所述的機(jī)器可讀介質(zhì),其中地址信息包括在網(wǎng)絡(luò)服務(wù)上唯一識(shí)別第二用戶的所述一個(gè)或多個(gè)移動(dòng)設(shè)備的令牌。
26.如權(quán)利要求23所述的機(jī)器可讀介質(zhì),其中發(fā)送進(jìn)一步包括:把加密的即時(shí)消息提供給第二移動(dòng)設(shè)備向其注冊(cè)的推送通知服務(wù),作為響應(yīng),該推送通知服務(wù)把加密的消息推送到第二移動(dòng)設(shè)備。
27.如權(quán)利要求23所述的機(jī)器可讀介質(zhì),其中確定進(jìn)一步包括:查詢注冊(cè)數(shù)據(jù)庫以確定第二用戶是否在網(wǎng)絡(luò)服務(wù)上注冊(cè),該注冊(cè)數(shù)據(jù)庫把第二用戶與一個(gè)或多個(gè)識(shí)別碼關(guān)聯(lián)。
28.如權(quán)利要求23所述的機(jī)器可讀介質(zhì),其中加密即時(shí)消息進(jìn)一步包括利用第二用戶的公鑰加密包括任何文字和/或附件的即時(shí)消息的內(nèi)容,并且利用第一用戶的私鑰簽署該內(nèi)容。
29.如權(quán)利要求17所述的機(jī)器可讀介質(zhì),其中第二用戶利用第二用戶的私鑰解密內(nèi)容并且利用第一用戶的公鑰驗(yàn)證簽名。
30.如權(quán)利要求29所述的機(jī)器可讀介質(zhì),其中第二用戶從網(wǎng)絡(luò)服務(wù)檢索第一用戶的公鑰。
31.如權(quán)利要求23所述的機(jī)器可讀介質(zhì),包括附加的程序代碼,使機(jī)器執(zhí)行以下附加操作:為第一用戶提供會(huì)話密鑰,該會(huì)話密鑰包括利用第一和第二用戶的識(shí)別碼及第一和第二用戶的網(wǎng)絡(luò)信息生成的簽名。
32.如權(quán)利要求31所述的機(jī)器可讀介質(zhì),包括附加的程序代碼,使機(jī)器執(zhí)行以下附加操作:把會(huì)話密鑰和即時(shí)消息發(fā)送到安全即時(shí)消息服務(wù);及利用會(huì)話密鑰驗(yàn)證第一和第二用戶的識(shí)別碼及第一和第二用戶的網(wǎng)絡(luò)信息。
33.如權(quán)利要求32所述的機(jī) 器可讀介質(zhì),其中驗(yàn)證包括在安全即時(shí)消息傳輸服務(wù)處重新生成簽名。
【文檔編號(hào)】H04L12/58GK103597783SQ201280027289
【公開日】2014年2月19日 申請(qǐng)日期:2012年5月31日 優(yōu)先權(quán)日:2011年6月3日
【發(fā)明者】A·A·梅迪納, A·H·威若斯, D·N·布洛, J·T·戴維, J·E·桑塔瑪利亞, J·N·伍德 申請(qǐng)人:蘋果公司