説明

インスタントメッセージのための移送システム

【課題】交換台接続およびピアツーピアの双方の欠点を補う通信方法を提供する。
【解決手段】例示的な方法は、サーバを介した第1の接続によって主セッションを作成し、第1の接続を介した仮想チャネルを作成する。仮想チャネルは、特徴セッションを伝達するように動作可能とする。また、サーバを迂回する直接接続を確立して特徴セッションの通信を直接接続に切り換え可能とする。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書で説明する対象は、コンピュータ通信に関する。より詳細には、本対象は、インスタントメッセージのための移送システムに関する。
【背景技術】
【0002】
インスタントメッセージは、コンピュータ装置のユーザに非常に人気のある通信ツールになりつつある。インスタントメッセージ(IM)アプリケーション(例えば、マイクロソフトコーポレーション(ワシントン州Redmond)のウィンドウズ(登録商標)メッセンジャーシステム、Yahoo!メッセンジャー、AOLインスタントメッセンジャー(AIM)など)は、ユーザが、ユーザの個人的な交信先のリストにおいて識別される1つまたは複数の交信先とのリアルタイムの会話に携わることを可能にする。通常、個人的なリストはサーバ上に格納され、会話は、着信メッセージを適切な受信者に向ける交換台または中継サーバを介して確立される。
【0003】
交換台を介したリアルタイムのメッセージの経路指定は、メッセージが交換台を介さず、会話の参加者の間で直接渡されるピアツーピアな配置におけるインスタントメッセージより遅く、(サーバ資源の点で)コストがかかる場合がある。したがって、交換台サーバを用いて会話が確立された後、一般的なインスタントメッセージシステムは、会話をピアツーピアな構成に変換することを試みることができる。ピアツーピアへの変換は、メッセージをピアに直接送信するためのIP(インターネットプロトコル)アドレスおよび/またはポート番号によってピアを識別することを一般に含むいくつかの方法で行うことができる。
【0004】
しかし、ピアツーピアな会話の作成は、アクティブネットワーク装置、例えばファイアウォールやネットワークアドレス変換器(NAT)を含む状況において不可能ではないとしても、困難な場合がある。このような装置は、システムの安全性のために使われるが、一般に、このような装置の後方にあるコンピュータへの直接アクセスを防止するために設計される。例えば、NATはそれ自体のIPアドレスをもち、NATの後方のコンピュータはそれ自体のIPアドレスをもち、こうしたIPアドレスは非公開である。すなわち、NATの外部にある他のコンピュータは、NATの後方にあるコンピュータのIPアドレスを判別することができない。NATが受信するメッセージのIPアドレスはNAT後方の受信者コンピュータのIPアドレスに変換される。アクティブネットワーク装置を介するトンネルを通し、またはその装置をトラバースして直接接続を形成するために、様々な技術を適用することができる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
インスタントメッセージシステムは、向上するのに従って、会話をより経験豊かにさせる、テキスト以外のより多くの特徴を一般に提供する。例えば、インスタントメッセージシステムは、ユーザに一義的に関連づけられた音声、映像、またはカスタムユーザタイル(表示画像とも呼ばれる)をユーザが伝送することを可能にすることができる。このような特徴は一般に、会話に含まれるテキストより多くの資源、例えば伝送帯域幅を必要とする。
【0006】
したがって、ピアツーピアは通常、交換台サーバを介した接続より高い性能を提供するので、インスタントメッセージの会話を持続する場合は、ピアツーピア接続が望ましい。
【課題を解決するための手段】
【0007】
本明細書において説明し権利請求する実施形態は、上述した問題、および他の問題を解決する。
【0008】
例示的な方法は、サーバを介した第1の接続によって主セッションを作成すること、および第1の接続を介した仮想チャネルを作成することであって、仮想チャネルは、特徴セッションを伝達するように動作可能であることを含む。この方法は、サーバを迂回する直接接続を確立すること、および特徴セッションの通信を直接接続に切り換えることを含むことができる。
【0009】
ネットワーク通信のためのシステムは、各移送ブリッジがアクティブネットワーク装置構成に対応する複数の移送ブリッジと、移送ブリッジの1つを選択して、アクティブネットワーク装置構成に基づいて2つの計算装置の間の接続を形成するように動作可能な切換えモジュールとを含む。
【図面の簡単な説明】
【0010】
【図1】例示的なインスタントメッセージシステム内の構成要素を示すブロック図である。
【図2】インスタントメッセージのシナリオにおけるデータ通信を管理する例示的な層を含む移送システムを示す図である。
【図3】好ましい移送ブリッジを選択するように動作可能な、例示的なブリッジ選択モジュールを示すブロック図である。
【図4】2つのピア装置の間の物理接続に渡る仮想チャネルを示すブロック図である。
【図5】主セッション中に特徴セッションを確立し、可能な場合には直接接続を生成する例示的な動作を有する動作フローを示す図である。
【図6】好ましい移送ブリッジを決定し、好ましい移送ブリッジを用いて直接接続を生成する例示的な動作を有する動作フローを示す図である。
【図7】バイナリラージオブジェクト(BLOB)を順に移送する例示的な動作を有する動作フローを示す図である。
【図8】好ましい移送ブリッジを透過的に選択し、インスタントメッセージのシナリオにおいて特徴データを伝達するのに適した動作環境を提供する例示的なシステムを示す図である。
【発明を実施するための形態】
【0011】
図面に移ると、同じ参照番号は同じ要素を指し、様々な方法が、適切な計算機環境において実施される方法として例示される。そうすることが必要なわけではないが、様々な例示的な方法は、パーソナルコンピュータおよび/または他の計算装置によって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的な状況において説明される。概して、プログラムモジュールは、特定のタスクを実行しまたは特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。
【0012】
さらに、様々な例示的な方法は、携帯型装置、マルチプロセッサシステム、マイクロプロセッサベースの家電製品またはプログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなど他のコンピュータシステム構成に適用できることが、当業者には理解されよう。様々な例示的な方法は、通信ネットワークを介してリンクされるリモート処理装置によってタスクが実行される分散型計算機環境でも適用することができる。分散型計算機環境では、プログラムモジュールは、ローカルおよびリモートメモリ記憶装置両方に置くことができる。
【0013】
本明細書のいくつかの図面において、様々なアルゴリズムに関する動作は、個別の「ブロック」にまとめられる。このようなブロックは、処理の進行に従って行われまたは実行される特定の動作または判断を記述する。マイクロコントローラ(または等価物)が利用される場合、本明細書において提示するフロー図は、このようなマイクロコントローラ(または等価物)によって所望の制御を達成するのに使うことができる「制御プログラム」またはソフトウェア/ファームウェアのための基盤を提供する。このような基盤として、処理は、プロセッサによって実行されると、ブロックとして示される様々な動作を実行する、メモリ中に格納可能なマシン可読命令として実装される。
【0014】
当業者であれば、本明細書において提示されるフロー図および他の説明に基づいて、このような制御プログラムをすぐに書くことができる。本明細書において説明する本対象は、プログラミングされると以下で説明する動作を実行する装置および/またはシステムだけでなく、マイクロコントローラをプログラミングするように構成されるソフトウェア、さらに、このようなソフトウェアを具体化することができるあらゆるコンピュータ可読媒体も含むことを理解されたい。このようなコンピュータ可読媒体の例は、フロッピー(登録商標)ディスク、ハードディスク、CD、RAM、ROM、フラッシュメモリなどを含むが、これに限定されない。
【0015】
インスタントメッセージのための例示的なネットワーク環境 図1は、インスタントメッセージによる会話のための例示的なネットワーク環境100を示す。概して、2つのクライアント102および104は、ネットワーク106を介して互いに通信することができる。アクティブネットワーク装置108および110は、ネットワーク環境100に存在してもしなくてもよい。エコーサーバ112および交換台サーバ114は、ネットワーク106を介して、クライアント102と104の間の通信を実行するように接続することができる。
【0016】
インスタントメッセージ(IM)プラットフォーム116は、クライアント(1)102およびクライアント(2)104がインスタントメッセージによる会話に携わることを可能にする。IMプラットフォーム116のユーザは、ユーザインターフェース(図示せず)を介してIMプラットフォーム116と対話して、クライアント(2)104との間でメッセージを送受信する。IMプラットフォーム116は、クライアント(1)102とクライアント(2)104の間のデータ通信を実行する特徴(features)118(エンドユーザ特徴(EUF)とも呼ばれる)およびトランスポートプロトコルスタック122を含む。
【0017】
より具体的には、トランスポートプロトコルスタック122は、ネットワーク環境100の特性に基づいて、インスタントメッセージセッションを透過的に確立する。概して、確立されたセッションは、交換台(SB)サーバ114を介しても、代わりに、データがSBサーバ114を介して経路指定されないように、ピアツーピア接続124を介してもよい。
【0018】
クライアント102および104は、インターネットサービスプロバイダ(図示せず)を介して、または他の方法で、ネットワーク106にアクセスすることができる。一実施形態では、クライアント102および104はそれぞれ、クライアント102と104の間で通信を確立するための一義的なネットワークアドレス、ポート、および/または識別子をもつ。例えば、SBサーバ114は、クライアントコンピュータ(2)104のネットワークアドレス、ポート、および/または識別子を用いて、クライアントコンピュータ(2)104にデータを経路指定することができる。ピアツーピア接続124を介することによって、クライアントコンピュータ(1)102は、クライアントコンピュータ(2)104のネットワークアドレス、ポート、および/または識別子を用いて、クライアントコンピュータ(2)104にデータを直接送信することができる。
【0019】
上述したように、アクティブネットワーク装置(1)108およびアクティブネットワーク装置(2)110は、存在してもしなくてもよい。アクティブネットワーク装置の例は、そのそれぞれのクライアント装置にシステムの安全性を提供するファイアウォールおよびネットワークアドレス変換器である。したがって、アクティブネットワーク装置(2)110は、クライアントコンピュータ(2)104に安全性を提供することができ、アクティブネットワーク装置(1)108は、クライアントコンピュータ(1)102に安全性を提供することができる。
【0020】
したがって、様々なネットワーク構成が可能である。あるネットワーク構成では、アクティブネットワーク装置(1)108は存在するが、アクティブネットワーク装置(2)110は存在しない。別のネットワーク構成では、アクティブネットワーク装置(2)110は存在するが、アクティブネットワーク装置(1)108は存在しない。別のネットワーク構成では、アクティブネットワーク装置(1)108もアクティブネットワーク装置(2)110も存在しない。第4のネットワーク構成では、アクティブネットワーク装置(1)108およびアクティブネットワーク装置(2)110両方が存在する。
【0021】
アクティブネットワーク装置108および110は、一義的なネットワークアドレス、例えばIP(インターネットプロトコル)アドレスを有し、こうしたアドレスによって、アクティブネットワーク装置108および110は、それぞれのクライアント102および104に向けられたデータを受信する。アクティブネットワーク装置108または110は、それぞれのネットワークアドレスにおいてデータを受信し、ネットワークアドレスをそれぞれのクライアント102および104に関連づけられたネットワークアドレスに変換する。
【0022】
クライアント(1)102は、エコーサーバ112を使って、アクティブネットワーク装置(1)108に関連づけられたネットワークアドレスを取得することができる。クライアント(1)は、エコーサーバ112にメッセージを送信することができる。エコーサーバ112がクライアント(1)102からメッセージを受信する場合、メッセージは、アクティブネットワーク装置108のネットワークアドレスを含む。これに応答して、エコーサーバ112は、アクティブネットワーク装置108のネットワークアドレスをクライアント102に返信する。クライアント(2)104は、アクティブネットワーク装置(2)110のネットワークアドレスを同様に取得することができる。アクティブネットワーク装置108および110のネットワークアドレスを用いて、クライアント102および104は、ピアツーピア接続124を確立することができる。
【0023】
図1の例示的な環境100では、会話においてただ2つのクライアント102および104を示すが、2つより多くのクライアントを会話に含めることができることを理解されたい。2つ以上のクライアントは、多地点方式で通信することができ、この方式では、各クライアントは、他のすべてのクライアントに対してピアツーピア接続を有することができる。代替として、2つ以上のクライアントは、交換台サーバ114を介して会話に携わることができる。さらに、ピアツーピア接続、および交換台を介した接続のどの組合せも、会話において実装することができる。ネットワーク環境100において利用することができる例示的な動作およびシステムのより詳細な説明を、以下で行う。
【0024】
クライアント間においてインスタントメッセージを移送する例示的なシステム 図2は、インスタントメッセージのシナリオにおいてデータ通信を管理する例示的な層を含む移送システム200を示す。概して、こうした層はそれぞれ、層に関連づけられた様々なタスクを実行する機能および/またはデータを提供する。層に関するトランスポートプロトコルおよびシステムの説明が、当業者には理解されよう。
【0025】
移送システム200は、特徴202を含む。特徴202は、特徴に関連づけられたデータを提示するための、メッセンジャーアプリケーション(例えば、図1のインスタントメッセージプラットフォーム116)によってまたはその内部でホストされまたは実行される関数である。特徴は、特徴が提示するデータのタイプ、データを提示する方法、特徴がデータに対して実行できる動作、および/またはユーザがデータと対話するために特徴が提供する対話選択肢によって特徴づけることができる。例えば、カスタムユーザタイル特徴は、ユーザインターフェースにおける表示面タイル中の画像データを提示し、ファイル転送特徴は、ユーザがファイルを選択すると共にそのファイルをインスタントメッセージの交信先に送信することを可能にする。限定ではなく例として、特徴層202は、顔文字、インク、埋込み画像、およびその他を含むことができる。
【0026】
特徴202は、トランスポートプロトコルスタック206中の層を用いて、インスタントメッセージのシナリオにおいてデータを伝達する。トランスポートプロトコルスタック206は、会話においてクライアントとの間のデータの送受信の詳細を透過的に管理する。トランスポートプロトコルスタック206は、移送アプリケーションプログラムインターフェース(API)208を特徴202に提供し、このAPIによって、特徴202は、データを送受信することができる。トランスポートプロトコルスタック206の下位層は、ネットワーク構成データ、および特徴202にあるデータについての情報を用いて、インスタントメッセージセッションを確立する。したがって、トランスポートプロトコルスタック206は、特徴202に透過なデータの伝達に関するより低レベルな詳細を作成する。
【0027】
「BLOB」(バイナリラージオブジェクト)および「チャンク」という用語は、本明細書において、データのタイプにもサイズにも関わらず、ネットワーク環境において送信および/または受信することができるデータの部分を指すのに使われる。例えば、デジタル画像は、データからなる1つまたは複数のBLOBから構成することができる。BLOBは、データからなる1つまたは複数のチャンクから構成される。
【0028】
上述したように、例示的な移送API208は、トランスポートプロトコルスタックの機能を特徴202に露出する方法または関数を提供する。API208のある特定の実施形態は、以下の方法を含む。
【0029】
【表1】

