專利名稱:用于邀請用戶到在線會話的設備和方法
技術(shù)領(lǐng)域:
本發(fā)明總體涉及計算機網(wǎng)絡領(lǐng)域。更具體地,本發(fā)明涉及用于邀請計算裝置(如移動裝置)的用戶到在線通信會話(例如點對點會話)的改進裝置和方法。背景技本A.網(wǎng)絡地址轉(zhuǎn)換(“NAT,,)大型公共網(wǎng)絡,例如因特網(wǎng),經(jīng)常連接至小型私有網(wǎng)絡,例如那些由公司、網(wǎng)絡服務提供商、或者甚至個人家庭所持有的。由于其本身的性質(zhì),公共網(wǎng)絡必須具有一個普遍約定的網(wǎng)絡地址的分配,即公共地址。因為各種各樣的原因,私有網(wǎng)絡的持有者們經(jīng)常為所述私有網(wǎng)絡選擇使用私有網(wǎng)絡地址,這些地址不是普遍約定分配的一部分。因此,為了來自私有網(wǎng)絡的網(wǎng)絡傳輸能夠穿越公共網(wǎng)絡,需要一些私有/公共網(wǎng)絡地址轉(zhuǎn)換(“NAT”)方式。一個執(zhí)行NAT操作的設備將從私有網(wǎng)絡發(fā)出的數(shù)據(jù)包轉(zhuǎn)變成使之遵從公共網(wǎng)絡的尋址方案。特別地,網(wǎng)絡地址轉(zhuǎn)換器用它自己的公共地址和已分配的端口號來替換原先的私有地址和端口號。網(wǎng)絡地址轉(zhuǎn)換器還改變所接收的發(fā)往私有網(wǎng)絡上的計算機的數(shù)據(jù)包,采用預期接收者的正確的私有地址和端口號來替換目標公共地址和端口號。如此處所用的,如果在上下文中是適合的,術(shù)語“地址”應當解釋為包括地址和端口號,如同本領(lǐng)域技術(shù)人員所理解的。NAT已經(jīng)在現(xiàn)代網(wǎng)絡計算中變得更加普遍。NAT的一個好處就是它減緩了公共網(wǎng)絡地址空間的損耗。例如,在因特網(wǎng)上使用的TCP/IP尋址,每個包括四個三位的字符串,因此提供了有限的地址空間。另外,這個地址空間的特定部分為具體用戶或用戶保留,這進一步消耗了可用地址的實際數(shù)目。但是,如果采用NAT,私有網(wǎng)絡或者子網(wǎng)絡可以使用任意數(shù)目的地址,并且仍然僅僅對外提供一個單獨的、標準的公共地址。這使得可用地址的數(shù)目幾乎是無限的,因為理論上,每個私有網(wǎng)絡都完全可以使用相同的私有地址。由于公共網(wǎng)絡上的計算機不能確定私有網(wǎng)絡上的計算機的實際(即,私有的)網(wǎng)絡地址,因此由NAT所提供的一個好處是增加了安全性。這是因為網(wǎng)絡地址轉(zhuǎn)換器在公共網(wǎng)絡上只提供公共地址。另外,這個公共地址可以對應于私有網(wǎng)絡上的任意數(shù)目的計算機。不同的NAT類型采用不同的安全級別。例如,采用“全錐形(full cone) NAT", 一旦內(nèi)部地址(iAddr:iPort)映射到外部地址(eAddr:ePort),任意外部主機都可以通過向eAddr:eP0rt發(fā)送數(shù)據(jù)包而向iAddr:iP0rt發(fā)送數(shù)據(jù)包。采用“限制錐形NAT”,具有 hAddr地址的外部主機僅當iAddr:iPort之前曾向hAddr發(fā)送過數(shù)據(jù)包時才可以通過向eAddr:ePort發(fā)送數(shù)據(jù)包而向iAddr:iPort發(fā)送數(shù)據(jù)包。外部主機的端口是不相關(guān)的。采用“端口限制錐形NAT”,具有hAddr:hPort地址的外部主機僅當iAddr: iPort之前曾向 hAddrr hPort發(fā)送過數(shù)據(jù)包時才可以通過向eAddr ePort發(fā)送數(shù)據(jù)包而向iAddr iPort發(fā)送數(shù)據(jù)包。最后,采用對稱NAT,從同一 iAddr iPort到專門的目標IP地址和端口的每個請求被映射到唯一的eAddr:eP0rt。如果同一內(nèi)部主機發(fā)送數(shù)據(jù)包到不同的目的地,則使用不同的外部地址和端口映射。只有從內(nèi)部主機接收到數(shù)據(jù)包的外部主機才可以向內(nèi)部主機發(fā)送數(shù)據(jù)包。B.點對點網(wǎng)絡的NAT問題點對點(“P2P”)運算是指包括下述運算節(jié)點的分布式網(wǎng)絡結(jié)構(gòu)所述運算節(jié)點使得其部分資源對其他網(wǎng)絡參與者是直接可用的。P2P網(wǎng)絡中的節(jié)點(peer)彼此之間建立直接通信信道并同時 作為客戶端和服務器,與傳統(tǒng)的客戶機/服務器模型不同,在后者中, 服務器提供資源而客戶機消耗資源。前面所述的NAT操作給P2P連接造成了眾多問題。例如,當兩個節(jié)點中的一個或兩個節(jié)點位于前面所述的一個或多個NAT類型后面時,在這兩個節(jié)點之間建立直接連接變得越發(fā)困難。由于以下事實例如Apple iPod Touch ,Apple iPhone ,Apple iPad 以及各種其他設備(例如,RIMBlackberry 設備,Palmpre 設備等等)等移動設備會頻繁的在具有不同NAT實現(xiàn)方式的網(wǎng)絡之間移動,所以這個問題被加劇。例如,Apple iPhone 可以在Wi-Fi網(wǎng)絡(例如,802. lib, g,η網(wǎng)絡),3G網(wǎng)絡(例如,通用移動通信系統(tǒng)(“UMTS”) 網(wǎng)絡,高速上行分組接入(“HSUPA”)網(wǎng)絡,等等),以及藍牙網(wǎng)絡(被稱為個人區(qū)域網(wǎng)絡 (“PANs”))上通信。未來的移動設備可以在另外的通信信道例如WiMAX,高級國際移動通信“IMT”),以及高級長期演進(“LTE”)上通信,僅以這些為例。
發(fā)明內(nèi)容
本申請描述了用于建立點到點“P2P”通信通道的裝置、方法和機器可讀介質(zhì)。特別的,在一個實施例中,邀請服務執(zhí)行一系列事務以使得兩個或多個移動數(shù)據(jù)處理裝置之間能夠進行P2P通信。在嘗試建立P2P網(wǎng)絡通信通道之前,邀請服務可以首先為每個移動裝置收集網(wǎng)絡信息,并使用該網(wǎng)絡信息以確定直接的P2P網(wǎng)絡通信通道是否可行。如果直接連接是可行的,則邀請服務提供直接的P2P通信,將所需的網(wǎng)絡信息推送到每個移動裝置。 然而,如果直接連接不可行,或者如果嘗試過直接連接但是失敗,則邀請服務可以識別與中繼服務相關(guān)聯(lián)的網(wǎng)絡信息。該網(wǎng)絡信息可能隨后被任何一對移動裝置用來通過所述中繼服務建立連接。此外,在一個實施例中,邀請服務能夠在不需要為任一個移動裝置維護任何每個連接狀態(tài)的信息的情況下執(zhí)行它的功能。
根據(jù)下文結(jié)合附圖進行的詳細說明可以獲得對本發(fā)明的更好的了解,其中附圖1示出了網(wǎng)絡結(jié)構(gòu),其中,一組移動設備和服務在網(wǎng)絡上通信。附圖2a_c示出了一個實施方式的連接數(shù)據(jù)交換(⑶幻服務、匹配器服務和/或邀請服務之間的事務。附圖3示出了標簽數(shù)據(jù)結(jié)構(gòu)的實施方式。
附圖4示出了由⑶X服務執(zhí)行的方法的實施方式。 附圖5示出了由移動設備執(zhí)行的方法的實施方式。附圖6示出了通過主要和次要通信信道而連接的一組移動設備。附圖7示出了用于在主要和次要通信信道中進行選擇的移動設備的一個實施方式。附圖8a_b示出了通過主要和次要信道而連接的一組移動設備和所得的網(wǎng)絡拓撲。附圖9示出了用于在主要和次要通信信道之間進行選擇的、由計算機實現(xiàn)的方法的一種實施方式。附圖10示出了一種網(wǎng)絡架構(gòu),其中,一組移動設備和服務(包括目錄服務和推送通知服務)在網(wǎng)絡上通信。附圖11示出了一個實施方式中的邀請服務,推送通知服務以及連接數(shù)據(jù)交換 (CDX)服務之間的事務。附圖12示出了一個實施方式中的邀請服務,推送通知服務以及中繼服務之間的事務。附圖13示出了用于在兩個或更多移動設備之間建立中繼連接的中繼服務的實施方式。附圖14示出了用于確定NAT兼容性的NAT兼容性表的實施方式。附圖15示出了用于為在線應用匹配移動設備的匹配器服務的實施方式。附圖16示出了用于匹配用戶/設備的方法的實施方式。附圖17a_d示出了執(zhí)行用于匹配用戶/設備的一系列示例性表更新。附圖18示出了使用不同匹配適合變量來匹配用戶/設備的方法。附圖19示出了展示用于各種應用的應用程序接口(API)以及用于與一組服務通信的服務API的框圖。附圖20示出了具有用于應用的API、用于與服務通信的游戲后臺程序和游戲服務模塊的游戲框圖的實施方式。附圖21示出了 API實現(xiàn)軟件組件和API調(diào)用軟件組件的實施方式。附圖22示出了一個實施方式,其中在操作系統(tǒng),服務和應用之間進行API調(diào)用。附圖23示出了一個示例性計算機系統(tǒng)架構(gòu)的實施方式。附圖24示出了另一個示例性計算機系統(tǒng)架構(gòu)的實施方式。
具體實施例方式以下描述的是用于在網(wǎng)絡上建立,維持以及利用主要的和/或備份的點對點(“P2P”)通信信道的裝置、方法和機器可讀介質(zhì)。還描述了邀請服務和匹配器 (matchmaker)服務,分別用于為P2P會話邀請用戶和匹配用戶。另外,還描述了中繼服務, 用以允許用戶在特定條件下建立中繼連接。最后,描述了應用程序框架和相關(guān)聯(lián)的應用程序接口(API),用以允許應用開發(fā)者們設計應用,其可以利用在此描述的各種協(xié)作的在線特性的優(yōu)點。在整個說明書中,為了說明的目的,闡明了大量特別細節(jié)以便提供對本發(fā)明更全面的理解。但是,對本領(lǐng)域技術(shù)人員明了的是,本發(fā)明可以不依賴于所述特定細節(jié)而實施。 在其他情況下,眾所周知的結(jié)構(gòu)和設備未被示出或在方框圖中示出,以避免模糊本發(fā)明的基本原則。 用于有效且安全地交換連接數(shù)據(jù)的裝置和方法如附圖1中所示,在本發(fā)明的一個實施方式中實現(xiàn)的總體網(wǎng)絡拓撲結(jié)構(gòu)可以分別包括一組“客戶端”或“節(jié)點”移動計算設備A-D,120-123,它們在網(wǎng)絡120上相互通信并與一個或多個服務110-112通信。盡管附圖1中示出的顯示為一個單獨的網(wǎng)絡云,但“網(wǎng)絡” 120可以包括各種不同的組件,包括公共網(wǎng)絡,例如因特網(wǎng)以及私有網(wǎng)絡,例如Wi-Fi局域網(wǎng)(例如,802. Iln家庭無線網(wǎng)絡或者無線熱點),以太局域網(wǎng),蜂窩數(shù)據(jù)網(wǎng)(例如,3G, Edge,等等),以及WiMAX網(wǎng)絡,僅僅舉幾個例子。例如,移動設備A 120可以連接到網(wǎng)絡鏈路125代表的家庭Wi-Fi網(wǎng)絡,移動設備B 121可以連接到網(wǎng)絡鏈路126代表的3G網(wǎng)絡 (例如,通用移動通信系統(tǒng)(“UMTS”)網(wǎng)絡,高速上行分組接入(“HSUPA”),等等),移動設備C 122可以連接到網(wǎng)絡鏈路127代表的WiMAX網(wǎng)絡,以及移動設備D 123可以連接到網(wǎng)絡鏈路128代表的公共Wi-Fi網(wǎng)絡。這些移動設備120-123連接所基于的每個本地網(wǎng)絡鏈路125-128可以通過網(wǎng)關(guān)和/或NAT設備(未在附圖1中示出)耦合至公共網(wǎng)絡,例如因特網(wǎng),從而使得不同移動設備120-123之間能夠在公共網(wǎng)絡上通信。但是,如果兩個移動設備在相同的本地或私有網(wǎng)絡上(例如,相同的Wi-Fi網(wǎng)絡),則所述兩個設備可以直接通過那個本地/私有網(wǎng)絡進行通信,繞過公共網(wǎng)絡。需要指出的是,當然,本發(fā)明的基本原則并不限于任何特定網(wǎng)絡類型或網(wǎng)絡拓撲集合。在附圖1中示出的移動設備120-123的每一個可以與連接數(shù)據(jù)交換(connection data exchange, CDX)服務110、匹配器服務111以及邀請服務112進行通信。在一個實施方式中,這些服務110-112可以作為軟件在一個或多個實體運算設備(例如服務器)上執(zhí)行。如附圖1中所示的,在一個實施方式中,服務110-112可以在由同一實體(例如,同一數(shù)據(jù)服務提供商)管理的更大的數(shù)據(jù)服務100的背景下執(zhí)行,并且可以被移動設備120-123 中的每一個通過網(wǎng)絡120訪問。數(shù)據(jù)服務100可以包括連接各種類型服務器和數(shù)據(jù)庫的局域網(wǎng)(例如,基于以太網(wǎng)的LAN)。數(shù)據(jù)服務100還可以包括一個或多個用于存儲數(shù)據(jù)的存儲區(qū)域網(wǎng)絡(“SAN”)。在一個實施方式中,這些數(shù)據(jù)庫存儲和管理與移動設備120-123中的每一個有關(guān)并與其他設備的用戶有關(guān)的數(shù)據(jù)(例如,用戶賬戶數(shù)據(jù)、設備賬戶數(shù)據(jù)、用戶應用數(shù)據(jù),等等)。在一個實施方式中,匹配器服務111可以基于一組指定的條件來使兩個或更多個移動設備相匹配以進行協(xié)作(collaborative)P2P會話。例如,兩個或更多個移動設備的用戶可能對玩特定的多玩家游戲感興趣。在這種情況下,匹配器服務111可以基于一些變量 (例如各個玩家的專業(yè)水平、各個玩家的年齡、匹配請求的時間、被請求匹配的特定游戲、以及根據(jù)具體游戲而不同的各種變量)來識別一組參與該游戲的移動設備。例如但不限于, 匹配器服務111可以在進行特定游戲時嘗試匹配具有相似專業(yè)水平的用戶。另外,成年人可以與其他成年人匹配,而兒童可以與其他兒童匹配。此外,匹配器服務111還可以基于接收到各個用戶請求的順序來給這些請求賦予優(yōu)先度。本發(fā)明的基本原則并不限于任何特定的一組匹配準則或者P2P應用的任何特定類型。如下所詳細描述的,響應于匹配請求,匹配器服務111可以與⑶X服務110協(xié)作,以確保所有匹配的參與者都能以有效且安全的方式接收用于建立P2P會話的必要連接數(shù)據(jù)。在一個實施方式中,邀請服務112也對加入?yún)f(xié)作P2P會話的移動設備進行識別。但是,在邀請服務112的情形下,參與者中的至少一個會被另一個參與者專門識別。例如,移動設備A 120的用戶可以專門請求與移動設備B 121的用戶的協(xié)作會話(例如,利用用戶 ID或電話號碼識別移動設備B)。對于匹配器服務111,響應于邀請請求,邀請服務112可以識別這組參與者并且與⑶X服務110協(xié)作,以確保所有參與者都能以有效且安全的方式接收用于建立P2P會話的必要連接數(shù)據(jù)。
如同上面所提到的,在一個實施方式中,⑶X服務110可以對于用于在兩個或更多個移動設備之間建立P2P會話所需的連接數(shù)據(jù)作為中心交換點。特別地,響應于移動設備請求,CDX服務的一種實施方式生成NAT穿越(traversal)數(shù)據(jù)(有時被稱為“穿孔”數(shù)據(jù)),以使外部服務和客戶端能夠通過每個移動設備的NAT進行通信(即,經(jīng)過NAT “穿孔” 以到達該設備)。例如,在一個實施方式中,⑶X服務檢測與移動設備通信所需的外部IP地址和端口并且向移動設備提供這些信息。在一個實施方式中,⑶X服務也接收和處理由匹配器服務111和邀請服務112所生成的移動設備的列表,并向包含在列表中的每個移動設備有效和安全地分布連接數(shù)據(jù)(如以下的詳細描述)。在一個實施方式中,通過采用相對輕量級的網(wǎng)絡協(xié)議(例如用戶數(shù)據(jù)報協(xié)議 (UDP))套接字,在移動設備和⑶X服務110之間進行通信。如本領(lǐng)域技術(shù)人員所知曉的, UDP套接字連接不需要握手對話來保證分組(packet)的可靠性、排序或者數(shù)據(jù)完整性,因此不會像TCP套接字連接那樣消耗那么多的分組處理開銷。因此,對于回答來自大量客戶端的小詢問(query)的服務器來說,UDP的輕量級、無狀態(tài)的性質(zhì)是有用的。此外,不同于 TCP,UDP與分組廣播(其中,分組在本地網(wǎng)絡上被發(fā)送給所有設備)和多播(multicast,其中,分組在本地網(wǎng)絡上被發(fā)送給設備的子集)兼容。如上所述,即使可以采用UDP,也可以利用會話密鑰對NAT穿越數(shù)據(jù)進行加密以在CDX服務110上保持安全性。與CDX服務110采用的低開銷和輕量級網(wǎng)絡協(xié)議不同,在一個實施方式中,移動設備120-123與匹配器服務111以及/或者邀請服務112之間的通信以固有的安全網(wǎng)絡協(xié)議建立,例如安全超文本傳輸協(xié)議(“HTTPS”),其依賴于加密套接字協(xié)議層(“SSL”)或者傳輸層安全(“TLS”)連接。與這些協(xié)議相關(guān)的細節(jié)對本領(lǐng)域技術(shù)人員來說的是熟知的。附圖2a示出了可以由CDX服務器執(zhí)行的示例性系列事務。當描述CDX服務的實施方式的操作時,下列術(shù)語具有以下含義連接數(shù)據(jù)——這是潛在的節(jié)點需要與其他節(jié)點交換以建立點對點會話的信息。以下描述的是交換該信息的機制的實施方式。⑶X服務器——在一個實施方式中,CDX服務器是經(jīng)認證的多播反射器,其允許經(jīng)授權(quán)的實體交換任意數(shù)據(jù)。該數(shù)據(jù)被稱為有效載荷(payload)。⑶X會話——⑶X會話是指一組可以通過⑶X服務器而互相通信的客戶端設備。 作為會話一部分的每一個客戶端設備被分配⑶X標簽(ticket)。每個會話具有唯一的⑶X 會話ID,該ID是大的整數(shù),可以用來識別或者指代單獨的會話。⑶X請求——從客戶端設備發(fā)送至⑶X服務器的請求。請求一般包括兩部分⑶X 標簽和有效載荷。在這個實施方式中,有效載荷是由會話密鑰加密過的連接數(shù)據(jù)。
⑶X響應— —⑶X響應是在⑶X服務器接收到來自⑶X會話的成員的⑶X請求時, 被“反射”回CDX會話中其他設備的信息。它是通過將有效載荷添加到在給定的CDX請求中使用的CDX標簽的CDX標簽票根(stub)來構(gòu)造的。⑶X標簽——⑶X標簽告訴CDX服務器如何將有效載荷發(fā)送至⑶X會話的成員。 在一個實施方式中,采用⑶X標簽密鑰來對其進行“簽名”以防止偽造或篡改。如附圖3所示,在一個實施方式中,CDX標簽包括如下信息會話ID301,其在一個實施方式中不被加密或者被打亂。會話中的參與者數(shù)目302,其在一個實施方式中不被加密或者被打亂。在會話中標簽所指的參與者的索引303 (其在一個實施方式中不被加密或者被打亂)。過期時間/日期304,在此之后,標簽被認為是無效的(其在一個實施方式中不被加密或者被打亂)。對于會話中每個參與者的⑶X穿孔數(shù)據(jù)305-306,在一個實施方式中受到用⑶X標簽密鑰進行的加密。采用⑶X標簽密鑰的消息認證碼307,其作為“數(shù)字簽名”來確保標簽是經(jīng)過認證的。⑶X標簽票根——⑶X標簽的第一部分,減去了⑶X穿孔數(shù)據(jù)以及消息認證碼。有效載荷——這是CDX請求和CDX響應的第二部分。有效載荷是指客戶端設備在 CDX會話中期望與其他設備進行通信的數(shù)據(jù)。在這個實施方式中,有效載荷是利用會話密鑰加密過的連接數(shù)據(jù)。在一個實施方式中,CDX服務器不對有效載荷進行解密,而只是讓其無改變的通過。會話密鑰——這是客戶端用來對連接數(shù)據(jù)進行加密的密鑰。在一個實施方式中, 該密鑰對CDX服務器而言是未知的。在這個實施方式中,會話密鑰由匹配器服務生成,并且連同客戶端各自的CDX標簽發(fā)送給這些客戶端。⑶X標簽密鑰——這是用于創(chuàng)建⑶X標簽并對其進行“簽名”的密鑰。只有⑶X服務器和生成CDX標簽的服務知曉CDX標簽密鑰,如下所述,該服務可以是匹配器服務和/或邀請服務。⑶X穿孔請求——用于從⑶X服務器獲得⑶X穿孔數(shù)據(jù)的專門類型的⑶X請求。⑶X穿孔數(shù)據(jù)——這是一種不透明的數(shù)據(jù)斑,它描述了⑶X服務器如何向最初請求它的客戶端發(fā)送信息。它是通過向CDX服務器發(fā)送CDX穿孔請求獲得的。CDX穿孔數(shù)據(jù)必須在能夠生成CDX標簽之前從CDX會話中的各個客戶端設備收集。CDX穿孔數(shù)據(jù)(有時稱為“NAT穿越數(shù)據(jù)”)可以包括請求設備的公共IP地址和端口。現(xiàn)在轉(zhuǎn)向附圖2a,在一個實施方式中,移動設備A 120和移動設備B 121可以執(zhí)行協(xié)作應用,例如多玩家游戲或者協(xié)作聊天會話,這些應用需要與一個或多個其他計算設備的P2P連接。在201a,移動設備A 120向⑶X服務器110傳送⑶X穿孔請求。⑶X服務器在202a用CDX穿孔數(shù)據(jù)作出響應。在一個實施方式中,穿孔數(shù)據(jù)包括移動設備A的公共 IP地址和端口以及/或者穿孔通過移動設備A的NAT所需的任何其他數(shù)據(jù)(例如,定義了移動設備A的NAT類型的NAT類型數(shù)據(jù))。在201b和202b分別對移動設備B執(zhí)行類似的事務。
然后,在203a和203b,移動設備A和B向匹配器服務發(fā)送包括⑶X穿孔數(shù)據(jù)的匹配請求,以及任何附加的匹配準則(在下面描述)。在該階段,移動設備A和B可以開始構(gòu)建建立P2P連接所需要的連接數(shù)據(jù)。例如,這可以通過使用諸如標準的網(wǎng)絡連接建立(“ICE”) 事務(例如,通過NAT穿越服務)的事務來實現(xiàn)。但是,本發(fā)明的根本原則不限于用于確定連接數(shù)據(jù)的任何特定機制。在一個實施方式中,一旦匹配器服務111發(fā)現(xiàn)具有匹配的準則的一組客戶端設備,它就會生成唯一的CDX會話ID、對于CDX會話中的每個成員而言唯一的CDX標簽、以及唯一的會話密鑰。在一個實施方式中,匹配器服務111可以使用唯一的⑶X標簽密鑰為⑶X 標簽加密⑶X穿孔數(shù)據(jù)。然后,在204a和204b,匹配器服務可以向移動 設備A和B發(fā)送它們的CDX標簽和會話密鑰。移動設備A接收CDX標簽和會話密鑰并且使用會話密鑰加密它先前確定的連接數(shù)據(jù),制作有效載荷。在一個實施方式中,移動設備A通過將構(gòu)建的有效載荷附加到CDX標簽來構(gòu)建⑶X請求。在205a,移動設備A發(fā)送⑶X請求至⑶X服務器110。移動設備B在 205b也執(zhí)行相同的操作并發(fā)送請求至CDX服務器。在206a,⑶X服務器110接收⑶X請求,檢查標簽以確保它是有效的和有授權(quán)的 (例如,基于消息認證碼307)。如果CDX標簽是無效的,就丟棄所述請求。在一個實施方式中,⑶X服務器然后使用⑶X標簽密鑰對包含在⑶X標簽中的⑶X穿孔數(shù)據(jù)組進行解密。在一個實施方式中,CDX標簽密鑰可以包括可以與所述標簽一起傳輸?shù)慕K止時間/日期。CDX 服務110以及匹配器服務111可以存儲兩個(或多個)不同的用于加密/解密的CDX標簽密鑰-第一個是當前已經(jīng)激活的以及第二個是在到達第一個的終止時間/日期時將被激活的。一旦接收到標簽,CDX服務110就可以讀取終止時間/日期來確定使用哪個標簽密鑰。 當⑶X標簽密鑰過期時,⑶X服務110和匹配器服務111中的每個都可以生成新的標簽密鑰 (其是在當前標簽密鑰過期后作為接下來使用的密鑰)。在一個實施方式中,CDX服務110 和匹配器服務111執(zhí)行相同的密鑰生成算法以保證與兩個標簽密鑰的一致性。例如,諸如那些用于眾所周知的RSA SecurID認證機制的技術(shù)可用于在固定間隔生成新的認證碼。在一個實施方式中,新的CDX標簽密鑰是按日生成的。但是,本發(fā)明的根本原則并不限于任何用于生成⑶X標簽密鑰的具體機制。如在206B所示,可以為移動設備B執(zhí)行相同的操作。⑶X服務器可以從⑶X請求構(gòu)建⑶X響應并且使用⑶X穿孔數(shù)據(jù)發(fā)送⑶X響應至⑶X會話中的參與者(在207a發(fā)送至移動設備B以及在207b發(fā)送至移動設備A)。移動設備B從⑶X服務器接收⑶X響應207a??蛻舳嗽O備B檢查⑶X標簽票根以確保會話ID可以匹配它自己的CDX標簽的會話ID。移動設備B然后可以使用會話密鑰解密有效載荷,以生成來自移動設備A的連接數(shù)據(jù)。移動設備B然后使用來自移動設備A的連接數(shù)據(jù)開始建立P2P會話的進程。在一個實施方式中,這些包括標準ICE事務。但是,本發(fā)明的根本原則并不限于任何用于建立P2P通信的具體機制。如上所述,在一個實施方式中,移動設備A和B建立安全超文本傳輸協(xié)議 (“HTTPS”)會話與匹配器服務111進行通信(例如,采用HTTPS請求/響應事務)并且建立UDP套接字與⑶X服務進行通信。匹配請求204a,204b可以包括NAT類型以及先前為每個各自的移動設備確定的穿孔數(shù)據(jù)(例如,公共IP地址和端口)。在包括多玩家游戲的實施方式中,每個匹配請求可以識別在每個移動設備上的玩家(例如,使用唯一的玩家ID碼), 每個用戶期望玩的游戲,加入游戲的玩家的數(shù)目,以及/或者其他與期望游戲相關(guān)的變量設置。通過舉例的方式,而不是限制,與游戲相關(guān)的游戲設置變量可以包括難度級別(例如,簡單,普通,困難),用戶的年齡(例如,“小于13歲”),游戲的子區(qū)域(例如,第2級), 以及/或者玩家的專業(yè)水平(例如,專家,初始,中級)。如下詳細描述的,這些變量有時作為游戲“桶(bucket)”并且通過使用唯一的“桶ID”來進行標識。每個游戲可以包括不同的桶ID集合來識別不同游戲設置變量。 在一個實施方式中,移動設備B在208a和209a發(fā)送和應答(acknowledgement)。 相似的,移動設備A的應答在208b和209b被發(fā)送。如果移動設備A和B的應答在指定的時間段之后還未接收到,則該連接數(shù)據(jù)207a可以被重新發(fā)送至移動設備B 212。CDX服務 110或移動設備A 120都可以啟動該重傳。附圖2b示出了更詳細的例子,其中,三個不同的移動設備120-122使用⑶X服務和匹配器服務111來協(xié)商P2P鏈路。附圖2b還示出了由移動設備120-122用來建立連接的兩個另外的服務用于確定NAT類型的NAT穿越服務291,和用于為每個移動設備確定完整連接數(shù)據(jù)的NAT穿越服務290 (例如,利用ICE連接數(shù)據(jù)事務)。但是應當注意,不一定要通過彼此分開的服務來遵守本發(fā)明的根本原則。例如,在一個替代的實施方式中,由這些服務290-291的每一個所執(zhí)行的NAT穿越功能可以直接集成在⑶X服務110和/或匹配器服務111中。類似的,由兩個NAT穿越服務290-291所執(zhí)行的功能可以集成在一個NAT穿越服務中。在附圖2b中示出的分立的具體功能并非本發(fā)明的根本原則所必需的。現(xiàn)在轉(zhuǎn)向附圖2b的具體細節(jié),在220,移動設備A向NAT穿越服務291發(fā)送NAT類型請求。作為響應,NAT穿越服務291可以采用包括實現(xiàn)一系列事務的各種已知技術(shù)來確定由移動設備A使用的NAT類型。例如,NAT穿越服務291可以嘗試打開移動設備A的NAT 上的不同的IP地址和端口,并通過這些端口使用不同的IP/端口組合與移動設備A進行通信。按這種方式,由移動設備A采用的NAT可以分類為前面描述的NAT類型中的一種(例如,全錐形、限制錐形、端口限制錐形、對稱),或者可選的NAT類型。該信息然后被提供給移動設備A 120,如圖所示。在221,移動設備A 120使用⑶X服務110啟動NAT穿越請求。作為響應,⑶X服務110可以讀取用于該請求的公共IP地址和公共端口號并且將這個信息發(fā)送回移動設備 A 120。如上所述,如果設備在NAT后面,它的公共端口和IP地址將分別不同于它的私有端口和IP地址。因此,依賴于所采用的NAT類型,公共IP地址和端口可以用于“穿孔”通過 NAT設備,以到達移動設備。在222,移動設備A 120向匹配器服務111發(fā)送匹配請求222。如上所述,在一個實施方式中,移動設備A使用安全超文本傳輸協(xié)議(“HTTPS”)會話與匹配器服務111通信 (例如,使用HTTPS請求/響應事務)。匹配請求可以包括NAT類型和先前針對移動設備A 120確定的穿孔數(shù)據(jù)(例如,公共IP地址和端口)。在涉及多玩家游戲的實施方式中,匹配請求可以識別移動設備上的玩家(例如,使用唯一的玩家ID碼)、這些用戶希望玩的游戲、 加入游戲的玩家的數(shù)目、以及/或者其他與所需游戲相關(guān)的設置變量(如上參照附圖2a所描述的)。在223-225,為移動設備B 121執(zhí)行一組與事務220-222相關(guān)的事務;在226-228,為移動設備C 122執(zhí)行一組與事務220-222相關(guān)的事務。因此,在事務228之后,匹配器服務111已經(jīng)為全部三個移動設備120-122接收了匹配請求。在這個具體的例子中,這些匹配請求使得移動設備120-122匹配于特定的協(xié)作會話,例如多玩家游戲(例如,這些移動設備的用戶可能已經(jīng)選擇了具有相同或相似的變量集合的相同游戲,從而導致由匹配器服務 111執(zhí)行的匹配)。匹配器服務111使用包括在每個匹配請求中的數(shù)據(jù)來生成標簽A、標簽B、標簽C, 標簽A在229被發(fā)送至移動設備A ;標簽B在230被發(fā)送至移動設備B ;標簽C在231被發(fā)送至移動設備C。盡管未在附圖2b中示出,但匹配器服務111可以利用推送通知服務來分別向移動設備A、B和C推送標簽A、B和C (例如,附圖11-12中示出的推送通知服務1050)。 用于標簽A、B和C的標簽數(shù)據(jù)結(jié)構(gòu)的實施方式在上面參照附圖3進行描述。
在232,移動設備120與NAT穿越服務290通信以確定它自己的連接數(shù)據(jù)。在一個實施方式中,這可以包括標準ICE連接數(shù)據(jù)事務。如先前已經(jīng)提到的,連接數(shù)據(jù)可以包括用于移動設備A 120的公共/私有IP地址、端口和NAT類型。移動設備A 120將它的連接數(shù)據(jù)附加到標簽A,并在233將標簽A連同連接數(shù)據(jù)發(fā)送至⑶X服務110。在一個實施方式中,⑶X服務按照上面所描述的方式處理標簽A,并在 234將連接數(shù)據(jù)(可以被加密)發(fā)送至移動設備B 121和移動設備C 122。對于這些事務, ⑶X服務110可以利用標簽A所包括的針對移動設備B和C的NAT穿越數(shù)據(jù)。在236-238,利用標簽B執(zhí)行一組與事務232-234相關(guān)的事務,在238-240,利用標簽C執(zhí)行一組與事務232-234相關(guān)的事務。因此,在事務240之后,連接數(shù)據(jù)已經(jīng)在每個移動設備120-122之間共享。通過使用連接數(shù)據(jù),P2P會話在移動設備A和B之間、移動設備 A和C之間、以及移動設備B和C之間建立。如附圖2c所示出的,邀請服務112也可以用于⑶X服務110 (既可以代替也可以增加到匹配器服務111)。在一個實施方式中,邀請服務112處理針對具有具體移動設備和 /或用戶的P2P連接的邀請請求。邀請服務112可以作為無狀態(tài)的服務來實現(xiàn)(S卩,不固定每個移動設備之間當前事務狀態(tài)的服務)。轉(zhuǎn)向這個具體的例子,在250,移動設備A 120向NAT穿越服務291發(fā)送NAT類型請求。作為響應,NAT穿越服務291可以使用各種已知的技術(shù)用于確定由移動設備A采用的NAT類型(其中的一些已在上面描述)。在251,移動設備A 120使用⑶X服務110發(fā)起 NAT穿越請求。作為響應,⑶X服務110可以讀取用于該請求的公共IP地址和公共端口號并且將該信息發(fā)送回移動設備A 120。如上所述,如果設備在NAT后面,它的公共端口和IP 地址將分別不同于它的私有端口和IP地址。因此,取決于所采用的NAT類型,公共IP地址和端口可以用于穿孔通過NAT設備以到達移動設備。與匹配器服務的情況一樣,在一個實施方式中,每個移動設備使用安全超文本傳輸協(xié)議(“HTTPS”)會話與匹配器服務112進行通信(例如,使用HTTPS請求/響應事務)。在252,移動設備A 120向邀請服務112發(fā)送邀請請求,其包括移動設備A的NAT 穿越數(shù)據(jù)(例如,NAT類型、公共IP地址/端口)。在利用推送通知服務的實施方式中(在下面更詳細的描述),邀請請求還可以包括移動設備A的推送令牌。邀請請求252還可以包括用于識別一個或多個其他用戶/設備的識別碼——在這種情況下是移動設備B 121和C 122的用戶??梢允褂酶鞣N不同的識別碼類型。例如,在多玩家游戲的情形下,識別碼可以包括針對具體游戲的玩家ID碼。在音頻/視頻聊天會話情形下,識別碼可以包括電話號碼或唯一 ID,該ID用于識別移動設備A的用戶的“朋友”列表中的一個或多個用戶。在一個實施方式中,邀請服務112從邀請請求中讀取識別碼,并在注冊數(shù)據(jù)庫(未示出)中執(zhí)行查找以定位每個移動設備B和C。在一個具體實施方式
中,每個移動設備B和 C已經(jīng)在推送服務中注冊,以從邀請服務112接收推送通知。這樣,在這個實施方式中,邀請服務112使用推送通知服務分別在253和254將邀請請求推送至移動設備B 121和移動設備C 122。與推送通知服務相關(guān)的其他細節(jié)在下面(參見,例如,附圖11-12以及說明書相關(guān)部分)以及在上面所提到的推送通知應用中描述。 在一個實施方式中,邀請請求253和254包括圖3中示出的以及上述參考附圖 2a-b描述的標簽數(shù)據(jù)結(jié)構(gòu)。特別地,發(fā)送至移動設備B的標簽包括用于識別移動設備A和 B的已加密列表,發(fā)送至移動設備C的標簽包括用于識別移動設備A和C的已加密列表。在一個實施方式中,因為邀請服務112可能還沒有移動設備B的NAT穿越數(shù)據(jù),253處的“標簽”可以包括用以識別移動設備B的其他信息。例如,如下文結(jié)合利用了中繼服務和推送通知服務(參見,例如,附圖11-12)的實施方式所述,253處的“標簽”可以包括用于移動設備 A的NAT穿越數(shù)據(jù)、設備A的ID碼、設備A的推送令牌、設備B的ID碼以及用于移動設備B 的推送令牌。相同類型的信息可以在254為移動設備A和C提供。在255,移動設備B可以與NAT穿越服務291通信以確定它的NAT類型,在256,移動設備B可以與⑶X服務110通信以確定它的NAT穿越數(shù)據(jù)(例如,公共IP地址/端口)。 在257,移動設備B向邀請服務112發(fā)送邀請響應,其包含移動設備A和移動設備B的識別碼、NAT穿越數(shù)據(jù)、以及(如果采用推送通知服務的話)用于移動設備A和B的推送令牌。 在258,移動設備B可以通過與NAT穿越服務290通信來獲取它的當前連接數(shù)據(jù)。在259, 移動設備B將它的標簽(標簽B)連同它的當前連接數(shù)據(jù)發(fā)送給CDX服務110。作為響應, ⑶X服務110按照上面所述的方式處理該標簽并將連接數(shù)據(jù)轉(zhuǎn)發(fā)至移動設備A120。一旦接收到移動設備B的邀請響應,邀請服務112就可以生成用于移動設備A的加密標簽并且在260將標簽發(fā)送至移動設備A。在一個實施方式中,標簽包括NAT穿越數(shù)據(jù)、NAT類型以及用于移動設備A和B的推送令牌(如果采用了推送通知服務的話)。參照附圖2c描述的“標簽”與用于所描述的關(guān)于匹配器服務111的“標簽”的數(shù)據(jù)結(jié)構(gòu)可以相同或不同。例如,與上面描述的生成加密的“標簽”不同,邀請服務112可以簡單地生成唯一的會話ID以識別每個移動設備的邀請會話。在261,移動設備A通過與NAT穿越服務290通信獲取它當前的連接數(shù)據(jù)。移動設備A然后可以將它的連接數(shù)據(jù)添加到標簽,并在262將標簽以及它的連接數(shù)據(jù)發(fā)送至CDX 服務110。⑶X服務110按照上面所述的方式處理該標簽并且將移動設備A的連接數(shù)據(jù)轉(zhuǎn)發(fā)至移動設備B。最后,在263,移動設備A和B使用所交換的連接數(shù)據(jù)打開P2P連接。如下所述的,在移動設備A和B的NAT類型不相容的情況下,可以使用中繼服務來實現(xiàn)移動設備A和B之間的通信。在264-272,移動設備C 122與移動設備A可以執(zhí)行一系列事務來建立P2P連接, 如同在255-263中描述移動設備B和A那樣。特別的,在264,移動設備C 122與NAT穿越服務291通信以確定它的NAT類型,并在265與⑶X服務110通信以確定它的NAT穿越數(shù)據(jù)(例如,公共IP地址/端口)。在266,移動設備C發(fā)送邀請響應,其包含移動設備C以及移動設備A的NAT類型、NAT穿越數(shù)據(jù)和推送令牌(如果采用了推送通知服務)。在267, 移動設備C通過NAT穿越P2P服務290獲取它的當前連接數(shù)據(jù),在268,移動設備C將它的連接數(shù)據(jù)附加到標簽C并且將標簽C發(fā)送至⑶X服務110。⑶X服務110按照上面所述的方式處理該標簽并且將移動設備C的連接數(shù)據(jù)轉(zhuǎn)發(fā)至移動設備A120。
在269,移動設備A 120從邀請服務112處接收移動設備C的邀請響應,其包括移動設備A和C的NAT類型、NAT穿越數(shù)據(jù)以及推送令牌(如果采用了推送服務)。在270, 移動設備A從NAT穿越服務290獲取它的當前連接數(shù)據(jù),將它的當前連接數(shù)據(jù)附加到標簽 A,并在271將標簽A發(fā)送至⑶X服務110。作為一種選擇,可能不需要事務270,因為移動設備在事務261確定它的連接數(shù)據(jù)。⑶X服務110按照上面所述的方式處理標簽A并將移動設備A的連接數(shù)據(jù)轉(zhuǎn)發(fā)至移動設備C。最后,在272,移動設備A和C使用交換過的連接數(shù)據(jù)建立直接的P2P連接272.在一個實施方式中,邀請服務112和匹配器服務111可以依賴于推送通知服務 (未示出)用于向移動設備推送數(shù)據(jù)。例如,在附圖2c,邀請請求253和254可以通過該推送通知服務推送至移動設備B 121和C 122。類似的,在附圖2a,標簽A和B可以推送至移動設備A 120和B 121。在一個實施方式中,當移動設備在網(wǎng)絡上被激活時,它會將它的推送令牌注冊在可由推送通知服務訪問的中心注冊目錄中。在一個實施方式中,該注冊目錄把受到密碼保護的用戶ID或者電話號碼與推送令牌相關(guān)聯(lián)。如果推送令牌可以在目錄中識別,則推送通知服務可以使用推送令牌將通知推送至移動設備。在一個實施方式中, 推送通知服務是由本申請的受讓人設計、并例如在上文涉及的推送通知服務中進行描述的 Apple推送通知服務(“APNS”)。但是應當注意,圖2a_c中示出的本發(fā)明的實施方式并不必需推送通知服務。例如,CDX服務并不需要推送通知來執(zhí)行它的操作,如同在此描述的。附圖4示出了一種方法,可以由⑶X服務110執(zhí)行以交換連接數(shù)據(jù);附圖5示出了一種方法,可由移動設備執(zhí)行以交換連接數(shù)據(jù)并建立P2P連接。這些方法的某些方面已經(jīng)在上面參考附圖l_2c進行了描述。尤其是,這些方法可以在圖l_2c示出的網(wǎng)絡結(jié)構(gòu)的環(huán)境中執(zhí)行,但是它們并不限制于這樣的結(jié)構(gòu)。在一個實施方式中,這些方法以程序代碼的形式來實現(xiàn),當其被處理器執(zhí)行時,可以導致這些方法的操作被執(zhí)行。當所述程序代碼被處理器運行時,其可以存儲在例如隨機存儲器(“RAM”)的計算機可讀介質(zhì)上。處理器可以是通用處理器(例如,Intel Core 處理器)或者專用處理器。但是,這些方法也可以通過使用硬件、軟件以及固件的任意組合來執(zhí)行。另外,程序代碼可以存儲在例如硬盤驅(qū)動器、光盤 (例如,數(shù)字視頻盤或者緊致盤)的非易失性存儲設備,或者例如閃存設備的非易失性存儲器上?,F(xiàn)在轉(zhuǎn)向在附圖4中示出的方法,在401,接收針對特別的移動設備——在這個例子中是“移動設備A”——的NAT穿越請求(有時被稱作“穿孔”請求)。在402,生成NAT 穿越響應并發(fā)送至移動設備Α。在一個實施方式中,生成NAT穿越響應可以包括確定移動設備A的當前的公共IP地址/端口和/或NAT類型。隨后可以生成用于移動設備A的標簽并且通過標簽生成實體(例如上面所描述的匹配器服務111或者邀請服務112)來加密。在403,接收為移動設備A生成的標簽(“標簽A”),其包括NAT穿越數(shù)據(jù)(用于設備A和一個或多個其他設備)和用于設備A的連接數(shù)據(jù)。在404,采用信息認證碼對該標簽進行認證,并且采用與標簽產(chǎn)生實體用來對標簽進行加密相同的CDX標簽 密鑰對穿孔數(shù)據(jù)進行解密。如上所提到的,在一個實施方式中,采用與CDX標簽密鑰相關(guān)聯(lián)的過期時間/日期來識別正確的CDX標簽密鑰。在405,提取用于移動設備的NAT穿越數(shù)據(jù)。在406,使用NAT穿越數(shù)據(jù)將用于移動設備A的連接數(shù)據(jù)發(fā)送至每個節(jié)點。在407,接收來自每個節(jié)點的回執(zhí)。在408如果確定沒有從全部節(jié)點接收到回執(zhí),就在409將移動設備A的連接數(shù)據(jù)重發(fā)至尚未響應的節(jié)點。 當所有的連接數(shù)據(jù)都得到回執(zhí)時,在408中確定,所述方法終止。在一個實施方式中,可以為包含在P2P事務中的每個節(jié)點執(zhí)行附圖4中示出的方法,以確保接收到連接數(shù)據(jù)的每個節(jié)點都需要建立P2P連接。附圖5示出了可以根據(jù)本發(fā)明的實施方式由移動設備執(zhí)行的一種方法。在501,發(fā)送NAT穿越請求,在502,接收NAT穿越響應。如上所述,包含在響應中的NAT穿越數(shù)據(jù)可以包括請求設備的公共端口/IP地址。在503,發(fā)送包含NAT穿越數(shù)據(jù)的匹配請求。隨后可以生成用于移動設備的標簽并且通過例如上面所描述的匹配器服務111或者邀請服務112的標簽生成實體來加密。作為對上述標簽數(shù)據(jù)結(jié)構(gòu)的可選方式,匹配器服務111和/或邀請服務112可以利用唯一的會話ID簡單地識別每個參與者。在504,可以接收到標簽;在505,用于移動設備的連接數(shù)據(jù)被附加至標簽;并且在 506,發(fā)送標簽和連接數(shù)據(jù)。在507,接收與一個或多個其他節(jié)點建立P2P連接所需的連接數(shù)據(jù)。在508,接收表明一個或多個其他節(jié)點已經(jīng)接收到在506發(fā)送的連接數(shù)據(jù)的回執(zhí)。在 510,如果沒有接收到全部回執(zhí),則將連接數(shù)據(jù)重發(fā)至未從其接收到回執(zhí)的移動設備。如果在509確定接收到全部回執(zhí),則在507接收的連接數(shù)據(jù)被用于與其他移動設備建立P2P會話。用于建立和利用備份通信信道的裝置和方法目前的移動設備可以在各種不同的通信信道上通信。例如,Apple iPhone 可以在Wi-Fi網(wǎng)絡(例如,802. lib, g,η網(wǎng)絡)、3G網(wǎng)絡(例如,通用移動通信系統(tǒng)(“UMTS”) 網(wǎng)絡,高速上行分組接入(“HSUPA”)網(wǎng)絡,等等)以及藍牙網(wǎng)絡(被稱為個人區(qū)域網(wǎng)絡 (“PAN”))上通信;未來的移動設備可以在其他的通信信道(例如WiMAX,高級國際移動通信“IMT”),以及高級長期演進(“LTE”))上通信,僅以這些為例。在操作中,現(xiàn)有的移動設備從一組可用的信道中選擇一個主要(primary)通信信道。例如,如果有可用的Wi-Fi連接,則移動設備通常被配置為選擇Wi-Fi連接;如果Wi-Fi是不可用的,則選擇蜂窩數(shù)據(jù)連接(例如,UTMS連接)。在本發(fā)明的一個實施方式中,一組移動設備采用前述的標準ICE連接數(shù)據(jù)交換和 /或使用連接數(shù)據(jù)交換技術(shù)來首先建立主要點對點(“P2P”)通信信道。移動設備然后可以在該主要信道上交換連接數(shù)據(jù)以建立一個或多個次要通信信道,如果任何一個主要信道發(fā)生故障時,所述次要通信信道被用作備份信道。在一個實施方式中,通過周期性的在這些信道上發(fā)送“心跳(heartbeat),,分組,使次要通信信道通過NAT防火墻保持開放。如在此使用的,通信“信道”指的是兩個移動設備之間的全網(wǎng)絡路徑,通信“鏈路” 指的是在通信路徑中采用的一個具體連接。例如,如果移動設備A采用Wi-Fi連接連接至因特網(wǎng),設備B采用3G連接連接至因特網(wǎng),則設備A和設備B之間的“信道”是由Wi-Fi鏈路和3G鏈路二者限定的;設備A具有Wi-Fi通信“鏈路”,設備B具有3G通信“鏈路”。這樣,如果設備A從Wi-Fi鏈路切換至3G鏈路,則設備A和設備B之間的“信道”就改變了,盡管事實上設備B的3G鏈路仍然保持不變。現(xiàn)在參照附圖6描述移動設備建立主要和次要通信信道的具體示例。但是應當指出,本發(fā)明的根本原則并不限于在附圖6中示出的特定通信鏈路和通信信道的集合。在附圖6中,移動設備A 601能夠通過具有NAT設備611的通信鏈路605和具有 NAT設備612的通信鏈路606連接至網(wǎng)絡610 (例如,因特網(wǎng))。類似的,移動設備C 603能夠通過具有NAT設備613的通信鏈路609和具有NAT設備614的通信鏈路610連接至網(wǎng)絡 610。僅作為示例而不是限制,通信鏈路605和609可以是3G通信鏈路,通信鏈路606和 610可以是Wi-Fi通信鏈路。因此,在這個例子中,在移動設備A和移動設備B之間可以建立四個不同的通信信道第一信道使用鏈路605和609 ;第二信道使用鏈路605和610 ;第三信道使用鏈路606 和609 ;第四信 道使用鏈路606和610。在一個實施方式中,移動設備A和B基于優(yōu)先方案選擇這些信道中的一個作為主要通信信道,并將三個剩下的信道選擇為備份通信信道。例如,一個優(yōu)先方案可以是選擇具有最大帶寬的信道作為主要信道并使用剩余信道作為次要信道。如果兩個或更多個信道具有相同的帶寬,則該優(yōu)先方案可以包括選擇具便宜的信道 (假定用戶付費使用一個或多個信道)??蛇x地,該優(yōu)先方案也可以是選擇最便宜的信道作為主要信道,并且如果每個信道的花費是相同的,則選擇具有最大帶寬的信道。在滿足本發(fā)明的根本原則的同時,可以實現(xiàn)各種不同的優(yōu)先方案。移動設備A 601和C 603可以使用上述技術(shù)來建立主要通信信道(例如,通過借助CDX服務110交換連接數(shù)據(jù))??蛇x地,移動設備601和603可以執(zhí)行標準網(wǎng)絡連接建立 (“ICE”)事務來交換連接數(shù)據(jù)。不管主要信道是如何建立的,一旦建立,移動設備A 601 和C 603就可以在主要通信信道上為次要通信信道交換連接數(shù)據(jù)。例如,如果在附圖6中示出的主要通信信道包括通信鏈路606和通信連路609,則該鏈路在建立后可以被用來為包括通信鏈路605和609的次要通信信道交換連接數(shù)據(jù)。在這個例子中,在主要通信信道上交換的連接數(shù)據(jù)可以包括用于NAT 611和NAT 613的NAT穿越數(shù)據(jù)和NAT類型,包括用于每個移動設備的公共和私有IP地址/端口。在次要通信信道已被建立后,采用心跳分組來使它們保持開放。例如,設備A可以周期性的向設備C發(fā)送小的“心跳”分組,以及/或者設備A可以周期性的向設備C發(fā)送小的“心跳”分組,以確保用于次要信道的NAT端口保持開放(NAT經(jīng)常由于休眠(inactivity) 而關(guān)閉端口)。心跳分組可以是沒有有效載荷的UDP分組,但本發(fā)明的根本原則并不限于任何具體的分組格式。心跳分組可以是在它們的有效載荷報頭具有自我識別類型字段的UDP分組,并且可以包含可選擇的附加格式信息,該信息包括但不限于信道的存活時間 (time-to-live)值。如附圖7中示出的,每個移動設備601存儲并維護數(shù)據(jù)結(jié)構(gòu)710 (例如,表格,文本文件,數(shù)據(jù)庫,等等),該數(shù)據(jù)結(jié)構(gòu)包括主要和次要通信信道的列表。給每個通信信道提供單獨的條目,該條目包括利用那個信道所需要的連接數(shù)據(jù)(例如,私有/公開IP地址,NAT類型等等),以及那個信道的當前狀態(tài)(例如,主要,次要1,次要2,等等)。在一個實施方式中,通信接口 701和702被用于分別通過通信鏈路605和通信鏈路606進行通信。故障檢測模塊705可以在移動設備601上執(zhí)行,以檢測何時特定通信接口 /鏈路發(fā)生了故障或者已經(jīng)衰落到指定閾值以下。作為響應,鏈路管理模塊706可以讀取主要/次要連接數(shù)據(jù)710,以將具有最高優(yōu)先級的次要信道提升為主要信道。次要信道的優(yōu)先度可以采用與上述用于主要信道的相同的準則來實現(xiàn)(例如,基于帶寬、成本、可靠性,等等)。一旦選擇了次要信道,鏈路管理模塊706可以向其他移動設備上的鏈路管理模塊發(fā)送鏈路故障指示,指令那些設備將該次要通信信道提升為主要通信信道。那些設備然后會開始使用與所選擇的主要信道相關(guān)聯(lián)的連接數(shù)據(jù)。在一個實施方式中,并不需要主要通信信道發(fā)生徹底的“故障”才強制切換至次要通信信道。例如,在一個實施方式中,如果主要通信信道足夠衰落(例如,低于特定的帶寬、 比特率或者可靠性閾值),則可以如上所述實現(xiàn)切換至次要信道。在一個實施方式中,切換至次要信道僅在次要信道能夠支持比當前的主要信道更好的性能(例如,帶寬、比特率或可靠性)時才被執(zhí)行。附圖8a示出了與在附圖6中示出的相同的網(wǎng)絡配置,所增加的移動設備B602直接連接至網(wǎng)絡610并通過私有網(wǎng)絡連接620而連接至移動設備C 603。私有網(wǎng)絡620例如可以是介于設備B 602和設備C 603之間的藍牙PAN鏈路。從這個例子中可以看到,從主要信道切換至次要信道可以顯著地改變網(wǎng)絡拓撲。例如,如同在附圖8b中示出的,如果用于移動設備的主要信道801包括鏈路609 (導致設備A、B和C之間的直接連接),并且次要信道包括私有網(wǎng)絡620,則網(wǎng)絡拓撲可以改變?yōu)槿绺綀D8c所示出的,因為設備A和C使用私有網(wǎng)絡通信的唯一 方式是通過設備B。盡管這只是具有三個設備的簡單例子,但也可以使用數(shù)目多得多的設備,當在主要和次要通信信道之間切換時會導致各種不同的網(wǎng)絡拓撲結(jié)構(gòu)。在附圖8中示出了用于建立和保持次要信道的方法的一個實施方式。在一個實施方式中,該方法可以由各個移動設備上的鏈路管理模塊706來執(zhí)行。但是,該方法并不限于任何特定的設備配置。在901,選擇主要P2P通信信道。如上所述,主要信道可以基于預定的優(yōu)先方案來選擇。例如,某些通信信道類型可以優(yōu)先于其他通信信道類型。信道也可以基于變量(例如帶寬、使用成本和/或可靠性)而有優(yōu)先度。在902,建立備份P2P通信信道。在一個實施方式中,這是通過經(jīng)過主要通信信道而在所有移動設備之間共享連接數(shù)據(jù)來實現(xiàn)的。在903,備份信道被保持。在一個實施方式中,這包括周期性的通過該次要信道傳輸數(shù)據(jù)(例如,以周期性心跳分組的形式)。在904,如果主要P2P信道發(fā)生故障(例如,由于特定移動設備的通信鏈路掉線或者該移動設備離開該通信鏈路的范圍),則在905,這些移動設備將具有最高優(yōu)先級的備份信道提升為主要信道。在一個實施方式中,這包括由具有故障鏈路的移動設備在次要信道上將它的鏈路故障的通知發(fā)送到其他設備。最后,在906,使該備份信道成為主要信道,處理過程回到902(其中,任何附加的備份信道可以被發(fā)現(xiàn)并添加至所述優(yōu)先方案)。邀請服務用于建立點對點(P2P)通信信道的裝置和方法如附圖10所示,除了⑶X服務110,匹配器服務111和邀請服務112 (它們的一些實施方式如上所述),本發(fā)明的一個實施方式可以包括注冊/目錄服務1052、推送通知服務 1050以及中繼服務1051。如上面所提到的,在一個實施方式中,邀請服務112和/或匹配器服務111可以使用注冊/目錄服務1052識別經(jīng)注冊的移動設備并使用推送通知服務1050 向這些移動設備推送數(shù)據(jù)。在一個實施方式中,當移動設備在網(wǎng)絡上被激活時,它將“推送令牌”(在推送通知服務中有時稱為“通知服務賬戶標識符”)對由注冊/目錄服務1052維護的數(shù)據(jù)庫進行注冊,這是通過將推送令牌關(guān)聯(lián)于受到密碼保護的用戶ID或者電話號碼來實現(xiàn)的。如果推送令牌在注冊目錄中被識別(例如,通過利用用戶ID執(zhí)行詢問),則推送通知服務1050可以使用推送令牌將推送通知發(fā)送到移動設備。在一個實施方式中,推送通知服務是由本申請的受讓人設計、并例如在上面所涉及的推送通知應用中進行了描述的 Apple推送通知服務(“APNS”)。附圖11示出了本發(fā)明的一個實施方式,其中,推送通知服務1051被用于在兩個移動設備之間建立直接P2P連接,附圖12示出了通過中繼服務1051建立P2P連接的實施方式。如下文所述,對于是否使用中繼服務1051來建立P2P連接的決定可以基于在這些移動設備之間建立直接P2P連接的可行性(例如,基于NAT兼容性問題)?,F(xiàn)在轉(zhuǎn)向附圖11,在1101,移動設備A 120發(fā)送邀請給移動設備B 121,來邀請移動設備B到P2P通信會話(例如,協(xié)作視頻游戲、P2P視頻聊天等)。在一個實施方式中,該邀請包括用戶ID碼,該用戶ID碼在特定在線應用的環(huán)境中識別移動設備B 121 (和/或移動設備B的用戶)。例如,用戶ID碼可以是用于特定的多玩家P2P游戲的玩家ID,并可以采用例如 通用唯一標識符(UUID)的形式??蛇x地,在一些實施方式中,ID碼可以是移動設備B 121的電話號碼。游戲ID碼可用于對移動設備A邀請移動設備B加入的多玩家游戲進行識別。桶ID可用于識別用于那個游戲的配置(如本申請中針對匹配器服務所述)。邀請1101還可以包括用于識別移動設備A 120的ID碼和關(guān)聯(lián)于移動設備A的 NAT穿越/連接數(shù)據(jù)(例如,用于移動設備A的公共/私有IP地址和端口,以及用于設備A 的NAT設備的NAT類型)。NAT穿越/連接數(shù)據(jù)或者NAT類型可以由移動設備A在邀請請求1101之前已經(jīng)確定(例如,通過NAT穿越、NAT類型以及連接數(shù)據(jù)事務,例如上面參照附圖2a-c所描述的)。如上所述,邀請請求1101可以采取HTTPS請求的形式。另外,為了更高的安全性,邀請請求1101可以包括由預先指定的認證授權(quán)方(authority)簽名的客戶端認證。不管用于識別移動設備B的ID碼的特定類型如何,ID碼由邀請服務112接收,在 1102,邀請服務112可以在目錄服務1052(未在附圖11中示出)中執(zhí)行查找以識別出通知服務賬戶標識符,該標識符例如用于向移動設備B推送通知的推送令牌(“推送令牌B”)。 在一個實施方式中,查找操作可以執(zhí)行幾個檢查以確定該邀請是否應當被允許。首先,它可以確定用于設備A的識別碼(“ID-Α”)和設備A的推送令牌(推送令牌A)在目錄服務數(shù)據(jù)庫中是已注冊的關(guān)聯(lián)關(guān)系。查找操作1102還可以確認移動設備A的用戶被允許邀請移動設備B的用戶(例如,移動設備B的用戶可以指定只有注冊為B的朋友的那些其他用戶才能邀請B ;或者,也可以指定任何邀請都是不允許的)。在一個實施方式中,如果這些檢查中的任一者失敗,則邀請被取消,邀請服務112向移動設備A返回錯誤。雖然在這個實施方式中描述了“推送令牌”,但應當注意,本發(fā)明的根本原則并不限于使用“推送令牌”或者其他任何用于認證和向移動設備推送通知的特定數(shù)據(jù)結(jié)構(gòu)。在一個實施方式中,在推送令牌被識別之后,邀請服務112可以生成安全的一次性“會話令牌”,該令牌被賦予該邀請會話并用于在全部的進一步事務中標識該會話。該會話令牌的拷貝然后被發(fā)送回移動設備A 120并與該邀請請求一起發(fā)送至移動設備B。在一個實施方式中,該會話令牌與前面所述的標簽數(shù)據(jù)結(jié)構(gòu)一起使用,而在另一個實施方式中,只使用會話令牌。 在1103,邀請服務112向推送通知服務1050發(fā)送推送請求。在一個實施方式中, 推送請求可以包括用于移動設備A的NAT穿越數(shù)據(jù)、設備A的ID碼、推送令牌A、設備B的 ID碼以及推送令牌B。在一個實施方式中,這些信息可以被封裝在“標簽”數(shù)據(jù)結(jié)構(gòu)中并且如上所述受到加密。在另一實施方式中,數(shù)據(jù)簡單地與邀請會話ID—起被發(fā)送。因為這個例子中的移動設備B 121已經(jīng)對推送通知服務1050進行了注冊,在 1104,推送通知服務1050能夠定位并向移動設備B 121推送邀請請求。所推送的邀請1104 可以包括會話令牌、移動設備A的NAT穿越數(shù)據(jù)/連接數(shù)據(jù)、移動設備B的ID碼。響應于該邀請請求,移動設備B可以通過如上所述對NAT穿越服務或者CDX服務110進行調(diào)用來確定它的網(wǎng)絡信息(例如NAT穿越/連接數(shù)據(jù)、NAT類型等)。在1105,移動設備B接受該邀請。接受(1105)可以采用對邀請服務112的HTTPS 調(diào)用的形式,并可以包括由預先指定的認證授權(quán)方簽名的客戶端認證(上文涉及邀請請求時提及)。在一個實施方式中,接受(1105)可以包括用于移動設備A和B的ID碼,以及用于移動設備A和B的NAT穿越/連接數(shù)據(jù)和/或NAT類型。接受(1105)還可以包括用于移動設備A和B的推送令牌和/或會話令牌。在一個實施方式中,接受(1105)還可以包含這樣的指示即關(guān)于它是否是來自此前發(fā)生故障的直接連接嘗試的重試。但是,在另一個實施方式中,接受(1105)不包括該重試指示。而是,在檢測到發(fā)生故障的P2P連接嘗試時,兩個移動設備中的一個可以發(fā)送專門的“中繼邀請”至邀請服務112。作為響應,該服務可以直接發(fā)起下文參照附圖12 (開始于1201)描述的一系列中繼事務。在1106,邀請服務112可以執(zhí)行兼容性檢查,以確定移動設備A和B之間的直接 P2P連接是否可行。例如,在一個實施方式中,如果從移動設備B接收的接受(1105)表明它是來自此前發(fā)生故障的直接連接嘗試(或者來自指定數(shù)目個此前發(fā)生故障的直接連接嘗試)的重試,則邀請服務可以得出結(jié)論直接P2P連接是不可行的。邀請服務112可以比較用于移動設備A和B的NAT類型數(shù)據(jù),以確定移動設備A和B的NAT設備是否支持直接P2P 連接。已知一些NAT類型的組合對建立P2P連接是不兼容的。例如,全錐形NAT可以用來與除了關(guān)閉的/帶防火墻的NAT之外的其他任何NAT類型建立直接P2P連接。相比之下, 對稱NAT只能用來與全錐形NAT建立直接P2P連接。在本發(fā)明的一個實施方式中組合各種 NAT類型的可行性在附圖14中示出的NAT兼容性表格1400中闡明,其中,各列代表一個移動設備(例如,移動設備A)的NAT類型,各行代表另一個移動設備(例如,移動設備B)的 NAT類型。單元中的“1.0”表示相關(guān)聯(lián)的行和列的NAT類型是兼容的,“0.0”表示這些NAT 類型是不兼容的。在一個實施方式中,如果兼容性檢查1106確定直接P2P連接是不可行的,則邀請服務112可以發(fā)送中繼查找請求1201,如下面參照附圖12所述的。但是如果兼容性檢查 1106確定直接P2P連接是可行的,則邀請服務112可以發(fā)送推送請求1107到推送通知服務 1050,該請求包含了移動設備B對移動設備A的請求的接受。推送請求1107以及隨后從推送通知服務1050到移動設備A的推送通信1108可以包括會話令牌以及兩個移動設備A和 B的推送令牌、ID碼和/或NAT穿越/連接數(shù)據(jù)。在一個實施方式中,該信息可以封裝在上述(參見,例如附圖2a_c以及說明書相關(guān)部分)的“標簽”數(shù)據(jù)結(jié)構(gòu)中,并可以采用唯一的密鑰進行加密。可選地,該信息也可以簡單地與唯一的邀請會話ID—起被發(fā)送。邀請服務1050還可以通知移動設備B 將要嘗試直接連接。在 這個階段,移動設備A和B具有足夠的信息來建立直接P2P連接。在一個實施方式中,這是通過采用上面所述的CDX服務110來實現(xiàn)的。例如,移動設備B將它的連接數(shù)據(jù)附加到標簽B,并在1109將標簽B (與連接數(shù)據(jù))發(fā)送至⑶X服務。在即將進行該項事務之前,移動設備B可以實現(xiàn)事務(例如圖2b中示出的事務235)以確保它的連接數(shù)據(jù)是當前的。CDX服務110然后對標簽進行認證(例如,采用如上所述的唯一會話密鑰),提取移動設備B的連接數(shù)據(jù),并且在1110將該連接數(shù)據(jù)轉(zhuǎn)發(fā)至移動設備A。類似的,移動設備A 將它的連接數(shù)據(jù)附加到標簽A,并在1111將標簽A (與連接數(shù)據(jù))發(fā)送至CDX服務110。在即將進行該項事務之前,移動設備A可以執(zhí)行事務(例如圖2b中示出的事務232)以確保它的連接數(shù)據(jù)是當前的。CDX服務110然后對標簽進行認證(例如,采用如上所述的唯一會話密鑰),提取移動設備A的連接數(shù)據(jù),并且在1112將該連接數(shù)據(jù)轉(zhuǎn)發(fā)至移動設備B。最后,在1113,移動設備A和B采用所交換的連接數(shù)據(jù)進入直接P2P連接。現(xiàn)在轉(zhuǎn)向附圖12,如果兼容性檢查1106確定直接P2P連接是不可行的,則邀請服務112可以向中繼服務1051發(fā)送中繼查找請求1201,以確定要由各個移動設備使用的中繼主機。該請求1201可以包含用于移動設備A和B的網(wǎng)絡信息(例如,NAT穿越/連接數(shù)據(jù)和/或NAT類型數(shù)據(jù)),該信息由中繼服務1051用來給兩個移動設備選擇合適的中繼主機。如附圖13中示出的,中繼服務1051的一個實施方式包括多個中繼主機1302-1303,并包括中繼主機數(shù)據(jù)庫1301,該數(shù)據(jù)庫包含有與這些中繼主機中每一者有關(guān)的網(wǎng)絡信息。邀請服務112向中繼查找服務1300發(fā)送中繼查找請求1201,所述請求使用用于移動設備A和 B的網(wǎng)絡信息詢問中繼主機數(shù)據(jù)庫1301。在接收到數(shù)據(jù)庫結(jié)果時,中繼查找服務1300提供響應1202,該響應標識了所選擇的中繼主機1302-1303。在一個實施方式中,中繼查找響應1202包含由中繼服務生成的中繼令牌,以及要由移動設備A和B用于中繼連接的中繼主機1302-1303的網(wǎng)絡地址(IP地址端口)。在一個實施方式中,中繼令牌與中繼會話相關(guān)聯(lián),并且由中繼主機1302-1303用于在連接到中繼服務1051時對移動設備A和B進行認證。令牌可以采取各種形式,這些形式例如包括 唯一的ID中繼會話ID碼、數(shù)字證書和/或與中繼會話相關(guān)聯(lián)的唯一加密密鑰。在1203,邀請服務向移動設備B 121發(fā)送中繼響應1203,其包含將要建立中繼連接的指示。在一個實施方式中,中繼響應1203可以包括用于中繼主機B1303的中繼令牌和網(wǎng)絡信息。在一個實施方式中,響應1203可以直接被發(fā)送至移動設備B(繞開推送通知服務1050),因為它將響應于對移動設備B的接受(1105)而被發(fā)送。邀請服務112向移動設備A發(fā)送中繼響應1204,其可以包括用于中繼主機B 1303 的中繼令牌和網(wǎng)絡信息。在該情形中,該響應1204在事務1205被通過推送通知服務1050 推送至移動設備A。在1206,移動設備A 120使用用于中繼主機A 1302的網(wǎng)絡信息建立與中繼服務 1051的連接。類似地,在1207,移動設備B 121使用用于中繼主機B 1303的網(wǎng)絡信息建立與中繼服務1051的連接。在這些事務中的每一個中,在移動設備A和B的任何NAT防火墻上打開了新的孔,用于移動設備A和B的NAT穿越/連接數(shù)據(jù)可以由中繼服務1051確定并分別返回移動設備A和B(例如,通過確定用于這些設備的公共IP/端口)。在一個實施方式中,中繼服務1051和移動設備A和B實現(xiàn)采用中繼的NAT穿越(Traversal Using RelayNAT/‘TURN”)協(xié)議,如本領(lǐng)域技術(shù)人員所知,該協(xié)議允許位于NAT或者防火墻后面的要素通過TCP或者UDP連接而接收到來的數(shù)據(jù)。在1208,移動設備A向邀請服務112發(fā)送中繼更新,該中繼更新在1209被轉(zhuǎn)發(fā)至推送通知服務并在1210被推送至移動設備B。類似的,在1211,移動設備B向邀請服務112 發(fā)送中繼更新,該更新在1212被轉(zhuǎn)發(fā)至推送通知服務并在1213被推送至移動設備A。由移動設備A發(fā)送的中繼更新可以包括會話令牌、每個設備的ID碼、由1206和1207的中繼確定的NAT穿越/連接數(shù)據(jù)(即,移動設備A向移動設備B發(fā)送它的NAT穿越/連接數(shù)據(jù),反之亦然)。在一個實施方式中,執(zhí)行中繼更新操作是因為每個移動設備的NAT信息可能改變。最后,在1214和1215,移動設備A和B分別通過中繼服務1051建立P2P連接。在一個實施方式中,當移動設備A向中繼服務1051發(fā)送移動設備B的NAT穿越/連接數(shù)據(jù)時,中繼連接被建立,反之亦然,從而允許中繼服務確定至每個節(jié)點的中繼主機1302-1303 的正確路徑。通過使用前述的技術(shù),邀請服務112可以作為無狀態(tài)服務來實現(xiàn),無狀態(tài)服務即使在具有大量移動設備的大規(guī)模系統(tǒng)中也具有固有的可伸縮性和彈性。例如,由于推送通知服務1050固有地能夠?qū)ψ缘囊苿釉O備進行定位并向其推送內(nèi)容,邀請服務不需要跟蹤每個設備的當前位置。另外,由于設備可以通過每個請求和響應發(fā)送全部會話狀態(tài)數(shù)據(jù), 所以邀請服務不需要維護任何每個連接(per-cor mection)狀態(tài)信息,從而降低了邀請服務的存儲和處理需求。這樣的實現(xiàn)方式在大規(guī)模系統(tǒng)中是特別有用的。用于為在線會話匹配用戶的系統(tǒng)和方法如附圖15中所示的,一種實施方式的匹配器服務111可以包括匹配調(diào)度器 1501,用于接收匹配請求和向移動設備120-122推送匹配響應;數(shù)據(jù)庫1512,用于在請求表格1502存儲匹配請求以及在可匹配設置標識符(“MSI”)表格1503中存儲可匹配設置數(shù)據(jù);一個或多個匹配器1510,用于從數(shù)據(jù)庫1512取得匹配請求、執(zhí)行匹配操作并將匹配結(jié)果存儲回數(shù)據(jù)庫1512。但是應當注意,本發(fā)明的根本原則并不限于如附圖15示出的具體結(jié)構(gòu)。在一個實施方式中,匹配調(diào)度器1501作為至匹配器服務111的接口,從移動設備 120-122接收請求,將這些請求翻譯成命令以把這些請求存儲在數(shù)據(jù)庫1512中,從數(shù)據(jù)庫 1512讀取匹配結(jié)果,并將這些結(jié)果翻譯并傳送給移動設備120-122。在操作中,當新的匹配請求到達時,匹配調(diào)度器1501可以在請求表1502的一行中存儲該請求。在一個實施方式中,調(diào)度器1501向每個匹配請求分配請求ID (“RID”)碼,該碼在圖15中簡單的表示為“A”,“B”和“C”(分別對應移動設備A,B和C)。盡管為了簡單起見而在圖15中采用字母指示方式,但RID碼也可以是字符串、整數(shù)或者任何其他可用于在數(shù)據(jù)庫中追蹤匹配請求的變量類型。每個匹配請求可以被分配存儲在請求表格1502中的可匹配設置標識符(“MSI”) 值。在一個實施方式中,MSI可以識別匹配所請求的具體應用和/或用于那個應用的配置參數(shù)。例如,12:4的MSI值可以用標識符“12”來標識特定的多玩家游戲,并可以用標識符 “4”來標識用于該游戲的具體配置。更特別的,該ID碼12可以識別特定的多玩家競速游戲, ID碼4可以指定用于該競速游戲的具體軌道、速度或者玩家經(jīng)驗等級。在一個實施方式中,應用的開發(fā)者可以選用以這種方式使用MSI值來指定任何應用配置參數(shù)。在一個實施方式中,應用開發(fā)者不是直接指定MSI,而是指定游戲ID(用于識別特定的游戲)和桶ID(用于識別特定的游戲配置),并且由匹配調(diào)度器1501把這些值映射到MSI。另外,可以在單獨的MSI中使用一些不同的MSI值來指定多個不同的配置參數(shù) (例如,12:4:1可以表示12 =競速游戲;4 =軌道;1 =經(jīng)驗等級)。如下所詳細描述的, 在一個實施方式中,由匹配器1510使用每個MSI來識別一組匹配請求,其中可以執(zhí)行匹配操作(例如,分組是基于MSI對請求進行分組,每個MSI組中執(zhí)行匹配)。在一個實施方式中,由調(diào)度器可以動態(tài)的更改/選擇每個MSI以包括用于識別不同機器分區(qū)的分區(qū)ID。例如,如果特定的MSI過載,則調(diào)度器可以將MSI分割在兩個或更多個不同服務器和/或存儲分區(qū)之間(例如,使用例如4:3:1和4:3:2的指示,其中最后一位數(shù)分別識別分區(qū)1和2)。 不同的匹配器接著獨立的獲取和處理來自每個不同MSI的請求,該MSI來自每個不同的服務器。如附圖15中示出的,匹配請求數(shù)據(jù)還可以存儲在用于每個請求的請求表1502中。 請求數(shù)據(jù)可以包括任何可用于提供匹配器決定的數(shù)據(jù)以及/或者任何訪問移動設備通過網(wǎng)絡發(fā)起請求所需要的數(shù)據(jù)。例如,在一個實施方式中,用于每個請求的匹配請求數(shù)據(jù)包括用于移動設備發(fā)起請求的NAT類型數(shù)據(jù)和/或NAT穿越/連接數(shù)據(jù)。請求數(shù)據(jù)的其他類型也可以被存儲在請求表 1502中,例如設備連接速度(lOOkbpsUMbps等等)、連接類型(例如3G、EDGE、WIFI等等)、設備位置(例如可由地理定位技術(shù)確定)、語言(英語、西班牙語等等)和/或用戶喜好。請求數(shù)據(jù)可以由每個移動設備120-122確定并連同每個匹配請求一塊發(fā)送至匹配調(diào)度器1501。例如,每個移動設備可以采用各種技術(shù)確定它的連接數(shù)據(jù)、 連接類型、設備位置等等,其中一些技術(shù)在本申請中進行了描述(例如,與NAT穿越服務器通信以確定NAT穿越/連接數(shù)據(jù)、使用GPS來確定設備位置、讀取HTTP信息以確定語言等
寸J ο如附圖15中示出的,在一個實施方式中,每個激活的MSI可以在MSI表1503中被分配一行。在一個實施方式中,當新的請求到達時,除了將該請求添加至請求表1502,調(diào)度器1501還檢查MSI表1503以確定針對該請求是否已有MSI存在(即,是否已經(jīng)接收了具有相同MSI的其他請求)。如果未發(fā)現(xiàn)匹配的MSI,則調(diào)度器1501可以在MSI表1503中為該新的請求創(chuàng)建新的條目。如果發(fā)現(xiàn)匹配的MSI,則調(diào)度器可以如上所述簡單地將該新的請求添加至請求表1502中。一旦請求表1502和MSI表1503由匹配調(diào)度器1501更新,匹配器模塊1510 (以下簡稱為“匹配器1510”)的實例獲取數(shù)據(jù)以執(zhí)行匹配操作。多個匹配器實例可以被同時執(zhí)行以執(zhí)行匹配請求,也可以由一個匹配器1510對多個不同的MSI分組同時處理多個匹配操作。在一個實施方式中,當匹配器1510可用時(例如,在完成用于MSI組的匹配操作之后或者在初始化之后),它詢問MSI表1503以識別新的MSI來處理。在附圖15,匹配器 ID區(qū)域中對于MSI 3:1的“N/A”值表示處理該MSI的責任尚未分配給匹配器。在一個實施方式中,每個MSI條目都有時間戳,匹配器1510選擇具有最早時間戳的MSI。在一個實施方式中,當匹配器1510對特定的MSI承擔責任時,它在MSI表1503中更新其匹配器ID碼,并指定用于該MSI的出租(lease)期限(例如,5秒)。在一個實施方式中,匹配器1510隨著它 處理用于該MSI的匹配而持續(xù)更新出租期限值。出租期限值可用于對分配給發(fā)生故障的匹配器1510的MSI進行識別。例如,如果出租期限已經(jīng)過期,則即使MSI表1503表明MSI已被分配給匹配器,該MSI也可以被新的匹配器要求。一旦匹配器1510對MSI已經(jīng)承擔責任,它可以詢問請求表1502來將與該MSI相關(guān)的請求讀入存儲器。然后匹配器1510可以根據(jù)一組匹配準則(例如,如下所述的)來執(zhí)行匹配操作以將用戶和移動設備匹配。匹配器1510可以更新請求表1512以指示匹配移動設備何時已經(jīng)進行。例如,匹配器可以在請求表1512的列中移除MSI值,并輸入預定的值以指示匹配已經(jīng)完成。另外,匹配器1510可以為每個參與者更新“請求數(shù)據(jù)”字段以識別與該參與者匹配的其他參與者(例如,通過寫入與其他參與者通信所需的NAT穿越/連接數(shù)據(jù))。調(diào)度器1501可以周期性的詢問請求表1502以識別完成的匹配。作為對檢測到已完成匹配的響應,該調(diào)度器1501可以發(fā)送推送通知到參與到該匹配的移動設備(采用在此描述的推送通知技術(shù)和在共同再審的那些申請中的推送通知技術(shù))。在一個實施方式中,推送通知包括上述的“標簽”數(shù)據(jù)結(jié)構(gòu)。該移動設備然后可以如上所述通過CDX服務110使用它們的每個標簽來交換連接數(shù)據(jù)。除了使用推送通知,在一個實施方式中,移動設備120-122可以周期性的詢問調(diào)度器1501以確定是否已經(jīng)進行匹配。周期性的詢問在推送通知還沒有被送達移動設備的情況下是非常有用的。但是,因為使用了推送結(jié)構(gòu),周期性的詢問可以設置為相對較低的速率,因此可以降低匹配服務111上的負載。附圖16示出了一個方法的典型實施方式,其中兩個移動設備A和B由匹配服務 111匹配。附圖17a-d示出了對請求表1502以及MSI表1503的示例性更新,這可能隨著該方法的前進而發(fā)生。在1601,從移動設備A接收匹配請求。在1602,移動設備A的請求被輸入請求表, 新的MSI條目(MSI 1:1)被輸入MSI表(如果尚未存在該條目),如附圖17a中所示。在 1603,從移動設備B接收匹配請求,在1604,移動設備B的匹配請求如附圖17b所示也被輸入請求表。在1605,一個具體的匹配器實例(匹配器#N)檢查MSI表并檢測到MSI 1:1尚未被另一個匹配器實例所要求??蛇x地,匹配器可以檢測租期已過的MSI表的條目,表明此前在該MSI上工作的匹配器已經(jīng)故障了。在一個實施方式中,具有租期已過的MSI條目被給予比新的MSI條目(尚未被分配給匹配器)更高的優(yōu)先級。另外,在一個實施方式中,相對較早的MSI條目可以被給予比相對較新的MSI條目更高的優(yōu)先級。不管匹配器如何選擇MSI, 當它選擇后,它會添加它的標識符并為MSI條目設定新的租期值,如附圖17c中所示的(例如,在示出的例子中采用5秒的租期值)。匹配器然后可以詢問請求表并將具有那個MSI的請求表條目讀入存儲器,以便可以對它們進行處理。在1606,匹配器執(zhí)行一系列匹配操作來為每個請求選擇合適的匹配。匹配操作的某些實施方式在下面參照附圖18進行描述。簡言之,在一個實施方式中,為了確定“合適的”匹配而受到估計的變量包括NAT類型(例如全錐形、端口限制的、對稱的等等)、連接類型(例如WIFI、3G、Edge等等)、與用戶相關(guān)聯(lián)的語言(得自HTTP請求的 accept-language (接受語言)頭部)、每個匹配請求的時效(age)。一般的,匹配器1510可以嘗試匹配具有可兼容的NAT類型(盡管如下所述有時可以使用中繼服務)、相同連接類型以及相同語言的移動設備。在一個實施方式中,對基于匹配請求時效的匹配請求,匹配器 1510可能是更自由的(即,請求越早,要應用的匹配約束就越自由)。轉(zhuǎn)回附圖16,在1607,在匹配決定之后,匹配器1510可以更新請求表以表明匹配已經(jīng)完成,如附圖17d所示。作為更新的一部分,匹配器還可以更新用于移動設備A和B的請求數(shù)據(jù)。例如,在一個實施方式中,匹配器1510在用于移動設備A的請求數(shù)據(jù)列中寫入移動設備B的NAT穿越/連接數(shù)據(jù)并在用于移動設備B的請求數(shù)據(jù)列中寫入移動設備A的 NAT穿越/連接數(shù)據(jù)。在1608,調(diào)度器1501可以從頭到尾的讀取請求表以識別已經(jīng)被匹配的請求條目。 在一個實施方式中,當其檢測到移動設備A和B已經(jīng)被匹配,就讀取請求數(shù)據(jù)(如上所述由匹配器更新),并生成用于移動設備A和B的通知。在一個實施方式中,所述通知是上面所述的“標簽”數(shù)據(jù)結(jié)構(gòu),其被加密且包括用于每個移動設備的NAT穿越/連接數(shù)據(jù)。如前所述,在一個實施方式中,使用推送通知服務1050向移動設備A和B推送通知。另外,移動設備A和B可以周期性的輪詢(poll)調(diào)度器1501以確定是否已經(jīng)進行了匹配。在這個實施方式中,輪詢技術(shù)可以在相對較慢的速率下進行以便對于因為某種原因而沒有被成功推送到移動設備的匹配進行識別。采用推送通知來管理輪詢請求負載顯著地降低了匹配服務 111上的負載,否則該服務可能加載來自移動設備的輪詢請求。對于同一 MSI,如果在1608中確定有其他的匹配請求在擱置(pending),則匹配器可以在MSI中繼續(xù)匹配移動設備/用戶。在1610,匹配器可以在MSI表1503中重新設定租期值。在1611,執(zhí)行其他的匹配并更新請求表(如上所述)。在1612,從請求表中讀取 這些其他的匹配并更新另外的移動設備(如上所述)。如果對于該MSI沒有另外的匹配請求擱置,則在1609,從MSI表中移除該MSI條目(例如,通過來自調(diào)度器或者匹配器的刪除命令)。附圖18的實施方式示出了用于執(zhí)行移動設備/用戶之間的匹配的方法(附圖16 中的操作1606)。在1801,所有的當前MSI請求(例如,對特定的應用/桶的組合)被配置成對。在1802,評估每對之間的匹配“適合度”,并在1803按照適合度降序存儲這些對。 “適合度”的評估基于多種不同變量,包括但不限于NAT類型(例如全錐形、端口限制的、對稱的等等)、連接類型(例如WIFI、3G、Edge等等)、與用戶相關(guān)聯(lián)的語言(得自HTTP請求的acc印t-language頭部)、每個匹配請求的時效。進入匹配決定可以考慮的其他變量包括各個移動設備的位置(例如,通過對特定位置的用戶進行匹配的嘗試);最小的和/或最大的玩家需求(例如,由用戶和/或應用指定);包括在MSI中的這一個或多個用戶是否是“朋友”或者此前已經(jīng)進入過P2P連接(例如,優(yōu)先匹配“朋友”或熟人);用戶對于該應用的經(jīng)驗(例如,對于多玩家游戲,每個用戶的排行榜等級可以被考慮進來,優(yōu)先匹配具有相似經(jīng)驗的用戶)。如下面在表A中指示的,在一個實施方式中,對“適合度”的評估是介于0. 0和1. 0 之間的數(shù)字值。采用浮點值允許對每個標準的適合度進行歸一化。為避免浮點運算,可以將非歸一化的整數(shù)值用于合適的計算,從而可以比較適合度。在一個實施方式中,所有的標準都有二進制的適合度,其中它們是可兼容的(具有為1. 0的歸一化值)或者不兼容的(具有小于1. 0的歸一化值)。這些可以看作所需要的標準,其中適合度可以隨時效而變化(如下所述)。如果位置被添加為變量,則最好的適合度可能是與可以滿足所需準則的最近玩家之間的適合度。匹配適合度——表A
權(quán)利要求
1.一種計算機實現(xiàn)的方法,用于在移動裝置之間建立點對點(“P2P”)通信,所述方法包括從第一移動裝置接收打開P2P通信通道的邀請請求,所述邀請請求包括第二移動裝置的標識符以及與所述第一移動裝置的網(wǎng)絡配置有關(guān)的網(wǎng)絡信息;使用所述標識符識別所述第二移動裝置并將所述邀請請求發(fā)送到所述第二移動裝置;接收來自所述第二移動裝置的響應,所述響應包括對所述邀請的接受以及與所述第二移動裝置的網(wǎng)絡配置有關(guān)的網(wǎng)絡信息;評估所述第一移動裝置和所述第二移動裝置的網(wǎng)絡信息,以確定所述第一移動裝置與所述第二移動裝置之間的直接P2P連接是否可行;如果直接連接可行,則傳送所述邀請的接受信息到所述第一移動裝置;如果直接連接不可行,則識別與中繼服務相關(guān)聯(lián)的、可由所述第一移動裝置和所述第二移動裝置用來通過所述中繼服務建立連接的網(wǎng)絡信息,并將所述網(wǎng)絡信息或其一部分發(fā)送給所述第一移動裝置和所述第二移動裝置中的每一者。
2.如權(quán)利要求1的方法,還包括從所述第二移動裝置接收推送通知注冊;作為響應,在目錄數(shù)據(jù)庫中注冊所述推送通知注冊;其中,使用所述標識符識別所述第二移動裝置并將所述邀請請求發(fā)送到所述第二移動裝置的步驟包括使用所述第二移動裝置的所述標識符以在所述目錄數(shù)據(jù)庫中識別所述第二移動裝置,并作為響應而將所述邀請請求推送到所述第二移動裝置。
3.如權(quán)利要求1的方法,其中,所述網(wǎng)絡信息包括與所述第一移動裝置和所述第二移動裝置相關(guān)聯(lián)的網(wǎng)絡地址轉(zhuǎn)換(“NAT”)類型數(shù)據(jù)。
4.如權(quán)利要求3的方法,其中,評估所述第一移動裝置和所述第二移動裝置的網(wǎng)絡信息以確定所述第一移動裝置與所述第二移動裝置之間的直接P2P連接是否可行的步驟包括確定所述第一移動裝置和所述第二移動裝置的NAT類型是否兼容。
5.如權(quán)利要求1的方法,還包括確定所述第一移動裝置與所述第二移動裝置之間的一個或多個先前P2P連接嘗試是否是不成功;并且至少部分地基于一個或多個先前P2P連接嘗試是否是不成功,來確定所述第一移動裝置與所述第二移動裝置之間的直接P2P連接是否可行。
6.如權(quán)利要求5的方法,其中,確定所述第一移動裝置與所述第二移動裝置之間的一個或多個先前P2P連接嘗試是否是不成功的步驟還包括從所述第二移動裝置接收表明一個或多個先前P2P連接嘗試不成功的指示。
7.如權(quán)利要求1的方法,其中,與所述中繼服務相關(guān)聯(lián)的網(wǎng)絡信息包括將被所述第一移動裝置使用的第一中繼主機地址和將被所述第二移動裝置使用的第二中繼主機地址。
8.如權(quán)利要求7的方法,還包括從所述第一移動裝置接收第一中繼更新事務,所述第一中繼更新事務包括用于所述第一移動裝置的NAT穿越/連接數(shù)據(jù);傳送所述第一中繼更新事務到所述第二移動裝置;從所述第二移動裝置接收第二中繼更新事務,所述第二中繼更新事務包括用于所述第二移動裝置的NAT穿越/連接數(shù)據(jù);傳送所述第二中繼更新事務到所述第一移動裝置。
9.如權(quán)利要求8的方法,其中,所述第一移動裝置和所述第二移動裝置先前已經(jīng)在目錄數(shù)據(jù)庫中注冊以接收推送通知,并且其中,傳輸所述第一中繼更新事務的步驟包括在所述目錄數(shù)據(jù)庫內(nèi)識別所述第二移動裝置并作為響應而推送所述第一中繼更新到所述第二移動裝置,傳送所述第二中繼更新事務的步驟包括在所述目錄數(shù)據(jù)庫內(nèi)識別所述第一移動裝置并作為響應而推送所述第一中繼更新到所述第二移動裝置。
10.如權(quán)利要求8的方法,其中,用于所述第一和第二移動裝置的NAT穿越/連接數(shù)據(jù)由所述第一和第二移動裝置中每一者與所述中繼服務之間的事務來確定,以確保所述NAT 穿越/連接數(shù)據(jù)是當前的。
11.一種數(shù)據(jù)處理系統(tǒng),包括用于從第一移動裝置接收打開P2P通信通道的邀請請求的裝置,所述邀請請求包括第二移動裝置的標識符和與所述第一移動裝置的網(wǎng)絡配置有關(guān)的網(wǎng)絡信息;用于使用所述標識符識別所述第二移動裝置并將所述邀請請求發(fā)送到所述第二移動裝置的裝置;用于接收來自所述第二移動裝置的響應的裝置,所述響應包括對所述邀請的接受以及與所述第二移動裝置的網(wǎng)絡配置有關(guān)的網(wǎng)絡信息;用于評估所述第一移動裝置和所述第二移動裝置的網(wǎng)絡信息以確定所述第一移動裝置與所述第二移動裝置之間的直接P2P連接是否可行的裝置;如果直接連接可行,則用于傳送所述邀請的接受信息到所述第一移動裝置的裝置;和如果直接連接不可行,則用于識別與中繼服務相關(guān)聯(lián)的、可由所述第一移動裝置和所述第二移動裝置用來通過所述中繼服務建立連接的網(wǎng)絡信息網(wǎng)絡信息,并將所述網(wǎng)絡信息或其一部分發(fā)送給所述第一移動裝置和所述第二移動裝置中的每一者的裝置。
12.如權(quán)利要求11的系統(tǒng),還包括用于從所述第二移動裝置接收推送通知注冊的裝置; 用于作為響應而在目錄數(shù)據(jù)庫中注冊所述推送通知注冊的裝置; 其中,使用所述標識符識別所述第二移動裝置并將所述邀請請求發(fā)送到所述第二移動裝置的步驟包括使用所述第二移動裝置的所述標識符以在所述目錄數(shù)據(jù)庫中識別所述第二移動裝置,并作為響應而將所述邀請請求推送到所述第二移動裝置。
13.如權(quán)利要求11的系統(tǒng),其中,所述網(wǎng)絡信息包括與所述第一移動裝置和所述第二移動裝置相關(guān)聯(lián)的網(wǎng)絡地址轉(zhuǎn)換(“NAT”)類型數(shù)據(jù)。
14.如權(quán)利要求13的系統(tǒng),其中,用于評估所述第一移動裝置和所述第二移動裝置的網(wǎng)絡信息以確定所述第一移動裝置與所述第二移動裝置之間的直接P2P連接是否可行的裝置包括用于確定所述第一移動裝置和所述第二移動裝置的NAT類型是否兼容的裝置。
15.如權(quán)利要求11的系統(tǒng),進一步包括用于確定所述第一移動裝置與所述第二移動裝置之間的一個或多個先前P2P連接嘗試是否是不成功的裝置;和用于至少部分地基于一個或多個先前P2P連接嘗試是否是不成功來確定所述第一移動裝置與所述第二移動裝置之間的直接P2P連接是否可行的裝置。
16.如權(quán)利要求15的系統(tǒng),其中,用于確定所述第一移動裝置與所述第二移動裝置之間的一個或多個先前P2P連接嘗試是否是不成功的裝置包括用于從所述第二移動裝置接收表明一個或多個先前P2P連接嘗試不成功的指示的裝置。
17.如權(quán)利要求11的系統(tǒng),其中,與所述中繼服務相關(guān)聯(lián)的網(wǎng)絡信息包括將被所述第一移動裝置使用的第一中繼主機地址和將被所述第二移動裝置使用的第二中繼主機地址。
18.如權(quán)利要求17的系統(tǒng),還包括用于從所述第一移動裝置接收第一中繼更新事務的裝置,所述第一中繼更新事務包括用于所述第一移動裝置的NAT穿越/連接數(shù)據(jù);用于傳送所述第一中繼更新事務到所述第二移動裝置的裝置;用于從所述第二移動裝置接收第二中繼更新事務的裝置,所述第二中繼更新事務包括用于所述第二移動裝置的NAT穿越/連接數(shù)據(jù);用于傳送所述第二中繼更新事務到所述第一移動裝置的裝置。
19.如權(quán)利要求18的系統(tǒng),其中,所述第一移動裝置和所述第二移動裝置先前已經(jīng)在目錄數(shù)據(jù)庫中注冊以接收推送通知,并且其中,傳輸所述第一中繼更新事務的步驟包括在所述目錄數(shù)據(jù)庫內(nèi)識別所述第二移動裝置并作為響應而推送所述第一中繼更新到所述第二移動裝置,傳送所述第二中繼更新事務的步驟包括在所述目錄數(shù)據(jù)庫內(nèi)識別所述第一移動裝置并作為響應而推送所述第一中繼更新到所述第二移動裝置。
20.如權(quán)利要求18的系統(tǒng),其中,用于所述第一和第二移動裝置的NAT穿越/連接數(shù)據(jù)由所述第一和第二移動裝置中每一者與所述中繼服務之間的事務來確定,以確保所述NAT 穿越/連接數(shù)據(jù)是當前的。
全文摘要
描述了一種裝置,方法和機器可讀介質(zhì),用于建立點到點“P2P”通信通道。特別的,在一個實施例中,邀請服務執(zhí)行一系列事務以使得兩個或多個移動數(shù)據(jù)處理裝置之間進行P2P通信。在嘗試建立P2P網(wǎng)絡通信通道之前,所述邀請服務可以首先為每個所述移動裝置收集網(wǎng)絡信息,并使用所述網(wǎng)絡信息以確定直接的P2P網(wǎng)絡通信通道是否可行。如果直接連接是可行的,則所述邀請服務提供直接的P2P通信,將必需的網(wǎng)絡信息推送到每個移動裝置。然而,如果直接連接不可行或者如果嘗試過直接連接但是失敗,則所述邀請服務可以識別關(guān)聯(lián)于一個中繼服務的網(wǎng)絡信息。所述網(wǎng)絡信息可以隨后被任何一對移動裝置使用并通過所述中繼服務建立連接。此外,在一個實施例中,所述邀請服務能夠在不需要為任一個所述移動裝置維護任何預連接狀態(tài)信息的情況下執(zhí)行它的功能。
文檔編號H04L29/08GK102215274SQ201010553620
公開日2011年10月12日 申請日期2010年9月25日 優(yōu)先權(quán)日2010年4月7日
發(fā)明者安德魯·H·威若斯, 帕特里克·蓋茨, 杰瑞米·馬修·沃納 申請人:蘋果公司