(57)【要約】  データ転送フレームワークによるリアルタイム通信の方法および装置（コンピュータプログラム製品を含む）である。フレームワークが、相互接続されたコンピュータシステムノードのグループであって、各コンピュータシステムノードは、要求元システムからのデータを保存するという、クライアントシステムからの要求に対する応答として、データを受け取り、このデータを、どの物理記憶装置にも保存せずに、コンピュータメモリからコンピュータメモリへと連続的に転送することと、要求元システムからのデータを取り出す要求に対する応答として、コンピュータメモリからコンピュータメモリへと連続的に転送されているデータを取り出すことと、を行うように適合されている、相互接続されたコンピュータシステムノードのグループと、それぞれがリアルタイム通信クライアントプログラムを実行する、上記グループにリンクされた少なくとも２つのクライアントシステムと、を含む。【選択図】図1
2011519097.tif 000002
【特許請求の範囲】
【請求項１】
相互接続されたコンピュータシステムノードのネットワークの中のノードメモリからノードメモリへと連続的に転送されているデータを取り出す要求を、前記ネットワークにリンクされている第１のユーザシステムから受け取ることであって、前記第１のユーザシステムは、リアルタイム通信クライアントプログラムを実行している第２のユーザシステムとリアルタイム通信セッションを確立するリアルタイム通信クライアントプログラムを実行している、ことと、
前記第１のユーザシステムからの、データを取り出す前記要求に対する応答として、前記データをノードメモリから取り出すことと、
前記取り出したデータを前記第２のユーザシステムに転送することと、
を含む方法。
【請求項２】
前記取り出すことは、
前記ネットワークの中央サーバにおいて、ノードメモリに入る前記データを表すハッシュマークを用いて前記データ要求のマッチングを行うことと、
前記データがメモリ内にあると予想されるノードに対し、メモリ内の前記データを要求者に転送することを前記ノードに命令するメッセージを送信することと、
前記データが前記要求者に転送されたことを伝える確認メッセージを前記中央サーバに送信することと、
を含む、請求項１に記載の方法。
【請求項３】
前記第１のユーザシステムから、前記要求データが受け取られたことを伝えるアクナリッジメントを受け取ることをさらに含む、請求項２に記載の方法。
【請求項４】
前記データは、音声ファイル、音声映像ファイル、画像ファイル、映像ファイル、一般バイナリデータ、またはテキストファイルのうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項５】
前記リアルタイム通信クライアントプログラムは、インスタントメッセージングクライアントプログラム、電子メールクライアントプログラム、ファイル転送プロトコル（ＦＴＰ）クライアントプログラム、またはボイスオーバーインターネットプロトコル（ＶｏＩＰ）クライアントプログラムである、請求項１に記載の方法。
【請求項６】
情報担体として実体的に具体化された、ノード転送フレームワーク上でのリアルタイム通信を促進するコンピュータプログラム製品であって、
相互接続されたコンピュータシステムノードのネットワークの中のノードメモリからノードメモリへと連続的に転送されているデータを取り出す要求を、前記ネットワークにリンクされている第１のユーザシステムから受け取ることであって、前記第１のユーザシステムは、リアルタイム通信クライアントプログラムを実行している第２のユーザシステムとリアルタイム通信セッションを確立するリアルタイム通信クライアントプログラムを実行している、ことと、
前記第１のユーザシステムからの、データを取り出す前記要求に対する応答として、前記データをノードメモリから取り出すことと、
前記取り出したデータを前記第２のユーザシステムに転送することと、
をデータ処理装置に行わせるように動作可能なコンピュータプログラム製品。
【請求項７】
前記取り出すことは、
前記ネットワークの中央サーバにおいて、ノードメモリに入る前記データを表すハッシュマークを用いて前記データ要求のマッチングを行うことと、
前記データがメモリ内にあると予想されるノードに対し、メモリ内の前記データを要求者に転送することを前記ノードに命令するメッセージを送信することと、
前記データが前記要求者に転送されたことを伝える確認メッセージを前記中央サーバに送信することと、
を含む、請求項６に記載のコンピュータプログラム製品。
【請求項８】
前記第１のユーザシステムから、前記要求データが受け取られたことを伝えるアクナリッジメントを受け取ることをデータ処理装置に行わせるように、さらに動作可能な、請求項７に記載のコンピュータプログラム製品。
【請求項９】
前記データは、音声ファイル、音声映像ファイル、画像ファイル、映像ファイル、一般バイナリデータ、またはテキストファイルのうちの少なくとも１つを含む、請求項６に記載のコンピュータプログラム製品。
【請求項１０】
前記リアルタイム通信クライアントプログラムは、インスタントメッセージングクライアントプログラム、電子メールクライアントプログラム、ファイル転送プロトコル（ＦＴＰ）クライアントプログラム、またはボイスオーバーインターネットプロトコル（ＶｏＩＰ）クライアントプログラムである、請求項６に記載のコンピュータプログラム製品。
【請求項１１】
相互接続されたコンピュータシステムノードのグループであって、各コンピュータシステムノードは、要求元システムからのデータを保存するという、クライアントシステムからの要求に対する応答として、データを受け取り、前記データを、どの物理記憶装置にも保存せずに、コンピュータメモリからコンピュータメモリへと連続的に転送することと、前記要求元システムからのデータを取り出す要求に対する応答として、コンピュータメモリからコンピュータメモリへと連続的に転送されているデータを取り出すことと、を行うように適合されている、前記相互接続されたコンピュータシステムノードのグループと、
前記グループにリンクされた少なくとも２つのクライアントシステムであって、前記クライアントシステムのそれぞれは、リアルタイム通信クライアントプログラムを実行している、前記クライアントシステムと、
を含むフレームワーク。
【請求項１２】
各ノードは、当該ノードのメモリ内のデータの有無を検出することと、タイムスタンプを付けることと、前記データを、ノードの空き状況に応じて、前記相互接続されたコンピュータシステムノードの中の別のノードのコンピュータメモリに転送することと、を行うように適合されている、請求項１１に記載のフレームワーク。
【請求項１３】
前記ノードの空き状況は、前記ノードのネットワークトラフィックのボリュームに応じて決定される、請求項１２に記載のフレームワーク。
【請求項１４】
各ノードは、前記データを暗号化する、請求項１２に記載のフレームワーク。
【請求項１５】
中央ノードが、ノードに入る前記データを表すハッシュマークを用いて、中央サーバにおいて、前記クライアントシステムの前記データ取り出し要求のマッチングを行うことと、前記データがメモリ内にあると予想されるノードに対し、メモリ内にある前記データを前記要求する側のクライアントシステムに転送することを前記ノードに命令するメッセージを送信することと、メモリ内にある前記データが前記要求する側のクライアントシステムに転送されたことを伝える確認メッセージを前記中央サーバに送信することと、を行うように適合されている、請求項１１に記載のフレームワーク。
【請求項１６】
前記リアルタイム通信クライアントプログラムは、インスタントメッセージングクライアントプログラム、電子メールクライアントプログラム、ファイル転送プロトコル（ＦＴＰ）クライアントプログラム、またはボイスオーバーインターネットプロトコル（ＶｏＩＰ）クライアントプログラムである、請求項１１に記載のフレームワーク。
【請求項１７】
前記データは、音声ファイル、音声映像ファイル、画像ファイル、映像ファイル、一般バイナリデータ、またはテキストファイルのうちの少なくとも１つを含む、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
本開示は、デジタルコンピュータによるデータ処理に関し、特に、データ転送フレームワークによるリアルタイム通信に関する。
【背景技術】
【０００２】
インスタントメッセージング（ＩＭ）は、２人以上の間でテキストをタイプ入力して行うリアルタイム通信の一形態である。このテキストは、インターネットのようなネットワークを介して接続された複数のコンピュータによって伝達される。ＩＭは、情報を速やかに送信することにより、複数のパーティの間の瞬時通信を同時に可能にする。ＩＭシステムの中には、ユーザがウェブカメラやマイクを用いてリアルタイム会話を行うことが可能なものもある。さらに、ＩＭの追加機能として、アクナリッジメントや返信の即時受信、グループチャット、会議サービス（音声および映像を含む）、会話のログ記録、ファイル転送などがある。たとえば、後で参照するために会話を保存することが可能である。インスタントメッセージは、一般に、ローカルメッセージ履歴にログ記録される。ローカルメッセージ履歴は、電子メールの永続性に対するギャップを埋め、（電話での伝達ではかさばる可能性がある）ユニバーサルリソースロケータ（ＵＲＬ）や文書断片のような情報を迅速に交換できるようにする。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
概要
本発明は、データ転送フレームワークによるリアルタイム通信の方法および装置（コンピュータプログラム製品を含む）を提供する。
【課題を解決するための手段】
【０００４】
概して、一態様では、本発明は方法を特徴とし、この方法は、相互接続されたコンピュータシステムノードのネットワークの中のノードメモリからノードメモリへと連続的に転送されているデータを取り出す要求を、前記ネットワークにリンクされている第１のユーザシステムから受け取ることであって、第１のユーザシステムは、リアルタイム通信クライアントプログラムを実行している第２のユーザシステムとリアルタイム通信セッションを確立するリアルタイム通信クライアントプログラムを実行している、ことと、第１のユーザシステムからの、データを取り出す要求に対する応答として、データをノードメモリから取り出すことと、取り出したデータを第２のユーザシステムに転送することと、を含む。
【０００５】
別の態様では、本発明はフレームワークを特徴とし、このフレームワークは、相互接続されたコンピュータシステムノードのグループであって、各コンピュータシステムノードは、要求元システムからのデータを保存するという、クライアントシステムからの要求に対する応答として、データを受け取り、このデータを、どの物理記憶装置にも保存せずに、コンピュータメモリからコンピュータメモリへと連続的に転送することと、要求元システムからのデータを取り出す要求に対する応答として、コンピュータメモリからコンピュータメモリへと連続的に転送されているデータを取り出すことと、を行うように適合されている、相互接続されたコンピュータシステムノードのグループと、それぞれがリアルタイム通信クライアントプログラムを実行している、上記グループにリンクされた少なくとも２つのクライアントシステムと、を含む。
【０００６】
本開示の他の特徴および利点は、以下の説明、ならびに特許請求の範囲から明らかである。
【０００７】
各図面における類似の参照符号および呼称は、類似の要素を示している。
【図面の簡単な説明】
【０００８】
【図１】一例示的フレームワークのブロック図である。
【図２】フロー図である。
【図３】一例示的インスタントメッセージングユーザインタフェースである。
【発明を実施するための形態】
【０００９】
詳細な説明
ピアツーピアネットワークでは、データを最終的にディスクドライブのような物理媒体に保存するために、データ転送を過渡的に（in a transient fashion）行う。本発明は、これと異なり、インスタントメッセージングのようなソーシャルネットワーキングアプリケーションを、連続データ転送フレームワークによりサポートすることを可能にする。すなわち、ノードのネットワークにおいて１つのノードメモリから別のノードメモリへデータを連続的に転送することにより、データを保存する。
【００１０】
図１に示すように、一例示的な連続データ転送フレームワーク１０が、複数のネットワークシステム（サーバとも呼ぶ）１６、１８、２０、２２と結合された２つのユーザシステム（クライアントシステムとも呼ぶ）１２、１４を含んでいる。ネットワークシステム１６、１８、２０、２２のそれぞれは、ネットワーク２４内のノードと見なされ、そのようなネットワークシステムの１つ（たとえば、ネットワークシステム１６）をホスト（中央サーバ）に指定することが可能である。その場合は、ネットワークシステム１６を、ネットワーク２４における管理的立場であるとすることが可能である。ノード１６、１８、２０、２２は、中央サーバ１６によって直接管理されるプライベート管理ネットワークのピアとして設定することが可能である。ピア接続ノード（Peered nodes）は、プライベートノードとパブリックノード（たとえば、インターネット）との混成であってもよく、したがって、中央サーバ１６の直接の物理的管理下になくてもよい。ネットワーク２４は、全体がパブリックであってもよい。この場合、中央サーバ１６（または複数のサーバ）は、どのピア接続ノードも直接的には保有しない（直接の物理的管理を行わない）。
【００１１】
連続データ転送フレームワーク１０は、ユーザシステム１２、１４のユーザのようなコンピュータユーザ同士の通信をサポートしている。ユーザシステム１２、１４のコンピュータユーザは、地理的に分散しており、ネットワーク２４内のネットワークシステム１６、１８、２０、２２のうちの１つまたは複数を用いて通信を行う。ユーザシステム１２、１４は、様々な通信媒体を介してネットワーク２４に接続されており、それらは、たとえば、（たとえば、シリアルラインインターネットプロトコル（ＳＬＩＰ）またはポイントツーポイントプロトコル（ＰＰＰ）を用いて）電話回線に接続されているモデム、あるいは、（たとえば、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）を用いる）直接ネットワーク間接続である。
【００１２】
ユーザシステム１２、１４のそれぞれは、たとえば、ある定義された形式での命令への応答および命令の実行が可能な汎用コンピュータを用いて実装可能であり、命令への応答および命令の実行が可能なパーソナルコンピュータ、専用コンピュータ、ワークステーション、サーバ、デバイス、コンポーネント、または他の機器、あるいは、これらの何らかの組み合わせを用いて実装可能である。ユーザシステム１２、１４は、たとえば、ソフトウェアアプリケーション、プログラム、コード断片（a piece of code）、デバイス、コンピュータ、コンピュータシステム、またはこれらの組み合わせから命令を受けることが可能であり、これらは、別々に、または一体的に、本明細書に記載の直接動作を指示する。これらの命令は、クライアントシステム１２、１４のユーザ同士の通信を促進する１つまたは複数の通信プログラムの形をとることが可能である。たとえば、そのような通信プログラムとして、電子メールプログラム、インスタントメッセージング（ＩＭ）プログラム、ファイル転送プロトコル（ＦＴＰ）プログラム、ボイスオーバーインターネット（ＶｏＩＰ）プログラムなどがある。これらの命令は、任意の種類のマシン、コンポーネント、機器、記憶媒体、または（クライアントシステム１２、１４に配信可能な）伝搬信号に、永続的または一時的に埋め込むことが可能である。
【００１３】
クライアントシステム１２、１４は、ネットワーク２４経由で通信を送信するために通信プログラムが使用する通信インタフェース（図示せず）を含んでいる。この通信に含まれうるのは、（たとえば、ＡＳＣＩＩ（American Standard Code for Information Interchange）フォーマットで符号化された）電子メール、オーディオデータ、ビデオデータ、一般バイナリデータ、またはテキストデータである。
【００１４】
ネットワーク２４は、コヒーレント方式で相互接続される一連のポータルを含むことが可能である。ネットワーク２４の例としては、インターネット、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、アナログまたはデジタルの有線および無線電話網（たとえば、公衆電話交換網（ＰＳＴＮ））、統合サービスデジタル網（ＩＳＤＮ）、デジタル加入者線（ｘＤＳＬ）、または他の任意の有線または無線ネットワークが挙げられる。ネットワーク２４は、それぞれが、たとえば、有線または無線のデータ経路を含むことが可能な、複数のネットワークまたはサブネットワークを含むことが可能である。
【００１５】
ホストサーバ１６は、ネットワーク２４に接続可能であり、ホストサーバ１６を用いて、クライアントシステム１２、１４間の何らかの直接または間接の通信を促進することが可能である。ホストサーバ１６は、クライアントシステム１２、１４と同様に、たとえば、定義された形式での命令への応答および命令の実行が可能な汎用コンピュータを用いて実装可能であり、命令への応答および命令の実行が可能なパーソナルコンピュータ、専用コンピュータ、ワークステーション、サーバ、デバイス、コンポーネント、または他の機器、あるいは、これらの何らかの組み合わせを用いて実装可能である。ホストサーバ１６は、たとえば、ソフトウェアアプリケーション、プログラム、コード断片、デバイス、コンピュータ、コンピュータシステム、またはこれらの組み合わせから命令を受けることが可能であり、これらは、別々に、または一体的に、本明細書に記載の動作を指示する。これらの命令は、１つまたは複数の通信プログラムの形をとることが可能である。たとえば、そのような通信プログラムとして、電子メールプログラム、ＩＭプログラム、ＦＴＰプログラム、ＶｏＩＰプログラムなどがある。これらの命令は、任意の種類のマシン、コンポーネント、機器、記憶媒体、または（ホストサーバ１６に配信可能な）伝搬信号に、永続的または一時的に埋め込むことが可能である。
【００１６】
さらに、ホストサーバ１６は、ネットワーク２４経由で通信を送信するために通信プログラムが使用する通信インタフェース（図示せず）を含んでいる。この通信に含まれうるのは、（たとえば、ＡＳＣＩＩ（American Standard Code for Information Interchange）フォーマットで符号化された）電子メール、オーディオデータ、ビデオデータ、一般バイナリデータ、またはテキストデータである。
【００１７】
ユーザシステム１２、１４は、インスタントメッセージング（ＩＭ）クライアントプログラムを実行することが可能である。ＩＭプログラムは、一般に、様々な方法でユーザ同士がリアルタイムで通信することを可能にする。ほとんどのＩＭプログラムが、たとえば、以下のものを提供する：
（１）インスタントメッセージ  −  オンライン状態にある友人とメモをやりとりする
（２）チャット  −  友人または同僚とチャットルームを作る
（３）ウェブリンク  −  自分のお気に入りのウェブサイトへのリンクを共有する
（４）映像  −  映像を送信および閲覧して、友人と顔を突き合わせてチャットを行う
（５）画像  −  友人のコンピュータに保存されている画像を見る
（６）音声  −  友人に向けて音声を再生する
（７）ファイル  ー  ファイルを友人に直接送信することによってファイルを共有する
（８）会話  −  電話ではなくインターネットを用いて友人と実際に会話する
（９）ストリーミングコンテンツ  −  リアルタイムまたはほぼリアルタイムの株価情報やニュース
（１０）モバイル機能  −  自分の携帯電話からインスタントメッセージを送信する
【００１８】
ＩＭの通信の例としては、ＡＩＭ（America Online（登録商標）  Instant Messenger）、Yahoo（登録商標）Messenger、ＭＳＮ（登録商標）Messenger、ＩＣＱ（登録商標）などから提供されるものがある。
【００１９】
フレームワーク１０は、これらのＩＭ通信をサポートしており、ＩＭ通信に含めることが可能な映像、画像、音声、ファイル、その他のコンテンツをユーザが保存することを可能にする。他のシステム（データストレージネットワークなど）と異なり、フレームワーク１０では、固定の物理データ記憶装置を用いて、たとえば画像ファイルや映像ファイルのようなデータを保存することがない。中央サーバ１６がユーザシステム１２、１４のうちの１つからデータ保存要求を受け取ると、データは、ネットワーク２４内のあるノードに宛てられる。そのノードから、データはネットワーク２４内のノードメモリからノードメモリへと連続的に転送され、ディスクドライブのような物理記憶媒体には保存されない。転送されるデータは、ごく短い時間だけ、ネットワーク２４内のいずれかのノードのメモリにとどまる。データは、どのネットワークノードのどの物理記憶媒体にも保存されない。
【００２０】
同様に、中央サーバ１６がユーザシステム１２、１４からデータ取り出し要求を受け取ると、要求されたデータは、ネットワーク２４内のノードメモリからノードメモリへと転送されて取り出される。
【００２１】
このように転送されるデータは、セグメントに分割することが可能であり、各セグメントを上述のように転送することが可能である。このセグメントデータも、どのネットワークノードのどの物理記憶媒体にも保存されず、１つのノードのメモリから別のノードのメモリに転送されるだけである。
【００２２】
図２は、データ転送を促進するネットワークノード１６、１８、２０、２２のそれぞれに常駐する処理２００を示す。処理２００は、データの保存または取り出しの要求をユーザシステムから受け取ること（２０２）を含んでいる。受け取った要求がデータ保存要求である場合、処理２００は、データをメモリに受け取ることが可能なノードのアドレスを決定する（２０４）。この決定（２０４）は、ネットワークをピングして、ネットワーク内のどのノードが使用可能かを決定すること、または、ネットワーク内のどのノードのトラフィックが最小かを決定すること、または、ネットワーク内のどのノードのメモリの空き容量が最大かを決定すること、または、これらまたは他の要因の任意の組み合わせを含むことが可能である。
【００２３】
処理２００は、要求者がデータを転送する特定ノードのアドレスを含むメッセージをユーザシステムに送信する（２０６）。
【００２４】
処理２００は、ノードメモリにデータがあるかどうかを検出する（２０８）。処理２００は、メモリ内のデータを、ノードのネットワークにおける別のノードに転送し（２１０）、検出すること（２０８）と、ノードメモリからノードメモリへとデータを転送すること（２１０）と、の繰り返しを続行する。データがいずれかのノードメモリに到着すると、処理２００は、データにタイムスタンプを付ける（２１２）。さらに、データがノードメモリを出入りする際に、データを暗号化および復号することが可能である。
【００２５】
転送すること（２１０）は、ネットワーク内のノードをピングして、ネットワーク内のどのノードが使用可能かを決定すること、または、ネットワーク内のどのノードのトラフィックが最小かを決定すること、または、ネットワーク内のどのノードのメモリの空き容量が最大かを決定すること、または、これらまたは他の要因の任意の組み合わせを含むことが可能である。
【００２６】
一具体例では、データがノードに入る時点で、データと、当該ノードまたは中央サーバ１６またはユーザとの、暗号化「ハンドシェイク」が行われる。これは、公開−秘密鍵を用いることが可能な公開または秘密暗号化システム（Cashmereシステムなど）であってよい。Cashmereは、暗号化された転送パスとメッセージペイロードとを切り離すことにより、性能を向上させる。これは、送信先の固有公開鍵を用いる各メッセージに対して、送信元が単一公開鍵暗号化を実行するだけでよいためである。これには、対応する中継グループにあるすべてのノードではなく、真の送信先ノードだけがメッセージペイロードを復号できる利点がある。Cashmereを用いると、送信先は、送信元の素性を知ることなく、匿名応答メッセージを送信することが可能である。これは同様に行われ、この場合、送信元は、転送パスと同様に応答パスを作成して暗号化する。
【００２７】
別の例では、他のルーティング方式が用いられる。
【００２８】
受け取った要求が、ノードメモリからノードメモリへと連続的に転送されているデータを取り出す要求である場合、処理２００は、中央サーバ１６において、ハッシュマークまたは他の、ノードによって「傍受」（sniffed）可能な固有コードを用いて、ノードに入るデータについて、暗号化ハンドシェイクを介したマッチングを行う（２１４）。これは、ネットワーク内のノードをピングすることによって行うことが可能である。処理２００は、中央サーバ１６が、そのデータが出現する可能性が高いと考えられるノードまたはノードステート（node state）に、そのデータをユーザに直接返すことを求めるメッセージを送信する（２１６）。中央サーバ１６がピング対象のノードステートを狭くできるほど、取り出しの効率が高くなり、中央サーバ１６と、そのデータを転送できるノードとの間のトランザクションには不要なノードに対する不要なメッセージングトラフィックによる負担が少なくなる。
【００２９】
ノードメモリ内のデータを要求者に転送することを求めるメッセージを、正しいノードが受け取ると、処理２００は、ノードメモリ内のデータを要求者に転送し（２１８）、そのデータがユーザに送信されたことを伝える確認メッセージを転送する（２２０）。このルーティングメッセージは、中央サーバ１６に直接送信することが可能であるか、ネットワーク２４内の他の１つまたは複数のノードまたは１つまたは複数のスーパノードを介して中央サーバ１６または複数のサーバに渡すことが可能である。ユーザが、要求したデータを受け取ると、ユーザのアプリケーションは、中央サーバ１６を自動的にピングして、要求されたデータが受け取られたことを伝えるように機能する。このように、ネットワーク２４は、どの物理記憶媒体にもデータをキャッシュ、ダウンロード、かつ／または保存しないデータ保存装置を構築している。データの保存および管理は、データをノードメモリからノードメモリへと連続的にルーティングすることによって達成されている。
【００３０】
性能に応じて、新たなノードおよびノードステートをネットワーク２４に追加したり、ネットワーク２４からノードおよびノードステートを削除したりすることが可能である。ユーザは、すべてのノードへのアクセスが可能である。あるいは、ユーザは、１つまたは複数の中央サーバによって、または秘密ネットワーク、公開ネットワーク、あるいは秘密−公開ネットワークの特定のアーキテクチャによって、特定のノードまたは「ノードステート」にセグメント化されることが可能である。
【００３１】
個々のノード、ノードステート、およびスーパノードは、公開ネットワークまたは秘密ネットワークにおける、エクストラネットピア、無線ネットワークピア、衛星ピア接続ノード、Ｗｉ−Ｆｉピア接続ノード、ブロードバンドネットワークなどであってもよい。ピア接続されたノードまたはユーザは、同じセキュリティシステムが採用され、かつ、特定の配備（無線ピア用無線暗号化方式など）の厳格さに好適なカスタムソリューションなどを有する、任意の有効ピアポイントからの、ネットワーク２４におけるルーティング参加者として使用されることが可能である。
【００３２】
処理２００では、データをリモートサーバ、ハードドライブ、または他の固定記憶媒体にキャッシュしたり保持したりするのではなく、ノードメモリからノードメモリへと、データを渡したり、ルーティングしたり、転送したりしている。データは、正規ユーザがデータを要求しない限り、ダウンロードされることがない。本システムのユーザが、データへのアクセスを複数のユーザに認可することが可能である。
【００３３】
処理２００の最も重要な目標は、データが、物理的記憶装置に固定されずに、実際には、ネットワーク内でノードメモリからノードメモリへと連続的にルーティング／転送されるデータ保存および管理システムを生成することである。データの転送先のノードのパスは、中央サーバによって変更される場合もある。これは、システム容量に応じて調節するため、ならびに、データパスにこの機能がない確率が増えることによりネットワークのセキュリティを弱体化させかねない、データの冗長パスを排除するためである。
【００３４】
図３は、インスタントメッセージングクライアントプログラムを実行しているクライアントシステム１２、１４のうちの１つのユーザに対して提示される、インタフェースの例を示す。上述のように、インスタントメッセージングプログラムは、一般に、様々な方法でユーザ同士がリアルタイムで通信することを可能にする。たとえば、多くのインスタントメッセージングプログラムは、ユーザが、テキストをインスタントメッセージとして送信すること、ファイルを転送すること、ならびに音声通信を行うことを可能にする。
【００３５】
図示したデスクトップ３００は、インスタントメッセージングクライアントプログラムのユーザインタフェース３０５を有している。ユーザインタフェース３０５のテキストボックス３１０に、プログラムユーザのコンタクト先またはバディ（本明細書では両方の用語を区別なく用いる）の表現３１５が示されており、これらは、プログラムユーザが通信および対話をしたい、インスタントメッセージングプログラムの他のユーザである。表現３１５は、バディに関する状況情報をプログラムユーザに提供することが可能であり、たとえば、コンタクト先がオンライン状態かどうか、コンタクト先がどれだけの間オンライン状態にあるか、コンタクト先が不在かどうか、コンタクト先がモバイル端末を使用中かどうか、などの情報を提供することが可能である。
【００３６】
ユーザインタフェース３０５のテキストボックス３１０に表示される連絡先のリストは、一般に、コンタクト先リストまたはバディリストと呼ばれる。ＩＭプログラムユーザは、一般に、コンタクト先をコンタクト先リストに追加したり、リストから削除したりできる。図示した例では、表現３１５は、コンタクト先のスクリーンネームを示すテキストアイコンである。
【００３７】
インスタントメッセージングプログラムは、インスタントメッセージングプログラムのユーザの間の通信を支援するために、インスタントメッセージングサーバを用いることが可能である。インスタントメッセージングサーバは、たとえば、ホストサーバ１６を用いて実行可能である。ユーザがネットワークに接続されてインスタントメッセージングプログラムを実行すると、インスタントメッセージングプログラムは、ホストサーバ１６と連絡をとり、ユーザをホストサーバ１６にログオンさせる。ホストサーバ１６は、プログラムユーザのコンタクト先がオンライン状態になったときにインスタントメッセージングプログラムに知らせ、プログラムユーザとオンライン状態のコンタクト先との間の通信を促進する。
【００３８】
ホストサーバ１６は、プログラムユーザのネットワークであるか、インターネットアクセスであるかに関係なく、ＩＭサービスをサポートすることが可能である。したがって、ホストサーバ１６は、ユーザがいずれかの特定のインターネットサービスプロバイダ（ＩＳＰ）にアクセス権を持っているかどうかに関係なく、ユーザがＩＭを送受信できるようにすることが可能である。ホストサーバ１６はまた、ＩＭに関連する管理案件、広告、ディレクトリサービス、チャット、関心グループなどの関連サービスをサポートすることも可能である。データを転送する場合、ホストサーバ１６は、１つまたは複数のＩＭプロトコルを用いる。
【００３９】
ＩＭセッションを開始するにあたり、クライアントシステム１２、１４で実行されているＩＭクライアントプログラムは、ホストサーバ１６との接続を確立し、ホストサーバ１６にログオンする。セッションが確立されると、ユーザは、ＩＭクライアントプログラムを用いて、特定のバディがオンライン状態かどうかを表示させたり、特定のバディとＩＭをやりとりしたり、グループチャットルームに参加したり、写真、招待状、文書などのファイルを交換したりできる。ＩＭプログラムユーザはまた、同様の関心を持つ他のバディを探したり、ニュースや株価情報のようなカスタマイズされた情報を取得したり、ワールドワイドウェブを検索したりできることも可能である。
【００４０】
ホストサーバ１６は、ＩＭクライアントプログラム間のピアツーピア通信セッションの確立を促進することにより、ＩＭクライアントプログラムのユーザの間のＩＭ通信を支援することが可能である。あるいは、ホストサーバ１６は、ＩＭクライアントプログラム間の通信を直接ルーティングすることにより、ＩＭ通信を支援することが可能である。
【００４１】
コンタクト先がオンライン状態にある場合、ＩＭプログラムユーザは、複数の方法で、そのコンタクト先と通信または対話することが可能である。たとえば、ＩＭプログラムユーザは、（一般に、テキスト形式で）インスタントメッセージをコンタクト先に送信することが可能である。
【００４２】
メッセージを送信するとウィンドウが開き、このウィンドウで、ＩＭプログラムユーザとコンタクト先とが、メッセージをタイプ入力してやりとりすることが可能である。同様に、ＩＭプログラムユーザは、ファイルまたは他のコンテンツをコンタクト先に送信することも可能である。
【００４３】
これらのアクションをコンタクト先に向けて開始する場合、ＩＭプログラムユーザは、ユーザインタフェース３０５に表示されたコンタクト先の表現に対して操作を行う。その後、プログラムは、その表現に対して行われた操作への応答として、対応するアクションを実行する。たとえば、コンタクト先の表現をダブルクリックすることによって、インスタントメッセージを開始することが可能である。あるいは、ＩＭプログラムユーザがコンタクト先の表現を選択してコンテキストメニューを呼び出し、このメニューから「ファイルを送信」を選択することによって、ファイル転送を開始することが可能である。
【００４４】
インタフェース３０５に表示されたコンタクト先の表現に対して行われる操作への応答として、他のアクションを実行することも可能である。たとえば、コンタクト先に対して「バディアイコン」を設定して、そのコンタクト先との通信時にバディアイコンが表示されるようにすることが可能である。さらに、たとえば、コンタクト先のプロフィール情報を取り出すことも可能であり、コンタクト先がオンライン状態になったときにプログラムユーザに知らせるようにアラートを設定することも可能であり、ＶｏＩＰ通信セッションを確立することも可能であり、電子メールを送信することも可能である。
【００４５】
ユーザインタフェース３０５は、ユーザがインスタントメッセージングプログラムにおいて各種オプションを設定したり操作を実行したりすることを支援するために、アイコン３３０を有することが可能である。
【００４６】
上述の技術は、特定のハードウェア構成またはソフトウェア構成に限定されるものではない。むしろ、これらの技術は、ハードウェア、ソフトウェア、または両方の組み合わせを用いて実行可能である。プログラムは、高級プログラミング言語で実行可能であり、必要であれば、アセンブリ言語や他の低級言語でも実行可能である。そのようないかなるプログラムも、一般には、コンピュータで使用可能な記憶媒体または記憶装置（たとえば、ＣＤ−ＲＯＭ、ＲＡＭ、磁気ディスクなど）に保存される。プログラムの各命令は、コンピュータの処理装置に読み込まれて実行されると、記述されている各種操作をプログラム可能なコンピュータに実行させる。
【００４７】
さらに、上述の技術は、主にＩＭアプリケーションに関して説明したものの、他の通信プログラム（たとえば、ＦＴＰプログラム、電子メールプログラム、ボイスオーバーＩＰ（ＶｏＩＰ）、または他のテレフォニープログラム、あるいはストリーミングメディアのプレーヤなど）にも適用可能である。
【００４８】
前述の説明は、例示を意図したものであり、本開示の範囲の限定を意図したものではないことを理解されたい。本開示の範囲は、添付の特許請求の範囲によって定義されている。他の実施形態は、以下の特許請求の範囲に含まれる。
【図１】
2011519097.tif 000003
【図２】
2011519097.tif 000004
【図３】
2011519097.tif 000005
【手続補正書】
【提出日】平成22年12月17日(2010.12.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
相互接続されたコンピュータシステムノードのネットワークの前記ノード間で連続的に転送されている少なくとも１つのデータアイテムを取り出す要求を、前記ネットワークにリンクされている第１のユーザシステムから受け取ることであって、前記転送される少なくとも１つのデータアイテムは、いかなる固定記憶媒体にも保存されることなく、前記ネットワーク内をノードからノードへと常にルーティングされており、前記第１のユーザシステムは、リアルタイム通信クライアントプログラムを実行している第２のユーザシステムとリアルタイム通信セッションを確立するリアルタイム通信クライアントプログラムを実行している、ことと、
前記第１のユーザシステムからの、前記少なくとも１つのデータアイテムを取り出す前記要求に対する応答として、前記少なくとも１つのデータアイテムをノードから取り出すことと、
前記取り出した少なくとも１つのデータアイテムを前記第２のユーザシステムに転送することと、
を含む方法。
【請求項２】
前記取り出すことは、
前記ネットワークの中央サーバにおいて、ノードに入る前記少なくとも１つのデータアイテムを表すハッシュマークを用いて前記データアイテム要求のマッチングを行うことと、
前記少なくとも１つのデータアイテムを有すると予想されるノードに対し、前記少なくとも１つのデータアイテムを前記第１のユーザシステムに転送することを前記ノードに命令するメッセージを送信することと、
前記少なくとも１つのデータアイテムが前記第１のユーザシステムに転送されたことを伝える確認メッセージを前記中央サーバに送信することと、
を含む、請求項１に記載の方法。
【請求項３】
前記第１のユーザシステムから、前記要求された少なくとも１つのデータアイテムが受け取られたことを伝えるアクナリッジメントを受け取ることをさらに含む、請求項２に記載の方法。
【請求項４】
前記データアイテムは、音声ファイル、音声映像ファイル、画像ファイル、映像ファイル、一般バイナリデータ、またはテキストファイルのうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項５】
前記リアルタイム通信クライアントプログラムは、インスタントメッセージングクライアントプログラム、電子メールクライアントプログラム、ファイル転送プロトコル（ＦＴＰ）クライアントプログラム、またはボイスオーバーインターネットプロトコル（ＶｏＩＰ）クライアントプログラムである、請求項１に記載の方法。
【請求項６】
相互接続されたコンピュータシステムノードのネットワークの前記ノード間で連続的に転送されている少なくとも１つのデータアイテムを取り出す要求を、前記ネットワークにリンクされている第１のユーザシステムから受け取ることであって、前記転送される少なくとも１つのデータアイテムは、いかなる固定記憶媒体にも保存されることなく、前記ネットワーク内をノードからノードへと常にルーティングされており、前記第１のユーザシステムは、リアルタイム通信クライアントプログラムを実行している第２のユーザシステムとリアルタイム通信セッションを確立するリアルタイム通信クライアントプログラムを実行している、ことと、
前記第１のユーザシステムからの、前記少なくとも１つのデータアイテムを取り出す前記要求に対する応答として、前記少なくとも１つのデータアイテムをノードから取り出すことと、
前記取り出した少なくとも１つのデータアイテムを前記第２のユーザシステムに転送することと、
を含む方法をデータ処理装置に実行させる命令を記憶するコンピュータ可読媒体。
【請求項７】
前記取り出すことは、
前記ネットワークの中央サーバにおいて、ノードに入る前記少なくとも１つのデータアイテムを表すハッシュマークを用いて前記データアイテム要求のマッチングを行うことと、
前記少なくとも１つのデータアイテムを有すると予想されるノードに対し、前記少なくとも１つのデータアイテムを前記第１のユーザシステムに転送することを前記ノードに命令するメッセージを送信することと、
前記少なくとも１つのデータアイテムが前記第１のユーザシステムに転送されたことを伝える確認メッセージを前記中央サーバに送信することと、
を含む、請求項６に記載のコンピュータ可読媒体。
【請求項８】
前記方法がさらに、前記第１のユーザシステムから、前記要求された少なくとも１つのデータアイテムが受け取られたことを伝えるアクナリッジメントを受け取ることを含む、請求項７に記載のコンピュータ可読媒体。
【請求項９】
前記少なくとも１つのデータアイテムは、音声ファイル、音声映像ファイル、画像ファイル、映像ファイル、一般バイナリデータ、またはテキストファイルのうちの少なくとも１つを含む、請求項６に記載のコンピュータ可読媒体。
【請求項１０】
前記リアルタイム通信クライアントプログラムは、インスタントメッセージングクライアントプログラム、電子メールクライアントプログラム、ファイル転送プロトコル（ＦＴＰ）クライアントプログラム、またはボイスオーバーインターネットプロトコル（ＶｏＩＰ）クライアントプログラムである、請求項６に記載のコンピュータ可読媒体。
【請求項１１】
複数のコンピュータシステムノードと、前記ノードのうちの少なくとも１つと通信している少なくとも２つのクライアントシステムであって、前記クライアントシステムのそれぞれはリアルタイム通信クライアントプログラムを実行している、前記クライアントシステムと、
を含むコンピュータシステムであって、
前記ノードは、
クライアントシステムからの、データを保存する要求に対する応答として、少なくとも１つのデータアイテムを受け取り、前記少なくとも１つのデータアイテムを、いかなる固定記憶媒体にも保存することなく、前記コンピュータシステムノード間で連続的に転送することであって、前記転送される少なくとも１つのデータアイテムは、相互接続されたコンピュータシステムノードの前記グループの中でノードからノードへと常にルーティングされている、ことと、
前記クライアントシステムからの、前記少なくとも１つのデータアイテムを取り出す要求に対する応答として、前記コンピュータシステムノード間で連続的に転送されている前記少なくとも１つのデータアイテムを取り出すことと、を行うように構成されている、コンピュータシステム。
【請求項１２】
各ノードは、前記少なくとも１つのデータアイテムの有無を検出することと、タイムスタンプを付けることと、前記少なくとも１つのデータアイテムを、ノードの空き状況に応じて、前記相互接続されたコンピュータシステムノードの中の別のノードに転送することと、を行うように適合されている、請求項１１に記載のコンピュータシステム。
【請求項１３】
前記ノードの空き状況は、前記ノードのネットワークトラフィックのボリュームに応じて決定される、請求項１２に記載のコンピュータシステム。
【請求項１４】
前記リアルタイム通信クライアントプログラムは、インスタントメッセージングクライアントプログラム、電子メールクライアントプログラム、ファイル転送プロトコル（ＦＴＰ）クライアントプログラム、またはボイスオーバーインターネットプロトコル（ＶｏＩＰ）クライアントプログラムである、請求項１１に記載のコンピュータシステム。
【請求項１５】
前記少なくとも１つのデータアイテムは、音声ファイル、音声映像ファイル、画像ファイル、映像ファイル、一般バイナリデータ、またはテキストファイルのうちの少なくとも１つを含む、請求項１１に記載のコンピュータシステム。
【国際調査報告】
2011519097.tif 000006