【0030】
例示的なAPI208を説明する。特徴層202中の特徴は、CreateDataChannel()関数を用いて、セッションを作成することができる。特徴は、勧誘が特徴に対して受信されると、レジスタRegisterFeatureHandler()を呼び出して、呼び出されたハンドラを登録することができる。特徴は、チャネルイベントが起こると、RegisterDataChannelCallBacks()を呼び出して、呼び出されたハンドラを登録することができる。特徴は、SendData()を呼び出して、クライアントにデータを送信することができる。関数OnDataReceived()は、データが特徴に対して受信されると、別のトランスポートプロトコル層、例えばセッション層210によって呼び出される。
【0031】
例示的なセッション層210は、特徴202にセッションサービスを提供する論理を含む。インスタントメッセージによる会話は、会話を実行するインスタントメッセージセッションと呼ばれる、少なくとも1つのセッションを含む。SLPの実施形態は、特徴セッションと呼ばれる、特徴に対する他のセッションを確立する制御論理を有する主セッションも含む。セッション層210は、セッションを初期化するためのプロトコルである。一実施形態では、セッション層210は、ピアのそれぞれの性能に基づいて、2つのピアの間のセッションの確立を交渉することによって、セッションを開始する。
【0032】
セッション層210のある特定の実施形態では、セッション開始プロトコル(SIP)の部分集合が利用される。この実施形態において、メッセージは、人間が読むことのできる形式(例えば、XML(拡張マークアップ言語)、CSV(コンマ区切り書式)など)で送信することができる。例示的なセッション管理メッセージは、「INVITE」、「BYE」、「CANCEL」、および「ACK」である。
【0033】
例示的な移送層212は、OSI(開放型システム相互接続)標準の移送層プロトコルを処理する論理を含む。TLPは、ネットワークチャネルを介して任意のサイズのBLOB(バイナリラージオブジェクト)を送受信するバイナリプロトコルである。移送層212は、様々なデータ管理タスクを実行する。例えば、後でさらに詳しく説明するように、移送層212は、ネットワーク接続を介してデータを多重化し、そうすることによって、単一のネットワーク接続において仮想チャネルを作成するように動作可能である。後でさらに詳しく説明するように、移送層212は、移送ブリッジ層214に常駐する1つまたは複数の移送ブリッジ、例えばTCPブリッジやSBブリッジとインターフェースをとる。移送層212は、ブリッジ層214中のブリッジを介して移送される、特徴202にあるデータをスケジュールするスケジューラおよびキューを含むことができる。
【0034】
ある特定の実施形態では、移送層212は、移送される各BLOBの各チャンクにTLPヘッダを付加する。このヘッダは、BLOBおよびチャンクについての情報を提供する。チャンクを受信すると、必要な場合には、移送層212は、ヘッダを解析して、どのようにしてチャンクを再アセンブルすべきか、また、どのようにしてBLOBを並べ替えるべきか決定することができる。例示的な一実施形態では、TLPヘッダは以下のようになる。
【0035】
【表2】

