專利名稱:即時消息的傳輸系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)通信。特別是涉及即時消息的傳輸系統(tǒng)。
(2)背景技術(shù)即時消息正成為計算機(jī)裝置用戶中很流行的通信工具。即時消息(IM)應(yīng)用程序(例如華盛頓州,雷蒙德的微軟公司的WINDOWS信使(WINDOWSMessenger)系統(tǒng),Yahoo!信使,AOL即時信使(AIM)等等)使用戶能與一個或多個在用戶的私人聯(lián)系人列表中標(biāo)識的聯(lián)系人進(jìn)行實時對話。私人列表通常存儲在服務(wù)器上,并通過交換器或中繼服務(wù)器(它將入站消息導(dǎo)向合適的接收者)建立對話。
通過交換器路由即時消息會比在對等配置中的即時通訊(在其中,消息并不經(jīng)過交換器,而是直接在對話參與者之間傳遞,更慢,更花費。因此,在用交換器服務(wù)器建立對話后,典型的即時通訊系統(tǒng)可嘗試將對話轉(zhuǎn)換為對等的配置??梢杂脦追N方式轉(zhuǎn)換到對等方式,通常包括由網(wǎng)際協(xié)議(IP)地址和/或端口號(通過它可將消息直接發(fā)送到同等的人)識別一個對等者,籍此可以將消息直接發(fā)送到該對等者。
然而,在包括有效網(wǎng)絡(luò)裝置(例如防火墻或網(wǎng)絡(luò)地址翻譯器(NAT))的情況下建立對等對話,即使有可能也會是相當(dāng)困難的。這些裝置用于系統(tǒng)安全,但通常設(shè)計成防止直接訪問在這些裝置后的計算機(jī)。例如NAT有它自己的IP地址,及在NAT后的計算機(jī)有它們自己的專門的IP地址,即,在NAT外的其它計算機(jī)也許不能確定在NAT后的計算機(jī)的IP地址。由NAT接收的消息的IP地址被翻譯成在NAT后的接收計算機(jī)的IP地址??梢杂枚喾N技術(shù)來穿過或越過有效網(wǎng)絡(luò)裝置以形成直接的連接。
隨著即時消息系統(tǒng)的改進(jìn),除了文本之外,它們通常提供更多的特征,使對話成為更豐富的經(jīng)歷。例如即時消息系統(tǒng)可使用戶能傳送音頻、視頻、或唯一地與用戶相關(guān)聯(lián)的客戶的用戶貼圖(也稱為顯示圖)。這些特征通常需要在對話中包括比文本更多資源,例如傳送帶寬。因此,對等的連接在進(jìn)行即時消息對話時是希望的,因為對等通常比通過交換器的連接提供更高的性能。
(3)
發(fā)明內(nèi)容
這里描述的和要求保護(hù)的實施解決了所討論的問題,及其它問題。
示例方法包括通過服務(wù)器在第一連接上建立主對話;并在該連接上建立虛擬信道,可操作該虛擬信道傳送特征對話。該方法可包括建立一繞過服務(wù)器的直接連接,并將特征對話的通信切換到直接連接。
網(wǎng)絡(luò)通信的系統(tǒng)包括多個傳輸網(wǎng)橋,每個傳輸網(wǎng)橋?qū)?yīng)于一個有效網(wǎng)絡(luò)裝置配置,并且可操作切換模式來選擇傳輸網(wǎng)橋中的一個,以在有效網(wǎng)絡(luò)裝置配置的基礎(chǔ)上形成兩個計算機(jī)裝置之間的連接。
(4)
圖1為畫出示例的即時消息系統(tǒng)中的部件的方框圖。
圖2示出包括用于管理在即時通信情況中的數(shù)據(jù)通信的示例層的傳輸系統(tǒng)。
圖3為示出可用來選擇優(yōu)選的傳輸網(wǎng)橋的示例網(wǎng)橋選擇模塊的方框圖。
圖4為示出跨兩個對等裝置之間的物理連接的虛擬信道的方框圖。
圖5示出具有用于在主對話中建立特征對話,和如有可能的話建立直接連接的示例操作的操作流程圖。
圖6示出具有用于確定優(yōu)選傳輸網(wǎng)橋,和用優(yōu)選的傳輸網(wǎng)橋建立直接連接的示例操作的操作流程圖。
圖7示出具有用于按連續(xù)的次序傳輸二進(jìn)制大對象(BLOB)的示例操作的操作流程圖。
圖8示出提供合適的操作環(huán)境的示例系統(tǒng),以便透明地選擇一個優(yōu)選的傳輸網(wǎng)橋,并在即時通信情況中傳送特征數(shù)據(jù)。
(5)具體實施方式
見附圖,其中相同的參考號指相同的元件,示出多種在合適的計算機(jī)環(huán)境中實施的方法。盡管沒有要求,將在計算機(jī)可執(zhí)行指令(例如由個人電腦和/或計算機(jī)裝置執(zhí)行的程序模塊)的的總的背景下對多種示例的方法進(jìn)行描述。程序模塊通常包括例執(zhí)行特定任務(wù)或?qū)嵤┨囟ǔ橄髷?shù)據(jù)類型的例行程序、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。
另外,那些本領(lǐng)域的技術(shù)人員將理解,多種示例的方法可用其它計算機(jī)系統(tǒng)配置實施,包括手提裝置、多處理程序系統(tǒng)、基于微處理程序的或可編程的消費電子產(chǎn)品、網(wǎng)絡(luò)PC機(jī)、小型計算機(jī)、大型計算機(jī)等等。多種示例的方法還可以在分布式計算機(jī)環(huán)境中實施,其中任務(wù)是由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理裝置執(zhí)行的。在分布式的計算機(jī)環(huán)境中,可將程序模塊能位于本地及遠(yuǎn)程的存儲器裝置。
在這里的一些圖中,在個人的“方框”中總結(jié)了多種算法活動。這些方框描述了在進(jìn)行處理時作出并執(zhí)行的特定活動和決定。其中運用了微處理程序(或等同物),這里出現(xiàn)的流程圖為或可被這樣的微控制器(或等同物)用來實行理想控制的“控制程序”軟件/固件提供了基礎(chǔ)。這樣,過程被作為可存儲在存儲器中的機(jī)器可讀指令實施,因此當(dāng)由處理程序執(zhí)行時,執(zhí)行方框中示出的多種動作。
哪些在本領(lǐng)域的技術(shù)人員在流程圖和在這里的其它說明的基礎(chǔ)上可以容易地寫出這樣的控制程序。應(yīng)該理解這里描述的主體不僅包括在編程執(zhí)行下述動作的裝置和/或系統(tǒng),還有配置成編程微控制器的軟件,及可以在其上包含所述軟件的任何和所有計算機(jī)可讀媒體。這些計算機(jī)可讀媒體的例子包括,但不限定于,軟盤、硬盤、CD、RAM、ROM、閃存等等。
即時通信的示例網(wǎng)絡(luò)環(huán)境圖1示出用于即時通信對話的示例網(wǎng)絡(luò)環(huán)境100。兩個客戶機(jī)102和104通常能通過網(wǎng)絡(luò)106相互通信。有效網(wǎng)絡(luò)裝置108和110可以在或可以不在同一網(wǎng)絡(luò)環(huán)境100中出現(xiàn)?;貞?yīng)服務(wù)器112和交換器服務(wù)器114可通過網(wǎng)絡(luò)106連接,以促進(jìn)客戶機(jī)102和104之間的通信。
即時通信(IM)平臺116使客戶機(jī)(1)102和客戶機(jī)(2)104能進(jìn)行即時通信對話。IM平臺116的用戶通過用戶界面(未示出)與IM平臺116互動來將消息發(fā)送到客戶機(jī)(2)104,和從客戶機(jī)(2)104接收消息。該IM平臺116包括特征118(也叫作最終用戶特征(EUF))和促進(jìn)客戶機(jī)(1)102和客戶機(jī)(2)104之間傳送數(shù)據(jù)的傳輸協(xié)議棧122。
更具體地,傳輸協(xié)議棧122根據(jù)網(wǎng)絡(luò)環(huán)境100的特性透明地建立了一個即時信息對話。通常可通過交換器(SB)服務(wù)器,或通過對等連接124建立對話,這樣就不通過SB服務(wù)器114路由數(shù)據(jù)了。
客戶機(jī)102和104可通過因特網(wǎng)服務(wù)提供者(未示出),或其它方法訪問網(wǎng)絡(luò)106。在一個實施中,客戶機(jī)102和104都有各自唯一的網(wǎng)址、端口和/或標(biāo)識符,籍此可在客戶機(jī)102和104之間建立通信。例如SB服務(wù)器114可用客戶機(jī)的(2)104網(wǎng)址、端口和/或標(biāo)識符將數(shù)據(jù)路由到客戶機(jī)(2)104。在對等連接124上,客戶機(jī)(1)102可用客戶機(jī)(2)104的網(wǎng)址、端口和/或標(biāo)識符直接將數(shù)據(jù)發(fā)送到客戶機(jī)(2)104。
如上所述,有效網(wǎng)絡(luò)裝置(1)106和有效網(wǎng)絡(luò)裝置(2)110也許出現(xiàn),也許不出現(xiàn)。有效網(wǎng)絡(luò)裝置的例子有防火墻和網(wǎng)絡(luò)地址翻譯器,它們?yōu)樗鼈兏髯缘目蛻粞b置提供系統(tǒng)安全。因此,有效網(wǎng)絡(luò)裝置(2)110可為客戶機(jī)(2)104提供安全,有效網(wǎng)絡(luò)裝置(1)108可為客戶機(jī)(1)102提供安全。
因此,可能有多種網(wǎng)絡(luò)配置。在一個網(wǎng)絡(luò)配置中,出現(xiàn)了有效網(wǎng)絡(luò)裝置(1)108,但有效網(wǎng)絡(luò)裝置(2)110沒有出現(xiàn)。在另一網(wǎng)絡(luò)配置中,出現(xiàn)了有效網(wǎng)絡(luò)裝置(2)110,但有效網(wǎng)絡(luò)裝置(1)108沒有出現(xiàn)。在另一網(wǎng)絡(luò)配置中,有效網(wǎng)絡(luò)裝置(2)110和有效網(wǎng)絡(luò)裝置(1)108都沒有出現(xiàn)。在第四個網(wǎng)絡(luò)配置中,有效網(wǎng)絡(luò)裝置(2)110和有效網(wǎng)絡(luò)裝置(1)108都出現(xiàn)了。
有效網(wǎng)絡(luò)裝置108和110可以有唯一的網(wǎng)址,例如網(wǎng)際協(xié)議(IP)地址,籍此,有效網(wǎng)絡(luò)裝置108和110接收為它們各自客戶機(jī)102和104打包的數(shù)據(jù)。有效網(wǎng)絡(luò)裝置108或110接收在它們網(wǎng)址上的數(shù)據(jù),并將該網(wǎng)址翻譯成與它們各自的客戶機(jī)102和104相關(guān)聯(lián)的網(wǎng)址。
客戶機(jī)(1)102可以用回應(yīng)服務(wù)器112得到與有效網(wǎng)絡(luò)裝置(1)108相關(guān)聯(lián)的網(wǎng)址??蛻魴C(jī)(1)可將消息發(fā)送給回應(yīng)服務(wù)器112。當(dāng)回應(yīng)服務(wù)器112接收到來自客戶機(jī)(1)102的消息時,該消息包括有效網(wǎng)絡(luò)裝置108的網(wǎng)址。作為響應(yīng),回應(yīng)服務(wù)器112將有效網(wǎng)絡(luò)裝置108的網(wǎng)址發(fā)送回客戶機(jī)102。同樣,客戶機(jī)(2)104可取得有效網(wǎng)絡(luò)裝置(2)110的網(wǎng)址。利用有效網(wǎng)絡(luò)裝置108和110的網(wǎng)址,客戶機(jī)102和104也許能建立一個對等的連接124。
盡管圖1中的示例環(huán)境100僅描述了在對話中的兩個客戶機(jī)102和104,應(yīng)該理解可在對話中可以包括超過兩個客戶機(jī)。兩個或兩個以上的客戶機(jī)可以多點方式通信,其中每個客戶機(jī)可具有到每個其它客戶機(jī)的對等連接。另選地,該兩個或兩個以上客戶機(jī)通過交換器服務(wù)器114參加到對話中。另外,對等連接和通過交換器的連接的任何組合都可在對話中實施。以下提供可用于網(wǎng)絡(luò)環(huán)境100中的示例操作和系統(tǒng)的更詳細(xì)的說明。
用于在客戶機(jī)之間傳輸即時消息的示例系統(tǒng)圖2示出一傳輸系統(tǒng),包括用于管理在即時通信情況中的數(shù)據(jù)的通信的示例層。通常每個層提供用于執(zhí)行與層相關(guān)聯(lián)的各種任務(wù)的功能性和/或數(shù)據(jù)。那些本領(lǐng)域的技術(shù)人員能理解用層來描述傳輸協(xié)議和系統(tǒng)。
傳輸系統(tǒng)200包括特征202。特征202是包含于信使應(yīng)用程序中,或由信使應(yīng)用程序執(zhí)行的功能,(例如即時通信平臺116,圖1),以呈現(xiàn)與特征相關(guān)聯(lián)的數(shù)據(jù)。可用特征呈現(xiàn)的數(shù)據(jù)類型、呈現(xiàn)數(shù)據(jù)的方式、特征可在數(shù)據(jù)上執(zhí)行操作、和/或特征提供給用戶來與數(shù)據(jù)相互作用的交互式選項來表征特征。例如客戶的用戶貼圖特征將圖象數(shù)據(jù)呈現(xiàn)在用戶界面上的屏幕貼圖中;文件傳送特征使用戶能選擇文件,并將文件發(fā)送到即時通信連接。作為示例而非限定,特征層202可包括由字符組成的感情圖標(biāo)、印色、嵌入圖像等等。
特征202用在傳輸協(xié)議棧206中的層在即時通信情況中通信數(shù)據(jù)。傳輸協(xié)議棧202透明地管理在對話中從客戶機(jī)接收數(shù)據(jù)和向客戶機(jī)發(fā)送數(shù)據(jù)的細(xì)節(jié)。該傳輸協(xié)議棧206向特征202提供傳輸應(yīng)用程序界面(API)208,籍此,特征202可發(fā)送和接收數(shù)據(jù)。傳輸協(xié)議棧206的更低層利用網(wǎng)絡(luò)配置數(shù)據(jù),和關(guān)于來自特征202的數(shù)據(jù)的信息來建立即時通信對話。因此,該傳輸協(xié)議棧206使通信數(shù)據(jù)的較低層細(xì)節(jié)對特征202透明。
不管數(shù)據(jù)的類型和尺寸如何,術(shù)語“BLOB”(二進(jìn)制大對象)和“塊(chunk)”在這里用于指可以在網(wǎng)絡(luò)環(huán)境中發(fā)送和/或接收的數(shù)據(jù)部分。例如數(shù)字圖象可由一個或多個數(shù)據(jù)的BLOB組成。BLOB是由一個或多個數(shù)據(jù)的塊組成。如上所述,示例的傳輸API208提供向特征202揭示傳輸協(xié)議棧的功能的方法或功能。API208的一個特定的實施包括以下方法<pre listing-type="program-listing"> SendData();//Sends a blob of data to another client; OnDataReceived(); //Callback to feature when associated session receives a blob //of data; RegisterFeatureHandier(); //Called by features to register handlers.The handlers are //called when another client sends an invitation for the feature. RegisterDataChannelCallBacks(); //Called by features to register handlers that are called when //channel events happen or channel states changes. CreateDataChannel(); //Creates a data channel(session)for a feature. GetTransportCapabilities(); //Returns capabilities of the conversation,for example Direct, //Indirect,Store and Forward. GetParticipants();//Gets the list of participants in a conversation.</pre>為了示出示例的API208,在特征層202中的特征可利用CreateDataChannel()函數(shù)建立對話。該特征可調(diào)用RegisterFeatureHandler()來在收到對特征的邀請時登記要調(diào)用的處理程序。該特征可調(diào)用RegisterDataChannelCallBack()來在發(fā)生信道事件時登記要調(diào)用的處理程序。該特征可調(diào)用SendData()來將數(shù)據(jù)傳送至客戶機(jī)。當(dāng)為特征接收數(shù)據(jù)時,由另一傳輸協(xié)議層(例如對話層210)調(diào)用函數(shù)OnDataReceived()。
示例對話層210包括用于向特征202提供對話服務(wù)的邏輯。即時通信對話包括至少一個對話,稱作用于實現(xiàn)對話的即時通信對話。SLP的一個實施還包括具有為特征建立其它對話的控制邏輯的主對話,稱為特征對話。該對話層210是啟動對話的協(xié)議。在一個實施中,對話層210通過根據(jù)對等者的各自性能在兩個對等者之間協(xié)商對話的建立啟動對話。
在對話層210的一個特定實施中,運用了對話啟動協(xié)議的子集。在這一實施中,能以人可以讀懂的格式(例如可擴(kuò)展標(biāo)記語言(XML)、用逗號分開的值(CSV)等等)發(fā)送消息。示例對話管理消息是“INVITE”、“BYE”、“CANCEL”和“ACK”。
示例傳輸層212包括用于處理開放系統(tǒng)互連(OSI)標(biāo)準(zhǔn)的傳輸層協(xié)議的邏輯。TLP是用于通過網(wǎng)絡(luò)信道發(fā)送和接收任意尺寸的二進(jìn)制大對象(BLOB)的二進(jìn)制協(xié)議。該傳輸層212執(zhí)行多種數(shù)據(jù)管理任務(wù)。例如如以下要詳細(xì)討論的,傳輸層212可通過網(wǎng)絡(luò)連接操作來多路傳輸數(shù)據(jù),從而在單個網(wǎng)絡(luò)連接中建立諸虛擬信道。如以下要詳細(xì)討論的,傳輸層212與一個或多個諸如TCP網(wǎng)橋或SB-網(wǎng)橋之類的傳輸網(wǎng)橋接口,它們駐留在傳輸網(wǎng)橋?qū)印T搨鬏攲?12可包括調(diào)度程序和用于調(diào)度來自特征202的擬通過網(wǎng)橋?qū)?14中的網(wǎng)橋傳輸?shù)臄?shù)據(jù)的隊列。
在一特定的實施中,傳輸層212將一TLP標(biāo)題加到傳輸?shù)拿總€BLOB的每個塊上。該標(biāo)題提供關(guān)于BLOB和塊的信息。在收到該塊時,傳輸層212可解析該標(biāo)題以確定在必要的時候,應(yīng)該如何重新裝配塊,以及應(yīng)該如何對BLOB重新進(jìn)行排序。在一個示例實施中,該TLP標(biāo)題如下DWORD SessId;//slave session id that this blob belongs toDWORD BlobId;//id for this blobUINT64 Offset; //offset of this chunk’s data into the blob′s dataUINT64 BlobSize; //total size of all chunks not including headersDWORD ChunkSize; //size of the data in this chunk(not including header)DWORD Flags; //ORed together TLP_CONTROL_FLAGS字段“SessId”識別與發(fā)送和接收的數(shù)據(jù)的塊相關(guān)聯(lián)的對話。傳輸層212使用該“SessId”字段將數(shù)據(jù)的塊與一特定對話相關(guān)聯(lián),并籍此多路傳輸和/或多路分解該塊數(shù)據(jù)。以下將詳細(xì)描述傳輸協(xié)議棧206運用的數(shù)據(jù)多路傳輸。
字段“BlobId”識別與發(fā)送和接收的數(shù)據(jù)相應(yīng)的二進(jìn)制大對象(BLOB)。傳輸協(xié)議??墒褂迷撟侄巍癇lobId”將塊組裝或重新組裝成相應(yīng)的BLOB?!癘ffset”字段代表位于相應(yīng)的BLOB中的塊。BlobId也可用于在提交之前或接收到之后將BLOB按照它們適合的順序組織起來?!癇lobSize”字段代表BLOB的尺寸?!癈hunkSize”字段代表不包括標(biāo)題在內(nèi)的數(shù)據(jù)的塊的尺寸。
“Flags”字段提供許多傳輸層212使用的若干標(biāo)記,以對在客戶機(jī)之間發(fā)送和接收數(shù)據(jù)的過程進(jìn)行管理。以下示出和描述示例的“Flags”<pre listing-type="program-listing"> enum TLP_CONTROL_FLAGS { TLP_NAK=0x01, //set in a non-acknowledgement packet(request for //retransmit) TLP_ACK=0x02, //set in an acknowledgement packet TLP_RAK=0x04, //set in a request for acknowledgement packet TLP_RST=0x08, //set in a Reset packet,closes the session on the other side TLP_BIG=0x10, //set when this chunk is part of a blob that should be saved as //a file TLP_CAL=0x20, //set in a blob for which progress callbacks are requested };</pre>傳輸網(wǎng)橋?qū)?14包括用于通過網(wǎng)絡(luò)傳輸數(shù)據(jù)的邏輯電路。例如傳送網(wǎng)橋?qū)?14可執(zhí)行數(shù)據(jù)編碼和/或解碼。在一個實施中,傳輸網(wǎng)橋?qū)?14包括一個或多個傳輸網(wǎng)橋(其中每一個具有對應(yīng)于一網(wǎng)絡(luò)配置的功能)和數(shù)據(jù)特征,用于在網(wǎng)絡(luò)上通信。以下將詳細(xì)描述示例的傳輸網(wǎng)橋及用于在諸網(wǎng)橋中進(jìn)行選擇的系統(tǒng)和操作。
在一個實施中,傳輸層214可利用傳輸網(wǎng)橋?qū)?14在對話期間在兩種網(wǎng)橋之間傳遞。這樣就可以在交換器(SB)網(wǎng)橋上開始對話,籍此,對話數(shù)據(jù)通過交換器服務(wù)器進(jìn)行傳送,但,接著將對話切換到一直接的或?qū)Φ鹊倪B接。另外,如果該對等連接被打破了,傳輸層212能相應(yīng)地切換回SB網(wǎng)橋或在網(wǎng)橋?qū)?14中的某個其它可用的網(wǎng)橋。傳輸層212以對傳輸協(xié)議棧206的更高層透明的方式處理到不同連接類型的轉(zhuǎn)換。
傳輸層212與網(wǎng)橋?qū)?14一起工作確保以合適的次序提交和/或接收BLOB。因為在對話期間,連接的類型有可能從一個較慢的連接變?yōu)橐粋€較快的連接,所以通過較慢連接發(fā)送的BLOB有可能在通過較快連接發(fā)送的BLOB之后到達(dá)它們的目的地,除非傳輸層212采取步驟確保合適的次序。以下對確保維持傳送的合適次序的示例操作進(jìn)行描述。
網(wǎng)絡(luò)層218表示執(zhí)行標(biāo)準(zhǔn)網(wǎng)絡(luò)通信功能的較低層通信功能。網(wǎng)絡(luò)層218可包括,但不限于,傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)功能性、通用數(shù)據(jù)報協(xié)議(UDP)功能、超文本傳輸協(xié)議(HTTP)功能、簡單對象訪問協(xié)議(SOAP)。網(wǎng)橋?qū)?14能通過網(wǎng)絡(luò)使用網(wǎng)絡(luò)層218功能傳送數(shù)據(jù)。
就象在這里所討論的,提供了多個傳輸網(wǎng)橋來處理不同的網(wǎng)絡(luò)配置和數(shù)據(jù)類型、格式、和/或尺寸。表1示出示例的傳輸網(wǎng)橋和可在其中應(yīng)用該網(wǎng)橋的相關(guān)聯(lián)的網(wǎng)絡(luò)配置。
表1
在表1的行和列相交處的核查記號(√)指示出在相交行的網(wǎng)橋能用于相交列中的網(wǎng)絡(luò)配置中。
SB網(wǎng)橋通過交換器服務(wù)器發(fā)送通信量(例如交換器服務(wù)器114,圖1)。在一個實施中,當(dāng)開始建立一個即時通信對話時,SB網(wǎng)橋是用于傳輸即時對話數(shù)據(jù)的網(wǎng)橋。隨后,只有在不能建立直接(對等)連接時使用的SB網(wǎng)橋被繼續(xù)使用。Twister傳輸控制協(xié)議(TCP)(也稱作網(wǎng)際協(xié)議版本5(IPv6)TCP)網(wǎng)橋可用于穿過網(wǎng)際協(xié)議版本4(IPv4)NAT。在一個實施中,IPV6網(wǎng)橋利用蛀船蟲掘進(jìn)(Teredotunneling)技術(shù)建立一個對等連接。蛀船蟲(Teredo)是IPv4/IPv6的過渡技術(shù),它在IPv4/IPv6主機(jī)位于一個或多個IPv4NAT之后時為單播IPv6提供地址分配和主機(jī)對主機(jī)的自動掘進(jìn)。為了穿過IPv4NAT,將IPv6包作為基于IPv4的用戶數(shù)據(jù)報協(xié)議(UDP)消息發(fā)送。
甚至在網(wǎng)絡(luò)上配置了網(wǎng)絡(luò)地址翻譯器(NAT)時,可操作該TwisterTCP網(wǎng)橋來建立一個對等的TCP/IP連接。例如如果第一客戶機(jī)在NAT之后,且第二客戶機(jī)不在NAT或防火墻之后,第一客戶機(jī)的TwisterTCP網(wǎng)橋啟動一個與第二客戶機(jī)的輸出TCP連接。第一客戶機(jī)可使用一回應(yīng)服務(wù)器(例如回應(yīng)服務(wù)器112,圖1)來檢測第一客戶機(jī)是在NAT之后,并從而確定形成該連接的方向;即,第一客戶機(jī)啟動TCP連接。當(dāng)客戶機(jī)之一在通用即插即用(UPnP)NAT之后時,可應(yīng)用類似的技術(shù)。
可靠的通用數(shù)據(jù)報協(xié)議(RUDP)網(wǎng)橋通過UDP通信,但通過確認(rèn)收到數(shù)據(jù)的傳送仿效TCP連接,和在TCP下確認(rèn)“包”幾乎一樣。按照這種方式,RUDP網(wǎng)橋提供比傳統(tǒng)UDP更可靠的連接,因為該協(xié)議能檢測到數(shù)據(jù)何時丟失,并應(yīng)被重新發(fā)送。RUDP網(wǎng)橋可用一個回應(yīng)服務(wù)器來取得NAT網(wǎng)址,這樣就能穿過NAT了。RUDP網(wǎng)橋?qū)⒁粋€標(biāo)題附加到發(fā)送的數(shù)據(jù)。以下示出示例的標(biāo)題unsigned_int64 qwSeqNum;// sequence number of first byte in this packetunsigned int64 qwAckNum;//ack number of next byte the sender of this packet expectsDWORD dwOtherFields;//4 bit offset in qtadwords,5 bit reserved,5 control bits,16//reserved,from most significantDWORD dwWindow; //window size receiver will acceptDWORD dwSendTime; //timestamp for when the packet was sentDWORD dwEchoTime; //last timestamp the sender recorded in a packet from receiver示例的RUDP網(wǎng)橋協(xié)議包括向偵聽RUDP網(wǎng)橋發(fā)送一個“SYN”消息,用“SYN ACK”響應(yīng),并用“ACK”響應(yīng)“SYN ACK”消息。接著,重發(fā)定時器將繼續(xù)重發(fā)一組或多組數(shù)據(jù),直到從相應(yīng)的用于發(fā)送的(或重發(fā)的)數(shù)據(jù)組的RUDP網(wǎng)橋接收到一個ACK。
圖3為示出可用于從一組傳輸網(wǎng)橋302中選擇一個優(yōu)選的傳輸網(wǎng)橋的示例選擇模塊302的方框圖。即時通信應(yīng)用程序可具有多個特征308,并且每個特征308與主對話306和對話登記程序310通信,以建立一個相關(guān)聯(lián)的特征對話312。包括特征數(shù)據(jù)在內(nèi)的即時通信數(shù)據(jù)通過選定的網(wǎng)橋進(jìn)行傳輸。
主對話306在傳輸協(xié)議棧206(圖2)中的對話層210(圖2)進(jìn)行。當(dāng)對話在即時通信應(yīng)用程序中開始時,建立主對話306。主對話306與一對話窗相關(guān)聯(lián),并且,是一對象特征308通過該對象請求從屬的或特征的對話312。主對話306也可揭示一種靜態(tài)方法,它使特征308能在對話窗的背景外開始主對話,籍此將建立一個即時通信對話。
特征308用對話登記程序310登記,它保持有關(guān)在對話期間運行的特征的信息。對話登記程序310也可保持有關(guān)“自動啟動”特征的信息。自動啟動特征是默認(rèn)存在的特征,并且一旦建立了底層的交換器,將在與預(yù)定呼叫ID和對話ID的對話中,在雙方客戶機(jī)上調(diào)用它們的邀請?zhí)幚沓绦颉?br>
當(dāng)特征308用對話登記程序310登記時,特征308提供一邀請?zhí)幚沓绦蚝瘮?shù)及一個與特征308相關(guān)聯(lián)的全局唯一標(biāo)識符。主對話306可使用特征登記程序信息來建立特征對話312,通過該對話特征308能與對等的特征進(jìn)行對話。
例如可以由主對話306接收來自對等者的邀請,邀請?zhí)卣?08進(jìn)入到對話中。該邀請指定與特征308相關(guān)聯(lián)的GUID。主對話306在對話登記程序310中查看GUID,以找到與特征308相關(guān)聯(lián)的邀請?zhí)幚沓绦蚝瘮?shù)。如果特征308接受該邀請,則主對話306建立新的特征對話312。
特征308可邀請一個對等的特征進(jìn)入到對話。為了這樣做,特征308從主對話306請求一個新的對話(例如通過調(diào)用傳輸圖2,API208中的CreatDataChannel())。從特征308對一個新的對話的請求可包括對一種連接的請求(例如直接,非直接)。主對話306將用諸如請求的直接連接、數(shù)據(jù)的尺寸、和/或網(wǎng)絡(luò)配置之類的信息調(diào)用網(wǎng)橋選擇器302。網(wǎng)橋選擇器302用該信息識別一個優(yōu)選的傳輸網(wǎng)橋,用于請求的特征對話。
在一個實施中,網(wǎng)橋選擇器302在傳輸層212(圖2)執(zhí)行,且實施傳輸網(wǎng)橋選擇規(guī)則來選擇優(yōu)選的網(wǎng)橋。在一個實施中,設(shè)計目標(biāo)是直接對等地發(fā)送盡可能多的通信量,以避免可能與交換器服務(wù)器相關(guān)聯(lián)的延遲和開銷。在這一實施中,分析了以下因素以選擇傳輸網(wǎng)橋請求的直接連接,由傳輸網(wǎng)橋支持的帶寬,要發(fā)送的數(shù)據(jù)的尺寸,傳輸網(wǎng)橋的任何限制,與特定傳輸網(wǎng)橋相關(guān)聯(lián)的開銷(例如中繼開銷),和/或秘密說明(例如揭示或不揭示IP地址)。
每個傳輸網(wǎng)橋在上述因素的基礎(chǔ)上計算機(jī)得分。網(wǎng)橋?qū)⑺牡梅纸o網(wǎng)橋選擇器302,選擇器302在得分的基礎(chǔ)上選擇出優(yōu)選的傳輸網(wǎng)橋。在分析原始得分前,網(wǎng)橋選擇器302考慮指定的請求。例如如果特征308請求一個直接連接,則網(wǎng)橋選擇器302可從候選網(wǎng)橋組中排除所有非直接網(wǎng)橋。不在特定的網(wǎng)絡(luò)配置中操作的網(wǎng)橋也被從候選網(wǎng)橋組中排除。例如如果網(wǎng)絡(luò)配置包括2個對稱的傳統(tǒng)NAT,則不考慮TwisterTCP網(wǎng)橋??梢詫⒃诔跏蓟瘜υ挄r從回應(yīng)服務(wù)器測試中取得的信息用于確定哪些網(wǎng)橋不能工作。
因此,網(wǎng)橋選擇器302的一個實施使用以下傳輸網(wǎng)橋選擇規(guī)則
1.在回應(yīng)測試結(jié)果的基礎(chǔ)上,排除不能工作的網(wǎng)橋。
2.排除不能滿足調(diào)用者的特定請求的網(wǎng)橋。
3.使用剩下的具有最高得分的網(wǎng)橋。
4.如果先前的網(wǎng)橋失效,則使用剩下的具有得分第二高的網(wǎng)橋。
5.如果先前的網(wǎng)橋失效,則使用剩下的具有下一最高得分的網(wǎng)橋,等等…網(wǎng)橋選擇器302根據(jù)規(guī)則,將優(yōu)選的網(wǎng)橋通知主對話306。作為響應(yīng),主對話306建立特征對話312并例示要用的優(yōu)選網(wǎng)橋。在建立特征對話312之后,特征308將通過特征對話312與其它對等特征通信。特征對話312處理發(fā)送數(shù)據(jù)及對話控制調(diào)用,例如AcceptSession及AcceptDirect。
圖4為示出穿過第一客戶機(jī)裝置406和第二客戶機(jī)裝置408之間的物理連接的虛擬信道402的方框圖。客戶機(jī)裝置406和408用連接404和信道402來參與即時通信對話,其中傳送了多種數(shù)據(jù)。盡管裝置406和408被稱為“客戶機(jī)裝置”,應(yīng)理解在裝置406和408之間的連接404不需要經(jīng)過服務(wù)器,而可以是直接的,或?qū)Φ鹊倪B接。
如示出的,數(shù)據(jù)信道0被用于在對話中傳送文本消息;數(shù)據(jù)信道1被用來在客戶機(jī)裝置406和408之間傳送文件;數(shù)據(jù)信道2被用來在裝置406和408之間傳送插入的圖像;數(shù)據(jù)信道3被用來傳送指示出用戶是否正在裝置406或408中的一個鍵入消息的鍵入指示信息。
虛擬信道數(shù)與對話標(biāo)識符相對應(yīng)。如以上討論的,將一個標(biāo)題(見以上的TLP標(biāo)題)加到通過連接404傳送的數(shù)據(jù)上。該標(biāo)題包括指示該數(shù)據(jù)對應(yīng)于哪個對話及哪根信道(例如特征信道或主信道)的“SessId”。使用SessId,來自多個對話的數(shù)據(jù)能通過連接404多路傳輸。因此,信道402被認(rèn)為是“虛擬”信道。在客戶機(jī)裝置406和408將接收到的數(shù)據(jù)剝離SessId,且將該數(shù)據(jù)路由至與SessId相關(guān)聯(lián)的合適的對話。
在另一個實施中,在客戶機(jī)裝置406和客戶機(jī)裝置408之間建立了多個連接,且每個連接都可包括多個虛擬信道。例如當(dāng)在客戶機(jī)裝置406和客戶機(jī)裝置408之間開始建立對話時,將通過交換器服務(wù)器經(jīng)過連接建立一個主對話。隨后,可在客戶機(jī)裝置406和客戶機(jī)裝置408之間建立一個對等的連接。在這種情況下,在裝置406和408上的特征在交換器上,或?qū)Φ冗B接上都可以建立虛擬信道。
運用傳輸協(xié)議棧的示例操作圖5示出具有用于在主對話中建立特征對話,和在有可能時建立直接連接的示例操作的操作流程圖。為了參與到與另一客戶機(jī)裝置的即時消息對話中去,對話操作流程500可由諸如圖1所示的客戶機(jī)(1)102之類的客戶機(jī)完成。
建立操作502建立一個主對話。主對話是在用戶開始啟動信使應(yīng)用程序和嘗試與其它用戶聯(lián)系時建立的。建立主對話包括邀請其它客戶機(jī)來進(jìn)入對話。在其它客戶機(jī)接受邀請后,在邀請客戶機(jī)和接收客戶機(jī)上都建立主對話。主對話是通過交換器網(wǎng)橋,通過SB連接建立的。以后可以用主對話建立特征對話。
如果沒有在建立操作502之前進(jìn)行回應(yīng)服務(wù)器測試,建立操作502可以進(jìn)行回應(yīng)服務(wù)器測試來檢測防火墻、NAT、或其它可能出現(xiàn)的有效網(wǎng)絡(luò)裝置。該回應(yīng)服務(wù)器測試包括向回應(yīng)服務(wù)器發(fā)送一個測試消息(例如回應(yīng)服務(wù)器112,圖1),且該回應(yīng)服務(wù)器將對應(yīng)于可能配置的任何有效網(wǎng)絡(luò)裝置的網(wǎng)址信息作為回答。
除了文本數(shù)據(jù)之外,用戶可能想要傳送特征數(shù)據(jù)。這種特征數(shù)據(jù)包括,但不限于文件、圖像、客戶的情緒圖標(biāo)、客戶的用戶貼圖等等。另外,信使應(yīng)用程序可建立一個特征對話來傳送特征數(shù)據(jù)。因此,在另一個建立操作504中,建立了一個特征對話。該建立操作504包括在邀請客戶機(jī)上建立一個特征對話,并將特征邀請發(fā)送至接收客戶機(jī)的主對話。當(dāng)特征邀請到達(dá)該接收的客戶機(jī)時,該邀請或者被接受,或者被拒絕。
繼續(xù)討論建立操作504,如果特征邀請被接受了,在接收客戶機(jī)上的主對話在接收客戶機(jī)上建立一個特征對話。在接收的客戶機(jī)上的特征對話具有與邀請?zhí)卣飨鄬?yīng)的GUID。在接收的客戶機(jī)上的主對話也調(diào)用一個為GUID登記的邀請?zhí)幚沓绦蚝瘮?shù)。如果該特征邀請被接受了,相關(guān)聯(lián)的特征存儲該特征對話,能使用這樣該特征對話就與用于對話的傳輸API相互作用。在當(dāng)特征接受時,將回叫消息發(fā)送至邀請?zhí)卣骱徒邮芴卣?,讓它們知道對話已?zhǔn)備好用于發(fā)送和接收數(shù)據(jù)。如果該特征邀請被拒絕了,主對話刪除建立的特征對話。
建立操作504通過一個現(xiàn)存的連接(例如建立的SB連接)建立特征對話。更具體地,如圖4所示,用主對話數(shù)據(jù)對該特征對話數(shù)據(jù)進(jìn)行多路傳輸,以同時進(jìn)行特征對話和主對話。因為通過交換器的連接可能比對等連接慢,建立操作506嘗試建立一個直接(對等)連接,通過它進(jìn)行特征對話。建立操作506的示例實施在圖6示出,并在以下進(jìn)行描述。如果可以建立一個直接連接,將用直接連接進(jìn)行特征對話。操作流程500在結(jié)束操作508處結(jié)束。
圖6示出建立直接連接的示例操作的操作流程。假定用戶向在邀請客戶機(jī)的特征表明,該用戶想要將特征對話變?yōu)橹苯舆B接而不是交換器(SB)服務(wù)器。該用戶可能喜歡直接連接,因為她想避免受消息尺寸的限制,或者她想要發(fā)送比SB交換器允許的還要多的消息,或者也許是她想要將她的消息保持在她的共同防火墻之內(nèi)。
當(dāng)特征接收到移到直接連接的指示時,請求操作602執(zhí)行,其中特征調(diào)用在特征的從屬對話上的方法。該請求操作602請求一個直接連接。該從屬對話將該請求傳給主對話。作為響應(yīng),主對話向在接收客戶機(jī)上的對等特征發(fā)送一“reINVITE”消息,請求直接連接。
繼續(xù)討論請求操作602,該“reINVITE”消息包括識別由邀請客戶機(jī)支持的所有傳輸網(wǎng)橋類型的信息。在接收的客戶機(jī)上的特征對話調(diào)用與該特征相關(guān)聯(lián)的邀請?zhí)幚沓绦蚝瘮?shù)??梢匀魏螖?shù)量的方式接受該“reINVITE”消息。在一個實施中,特征可在特征的邀請?zhí)幚沓绦蛏显O(shè)定一個自動接受設(shè)置。自動接受設(shè)置表明所有對直接連接的請求都會自動被接受。在另一個實施中,可在邀請?zhí)幚沓绦蛑性O(shè)定自動拒絕設(shè)置,它表明直接連接請求將會被自動拒絕。
如果即沒有設(shè)置自動接受,也沒有設(shè)置自動拒絕,傳輸將查看全局默認(rèn)值。如果該全局默認(rèn)值設(shè)置成接受或拒絕,則對“reINVITE”作出適當(dāng)?shù)幕卮?。如果全局默認(rèn)值沒有設(shè)置,該邀請?zhí)卣骺赏ㄟ^,例如向用戶提示是否接受或拒絕“reINVITE”來響應(yīng)該邀請。假定“reINVITE”被接受了,在選擇的操作606中識別出一個優(yōu)選的傳輸網(wǎng)橋。
該選擇操作606用以上參照圖3討論的優(yōu)選因素選擇一個優(yōu)選的傳輸網(wǎng)橋。接受操作608將接受消息發(fā)送回邀請的客戶機(jī)。接受消息包括優(yōu)選的網(wǎng)橋。該接受還包括接受客戶機(jī)的內(nèi)部和外部IPv4地址,及其一個IPv6全局地址,如果客戶機(jī)有的話。
在其它端的傳輸將嘗試使用在接受消息中列出的優(yōu)選網(wǎng)橋連接到接收的IP地址和端口。在邀請的客戶機(jī)連接之后,該傳輸發(fā)送一個“RAK”,且接受的客戶機(jī)用一“ACK”回答。如果連接失敗,邀請的客戶機(jī)將在發(fā)送“RAK”后超時。在一個實施中,邀請主對話隨后發(fā)送另一個“reINVITE”,這次排除了失敗的傳輸網(wǎng)橋類型。操作流程在結(jié)束操作610處結(jié)束。
圖7示出用于按連續(xù)次序傳輸二進(jìn)制大對象(BLOB)的示例操作的操作流程。通常,在通過一個新的直接連接傳送最后一塊BLOB之前,傳輸?shù)却邮障惹巴ㄟ^非直接連接傳送的所有與BLOB塊相關(guān)聯(lián)的“ACK”。不管用了什么類型的傳輸網(wǎng)橋或連接(即,UDP、TCP或其它),以這種方式等待“ACK”。
傳送操作702用一個非直接連接開始傳送BLOB。查詢操作704確定傳輸網(wǎng)橋類型是否已切換到直接連接。如果傳輸網(wǎng)橋類型還沒有切換,查詢操作704經(jīng)過分支“否”到傳送操作706。該傳送操作706通過非直接連接傳送一塊BLOB。
在傳送操作706中傳送塊之后,查詢操作704再一次確定該傳輸網(wǎng)橋類型是否已改變。如該傳輸網(wǎng)橋類型已改變,則查詢操作704通過分支“是”到另一查詢操作708。該查詢操作708判斷當(dāng)前BLOB標(biāo)識符(ID)是否比最后一個BLOB ID大。如當(dāng)前BLOB ID不比最后一個BLOB ID大,則查詢操作708經(jīng)過分支“否”到傳送操作706,它傳送一塊當(dāng)前BLOB。
如果查詢操作708確定該當(dāng)前BLOB ID比最后一個BLOB ID大,則查詢操作708經(jīng)過分支“是”到另一查詢操作710。該查詢操作710確定要傳送的當(dāng)前塊是否為BLOB中最后的塊。如果當(dāng)前塊不是BLOB中最后的塊,則查詢操作710經(jīng)過分支“否”到傳送操作706,它傳送當(dāng)前塊。如果查詢操作710確定當(dāng)前塊是BLOB中最后的塊,則查詢操作710經(jīng)過分支到等待操作712。該等待操作712等待,直至對通過開始的非直接連接傳送的BLOB接收到所有的ACK。
可在用于即時通信的網(wǎng)絡(luò)環(huán)境中使用的示例計算機(jī)系統(tǒng)圖8和相應(yīng)的討論旨在提供能實施用于傳輸計算機(jī)數(shù)據(jù)的所述的配置和程序的合適的計算機(jī)環(huán)境的總的說明。示例計算機(jī)環(huán)境820僅僅是合適的計算機(jī)環(huán)境的一個例子,并不想試圖對所述主題的使用范圍或功能作任何限制。不應(yīng)該將計算機(jī)環(huán)境820解釋成對在示例計算機(jī)環(huán)境820中示出的任何一個部件或其組合具有依賴性或需要。
在互連裝置之間傳輸計算機(jī)數(shù)據(jù)的示例配置和過程可用眾多其它通用或?qū)S糜嬎銠C(jī)系統(tǒng)環(huán)境或配置進(jìn)行操作。適用于所述主題的已知的計算機(jī)系統(tǒng)、環(huán)境和/或配置包括,但不限于,個人電腦、服務(wù)器計算機(jī)、瘦客戶機(jī)、胖客戶機(jī)、手提或膝上裝置、多處理程序系統(tǒng)、基于微處理程序的系統(tǒng)、大型計算機(jī)、諸如服務(wù)器園及公司內(nèi)聯(lián)網(wǎng)等包括任何上述系統(tǒng)和裝置的分布式計算機(jī)環(huán)境。
計算機(jī)環(huán)境820包括以計算機(jī)830形式的通用計算裝置。計算機(jī)830可包括和/或作為用于以上參照圖1-7描述的即時通信的傳輸系統(tǒng)的示例實施。計算機(jī)830的部件可包括,但不局限于,一個或多個處理程序或處理單元832、系統(tǒng)存儲器834、和將包括系統(tǒng)存儲器834在內(nèi)的多種系統(tǒng)耦合到處理程序832的總線836。
總線836代表幾種類型總線結(jié)構(gòu)(包括存儲器總線或存儲器控制器、外圍總線、加速的圖形端口、和處理程序或使用多種總線結(jié)構(gòu)中的任何一個的局部總線)中的一種或多種。作為示例,而非限定,這種結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(VESA)本地總線、和外圍設(shè)備互連(PCI)總線,也叫作夾層總線。
計算機(jī)830通常包括多種計算機(jī)可讀媒體。這種媒體可以是可由計算機(jī)830訪問的任何可用媒體,且它包括易失性和非易失性媒體,可移除和不可移除媒體。
系統(tǒng)存儲器包括以易失性存儲器形式的諸如隨機(jī)存取存儲器(RAM)840之類的計算機(jī)可讀媒體和/或諸如只讀存儲器(ROM)838之類的非易失性存儲器?;据斎胼敵鱿到y(tǒng)(BIOS)842存儲在ROM838中,它包括如在啟動期間幫助在計算機(jī)830的部件之間傳送信息的基本例程。RAM840通常包括可由處理程序832立即存取和/或當(dāng)前由處理程序832操作的數(shù)據(jù)和/或程序模塊。
計算機(jī)830還可包括其它可移除和不可移除,易失性和非易失性計算機(jī)存儲器媒體。僅作為示例,圖8示出用于從不可移除的非易失性磁媒體讀出或?qū)懭氩豢梢瞥姆且资源琶襟w的硬盤驅(qū)動器844(未示出,并通常稱為“硬盤驅(qū)動器”),用于從可移除的非易失性磁媒體848(例如軟盤)的磁盤驅(qū)動器846,及用于從可移除的非易失性光盤852(例如CD-ROM,DVD-ROM或其它光媒體)讀出或?qū)懭氲墓獗P驅(qū)動器850。硬盤驅(qū)動器844、磁盤驅(qū)動器846和光盤驅(qū)動器850中的每一個都由一個或多個接口854連接到總線836。
驅(qū)動器及與它們相關(guān)聯(lián)的計算機(jī)可讀媒體提供計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它用于計算機(jī)830的數(shù)據(jù)的非易失性存儲器。盡管這里描述的示例環(huán)境使用了硬盤、可移除磁盤848和可移除光盤852,本領(lǐng)域的技術(shù)人員應(yīng)理解也可以將能存儲可由計算機(jī)存取的數(shù)據(jù)的諸如磁帶盒、閃存卡、數(shù)字視頻盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)等等之類的計算機(jī)可讀媒體用于示例的操作環(huán)境中。
可以在硬盤、磁盤848、光盤852、ROM838、或RAM540上存儲的許多程序模塊,作為示例,包括但不限于操作系統(tǒng)858、一個或多個應(yīng)用程序850、其它程序模塊862和程序數(shù)據(jù)864。應(yīng)用程序860,如這里討論的,可包括即時通信應(yīng)用程序、利用特征和傳輸協(xié)議棧。
用戶可將命令和信息通過諸如鍵盤866和定位設(shè)備868(例如“鼠標(biāo)”)之類的可選擇輸入裝置輸入到計算機(jī)830。其它輸入裝置(未示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、串行接口、掃描儀等等。這些和其它輸入裝置通過一個耦合到總線836的用戶輸入界面870連接到處理單元832,但可以由其它諸如并行接口、游戲接口或通用串行總線(USB)之類的接口和總線結(jié)構(gòu)連接。
可選的監(jiān)視器872和其它類型的顯示裝置是通過諸如視頻適配器874之類的接口連接到總線836的。除了監(jiān)視器之外,個人電腦通常包括其它外圍輸出設(shè)備(未示出),例如可以通過輸出外圍接口875連接的揚聲器和打印機(jī)。
可以利用到一個或多個諸如遠(yuǎn)程計算機(jī)882之類的遠(yuǎn)程計算機(jī)的邏輯連接,在聯(lián)網(wǎng)的環(huán)境中操作計算機(jī)830。遠(yuǎn)程計算機(jī)882可包括許多或全部在這里參照計算機(jī)830描述的元件和特征。如圖8所示的邏輯連接為局域網(wǎng)(LAN)877和普通廣域網(wǎng)(WAN)879。LAN877和WAN879可以是有線網(wǎng)絡(luò),無線網(wǎng)絡(luò),或是有線或無線網(wǎng)絡(luò)的組合。這種網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍計算機(jī)網(wǎng)絡(luò)、企業(yè)內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中很常見。
當(dāng)用于LAN網(wǎng)絡(luò)環(huán)境中時,計算機(jī)830通過網(wǎng)絡(luò)接口或適配器886連接到LAN877。當(dāng)用于WAN網(wǎng)絡(luò)環(huán)境中時,計算機(jī)830通常包括調(diào)制解調(diào)器878或其它用于在WAN879上建立通信的裝置。調(diào)制解調(diào)器878(可以是內(nèi)置式的或外接式的)可以通過用戶輸入界面870或其它合適的機(jī)構(gòu)連接到系統(tǒng)總線836。圖8所示的是一個通過因特網(wǎng)的WAN的特定實施。計算機(jī)830通常包括調(diào)制解調(diào)器878或其它用于在因特網(wǎng)880上建立通信的裝置。調(diào)制解調(diào)器878通過接口870連接至總線836。
在聯(lián)網(wǎng)的環(huán)境中,所述與個人電腦830相關(guān)的程序模塊,或其一部分,可以存儲在遠(yuǎn)程存儲器裝置中。作為示例而非限定,圖8示出在遠(yuǎn)程計算機(jī)882的存儲器裝置上的遠(yuǎn)程應(yīng)用程序889。將理解示出和描述的網(wǎng)絡(luò)連接是示例性的,也可以使用在計算機(jī)之間建立通信鏈接的其它裝置。
結(jié)論盡管采用專用于結(jié)構(gòu)特征和/或方法操作的語言描述所述配置和過程,應(yīng)理解在所附權(quán)利要求書中定義的主題并不一定限于所述的特定特征或操作。而是,將特定的特征和操作作為實施要求保護(hù)的當(dāng)前主題的優(yōu)選的形式揭示。
權(quán)利要求
1.在其上存儲了計算機(jī)可執(zhí)行指令的計算機(jī)可讀媒體,其特征在于,所述指令執(zhí)行以下方法通過服務(wù)器在第一連接上建立一個主對話;和在該連接上建立一條虛擬信道,可操作該虛擬信道傳送特征對話。
2.如權(quán)利要求1所述的計算機(jī)可讀媒體,其特征在于,該方法還包括建立一個繞過服務(wù)器的直接連接;和將特征對話的通信切換到該直接連接。
3.如權(quán)利要求2所述的計算機(jī)可讀媒體,其特征在于,所述建立一個直接連接包括在網(wǎng)絡(luò)配置的基礎(chǔ)上選擇一個傳輸網(wǎng)橋。
4.如權(quán)利要求1所述的計算機(jī)可讀媒體,其特征在于,所述建立一條虛擬信道包括在第一連接上對特征對話和主對話進(jìn)行多路傳輸。
5.如權(quán)利要求4所述的計算機(jī)可讀媒體,其特征在于,所述多路傳輸包括在特征對話中的數(shù)據(jù)上加一個特征對話標(biāo)識符,和在主對話中的數(shù)據(jù)上加一個主對話標(biāo)識符。
6.如權(quán)利要求1所述的計算機(jī)可讀媒體,其特征在于,所述建立一個主對話包括利用對話層協(xié)議(SIP)初始化該主對話,其中該SIP利用一個電子郵件地址來初始化該主對話。
7.用于網(wǎng)絡(luò)通信的系統(tǒng),其特征在于,該系統(tǒng)包括多個傳輸網(wǎng)橋,每個傳輸網(wǎng)橋?qū)?yīng)于一個有效網(wǎng)絡(luò)裝置配置;和一個切換模塊,可操作用于根據(jù)有效網(wǎng)絡(luò)裝置配置選擇一個傳輸網(wǎng)橋,以便在兩個計算機(jī)裝置之間形成連接。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述有效網(wǎng)絡(luò)裝置配置包括至少一個在第一計算機(jī)裝置和第二計算機(jī)裝置之間的防火墻。
9.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述有效網(wǎng)絡(luò)裝置配置包括至少一個在第一計算機(jī)裝置和第二計算機(jī)裝置之間的網(wǎng)址翻譯器。
10.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述多個網(wǎng)橋包括以下網(wǎng)橋中的至少一個可靠的用戶數(shù)據(jù)報協(xié)議網(wǎng)橋;傳送控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)網(wǎng)橋;和交換器網(wǎng)橋。
11.如權(quán)利要求7所述的系統(tǒng),其特征在于,還包括一個特征;和一個主對話,可用于建立與特征相關(guān)聯(lián)的特征對話。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,還包括一個傳輸層,可用于經(jīng)過選定的傳輸網(wǎng)橋多路傳輸特征數(shù)據(jù)和主對話數(shù)據(jù),和通過選定的傳輸網(wǎng)橋傳送多路傳輸?shù)臄?shù)據(jù)。
13.用于給即時通信應(yīng)用程序使用的傳輸協(xié)議棧,其特征在于,該傳輸協(xié)議棧包括一包括多個網(wǎng)橋模塊的網(wǎng)橋?qū)?,每個網(wǎng)橋模塊對應(yīng)于一個有效網(wǎng)絡(luò)裝置配置;和一切換模塊,可用于根據(jù)有效網(wǎng)絡(luò)裝置配置動態(tài)地選擇一個網(wǎng)橋模塊。
14.如權(quán)利要求13所述的傳輸協(xié)議棧,其特征在于,還包括一個可用于檢測有效網(wǎng)絡(luò)裝置配置的檢測模塊。
15.如權(quán)利要求13所述的傳輸協(xié)議棧,其特征在于,所述檢測模塊包括一個回應(yīng)服務(wù)器。
16.如權(quán)利要求13所述的傳輸協(xié)議棧,其特征在于,還包括一個傳輸層,可用于通過選定的網(wǎng)橋模塊之一多路傳輸來自多個對話的數(shù)據(jù)。
17.如權(quán)利要求13所述的傳輸協(xié)議棧,其特征在于,還包括一個主對話,可用于建立一個或多個與即時通信應(yīng)用程序的特征相應(yīng)的特征對話。
18.在其上存儲了計算機(jī)可執(zhí)行指令的計算機(jī)可讀媒體,其特征在于,所述指令執(zhí)行以下方法通過交換器服務(wù)器在第一客戶機(jī)和第二客戶機(jī)之間建立即時通信對話;自動建立一個對等連接;通過交換器服務(wù)器傳送與即時通信對話相關(guān)聯(lián)的第一數(shù)據(jù);和通過所述對等連接傳送與即時通信對話相關(guān)聯(lián)的第二數(shù)據(jù)。
19.如權(quán)利要求18所述的計算機(jī)可讀媒體,其特征在于,該方法還包括確定一個與第一客戶機(jī)和第二客戶機(jī)相關(guān)聯(lián)的有效網(wǎng)絡(luò)裝置配置;和選擇一個與有效網(wǎng)絡(luò)裝置配置相應(yīng)的對等網(wǎng)橋。
20.如權(quán)利要求18所述的計算機(jī)可讀媒體,其特征在于,所述對等網(wǎng)橋包括一個RUDP網(wǎng)橋。
21.如權(quán)利要求19所述的計算機(jī)可讀媒體,其特征在于,所述對等網(wǎng)橋包括一個TCP/IP網(wǎng)橋。
22.如權(quán)利要求18所述的計算機(jī)可讀媒體,其特征在于,還包括通過交換器服務(wù)器傳送第一數(shù)據(jù)的BLOB的第一部分;和通過所述對等連接傳送第一數(shù)據(jù)的BLOB的后繼部分。
全文摘要
一種示例的方法包括通過服務(wù)器在第一連接上建立一個主對話;在該連接上建立一條虛擬信道,該虛擬信道可用于傳送特征對話。該方法可包括建立一個繞開服務(wù)器的直接連接,并將特征對話的通信切換到直接連接。一種用于網(wǎng)絡(luò)通信的系統(tǒng)包括多個傳輸網(wǎng)橋,每個傳輸網(wǎng)橋?qū)?yīng)一個有效網(wǎng)絡(luò)裝置配置,并包括切換模塊用于選擇一個傳輸網(wǎng)橋,以在有效網(wǎng)絡(luò)裝置配置的基礎(chǔ)上,在兩個計算機(jī)裝置之間形成一個連接。
文檔編號H04L12/28GK1578278SQ20041006327
公開日2005年2月9日 申請日期2004年6月30日 優(yōu)先權(quán)日2003年7月1日
發(fā)明者J·霍姆斯, D·M·米勒, W·馮柯奇 申請人:微軟公司