【0036】
フィールド「SessId」は、送信または受信中のデータのチャンクに関連づけられたセッションを識別する。「SessId」フィールドは、移送層212によって、データのチャンクをある特定のセッションに関連づけるのに使われ、そうすることによって、そのデータチャンクの多重化および/または逆多重化を行う。トランスポートプロトコルスタック206によって利用されるデータの多重化は、後でさらに詳しく説明する。
【0037】
フィールド「BlobId」は、送信または受信中のデータに対応するBLOB(バイナリラージオブジェクト)を識別する。フィールド「BlobId」は、トランスポートプロトコルスタック206によって、チャンクを対応するBLOBにアセンブルしまたは再アセンブルするのに使うことができる。「Offset」フィールドは、チャンクが、対応するBLOBのどこに配置されているか表す。BlobIdは、配信の前に、または受信の後で、BLOBを正しい順序で配置するのに使うこともできる。「BlobSize」フィールドは、BLOBのサイズを表す。「ChunkSize」フィールドは、ヘッダを含まないデータチャンクのサイズを表す。
【0038】
「Flags」フィールドは、移送層212によって、クライアントの間でデータを送受信する処理を管理するのに使われる、いくつかのフラグを提供する。例示的な「Flags」を、以下に示し説明する。
【0039】
【表3】

【0040】
移送ブリッジ層214は、ネットワークを介してデータを移送する論理を含む。例えば、移送ブリッジ層214は、データの符号化および/または復号化を実行することができる。一実施形態では、移送ブリッジ層214は、ネットワーク構成に対応する機能およびネットワーク上で通信するためのデータ特性をそれぞれが有する1つまたは複数の移送ブリッジを含む。例示的な移送ブリッジ、ならびにブリッジを選択するシステムおよび動作は、後で詳しく説明する。
【0041】
一実施形態では、移送層212は、移送ブリッジ層214を用いて、セッション中に2つのタイプのブリッジの間を遷移することができる。したがって、セッションは、交換台(SB)ブリッジを介して開始することができ、そうすることによってセッションデータは交換台サーバを介して伝達されるが、その後、セッションは、直接接続またはピアツーピア接続に切り換わることができる。さらに、ピアツーピア接続が遮断されると、移送層212は、それに応答して、SBブリッジ、またはブリッジ層214中の他の利用可能な何らかのブリッジに切換え復帰することができる。移送層212は、トランスポートプロトコルスタック206の上位層に透過なやり方で、異なる接続タイプへの切換えを処理する。
【0042】
移送層212は、ブリッジ層214と協働して、確実にBLOBが正しい順序で配信および/または受信されるようにする。接続のタイプはセッション中に比較的遅い接続から比較的速い接続に変わり得るので、移送層212が正しい順序を保証するためのステップを踏まない限り、比較的遅い接続を介して伝送されたBLOBは、比較的速い接続を介して伝送されるBLOBの後に宛先に到達する場合がある。配信の正しい順序を確実に維持するための例示的な動作は、後で説明する。
【0043】
ネットワーク層218は、標準ネットワーク通信関数を実行する、より低レベルの通信機能を表す。ネットワーク層218は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)機能、UDP(汎用データグラムプロトコル)機能、HTTP(ハイパーテキストトランスポートプロトコル)機能、SOAP(シンプルオブジェクトアクセスプロトコル)を含むことができるが、それに限定されない。ブリッジ層214は、ネットワーク層218の機能を利用して、ネットワークを介してデータを伝達することができる。
【0044】
本明細書で説明するように、いくつかの移送ブリッジは、異なるネットワーク構成、ならびにデータタイプ、形式、および/またはサイズを処理するために提供される。テーブル1は、例示的な移送ブリッジ、および、そうしたブリッジを利用することができる関連するネットワーク構成を示す。
【0045】
【表4】

【0046】
テーブル1中の行と列が交差する箇所のチェックマーク(○)は、交差する行のブリッジが、交差する列のネットワーク構成において使用できることを示す。
【0047】
SBブリッジは、交換台サーバ(例えば、図1の交換台サーバ114)を介してトラフィックを送信する。一実施形態では、インスタントメッセージセッションが初めに確立される場合、SBブリッジが、インスタントメッセージセッションデータを移送するのに使われるブリッジである。その後、SBブリッジは、直接(ピアツーピア)接続を確立することができない場合のみ、使われ続ける。
【0048】
ツイスター移送制御プロトコル(TCP)(IPv6(インターネットプロトコルのバージョン5)TCPとも呼ばれる)ブリッジは、IPv4(インターネットプロトコルのバージョン4)のNATをトラバースするのに使うことができる。一実施形態では、IPv6ブリッジは、テレドトンネリング技術を使用して、ピアツーピア接続を確立する。IPv6/IPv4ホストが1つまたは複数のIPv4NATの後方に配置されている場合、テレドは、ユニキャストIPv6接続性のための、アドレス割当ておよびホスト間自動トンネリングを提供するIPv6/IPv4遷移技術である。IPv4NATをトラバースするために、IPv6パケットが、IPv4ベースのUDP(ユーザデータグラムプロトコル)メッセージとして送信される。
【0049】
ツイスターTCPブリッジは、ネットワークアドレス変換器(NAT)がネットワーク上で構成される場合でも、ピアツーピアなTCP/IP接続を確立するように動作可能である。例えば、第1のクライアントがNATの後方にあり、第2のクライアントがNATまたはファイアウォールの後方にない場合、第1のクライアントのツイスターTCPブリッジは、第2のクライアントとの発信TCP接続を開始する。第1のクライアントは、エコーサーバ(例えば、図1のエコーサーバ112)を使って、第1のクライアントがNATの後方にあることを検出し、したがって、接続を形成する方向を決定することができる。すなわち、第1のクライアントは、TCP接続を開始する。クライアントの1つがUPnP(ユニバーサルプラグアンドプレイ)NATの後方にある場合も、類似の技術を適用することができる。
【0050】
高信頼汎用データグラムプロトコル(RUDP)ブリッジは、UDPを介してデータを伝達し、「パケット」はTCPの下で確認応答されるが、RUDPブリッジは、データ伝送の受信を確認応答することによって、TCP接続をエミュレートする。このようにして、データがドロップされ(すなわち、受信されず)再送信されるべきときをプロトコルが検出することができるので、RUDPブリッジは、従来のUDP接続より信頼できる接続を提供する。RUDPブリッジは、エコーサーバを使って、NATネットワークアドレスを取得することができ、その結果、NATをトラバースすることができる。
【0051】
RUDPブリッジは、伝送されるデータにヘッダを付加する。例示的なヘッダを以下に示す。
【0052】
【表5】

【0053】
例示的なRUDPブリッジプロトコルは、リッスン側RUDPブリッジに「SYN」メッセージを送信すること、「SYN ACK」で応答すること、「SYN ACK」メッセージに「ACK」で応答することを含む。その後、再伝送タイマは、伝送された(または再伝送された)データセットに対して、応答側RUDPブリッジからACKが受信されるまで、データの1つまたは複数の組を再伝送し続ける。
【0054】
図3は、1組の移送ブリッジ304の中から好ましい移送ブリッジを選択するように動作可能な、例示的な選択モジュール302を示すブロック図である。インスタントメッセージアプリケーションは、複数の特徴308を有することができ、各特徴308は、主セッション306およびセッションレジストラ310と通信して、関連づけられた特徴セッション312をセットアップする。特徴データを含むインスタントメッセージデータは、選択されたブリッジを介して移送される。
【0055】
主セッション306は、トランスポートプロトコルスタック206(図2)中のセッション層210(図2)において実行される。主セッション306は、インスタントメッセージアプリケーションにおいて会話が始まると作成される。主セッション306は、会話ウィンドウに関連づけられ、特徴308がスレーブ、すなわち特徴セッション312を要求するためのオブジェクトである。主セッション306は、特徴308が会話ウィンドウのコンテキストの外で主セッションを開始することを可能にする静的メソッドを露出することもでき、そうすることによって、インスタントメッセージによる会話が作成される。
【0056】
特徴308は、セッションレジストラ310に登録を行い、このレジストラは、会話中に実行される特徴に関する情報を維持する。セッションレジストラ310は、「自動スタート」特徴に関する情報を維持することもできる。自動スタート特徴は、デフォルトで存在すべき特徴であり、その勧誘ハンドラは、基底の交換台接続が確立されると、予め定義された呼のIDおよびセッションIDを用いて、会話における両方のクライアントの所で呼び出される。
【0057】
特徴308は、セッションレジストラ310に登録を行うと、特徴308に関連づけられた勧誘ハンドラ関数およびGUID(グローバル固有識別子)を提供する。主セッション306は、特徴レジストラ情報を有する特徴セッション312を確立することができ、このセッションを介して、特徴308は、ピア特徴を有するセッションを実行することができる。
【0058】
例えば、ピアからの勧誘は、主セッション306によって受信することができ、特徴308に対してセッションに加わるよう勧誘する。勧誘は、特徴308に関連づけられたGUIDを指定する。主セッション306は、セッションレジストラ310中でGUIDをルックアップして、特徴308に関連づけられた勧誘ハンドラ関数を見つける。勧誘が特徴308によって受諾されると、主セッション306は、新規特徴セッション312を作成する。
【0059】
特徴308は、ピア特徴に対して、セッションに加わるよう勧誘することができる。そうするために、特徴308は、(例えば、図2の移送API208にあるCreateDataChannel()を呼び出すことによって)主セッション306に対して新規セッションを要求する。特徴308に対する新規セッションの要求は、接続のタイプ(例えば、直接、非直接)に関する要求を含むことができる。主セッション306は、要求された直接接続、データのサイズ、および/またはネットワーク構成などの情報を用いて、ブリッジセレクタ302を呼び出す。ブリッジセレクタ302は、こうした情報を用いて、要求された特徴セッション用に使うのに好ましい移送ブリッジを識別する。
【0060】
一実施形態では、ブリッジセレクタ302は、移送層212(図2)で実行され、好ましいブリッジを選択するための移送ブリッジ選択規則を適用する。一実施形態では、設計目標は、直接ピアツーピアで可能な限り多くのトラフィックを送信し、そうすることによって交換台サーバに関連し得る遅延およびコストを避けることである。この実施形態では、移送ブリッジを選択するために以下の要素が分析される。すなわち、要求される直接接続、移送ブリッジによってサポートされる帯域幅、送信されるデータのサイズ、移送ブリッジのあらゆる限定、ある特定の移送ブリッジに関連づけられたコスト(例えば、中継コスト)、および/またはプライバシーの規定(例えば、IPアドレスを明らかにするかどうか)である。
【0061】
各移送ブリッジは、上記の要素に基づいてスコアを計算する。各移送ブリッジは、そのスコアをブリッジセレクタ302に与え、ブリッジセレクタは、スコアに基づいて好ましい移送ブリッジを選択する。未加工のスコアを分析する前に、ブリッジセレクタ302は、指定された要求を考慮する。例えば、特徴308が直接接続を要求する場合、ブリッジセレクタ302は、すべての非直接ブリッジを候補ブリッジの組から排除することができる。ある特定のネットワーク構成において動作しないブリッジも、候補ブリッジの組から排除される。例えば、ネットワーク構成が2つの対称型レガシーNATを含む場合、ツイスターTCPブリッジは考慮されない。会話の初期化中にエコーサーバのテストから取得される情報は、どのブリッジが動作することができないか決定するのに使うことができる。
【0062】
したがって、ブリッジセレクタ302の一実施形態は、以下の移送ブリッジ選択規則を使用する。
【0063】
1.エコーテスト結果に基づいて、動作することができないブリッジを排除する。
2.発呼者による特定の要求を満たさないブリッジを排除する。
3.スコアが最も高い、残っているブリッジを使う。
4.前のブリッジが失敗した場合、2番目にスコアが高い、残っているブリッジを使う。
5.前のブリッジが失敗した場合、次にスコアが高い、残っているブリッジを使う(以下同様)
【0064】
ブリッジセレクタ302は、規則に基づいて、好ましいブリッジを主セッション306に通知する。これに応答して、主セッション306は、特徴セッション312を作成し、使われる好ましいブリッジをインスタンス化する。特徴セッション312は、作成された後、特徴308が他のピア特徴と通信するためのセッションとなる。特徴セッション312は、データの送信、ならびにセッション制御コール、例えばAcceptSessionおよびAcceptDirectを処理する。
【0065】
図4は、第1のクライアント装置406と第2のクライアント装置408の間の物理接続404に渡る仮想チャネル402を示すブロック図である。接続404およびチャネル402は、クライアント装置406および408によって、インスタントメッセージによる会話に携わるのに使われ、この会話において、様々なタイプのデータが伝達される。装置406および408は「クライアント装置」と呼ばれるが、装置406と408の間の接続404はサーバを介さなくてよく、直接、またはピアツーピア接続でもよいことを理解されたい。
【0066】
図に示すように、データチャネル0は、会話中のテキストメッセージを伝達するのに使われ、データチャネル1は、クライアント装置406と408の間でファイルを転送するのに使われ、データチャネル2は、装置406と408の間で埋込み画像を転送するのに使われ、データチャネル3は、ユーザが現在メッセージを装置406または408の一方でタイプ入力しているか示すタイプ入力指示子情報を伝達するのに使われる。
【0067】
仮想チャネル番号は、セッション識別子に対応する。上述したように、ヘッダ(上記のTLPヘッダを参照されたい)が、接続404を介して伝達されるデータに付加される。このヘッダは、どのセッションおよびどのチャネル(例えば、特徴または主)にデータが対応するか示す「SessId」を含む。SessIdを用いて、複数のセッションからのデータを、接続404を介して多重化することができる。したがって、チャネル402は、「仮想」チャネルとみなされる。SessIdは、クライアント装置406および408の所で受信されたデータをはぎ取られ、データは、SessIdに関連づけられた適切なセッションに経路指定される。
【0068】
別の実施形態では、クライアント装置406とクライアント装置408の間で複数の接続が確立され、こうした接続はそれぞれ、複数の仮想チャネルを含むことができる。例えば、会話が最初にクライアント装置406とクライアント装置408の間で作成されると、交換台サーバを介した接続によって主セッションが作成される。その後、ピアツーピア接続を、クライアント装置406と408の間で確立することができる。この状況において、装置406および408上の特徴は、交換台接続またはピアツーピア接続のどちらかの上で仮想チャネルを確立することができる。
【0069】
トランスポートプロトコルスタックを利用する例示的な動作 図5は、主セッション中に特徴セッションを確立し、可能な場合には直接接続を生成する例示的な動作を有する動作フロー500を示す。動作フロー500は、別のクライアント装置とのインスタントメッセージによる会話に携わるために、クライアント装置、例えば図1に示すクライアントコンピュータ(1)102によって実行することができる。
【0070】
確立動作502は、主セッションを確立する。主セッションは、ユーザが最初にメッセンジャーアプリケーションを起動し、別のユーザとの交信を試みると、確立される。主セッションを確立することは、別のクライアントに対して会話に加わるよう勧誘することを含む。この別のクライアントが勧誘を受諾した後、主セッションが、勧誘側クライアントおよび受諾側クライアント両方において作成される。主セッションは、交換台ブリッジを介して、SB接続によって確立される。主セッションは、特徴セッションを確立するために後で使うことができる。
【0071】
エコーサーバテストが確立動作502に先立って行われなかった場合、確立動作502は、エコーサーバテストを行って、存在し得るファイアウォール、NAT、または他のアクティブネットワーク装置を検出することができる。エコーサーバテストは、エコーサーバ(例えば、図1のエコーサーバ112)にテストメッセージを送信すること、およびエコーサーバが、構成可能などのアクティブネットワーク装置にも対応するネットワークアドレス情報を伴って応答することを含む。
【0072】
ユーザは、テキストデータに加えて特徴データの伝達を望む場合がある。このような特徴データは、ファイル、画像、カスタム顔文字、カスタムユーザタイルなどを含むが、それに限定されない。さらに、メッセンジャーアプリケーションは、特徴セッションを作成して、特徴データを転送することができる。したがって、別の確立動作504において、特徴セッションが確立される。確立動作504は、主セッションが勧誘側クライアントの所で特徴セッションを作成すること、および特徴勧誘を受信側クライアントに送信することを含む。特徴勧誘が受信側クライアントに届くと、勧誘は、受諾または拒否される。
【0073】
確立動作504の説明を続けると、特徴勧誘が受諾された場合、受信側クライアントにおける主セッションは、受信側クライアントにおいて特徴セッションを作成する。受信側クライアントにおける特徴セッションは、勧誘側特徴に対応するGUIDを有する。受信側クライアントにおける主セッションは、そのGUID用に登録される勧誘ハンドラ関数も呼び出す。特徴勧誘が受諾されると、関連する特徴は、特徴セッションを記憶し、その結果、特徴セッションは、そのセッション用の移送APIと対話するのに使うことができる。特徴が受諾すると、コールバックメッセージが勧誘側特徴および受諾側特徴両方に送信され、セッションがデータを送受信するのに使う準備ができたことを知らせる。特徴勧誘が拒否されると、主セッションは、作成された特徴セッションを削除する。
【0074】
確立動作504は、既存の接続、例えば確立されているSB接続を介して、特徴セッションを確立する。より具体的には、特徴セッションデータは、図4に示すように、主セッションデータを有して多重化され、特徴セッションおよび主セッションを同時に実行する。交換台を介した接続はピアツーピア接続より遅い場合があるので、作成動作506は、特徴セッションを行うための直接(ピアツーピア)接続の作成を試みる。作成動作506の例示的な実施形態を図6に示し、以下で説明する。直接接続を作成することができる場合、特徴セッションは、直接接続を用いて実行される。動作フロー500は、終了動作508で終わる。
【0075】
図6は、直接接続を生成する例示的な動作を有する動作フローを示す。ユーザは、開始側クライアントの所で特徴に対して、ユーザが特徴セッションを交換台(SB)サーバではなく直接接続に変えたいと指示すると仮定する。ユーザは、メッセージサイズの制限に制限されることを避けたいので、またはSBサーバによって許可されるより多くのメッセージを送信したいので、またはおそらく自分のメッセージを自分が属している共同ファイアウォール内に留めることを望むので、直接接続を好む場合がある。
【0076】
直接接続に移るようにとの指示を特徴が受信すると、要求動作602が実行され、特徴は、特徴のスレーブセッションにあるメソッドを呼び出す。要求動作602は、直接接続を要求する。スレーブセッションは、この要求を主セッションに渡す。これに応答して、主セッションは、直接接続を要求する受信側クライアント上のピア特徴に「reINVITE」メッセージを送信する。
【0077】
要求動作602の説明を続けると、「reINVITE」メッセージは、勧誘側クライアントによってサポートされるすべての移送ブリッジタイプを識別する情報を含む。受信側クライアントにおける特徴セッションは、特徴に関連づけられた勧誘ハンドラ関数を呼び出す。「reINVITE」は、いくつものやり方で受諾することができる。一実施形態では、特徴は、特徴の勧誘ハンドラにおいて自動受諾設定を設定している場合もある。自動受諾設定は、直接接続に対するすべての要求が自動的に受諾されるべきであることを示す。別の実施形態では、自動拒否設定は、勧誘ハンドラにおいて設定することができ、このことは、直接接続要求が自動的に拒否されることを示す。
【0078】
自動受諾設定も自動拒否設定も設定されていない場合、移送は、グローバルなデフォルト値に関心を向ける。グローバルなデフォルト値が、受諾または拒否するように設定されている場合、「reINVITE」に対して適切な返答が行われる。グローバルなデフォルト値が設定されていない場合、勧誘を受けた特徴は、例えば、「reINVITE」を受諾するか拒否するかに関して、ユーザに入力を要求することによって、勧誘に応答することができる。「reINVITE」が受諾されると仮定すると、選択動作606において好ましい移送ブリッジが識別される。
【0079】
選択動作606は、図3に関連して上述した優先要素を用いて、好ましい移送ブリッジを選択する。受諾動作608は、受諾メッセージを勧誘側クライアントに返送する。受諾メッセージは、好ましいブリッジを含む。受諾は、クライアントが受諾側クライアントの内部および外部のIPv4アドレスならびにIPv6グローバルアドレスももっている場合、それも含む。
【0080】
他方の端末における移送は、受諾メッセージ中に列挙される好ましいブリッジを用いて、受信したIPアドレスおよびポートへの接続を試みる。勧誘側クライアントが接続された後、移送は、「RAK」を送信し、受諾側クライアントは、「ACK」で返答する。接続が失敗すると、勧誘側クライアントは、「RAK」を送信した後でタイムアウトする。一実施形態では、勧誘側主セッションは次いで、別の「reINVITE」を送信し、今回は、失敗した移送ブリッジタイプを除外する。動作フローは、終了動作610で終わる。
【0081】
図7は、バイナリラージオブジェクト(BLOB)を順に移送する例示的な動作を有する動作フロー700を示す。概して、BLOBの最後のチャンクが新規の直接接続を介して伝送される前に、移送は、非直接接続を介して先に伝送されたBLOBのチャンクに関連づけられたすべての「ACK」を受信するのを待つ。このやり方で「ACK」を待つのは、どのタイプの移送ブリッジまたは接続(すなわち、UDP、TCP、または他の方法)が使われているかに関係なく行われる。
【0082】
伝送動作702は、最初に、非直接接続を用いてBLOBを伝送する。クエリ動作704は、移送ブリッジタイプが直接接続に切り換えられたか判定する。移送ブリッジタイプが切り換えられていない場合、クエリ動作704は、「NO」に分岐して伝送動作706へ進む。伝送動作706は、非直接接続を介してBLOBのチャンクを伝送する。
【0083】
伝送動作706においてチャンクが伝送された後、クエリ動作704は再度、移送ブリッジタイプが変わっているか判定する。移送ブリッジタイプが変わっている場合、クエリ動作704は、「YES」に分岐して、別のクエリ動作708に進む。クエリ動作708は、現在のBLOB識別子(ID)が最後のBLOB IDより大きいか判定する。現在のBLOB IDが最後のBLOB IDより大きくない場合、クエリ動作708は「NO」に分岐して伝送動作706に進み、ここで現在のBLOBのチャンクを伝送する。
【0084】
現在のBLOB IDが最後のBLOB IDより大きいとクエリ動作708が判定した場合、クエリ動作708は、「YES」に分岐して別のクエリ動作710に進む。クエリ動作710は、伝送される現在のチャンクがBLOB中の最後のチャンクであるか判定する。現在のチャンクがBLOB中の最後のチャンクでない場合、クエリ動作710は、「NO」に分岐して伝送動作706に進み、ここで現在のチャンクを伝送する。現在のチャンクがBLOB中の最後のチャンクであるとクエリ動作710が判定した場合、クエリ動作710は、待機動作712に分岐する。待機動作712は、元の非直接接続を介して伝送されたすべてのACKがBLOBに対して受信されるまで待つ。
【0085】
インスタントメッセージのためのネットワーク環境において使用することができる例示的なコンピュータシステム 図8およびそれに対応する説明では、コンピュータデータを移送する、説明した配置および手順を実装することができる適切な計算機環境の、概略的な説明を提供することを意図している。例示的な計算機環境820は、適切な計算機環境の一例に過ぎず、本対象の使用または機能の範囲に関するどのような制限を示唆することも意図していない。また、計算機環境820は、例示的な計算機環境820に示される構成要素のどの1つまたはその組合せに関するどのような依存も要件も有していると解釈されるべきではない。
【0086】
相互接続された装置の間でコンピュータデータを移送するための例示的な配置および手順は、多数の他の汎用または専用計算機システム環境とも構成とも動作可能である。本対象と共に使用するのに適切であり得る公知の計算システム、環境、および/または構成の例には、パーソナルコンピュータ、サーバコンピュータ、小型軽量クライアント、大型クライアント、携帯型またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、メインフレームコンピュータ、上記のシステムまたは装置のいずれをも含む分散型計算機環境、例えばサーバファームおよび企業イントラネットなどがあるが、それに限定されない。
【0087】
計算機環境820は、汎用計算装置を、コンピュータ830の形で含む。コンピュータ830は図1〜7を参照して上で説明したインスタントメッセージ用移送システムの例示的な実施形態を含み、かつ/またはその実施形態として働くことができる。コンピュータ830の構成要素は、1つまたは複数のプロセッサまたは処理装置832と、システムメモリ834と、システムメモリ834など様々なシステム構成要素をプロセッサ832に結合するバス836とを含むことができるが、これに限定されない。
【0088】
バス836は、様々なバスアーキテクチャのどれをも使用するメモリバスまたはメモリコントローラ、周辺バス、グラフィック専用高速バス、およびプロセッサまたはローカルバスなどいくつかのタイプのバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、このようなアーキテクチャは、ISA(業界標準アーキテクチャ)バス、MCA(マイクロチャネルアーキテクチャ)バス、EISA(拡張ISA)バス、VESA(米国ビデオ電子装置規格化協会)ローカルバス、およびメザニン(Mezzanine)バスとしても知られるPCI(周辺装置相互接続)バスを含む。
【0089】
コンピュータ830は通常、様々なコンピュータ可読媒体を含む。このような媒体は、コンピュータ830によってアクセス可能であると共に揮発性媒体および不揮発性媒体両方、取外し可能媒体および固定型媒体を含む、利用可能などの媒体でもよい。
【0090】
システムメモリは、コンピュータ可読媒体を、ランダムアクセスメモリ(RAM)840など、揮発性メモリの形、および/または読出し専用メモリ(ROM)838など、不揮発性メモリの形で含む。基本入出力システム(BIOS)842は、例えば起動中にコンピュータ830内部の要素間の情報の伝達を助ける基本ルーチンを含み、ROM838に格納される。RAM840は一般に、プロセッサ832に対してただちにアクセス可能な、かつ/またはプロセッサ832によって現在操作されているデータおよび/またはプログラムモジュールを含む。
【0091】
コンピュータ830は、他の取外し可能/固定型、揮発性/不揮発性コンピュータ記憶媒体をさらに含むこともできる。例示のみのために、図8では、固定型の不揮発性磁気媒体(図示しないが、一般に「ハードドライブ」と呼ばれる)からの読出しまたはそこへの書込みをするハードディスクドライブ844、取外し可能な不揮発性磁気ディスク848(例えば「フロッピー(登録商標)ディスク」)からの読出しまたはそこへの書込みをする磁気ディスクドライブ846、および、CD−ROM、DVD−ROM、または他の光学媒体など取外し可能な不揮発性光ディスク852からの読出しまたはそこへの書込みを行う光ディスクドライブ850を示す。ハードディスクドライブ844、磁気ディスクドライブ846、および光ディスクドライブ850はそれぞれ、1つまたは複数のインターフェース854によって、バス836に接続される。
【0092】
ドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ830のための他のデータの不揮発性記憶を実現する。本明細書で説明する例示的な環境では、ハードディスク、取外し可能磁気ディスク848、および取外し可能光ディスク852を使用しているが、コンピュータによるアクセスが可能なデータを格納することができる他のタイプのコンピュータ可読媒体、例えば磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)なども例示的な動作環境において使うことができることが、当業者には理解されよう。
【0093】
限定ではなく例示として、オペレーティングシステム858、1つまたは複数のアプリケーションプログラム860、他のプログラムモジュール862、およびプログラムデータ864など、いくつかのプログラムモジュールを、ハードディスク、磁気ディスク848、光ディスク852、ROM838、またはRAM840に格納することができる。アプリケーションプログラム860は、本明細書で説明した特徴およびトランスポートプロトコルスタックを使用するインスタントメッセージアプリケーションを含むことができる。
【0094】
ユーザは、キーボード866および指示装置868(例えば「マウス」)などの任意選択の入力装置を介して、コマンドおよび情報をコンピュータ830に入力することができる。他の入力装置(図示せず)には、マイクロホン、ジョイスティック、ゲーム用パッド、衛星パラボラアンテナ、シリアルポート、スキャナなどがあり得る。こうしたおよび他の入力装置は、バス836に結合されるユーザ入力インターフェース870を介して処理装置832に接続されるが、他のインターフェースおよびバス構造、例えば並列ポート、ゲームポートまたはユニバーサルシリアルバス(USB)によって接続することもできる。
【0095】
任意選択のモニタ872または他のタイプの表示装置が、映像アダプタ874などのインターフェースを介してバス836に接続される。モニタに加えて、パーソナルコンピュータは通常、他の周辺出力装置(図示せず)、例えばスピーカおよびプリンタを含み、こうした周辺出力装置は、出力周辺インターフェース875を介して接続することができる。
【0096】
コンピュータ830は、リモートコンピュータ882など、1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続された環境において動作することができる。リモートコンピュータ882は、コンピュータ830に関連して本明細書で説明した要素および特徴の多くまたはすべてを含むことができる。図8に示す論理接続は、ローカルエリアネットワーク(LAN)877および一般的なワイドエリアネットワーク(WAN)879である。LAN877および/またはWAN879は、有線ネットワーク、無線ネットワーク、または有線ネットワークもしくは無線ネットワークのどの組合せでもよい。このようなネットワーク環境は、会社、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいてよく見られる。
【0097】
LANネットワーク環境において使われる場合、コンピュータ830は、ネットワークインターフェースまたはアダプタ886を介してLAN877に接続される。WANネットワーク環境において使われる場合、コンピュータ830は通常、モデム878、または、WAN879を介した通信を確立する他の手段を含む。モデム878は、内部にあっても外部にあってもよく、ユーザ入力インターフェース870または他の適切な機構を介してシステムバス836に接続することができる。図8には、インターネットによるWANの具体的な実施形態を示してある。コンピュータ830は一般に、モデム878またはインターネット880を介した通信を確立する他の手段を含む。モデム878は、インターフェース870を介して、バス836に接続される。
【0098】
ネットワーク接続された環境では、パーソナルコンピュータ830に関連して図示したプログラムモジュールまたはその一部は、リモートメモリ記憶装置に格納することができる。限定ではなく例として、図8では、リモートアプリケーションプログラム889を、リモートコンピュータ882のメモリ装置に常駐するものとして示した。図示し説明したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使うことができることが理解されよう。
【0099】
結論
以上、配置および手順を、構造的な特徴および/またはメソッドにおける動作に特有の言葉で説明したが、添付の特許請求の範囲において定義される本対象は、説明した特定の特徴にも動作にも必ずしも限定されないことを理解されたい。そうではなく、こうした特定の特徴および動作は、権利請求する本対象を実施する好ましい形態として開示するものである。

【特許請求の範囲】
【請求項1】
ネットワーク通信のためのシステムであって、
各移送ブリッジがアクティブネットワーク装置構成に対応する複数の移送ブリッジと、
前記移送ブリッジの1つを選択して、前記アクティブネットワーク装置構成に基づいて2つの計算装置の間の接続を形成するように動作可能な切換えモジュールと
を備えることを特徴とするシステム。
【請求項2】
前記アクティブネットワーク装置構成は、第1の計算装置と第2の計算装置の間に少なくとも1つのファイアウォールを備えることを特徴とする請求項に記載のシステム。
【請求項3】
前記アクティブネットワーク装置構成は、第1の計算装置と第2の計算装置の間に少なくとも1つのネットワークアドレス変換器を備えることを特徴とする請求項に記載のシステム。
【請求項4】
前記複数のブリッジは、 高信頼ユーザデータグラムプロトコルブリッジと、
伝送制御プロトコル/インターネットプロトコル(TCP/IP)ブリッジと、
交換台ブリッジと
の少なくとも1つを備えることを特徴とする請求項に記載のシステム。
【請求項5】
特徴と、
前記特徴に関連づけられた特徴セッションを作成するように動作可能な主セッションと
をさらに備えることを特徴とする請求項に記載のシステム。
【請求項6】
特徴データおよび主セッションデータに渡って多重化を行い、前記多重化したデータを、前記選択した移送ブリッジを介して伝達するように動作可能な移送層をさらに備えることを特徴とする請求項に記載のシステム。
【請求項7】
転送手段が、各ブリッジモジュールがアクティブネットワーク装置構成に対応する複数のブリッジモジュール、切り替え手段および情報処理手段を有し、該転送手段を有するコンピュータにおけるインスタントメッセージ通信方法であって、
転送すべきデータを前記情報処理手段により作成するステップと、
前記アクティブネットワーク装置構成に基づいて、前記ブリッジモジュールの1つを動的に選択するように前記切り替え手段により切り替えるステップであって、その結果、作成された前記データが前記転送手段により転送されるステップと
を備えることを特徴とする方法。
【請求項8】
前記転送手段は、前記アクティブネットワーク装置構成を検出するように動作可能な検出モジュールをさらに備えることを特徴とする請求項に記載の方法。
【請求項9】
前記検出モジュールは、エコーサーバを備えることを特徴とする請求項に記載の方法。
【請求項10】
前記転送手段は、前記ブリッジモジュールの前記選択された1つを介して、複数のセッションからのデータを多重化することを特徴とする請求項に記載の方法。
【請求項11】
前記データは、前記インスタントメッセージアプリケーションの特徴に対応する1つまたは複数の特徴セッションを作成するように動作可能な主セッションをさらに備えることを特徴とする請求項に記載の方法。
【請求項12】
第1のクライアントコンピュータにより実行されるプログラムを記録したコンピュータ可読媒体であって、前記プログラムは、前記第1のクライアントコンピュータに、
交換台サーバを介して、前記第1のクライアントコンピュータと第2のクライアントコンピュータの間にインスタントメッセージセッションを確立する手段と、
自動的にピアツーピア接続を確立する手段と、
前記交換台サーバを介して、前記インスタントメッセージセッションに関連づけられた第1のデータを伝送する手段と、
前記ピアツーピア接続を介して、前記インスタントメッセージセッションに関連づけられた第2のデータを伝送する手段と、
前記第1のデータのblobの第1部分を前記交換台サーバを介して伝送する手段と、
前記第1のデータのblobの第1部分の後続部分を前記ピアツーピア接続を介して伝送する手段と
して機能させることを特徴とするコンピュータ可読媒体。
【請求項13】
前記プログラムは前記第1のクライアントコンピュータに、 前記第1のクライアントコンピュータおよび前記第2のクライアントコンピュータに関連づけられたアクティブネットワーク装置構成を決定する手段と、
前記アクティブネットワーク構成に対応するピアツーピアブリッジを選択する手段と
してさらに機能させることを特徴とする請求項12に記載のコンピュータ可読媒体。
【請求項14】
前記ピアツーピアブリッジは、RUDPブリッジを含むことを特徴とする請求項13に記載のコンピュータ可読媒体。
【請求項15】
前記ピアツーピアブリッジは、TCP/IPブリッジを含むことを特徴とする請求項13に記載のコンピュータ可読媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−54178(P2011−54178A)
【公開日】平成23年3月17日(2011.3.17)
【国際特許分類】
【出願番号】特願2010−204455(P2010−204455)
【出願日】平成22年9月13日(2010.9.13)
【分割の表示】特願2004−195945(P2004−195945)の分割
【原出願日】平成16年7月1日(2004.7.1)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】