(57)【要約】ブロードキャストチャネルが二地点間通信ネットワークに重なったブロードキャスト技術。このブロードキャストチャネルを通じたメッセージのブロードキャストは、事実上、その時点でブロードキャストチャネルに接続されているネットワークのコンピュータへのマルチキャストである。一実施形態では、このブロードキャスト技術は、ホストコンピュータで実行されるプロセスを通じてホストコンピュータを接続することのできる論理ブロードキャストチャネルを提供する。ブロードキャストチャネルに接続された各コンピュータは、ブロードキャストチャネルにメッセージをブロードキャストし、ブロードキャストチャネルからメッセージを受信することができる。ブロードキャストチャネルに接続された各コンピュータは、それが接続されている間にブロードキャストされるすべてのメッセージを受信する。論理ブロードキャストチャネルは、基本となるネットワークシステムに接続された各コンピュータが各自のアドレスを使用して他の接続されたコンピュータそれぞれにメッセージを送信することを可能にする基本ネットワークシステム（例えばインターネット）を使用して実装される。
2004505550.tif 000002
【特許請求の範囲】
【請求項１】
複数の関係者を有するコンピュータネットワークであって、各関係者は少なくとも３つの隣接関係者への接続を有し、発信元の関係者は、その各接続を通じて隣接関係者にデータを送信することにより他の関係者に前記データを送信し、各関係者は、隣接関係者から受信するデータを他の隣接関係者に送信することを特徴とするコンピュータネットワーク。
【請求項２】
各関係者が４つの他の関係者に接続されることを特徴とする請求項１に記載のコンピュータネットワーク。
【請求項３】
各関係者が偶数個の他の関係者に接続されることを特徴とする請求項１または２に記載のコンピュータネットワーク。
【請求項４】
前記ネットワークがｍ正則であり、ｍは各関係者の隣接関係者の数であることを特徴とする請求項１から３に記載のコンピュータネットワーク。
【請求項５】
前記ネットワークがｍ連結であり、ｍは各関係者の隣接関係者の数であることを特徴とする請求項４に記載のコンピュータネットワーク。
【請求項６】
前記ネットワークがｍ正則かつｍ連結であり、ｍは各関係者の隣接関係者の数であることを特徴とする請求項１から５に記載のコンピュータネットワーク。
【請求項７】
すべての前記関係者がピアであることを特徴とする請求項１から６に記載のコンピュータネットワーク。
【請求項８】
前記接続がピアツーピア接続であることを特徴とする請求項１から７に記載のコンピュータネットワーク。
【請求項９】
前記接続がＴＣＰ／ＩＰ接続であることを特徴とする請求項１から８に記載のコンピュータネットワーク。
【請求項１０】
各関係者がコンピュータで実行されるプロセスであることを特徴とする請求項１から９に記載のコンピュータネットワーク。
【請求項１１】
コンピュータが複数の関係者をホストすることを特徴とする請求項１から１０に記載のコンピュータネットワーク。
【請求項１２】
各関係者がその各隣接関係者に１つのみのデータコピーを送信することを特徴とする請求項１から１１に記載のコンピュータネットワーク。
【請求項１３】
関係者とブロードキャストチャネルの通信を制御するコンポーネントであって、
ポータルコンピュータを見つけ、前記関係者が接続できる隣接コンピュータの指示を提供するように前記見つけたポータルコンピュータに要求する接触モジュールと、
前記隣接関係者の指示を受信し、前記関係者と前記指示された隣接関係者それぞれとの間に接続を確立する結合モジュールと
を含むことを特徴とするコンポーネント。
【請求項１４】
各関係者がコンピュータプロセスであることを特徴とする請求項１３に記載のコンポーネント。
【請求項１５】
前記指示される関係者が、異なるコンピュータシステムで実行されるコンピュータプロセスであることを特徴とする請求項１３または１４に記載のコンポーネント。
【請求項１６】
前記関係者の隣接関係者からデータを受信し、前記受信データを前記他の隣接関係者に送信するブロードキャストモジュール
を含むことを特徴とする請求項１３から１５に記載のコンポーネント。
【請求項１７】
別の関係者への接続を求める要求を受信し、隣接関係者から切断し、もう一方の関係者に接続する接続要求モジュール
を含むことを特徴とする請求項１３から１６に記載のコンポーネント。
【請求項１８】
前記ＴＣＰ／ＩＰプロトコルを使用して前記接続を確立することを特徴とする請求項１３から１７に記載のコンポーネント。
【請求項１９】
前記ブロードキャストチャネルに接続された前記関係者間にピアツーピア通信を提供する通信ネットワークと、
前記ブロードキャストチャネルに接続された各関係者に対して、
その関係者の４つの隣接関係者の指示、および
前記通信ネットワークを使用して隣接関係者からデータを受信し、前記受信データを他の隣接関係者に送信して、前記ブロードキャストチャネルの各関係者に対する前記データのブロードキャストを行うブロードキャストコンポーネント
を含むことを特徴とする関係者のためのブロードキャストチャネル。
【請求項２０】
前記ブロードキャストコンポーネントは、それがすでにその隣接関係者に送信した受信データを無視することを特徴とする請求項１９に記載のブロードキャストチャネル。
【請求項２１】
関係者は、すでにブロードキャストチャネルに接続された関係者に接触することにより前記ブロードキャストチャネルに接続することを特徴とする請求項１９または２０に記載のブロードキャストチャネル。
【請求項２２】
各関係者がコンピュータプロセスであることを特徴とする請求項１９から２１に記載のブロードキャストチャネル。
【請求項２３】
各関係者がコンピュータスレッドであることを特徴とする請求項１９から２２に記載のブロードキャストチャネル。
【請求項２４】
各関係者がコンピュータであることを特徴とする請求項１９から２３に記載のブロードキャストチャネル。
【請求項２５】
前記通信ネットワークがＴＣＰ／ＩＰプロトコルを使用することを特徴とする請求項１９から２４に記載のブロードキャストチャネル。
【請求項２６】
前記通信ネットワークがインターネットであることを特徴とする請求項１９から２５に記載のブロードキャストチャネル。
【請求項２７】
前記関係者がピアであることを特徴とする請求項１９から２６に記載のブロードキャストチャネル。
【請求項２８】
ポータルコンピュータを見つけ、
前記関係者を接続できる隣接関係者の指示を提供するように前記見つけたポータルコンピュータに要求し、
前記隣接コンピュータの指示を受信し、
前記関係者と前記指示された隣接関係者それぞれとの間に接続を確立する
方法により、ブロードキャストチャネルの関係者の通信を制御する命令を含むことを特徴とするコンピュータ可読媒体。
【請求項２９】
各関係者がコンピュータプロセスであることを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３０】
前記指示される関係者が、異なるコンピュータシステムで実行されるコンピュータプロセスであることを特徴とする請求項２８または２９に記載のコンピュータ可読媒体。
【請求項３１】
前記関係者の隣接関係者からデータを受信することと、前記受信データを他の隣接関係者に送信することを含むことを特徴とする請求項２８から３０に記載のコンピュータ可読媒体。
【請求項３２】
別の関係者への接続を求める要求を受信し、
隣接関係者から切断し、
もう一方の関係者に接続する
ことを特徴とする請求項２８から３１に記載のコンピュータ可読媒体。
【請求項３３】
前記ＴＣＰ／ＩＰプロトコルを使用して前記接続を確立することを特徴とする請求項２８から３２に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【０００１】
（技術分野）
記載の技術は一般にはコンピュータネットワークに関し、より詳細には、基本ネットワークのコンピュータのサブセット（集合）のためのブロードキャストネットワークに関する。
【０００２】
（背景）
二地点間ネットワークプロトコル、クライアント／サーバミドルウェア、マルチキャストネットワークプロトコル、およびピアツーピアミドルウェアなど、様々な種類のコンピュータネットワーク通信技術がある。これらの通信技術のそれぞれは利点と不都合点がある。しかし、いずれも広く分散したコンピュータ間で情報を同時に共有するのに非常に適しているとは言えない。例えば、ネットワーク会議プログラムなど協調的な処理を行うアプリケーションでは、地理的に分散している可能性のあるすべての参加者に適切なタイミングで情報を配信する必要がある。
【０００３】
ＵＮＩＸ（登録商標）パイプ、ＴＣＰ／ＩＰ、およびＵＤＰなどの二地点間ネットワークプロトコルは、異なるコンピュータ上で処理を行って、二地点間接続を介して通信することができる。二地点間接続を使用して全関係者を相互接続することは、理論的には可能であるが、関係者の数が増加するのにあわせて比例しない。例えば、各関係プロセスは、すべての他の関係プロセスへの直接接続を管理する必要がある。しかしプログラマは単一の接続を管理するのが難しいことを認識しており、複数接続の管理はさらに複雑となる。また、関係するプロセスは、それらがサポートできる直接接続の数に制限されるかもしれない。これにより情報を共有可能な関係者の数も制限される。
【０００４】
クライアント／サーバミドルウェアシステムは、情報を共有する種々のクライアント間の通信を調整するサーバを提供する。このサーバは、共有資源へのアクセスを制御する中央機関として機能する。クライアント／サーバミドルウェアシステムの例には、リモートプロシージャコール（「ＲＰＣ」）、データベースサーバ、および共通オブジェクトリクエストブローカーアーキテクチャ（「ＣＯＲＢＡ」）がある。クライアント／サーバミドルウェアシステムは、多数の参加者間の情報の共有には特に適してはいない。詳細には、クライアントが共有する情報をサーバに格納すると、他の各クライアントは、サーバにポーリングして新しい情報が共有されていることを判断する必要がある。このようなポーリングは、通信ネットワークに非常に高いオーバーヘッドを課す。あるいは、各クライアントがサーバにコールバックを登録し、新しい情報が共有できる状態になるとサーバがコールバックを起動することもできる。このようなコールバック技術は、新しい情報を共有しようとする際には単一のサーバが各クライアントにコールバックする必要があるため、性能上の妨害を呈する。また、情報の共有全体の信頼性が単一サーバの信頼性に依存する。したがって、単一のコンピュータ（すなわちサーバ）の障害により、いずれのクライアントの間の通信も妨げられることになる。
【０００５】
マルチキャストのネットワークプロトコルは、ネットワークの複数の受信者にブロードキャストメッセージを送信可能にする。このようなマルチキャストネットワークプロトコルの現在の実施例では、基となる（基本の）ネットワークに許容範囲を超えるオーバーヘッドを課す傾向にある。例えば、ＵＤＰによるマルチキャストでは、すべての参加可能な者を見つけようとすると、インターネットをあふれ（ｓｗａｍｐ）させてしまう。ＩＰによるマルチキャストには、情報の共有を効率的にサポートするために特殊目的のインフラストラクチャ（例えばルータ）を必要とするなど他の問題がある。
【０００６】
ピアツーピアミドルウェア通信システムは、マルチキャストネットワークプロトコル、または二地点間ネットワークプロトコルのグラフに依拠する。このようなピアツーピアミドルウェアは、Ｄａｔａ　Ｃｏｎｎｅｃｔｉｏｎ社のＤ．Ｃ．−ｓｈａｒｅやマイクロソフト社のＮｅｔＭｅｅｔｉｎｇなどの製品に使用されるＴ．１２０インターネット標準によって提供される。こうしたピアツーピアミドルウェアシステムは、情報の共有に使用される接続の二地点間グラフをユーザが組み立てることに依拠する。したがって、少数を超える参加者が必要とされる場合には、ピアツーピアのミドルウェアシステムを使用することは適さず、また望ましくもない。さらにＴ．１２０インターネット標準の基礎アーキテクチャはツリー構造であり、ネットワーク全体の信頼性のためにツリーの根ノードに依拠する。つまり、すべての参加者が受信するためには各メッセージは根ノードを通過しなければならない。
【０００７】
広く分散した多数のプロセス間で情報を同時に共有するのに適した信頼性のある通信ネットワークを備えることが望ましい。
【０００８】
インターネットはベンダーと購入者間の電子通信を促進するので、次第に「電子商取引」を行うのに使用されるようになっている。インターネットは、通信チャネルで相互に接続された膨大な数のコンピュータとコンピュータネットワークからなる。一般に、電子商取引とは、少なくとも部分的に取引関係者のコンピュータシステムを使用して行われる商取引を言う。例えば、購買者はパーソナルコンピュータを使用し、インターネットを介してベンダーのコンピュータに接続することができる。そして購買者はベンダーのコンピュータと対話して取引を行うことができる。現在行われる商取引の多くは電子商取引を介して行うことができるが、電子商取引の受け入れと普及は、主としてそのような電子商取引の実行の使いやすさにかかっている。電子商取引を容易に行うことができれば、コンピュータの初心ユーザでも電子商取引に参加すると思われる。このため、電子商取引の実行を容易にする技術を開発することが重要である。
【０００９】
インターネットは他種の商取引にも使用されている。例えば、競売の電子的な実施をサポートするサーバコンピュータシステムが開発されている。競売を電子的に行うには、商品の販売者が、ウェブページを通じてサーバコンピュータシステムにその競売の定義を提供する。この定義には、商品の説明、競売の期間、および任意で最低落札価格が含まれる。そしてサーバコンピュータシステムは指定された期間にその競売を行う。潜在的な買い手は、サーバコンピュータシステムで関心のある競売を検索することができる。そのような競売が見つかると、潜在的な買い手はその競売の入札履歴を閲覧し、その商品の入札額を入力することができる。競売が終了すると、サーバコンピュータシステムはその商品の落札者と販売者に（例えば電子メールで）通知し、両者は取引を完了することができる。
【００１０】
このような競売サーバは電子的に競売を行うことを容易にするが、こうした競売の実施にはいくつかの不都合点がある。まず、競売システムの信頼性は競売サーバ自体の信頼性に依存する。競売サーバに障害が起きた場合には競売を実施することができない。このため、１つの障害により競売システム全体が停止する恐れがある。第２に、競売サーバによって行われる競売は、従来のコンピュータによらない競売を正確に模しているとは言えない。具体的には、電子的な競売は固定された時間に終了するのが普通であるのに対し、コンピュータによらない競売は、通例競売人がそれ以上の入札がありそうもないと判断したときに終了する。例えば、電子競売ではある日の午後５時に終了することを通告することができる。入札者はその時刻まで入札を行うことができる。これに対し、従来の競売は開始時刻を設定することはできるが、その終了は入札の動きに左右される。また、こうした電子競売は、特にＷｅｂを利用する場合には入札活動の通知を実時間で提供しない。入札者は、自分を上回る入札価格が提示されたことをいくつかの方法で知るだけである。入札者は、競売のウェブページに定期的にアクセスして現在の最高入札額を調べることによりこれを知ることができる。このように繰り返し競売ウェブページにアクセスするのは面倒である。競売サーバには、ある者の入札価格を上回る入札価格が出ると電子メールメッセージを送信できるものがある。しかしこのような電子メールメッセージは、その到着が入札者が新たな入札を行うのに間に合わない可能性がある。
【００１１】
こうした現在のサーバベースの競売システムの不都合点を回避し、従来のコンピュータによらない競売をより正確に模した電子競売システムを備えることが望ましい。
【００１２】
（詳細な説明）
ブロードキャストチャネルを二地点間通信ネットワークに重ねたブロードキャスト技術を提供する。このブロードキャストチャネルを通じたメッセージのブロードキャストは、事実上、その時点でブロードキャストネットワークに接続されているネットワークのコンピュータへのマルチキャストである。一実施形態では、このブロードキャスト技術は、ホストコンピュータで実行されるプロセスを通じてホストコンピュータを接続することができる論理的なブロードキャストチャネルを提供する。このブロードキャストチャネルに接続された各コンピュータは、ブロードキャストチャネルにメッセージをブロードキャストし、ブロードキャストチャネルからメッセージを受信することができる。ブロードキャストチャネルに接続された各コンピュータは、それが接続されている間にブロードキャストされるメッセージをすべて受信する。論理ブロードキャストチャネルは、基本となるネットワークシステムに接続された各コンピュータが、各コンピュータのアドレスを使用して他の接続された各コンピュータにメッセージを送信することができる基本ネットワークシステム（例えばインターネット）を使用して実装される。このように、このブロードキャスト技術は、実際上、二地点間方式でメッセージを送信する基本ネットワークシステムを使用したブロードキャストチャネルを提供する。
【００１３】
このブロードキャスト技術は、基本となるネットワークシステムに、それを通じてブロードキャストチャネルを実装するホストコンピュータ（すなわちノード）間の二地点間接続（すなわちエッジ）のグラフを重ねる。一実施形態では、各コンピュータを隣接コンピュータと称する他の４つのコンピュータに接続する。（実際には、コンピュータで実行されるプロセスを、そのコンピュータあるいは他の４つのコンピュータで実行される他の４つのプロセスに接続する。）メッセージをブロードキャストするには、発信元のコンピュータがその二地点間接続を使用して各隣接コンピュータにメッセージを送信する。そのメッセージを受信するコンピュータはそれぞれ、二地点間接続を使用してそのメッセージを他の３つの隣接コンピュータに送信する。このようにして、基本となるネットワークを使用して各コンピュータにメッセージを伝搬させ、論理ブロードキャストチャネルを通じた各コンピュータへのメッセージのブロードキャストを行う。各ノードが４つの他ノードに接続されたグラフを４正則グラフ（４−ｒｅｇｕｌａｒ　ｇｒａｐｈ）と呼ぶ。４正則グラフの使用は、隣接コンピュータへの４つの接続すべてが機能しなくなった場合（ｆａｉｌの場合）にのみ、コンピュータとブロードキャストチャネルの接続が切断されることを意味する。このブロードキャスト技術で使用するグラフには、４つのコンピュータの障害を受け（ｔａｋｅ）てグラフを互いに素な部分グラフ、すなわち２つの別個のブロードキャストチャネルに分割するという特性がある。この特性を４連結（４−ｃｏｎｎｅｃｔｅｄ）と呼ぶ。したがってこのグラフは４正則、４連結のグラフである。
【００１４】
図１は、ブロードキャストチャネルを表す４正則、４連結のグラフを示す。９つのノードＡ−Ｉはそれぞれブロードキャストチャネルに接続されたコンピュータを表し、各エッジは、ブロードキャストチャネルの２つのコンピュータ間の「エッジ」接続を表す。ブロードキャストチャネル上の各コンピュータにメッセージをブロードキャストするのに要する時間は、コンピュータ間の接続の速度と、発信元のコンピュータとブロードキャストチャネル上の他の各コンピュータとの間の接続の数によって決まる。メッセージが各コンピュータペア間を横断するのに必要とする最小の接続数が、それらコンピュータ間の「距離」（すなわちグラフの２ノード間の最短経路）である。例えば、コンピュータＡとＦの間の距離は、コンピュータＡが直接コンピュータＦに接続されているので１である。コンピュータＡとＢの間の距離は、コンピュータＡとＢの間には直接接続がなく、コンピュータＦが直接コンピュータＢに接続されているので２になる。したがって、コンピュータＡを発信元とするメッセージは直接コンピュータＦに送信され、そしてコンピュータＦからコンピュータＢに送信されることになる。コンピュータ間の最大距離はブロードキャストチャネルの「直径」である。図１に表したブロードキャストチャネルの直径は２である。すなわち、任意のコンピュータによって送信されたメッセージは、すべての他のコンピュータに到達するのに３つ以上の接続を横断することはない。図２は、ブロードキャストチャネルに接続された２０台のコンピュータを表すグラフを示す。このブロードキャストチャネルの直径は４である。詳細には、コンピュータ１と３間の最短経路は４つの接続（１−１２、１２−１５、１５−１８、および１８−３）を含む。
【００１５】
このブロードキャスト技術には、（１）ブロードキャストチャネルへのコンピュータの接続（すなわちグラフの作成）、（２）ブロードキャストチャネルを通じたメッセージのブロードキャスト（すなわちグラフを通じたブロードキャスト）、（３）グラフを構成するブロードキャストチャネルからのコンピュータの切断（すなわちグラフの分解）、が含まれる。
【００１６】
グラフを構成する
ブロードキャストチャネルに接続するには、接続を求めるコンピュータは、まず現在ブロードキャストチャネルに完全に接続されているコンピュータを見つけ、次いですでにブロードキャストチャネルに接続されているコンピュータのうち４つとの接続を確立する。（これは、すでにブロードキャストチャネルに接続されているコンピュータが少なくとも４つあることを前提とする。接続されたコンピュータが４台以下である場合は、ブロードキャストチャネルは４正則グラフになることができない。そのような場合は、ブロードキャストチャネルが「小規模体制」にあるとみなす。小規模体制のためのブロードキャスト技術については下記で詳細に述べる。５台以上のコンピュータが接続されている際には、ブロードキャストチャネルが「大規模体制」にあるとみなす。この説明では、特に指定しない場合は、ブロードキャストチャネルは大規模体制にあることを前提とする。）したがって、ブロードキャストチャネルへの接続プロセスには、ブロードキャストチャネルを見つけ、接続するコンピュータの隣接コンピュータを識別し、そして識別された各隣接コンピュータに接続することが含まれる。各コンピュータは、そのコンピュータがそれを通じてブロードキャストチャネルを見つけることができる１つまたは複数の「ポータルコンピュータ」を認識している。接続を求めるコンピュータは、現在ブロードキャストチャネルに完全に接続されているポータルコンピュータを見つけるまでポータルコンピュータに接触することによりブロードキャストチャネルを見つける。見つかったポータルコンピュータは次いで、接続を求めるコンピュータを接続する４つのコンピュータ（すなわち接続を求めるコンピュータの隣接コンピュータになる）を識別するように指示を出す。それら４つのコンピュータはそれぞれ接続を求めるコンピュータと協働して、接続を求めるコンピュータをブロードキャストチャネルに接続させる。ポータルコンピュータを見つけるプロセスを開始したものの、まだ隣接コンピュータを持たないコンピュータは「接続探索状態」にある。少なくとも１つの隣接コンピュータに接続されたが、まだ４つの隣接コンピュータには接続されていないコンピュータは「部分的に接続された状態」にある。現在４つの隣接コンピュータに接続されている、あるいは以前から接続されているコンピュータは「完全に接続された状態」にある。
【００１７】
ブロードキャストチャネルは４正則グラフなので、識別されるコンピュータはそれぞれはすでに４つのコンピュータに接続されている。このため、接続を求めるコンピュータが４つのコンピュータに接続できるように、コンピュータ間の接続の一部を切断する必要がある。一実施形態では、このブロードキャスト技術では、現在相互に接続されている２つのコンピュータペアを識別する。これらコンピュータペアがそれぞれ各自の間の接続を切断し、４つのコンピュータ（各ペアの２つ）がそれぞれ、接続を求めるコンピュータに接続する。図３Ａおよび３Ｂに、新たなコンピュータＺがブロードキャストチャネルに接続するプロセスを示す。図３Ａは、コンピュータＺを接続する前のブロードキャストチャネルを示す。コンピュータＢとＥ、およびコンピュータＣとＤのペアが、新しいコンピュータＺの隣接コンピュータとして識別された２つのペアである。これら各ペア間の接続を切断し、図３Ｂに示すようにコンピュータＺとコンピュータＢ、Ｃ、Ｄ、およびＥそれぞれとの間に接続を確立する。２つのノード間のエッジを伸ばし、新たなノードにピン留めすると考えられることから、２つの隣接コンピュータ間の接続を切断し、元の隣接コンピュータそれぞれを別のコンピュータに再接続するプロセスを「エッジピンニング（ｅｄｇｅ　ｐｉｎｎｉｎｇ）」と呼ぶ。
【００１８】
ブロードキャストチャネルに接続された各コンピュータは、他のコンピュータと通信するために５つの通信ポートを割り当てる。このポートの４つは、それを通じてブロードキャストチャネルのメッセージを送信するポートであることから「内部」ポートと呼ぶ。隣接コンピュータ同士の内部ポート間の接続は「内部」接続と呼ぶ。したがって、ブロードキャストチャネルの内部接続は、４正則、４連結のグラフを形成する。５番目のポートは、２つのコンピュータ間で非ブロードキャストメッセージを送信するのに使用されるため、「外部」ポートと呼ばれる。隣接コンピュータは、各自の接続の内部ポートを通じて、または各自の外部ポートを通じて非ブロードキャストメッセージを送信することができる。接続を求めるコンピュータは、ポータルコンピュータを見つける際には外部ポートを使用する。
【００１９】
一実施形態では、このブロードキャスト技術は、二地点間プロトコルであるＴＣＰ／ＩＰ通信プロトコルを使用して基本ネットワークとしてコンピュータ接続を確立する。ＴＣＰ／ＩＰは、信頼性があり順序付けられたコンピュータ間のメッセージ配信を提供する。ＴＣＰ／ＩＰプロトコルは、そのコンピュータで実行される可能性のあるすべてのプロセスで共有する「ポート空間」を各コンピュータに提供する。ポートは、０から６５，５３５までの番号で識別される。最初の２０５６個のポートは、特定アプリケーションのために予約されている（例えばＨＴＴＰメッセージはポート８０）。残りのポートは、どのプロセスにも利用可能なユーザポートである。一実施形態では、ブロードキャストチャネルに接続されたコンピュータで使用するためにポート番号のセットを確保することができる。代替実施形態では、使用するポート番号は各コンピュータによって動的に識別する。各コンピュータは、着呼ポート（ｃａｌｌ−ｉｎｐｏｒｔ）として使用するために利用可能なポートを動的に識別する。この着呼ポートは、外部ポートおよび内部ポートとの接続を確立するために使用される。ブロードキャストチャネルに接続された各コンピュータは、その外部ポートを通じて非ブロードキャストメッセージを受信することができる。接続を求めるコンピュータは、ポータルコンピュータがその着呼ポートへの呼出しに「応答する」まで、そのポータルコンピュータのポート番号の「ダイヤル」を試みる。ポータルコンピュータは、それがブロードキャストチャネルに接続されたとき、または接続を試みて、その着呼ポートがダイヤルされたときに応答する。（この説明では電話の比喩を用いて接続を説明する。）コンピュータは、その着呼ポートに呼出しを受信すると、その呼出しを別のポートに転送する。したがって、接続を求めるコンピュータは、実際には、外部ポートであるその転送先ポートを通じて通信することになる。呼出しが転送され、その結果、他のコンピュータがその着呼ポートを通じてそのコンピュータに発呼できるようになる。接続を求めるコンピュータは次いで、その外部ポートを通じて通信して、当該コンピュータをブロードキャストチャネルに接続するのを支援するようにポータルコンピュータに要求する。接続を求めるコンピュータは、ポート番号順に順次各ポートをダイヤルすることにより、ポータルコンピュータの着呼ポート番号を識別することができる。下記で詳細に説明するように、このブロードキャスト技術ではハッシュアルゴリズムを使用してポート番号の順番を選択し、これにより性能が向上する可能性がある。
【００２０】
接続を求めるコンピュータは、見つかったポータルコンピュータに直接接続されたコンピュータか、またはその隣接コンピュータの１つに直接接続されたコンピュータに接続することによりブロードキャストチャネルに接続することができる。このような接続を求めるコンピュータの隣接コンピュータを識別する手法に生じうる問題は、接続を求める各コンピュータが発見された同じポータルコンピュータを使用し、直接そのポータルコンピュータを通じてブロードキャストチャネルへの接続を確立する際に、ブロードキャストチャネルの直径が増す可能性があることである。概念的には、新しいノードを追加した地点の方向にグラフが引き伸ばされることになる。図４Ａ−４Ｃはこの可能性のある問題を表している。図４Ａは、図１にコンピュータを追加したブロードキャストチャネルを表す。エッジＣ−ＤとエッジＥ−ＨをコンピュータＪにエッジピンニングすることにより、コンピュータＪをブロードキャストチャネルに追加している。図４Ｂは、図４Ａのブロードキャストチャネルにコンピュータを追加した図である。エッジＥ−ＪおよびＢ−ＣをコンピュータＫにエッジピンニングすることによりコンピュータＫをブロードキャストチャネルに追加した。コンピュータＧからコンピュータＫへの最短経路はエッジＧ−Ａ、Ａ−Ｅ、およびＥ−Ｋを通るので、このブロードキャストチャネルの直径は３である。図４Ｃも、図４Ａのブロードキャストチャネルにコンピュータを追加した図である。エッジＤ−ＧおよびＥ−ＪをコンピュータＫにエッジピンニングすることにより、コンピュータＫをブロードキャストチャネルに接続した。ただしこのブロードキャストチャネルの直径はなお２である。このように、隣接コンピュータの選択がブロードキャストチャネルの直径に影響する。直径を最小にするのを助けるために、このブロードキャスト技術では無作為選択技術を使用して、接続探索状態にあるコンピュータの４つの隣接コンピュータを識別する。無作為選択技術は、接続を求める新たなコンピュータへの接続をブロードキャストチャネルのコンピュータ全体に分散する傾向があり、この結果全体の直径が小さくなる可能性がある。
【００２１】
グラフを通じたブロードキャスト
上述のように、ブロードキャストチャネルに接続された各コンピュータは、ブロードキャストチャネルにメッセージをブロードキャストし、ブロードキャストチャネルでブロードキャストされるすべてのメッセージを受信する。ブロードキャストするメッセージを発信するコンピュータは、内部接続を使用してそのメッセージを４つの隣接コンピュータそれぞれに送信する。コンピュータは、ある隣接コンピュータからブロードキャストメッセージを受信すると、そのメッセージを他の３つの隣接コンピュータに送信する。発信元のコンピュータを除くブロードキャストチャネル上の各コンピュータは、したがって各自の４つの隣接コンピュータから各ブロードキャストメッセージのコピーを受信する。しかし、各コンピュータは、それが受信するメッセージの第１のコピーを隣接コンピュータに送信するだけであり、その後受信するコピーは無視する。したがって、コンピュータ間で送信されるメッセージコピーの合計数は３Ｎ＋１になり、Ｎはブロードキャストチャネルに接続されたコンピュータの数である。４つのメッセージコピーを送信する発信元コンピュータを除いて、各コンピュータは３つのメッセージコピーを送信する。
【００２２】
このメッセージ送信の冗長性は、ブロードキャストチャネルの全体的な信頼性を保証する助けとなる。各コンピュータはブロードキャストチャネルへの接続を４つ有するので、メッセージのブロードキャスト中に１台のコンピュータに障害が起きた場合、その隣接コンピュータには他に３つの接続があり、それを通じてブロードキャストメッセージのコピーを受信する。また、２つのコンピュータ間の内部接続が低速である場合、それぞれのコンピュータは、各メッセージのコピーをより早く受信できる可能性のある接続を他に３つ有する。
【００２３】
メッセージを発信する各コンピュータは、それ自体のメッセージに順に番号をつける。ブロードキャストチャネルの動的な性質と、コンピュータ間には多数の可能な接続経路があることにより、メッセージは順序外れで受信される可能性がある。例えば、発信元コンピュータとある受信側コンピュータとの間の距離が４とする。最初のメッセージの送信後、発信元コンピュータと受信側コンピュータが隣接コンピュータ同士となり、したがってその間の距離が１に変化する可能性がある。最初のメッセージは、受信側コンピュータまで到達するのに４の距離を移動しなければならない可能性がある。２番目のメッセージは、１の距離を移動するだけで済む。したがって、２番目のメッセージが最初のメッセージより前に受信側コンピュータに到達する可能性がある。
【００２４】
ブロードキャストチャネルが安定した状態にあるとき（すなわち、ブロードキャストチャネルに接続するコンピュータ、あるいはチャネルから切断するコンピュータがない状態）には、各コンピュータは最終的に両メッセージを受信し、またそれよりも順序が前のメッセージをすべて受信するまでメッセージを待ち行列に入れることができるので、順序外れのメッセージは問題とならない。しかし、ブロードキャストチャネルが安定した状態でない場合には問題が生じうる。詳細には、２番目のメッセージがすでにその新しい隣接コンピュータによって受信され、転送された後に、コンピュータがブロードキャストチャネルに接続する可能性がある。新しい隣接コンピュータは、最終的に最初のメッセージを受信するとそのメッセージを新たに接続されたコンピュータに送信する。したがって、この新たに接続されたコンピュータは最初のメッセージは受信するが、２番目のメッセージは受信しない。新たに接続されたコンピュータがメッセージを順番に処理する必要がある場合には、無期限に２番目のメッセージを待つことになる。
【００２５】
この問題の解決法の１つは、各コンピュータにそれが受信するすべてのメッセージを、それらを正しい順序で隣接コンピュータに送信できるようになるまで待ち行列に入れさせるものである。しかし、この解決法は、ブロードキャストチャネルのコンピュータを通じたメッセージの伝搬速度を低下させる傾向がある。伝搬速度への影響がより少ない別の解決法は、新しく接続されたコンピュータの隣接コンピュータであるコンピュータでのみメッセージを待ち行列に入れるものである。すでに接続されている各隣接コンピュータは、メッセージを受信すると、そのメッセージを新しく接続されたのではない他の隣接コンピュータに転送するが、新しく接続された隣接コンピュータには転送しない。すでに接続された隣接コンピュータは、その発信元コンピュータからのメッセージに断絶が生じないことを保証できるときだけに、各発信元コンピュータからのメッセージを新しく接続されたコンピュータに転送する。一実施形態では、すでに接続された隣接コンピュータは、各発信元コンピュータからすでに受信し転送したメッセージの最も大きい続き番号を追跡することができる。すでに接続されたコンピュータは、それら発信元コンピュータからのそれよりも番号が大きいメッセージだけを新しく接続されたコンピュータに送信する。すでに接続されたコンピュータは、すべての発信元コンピュータからそれより番号の小さいメッセージをすべて受信すると、新しく接続されたコンピュータを各自の他の隣接コンピュータとして扱い、単に各メッセージを受信すると転送することができる。別の実施形態では、各コンピュータはメッセージを待ち行列に入れることができ、断絶が埋まると新しく接続されたコンピュータに単にそのメッセージを転送する。例えば、コンピュータはメッセージ４および５を受信してからメッセージ３を受信することが考えられる。このような場合、すでに接続されたコンピュータは、キューメッセージ４および５を転送する。最終的にメッセージ３を受信すると、メッセージ３、４、および５を新たに接続されたコンピュータに送信する。新しく接続されたコンピュータにメッセージ３よりも前にメッセージ４および５が送信された場合、新しく接続されたコンピュータはメッセージ４および５を処理し、メッセージ３は無視する。すでに接続されたコンピュータがメッセージ４および５を待ち行列に入れるので、新しく接続されたコンピュータはメッセージ３を処理することができる。新しく接続されたコンピュータが、１つの隣接コンピュータを通じて発信元コンピュータからメッセージのセットを受信し、次いで別の隣接コンピュータを通じて同じ発信元コンピュータから別のメッセージセットを受信することが可能である。２番目のメッセージセットに、受信した最初のメッセージセットよりも前に順序付けられたメッセージが含まれる場合、新しく接続されたコンピュータは、後に順序付けられたメッセージをすでに処理している場合にはその先に順序付けられたメッセージを無視することができる。
【００２６】
グラフの分解
接続されたコンピュータは、計画して、または計画せずにブロードキャストチャネルとの接続を切断する。計画された方式で切断する際には、コンピュータはその４つの隣接コンピュータそれぞれに切断メッセージを送信する。切断メッセージは、接続を解除するコンピュータの４つの隣接コンピュータを識別するリストを含む。隣接コンピュータは切断メッセージを受信すると、リスト中のコンピュータの１つに接続を試みる。一実施形態では、リスト中の第１のコンピュータがリスト中の第２のコンピュータへの接続を試み、リスト中の第３のコンピュータがリストの第４のコンピュータへの接続を試みる。コンピュータが接続できない場合（例えば、第１のコンピュータと第２のコンピュータがすでに接続されている場合）、それらのコンピュータは各種の他の組合せで接続を試みることができる。接続を確立できない場合、各コンピュータは、別のコンピュータとの接続を確立する必要がある旨のメッセージをブロードキャストする。利用可能な内部ポートを有するコンピュータがそのメッセージを受信すると、そのコンピュータはそのメッセージをブロードキャストしたコンピュータとの接続を確立することができる。図５Ａ−５Ｄは、ブロードキャストチャネルからのコンピュータの切断を表す。図５Ａは、計画された方式によるブロードキャストチャネルからのコンピュータの切断を表す。コンピュータＨが切断を決定すると、その隣接コンピュータのリストを各隣接コンピュータ（コンピュータＡ、Ｅ、Ｆ、およびＩ）に送信し、各隣接コンピュータとの接続を切断する。コンピュータＡおよびＩは、メッセージを受信すると点線で示すようにそれらの間に接続を確立し、コンピュータＥおよびＦについても同様である。
【００２７】
電源障害によるなど計画されない形でコンピュータが接続を切断する場合は、切断されたコンピュータに接続された隣接コンピュータは、各自の次のメッセージを現在は切断されたコンピュータに送信しようとする際に切断を認識する。切断されたコンピュータの以前の各隣接コンピュータは、各自に１接続が不足している（すなわちホールあるいは空きポートを有する）ことを認識する。接続されたコンピュータは、その隣接コンピュータの１つが切断されたことを検出すると、ポート接続要求をブロードキャストチャネルにブロードキャストし、そのコンピュータに接続を必要とする内部ポートが１つあることを知らせる。ポート接続要求は、要求元コンピュータの着呼ポートを識別する。同じく接続が足りない接続されたコンピュータは、接続要求を受信すると、その外部ポートを通じて要求元コンピュータと通信して２つのコンピュータ間に接続を確立する。図５Ｂは、計画されない形によるブロードキャストチャネルからのコンピュータの切断を表す。この図では、コンピュータＨが計画されない形で接続を切断している。コンピュータＨの隣接コンピュータＡ、Ｅ、Ｆ、およびＩはそれぞれ接続の切断を認識すると、それが空きポートを埋める必要があることを知らせるポート接続要求をブロードキャストする。点線で示すように、コンピュータＦとＩおよびコンピュータＡとＥが互いの要求に応答し、接続を確立している。
【００２８】
計画された、または計画されない切断の結果、２つの隣接コンピュータそれぞれに空いた内部ポートが生じる場合がある。この場合、それらは隣接コンピュータ同士なので、すでに接続されており、互いと接続することによって各自の空きポートを埋めることができない。このような状態を「隣接コンピュータ同士に空きポートがある」状態と呼ぶ。各隣接コンピュータは、上述のようにそれに空いたポートが生じたことを検出するとポート接続要求をブロードキャストする。隣接コンピュータは、もう一方の隣接コンピュータからポート接続要求を受信すると、その隣接コンピュータにも空きポートがあるという状態を認識する。このような状態は、ブロードキャストチャネルが小規模体制のときにも生じる可能性がある。この状態は、大規模体制の場合にしか補正することができない。小規模体制の場合には、各コンピュータの有する隣接コンピュータは３つ以下になる。修復しないと問題になりかねないこの状態を大規模体制で検出するには、ポート接続要求を受信した最初の隣接コンピュータがこの状態を認識し、状態確認メッセージをもう一方の隣接コンピュータに送信する。状態確認メッセージは、送信元コンピュータの隣接コンピュータのリストを含む。このリストを受信すると、受信側コンピュータは、そのリストと、それ自体の隣接コンピュータのリストを比較する。２つのリストが異なる場合にはこの状態が大規模体制で発生しており、修復が必要となる。この状態を修復するために、受信側コンピュータは、まだ受信側コンピュータの隣接コンピュータになっていない、送信元コンピュータの隣接コンピュータの１つに状態修復要求を送信する。そのコンピュータは、状態修復要求を受信すると、その隣接コンピュータの１つ（この状態に関係している隣接コンピュータを除く）との接続を切断し、状態修復要求を送信したコンピュータに接続する。したがって、この状態に関係する本来の隣接コンピュータの１つでポートが埋まることになる。しかし、なお２つのコンピュータ、すなわち本来の隣接コンピュータのもう一方と、状態修復要求を受信したコンピュータとの接続が切断されたコンピュータが接続を必要としている。これら２つのコンピュータは、ポート接続要求を送信する。この２つのコンピュータが隣接コンピュータ同士でない場合には、要求を受信すると相互に接続する。しかし２つのコンピュータが隣接コンピュータ同士である場合には、隣接コンピュータ同士でない２つのコンピュータに接続が必要となるまで、状態修復プロセスを繰り返す。
【００２９】
この状態にある２つの本来の隣接コンピュータ同士が、同じ隣接コンピュータのセットを有する場合がありうる。状態確認メッセージを受信した側の隣接コンピュータは、隣接コンピュータのセットが同一であると判断すると、同じくその状態にある隣接コンピュータ以外の隣接コンピュータの１つに状態二重確認メッセージを送信する。コンピュータは、状態二重確認メッセージを受信すると、その隣接コンピュータのセットが送信元コンピュータと同じであるかどうかを判定する。同じである場合、ブロードキャストチャネルは小規模体制にあり、その状態は問題にならない。隣接コンピュータのセットが異なる場合には、状態二重確認メッセージを受信したコンピュータは、その状態にある本来の隣接コンピュータに状態確認メッセージを送信する。その状態確認メッセージを受信したコンピュータは、状態修復メッセージを送信することにより、隣接コンピュータの１つに、その状態にある本来の隣接コンピュータの１つと接続するように指示する。したがって、その状態にある本来の隣接コンピュータの１つでポートが埋まることになる。
【００３０】
図５Ｃは、隣接コンピュータ同士に空きポートがある状態を表す。この図では、コンピュータＨが計画しない形で接続を切断し、コンピュータＦおよびＩがもう一方からのポート接続要求に応答し、現在相互に接続されている。コンピュータＨのこの他の以前の隣接コンピュータＡとＥはすでに隣接コンピュータ同士であり、これにより隣接コンピュータ同士に空きポートがある状態が発生する。この例では、コンピュータＥがコンピュータＡからポート接続要求を受信し、この可能性のある状態を認識し、その隣接コンピュータのリストを含む状態確認メッセージを（これらは隣接コンピュータ同士なので内部接続を介して）コンピュータＡに送信している。コンピュータＡは、リストを受信すると、コンピュータＥが異なる隣接コンピュータのセットを有することを認識した（すなわちブロードキャストチャネルは大規模体制である）。コンピュータＡは、コンピュータＥの隣接コンピュータであるコンピュータＤを選択し、状態修復要求を送信した。コンピュータＤは、状態修復要求を受信すると、その隣接コンピュータの１つ（コンピュータＥ以外）、この例ではコンピュータＧとの接続を切断した。次いでコンピュータＤはコンピュータＡに接続した。図５Ｄは、空きポートのある隣接コンピュータ同士でない２つのコンピュータを示す。コンピュータＥとＧは空いたポートを有し、現在は隣接コンピュータ同士でない。したがって、コンピュータＥとＧは互いに接続することができる。
【００３１】
図５Ｅおよび５Ｆは、隣接コンピュータ同士に空きポートがある状態をさらに示す。図５Ｅは、小規模体制における隣接コンピュータ同士に空きポートがある状態を表す。この例では、コンピュータＥが計画されない形で接続を切断した場合、各コンピュータは、その切断を検出するとポート接続要求をブロードキャストする。コンピュータＡはコンピュータＢからのポート接続要求を受信すると、隣接コンピュータ同士に空きポートがある状態を検出し、状態確認メッセージをコンピュータＢに送信する。コンピュータＢは、その隣接コンピュータのセット（コンピュータＣおよびＤ）がコンピュータＡと同じであることを認識し、状態二重確認メッセージをコンピュータＣに送信する。コンピュータＣは、それもコンピュータＡおよびＢと同じ隣接コンピュータのセットを有することからブロードキャストチャネルが小規模体制にあることを認識し、ブロードキャストチャネルが小規模体制であることを知らせるメッセージをブロードキャストすることができる。
【００３２】
図５Ｆは、大規模体制の場合における図５Ｅの状況を表す。上述のように、コンピュータＣは、コンピュータＢから状態二重確認メッセージを受信する。この場合、コンピュータＣは、その隣接コンピュータのセットがコンピュータＢと異なることから、ブロードキャストチャネルが大規模体制にあることを認識する。コンピュータＣおよびＤから上に延びるエッジは、他のコンピュータへの接続を意味する。コンピュータＣは次いで状態確認メッセージをコンピュータＢに送信する。コンピュータＢは、状態確認メッセージを受信すると、コンピュータＣの隣接コンピュータの１つに状態修復メッセージを送信する。状態修復メッセージを受信したコンピュータは、コンピュータＣを除くその隣接コンピュータの１つとの接続を切断してコンピュータＢとの接続を試み、そのコンピュータが接続を切断した隣接コンピュータはコンピュータＡへの接続を試みる。
【００３３】
ポートの選択
上述のように、ＴＣＰ／ＩＰプロトコルは、番号２０５６より上のポートをユーザポートに指定している。このブロードキャスト技術では、各コンピュータで、外部ポート１つと内部ポート４つの５つのユーザポート番号を使用する。一般に、同じコンピュータで実行される他の複数のアプリケーションプログラムが重複するポート番号を使用する可能性があるために、ユーザポートは静的にアプリケーションプログラムに割り振ることはできない。この結果、一実施形態では、ブロードキャストチャネルに接続されたコンピュータは動的に各自のポート番号を割り当てる。各コンピュータは、単にそのコンピュータで未使用の番号が最小のポートを見つけることを試み、そのポートを着呼ポートとして使用することができる。しかし、ポート番号が動的に割り当てられる場合には、接続を求めるコンピュータは、ポータルコンピュータの着呼ポート番号を前もって知ることができない。このため、接続を求めるコンピュータがあるポータルコンピュータの着呼ポートを見つける際には、ポータルコンピュータのポートを最小のポート番号からダイヤルしていく必要がある。ポータルコンピュータがブロードキャストチャネルに接続されている（あるいは接続を試みている）場合には、接続を求めるコンピュータは最終的に着呼ポートを見つけることになる。ポータルコンピュータが接続されていない場合、接続を求めるコンピュータは、最終的にはすべてのユーザポートをダイヤルすることになる。さらに、コンピュータ上の各アプリケーションプログラムが低順位のポート番号を割り当てようとする場合、低順位のポート番号の多くは他のアプリケーションによって使用されるので、ポータルコンピュータの着呼ポートは番号の大きいポートになる可能性がある。ポートをダイヤルするのは比較的低速のプロセスなので、接続を求めるコンピュータがポータルコンピュータの着呼ポートを見つけるには長時間を要する。この時間を最短にするために、このブロードキャスト技術ではポートの順序付けアルゴリズムを使用して、ポータルコンピュータがその着呼ポートに利用できるポートを見つける際に使用すべきポート番号の順序を識別する。一実施形態では、このブロードキャスト技術はハッシュアルゴリズムを使用してポートの順番を識別する。このアルゴリズムは、ポート番号の順序付けをユーザポート番号空間全体に無作為に分散し、各ポート番号を１度だけ選択することが好ましい。また、このアルゴリズムは、任意のコンピュータで所与のチャネルタイプおよびチャネルインスタンスについて実行されるたびに同じポートの順序付けを生成する。下記で述べるように、チャネルタイプおよびチャネルインスタンスによって一意に識別される複数のブロードキャストチャネルにコンピュータを接続することが可能である。ブロードキャストチャネルごとに一意のポート番号の順序付けを生成するために、このアルゴリズムは、チャネルタイプとチャネルインスタンスを「蒔きつけ（ｓｅｅｄ）」ておくことができる。したがって、接続を求めるコンピュータは、ポータルコンピュータがその着呼ポートを割り当てる際に使用したのと同じ順序でポータルコンピュータのポートをダイヤルすることになる。
【００３４】
多数のコンピュータが同時に単一のポータルコンピュータを通じてブロードキャストチャネルへの接続を求める場合には、接続を求めるコンピュータによって呼び出される際にポータルコンピュータのポートがビジーになる可能性がある。通例は、接続を求めるコンピュータはビジーなポートを再ダイヤルし続ける必要がある。着呼ポートを見つけるプロセスは、この再ダイヤルによって速度が著しく低下する可能性がある。一実施形態では、接続を求める各コンピュータが、ハッシュアルゴリズムによって生成される最初の数個のポート番号の順序を変えることができる。例えば、接続を求めるコンピュータはそれぞれ、ハッシュアルゴリズムで生成された最初の８個のポート番号の順序を無作為に変えることができる。この無作為の順序付けには重みをつけることもでき、その場合は、ハッシュアルゴリズムによって生成された最初のポート番号は順序の変更で最初になる確率が５０％であり、２番目のポート番号は順序の変更で最初になる確率が２５％である、などとする。接続を求めるコンピュータは異なる順序付けを使用するので、ビジーなポートに行き当たる可能性が低くなる。例えば、最初の８つのポート番号を無作為に選択する場合には、接続を求める８つのコンピュータが同時に異なる順序でポートにダイヤルし、それによりビジーなポートにダイヤルする確率を低くすることが可能である。
【００３５】
ポータルコンピュータを見つける（ｌｏｃａｔｉｎｇ）
ブロードキャストチャネルに接続できる各コンピュータは、それを通じてブロードキャストチャネルに接続できる１つまたは複数のポータルコンピュータのリストを有する。一実施形態では、各コンピュータが同じポータルコンピュータのセットを有する。接続を求めるコンピュータは、アルゴリズムによって指定される順序で連続的に各ポータルコンピュータのポートにダイヤルすることにより、ブロードキャストチャネルに接続したポータルコンピュータを見つける。接続を求めるコンピュータは、最初のポータルコンピュータを選択し、ブロードキャストチャネルに完全に接続されたコンピュータの着呼ポートが見つかるまでそのすべてのポートにダイヤルすることができる。着呼ポートが見つからない場合、接続を求めるコンピュータは、次のポータルコンピュータを選択し、前述のような着呼ポートを持つポータルコンピュータが見つかるまでプロセスを繰り返す。この探索技術に伴う問題は、ブロードキャストチャネルに完全に接続されたコンピュータが見つかるまで各ポータルコンピュータのすべてのユーザポートがダイヤルされる点である。代替実施形態では、接続を求めるコンピュータはアルゴリズムに従ってポート番号を選択し、そのポート番号にある各ポータルコンピュータにダイヤルする。ブロードキャストチャネルへの許容できる着呼ポートが見つからない場合、接続を求めるコンピュータは次のポート番号を選択し、プロセスを繰り返す。着呼ポートには低順位のポート番号が割り当てられる可能性が高いので、接続を求めるコンピュータはまず、ブロードキャストチャネルの着呼ポートである可能性が最も高いポート番号にダイヤルする。接続を求めるコンピュータは、完全に接続されたポータルコンピュータを探す際にダイヤルするポートの数である、最大の検索の深さを有することができる。接続を求めるコンピュータがその検索の深さを検索し尽くした場合は、ブロードキャストチャネルがまだ確立されていないか、または、そのコンピュータもポータルコンピュータである場合には、自身を最初の完全に接続されたコンピュータとしてブロードキャストチャネルを確立することができる。
【００３６】
接続を求めるコンピュータが、それ自体完全に接続されていないポータルコンピュータを見つけた場合は、ブロードキャストチャネルがすでに確立されており、別のポータルコンピュータの高順位のポート番号を通じてアクセスできる可能性があるので、２つのコンピュータは、最初に互いを見つけたときに接続しない。接続を求める２つのコンピュータが相互に接続すると、２つの互いに素なブロードキャストチャネルが形成される。接続を求める各コンピュータは、ポータルコンピュータを見つけようとする際に、接続を求める他のコンピュータと各自の経験を共有することができる。詳細には、接続を求めるあるコンピュータがすべてのポータルコンピュータを８の深さまで検索している場合、そのコンピュータはそれが８の深さまで検索を行ったことを接続を求める別のコンピュータに知らせることができる。その接続を求める別のコンピュータが例えば４の深さまでしか検索を行っていない場合には、深さ５から８までの検索を省略し、その検索を９の深さに進めることができる。
【００３７】
一実施形態では、各コンピュータが異なるポータルコンピュータのセットと、異なる最大検索深さを有することができる。このような状況では、接続を求めるコンピュータは完全に接続されたポートコンピュータを最高の深さで見つけることができないので、互いに素な２つのブロードキャストチャネルが形成される可能性がある。同様に、ポータルコンピュータのセットが互いに素である場合には、２つの別個のブロードキャストチャネルが形成される。
【００３８】
接続を求めるコンピュータの隣接コンピュータを識別する
上述のように、新しく接続するコンピュータの隣接コンピュータは、現在接続されているコンピュータのセットから無作為に選択することが好ましい。ただし、このブロードキャストチャネルの利点の１つは、ブロードキャストチャネルのグローバルな知識を持つコンピュータがないことである。各コンピュータは、それ自体と隣接コンピュータのローカルな知識を有する。この限られたローカルな知識には、すべての接続されたコンピュータが（ブロードキャストに関する限りは）ピアになり、任意の１つのコンピュータ（４正則、４連結の形態の場合には、実際には任意の３つのコンピュータ）の障害によりブロードキャストチャネルの障害が生じないという利点がある。このローカルな知識により、ポータルコンピュータが、接続を求めるコンピュータに４つの隣接コンピュータを無作為に選択することが難しくなる。
【００３９】
４つのコンピュータを選択するために、ポータルコンピュータは、無作為に選択したその内部接続の１つを通じてエッジ接続要求メッセージを送信する。受信したコンピュータは、無作為に選択したその内部接続の１つを通じて再度エッジ接続要求メッセージを送信する。このメッセージ送信は、ブロードキャストチャネルを表すグラフのランダムウォークに相当する。最終的に、ある受信コンピュータが、メッセージが無作為に選択されたコンピュータを表すのに十分な距離を移動してきたと判断する。受信コンピュータは、エッジ接続要求メッセージを受信した内部接続を、接続を求めるコンピュータにエッジピンニングのために提供する。言うまでもなく、提供された内部接続の終端にあるコンピュータが両方ともすでに接続を求めるコンピュータの隣接コンピュータである場合には、接続を求めるコンピュータはその内部接続を通じて接続することはできない。メッセージが十分な距離を移動してきたと判断したコンピュータは、すでに隣接コンピュータであるというこの状態を検出し、無作為に選択した隣接コンピュータにこのメッセージを送信する。
【００４０】
一実施形態では、エッジ接続要求メッセージが移動する距離は、ポータルコンピュータによって、ブロードキャストチャネルの推定直径の約２倍になるように設定される。このメッセージは、それが移動すべき距離の指示を含む。メッセージを受信した各コンピュータは、この移動距離を減分してからメッセージを送信する。移動すべき距離が０のメッセージを受信したコンピュータを、無作為に選択されたコンピュータとみなす。その無作為に選択されたコンピュータが、（例えばすでにそのコンピュータに接続されているために）接続を求めるコンピュータに接続できない場合、無作為に選択されたコンピュータは新たな移動距離とともにエッジ接続要求を隣接コンピュータの１つに転送する。一実施形態では、転送を行うコンピュータは、この新たな移動距離を０と１の間で切り替えて、２つのコンピュータ間で繰り返しメッセージを送信するのを防ぐ助けとする。
【００４１】
ブロードキャストチャネルに接続された各コンピュータが保持する情報がローカルな性質であるため、コンピュータは一般にはブロードキャストチャネルの直径を意識する必要がない。一実施形態では、ブロードキャストチャネルを通じて送信される各メッセージは、移動した距離のフィールドを有する。メッセージを転送する各コンピュータは、移動距離フィールドを増分する。各コンピュータはまた、ブロードキャストチャネルの推定直径を保持する。コンピュータは、移動してきた距離が推定直径が小さすぎることを表すメッセージを受信すると、それが保持する推定直径を更新し、推定直径のメッセージをブロードキャストする。コンピュータは、それが保持する推定直径よりも大きい直径を示す推定直径メッセージを受信すると、それ自体の推定直径を更新する。この推定直径を使用して、エッジ接続要求メッセージが移動すべき距離を設定する。
【００４２】
外部データ表現
ブロードキャストチャネルに接続されたコンピュータは、各自のデータを異なる形式で内部に格納することができる。例えば、あるコンピュータは３２ビット整数を使用し、別のコンピュータは６４ビット整数を使用することができる。別の例として、あるコンピュータはテキストの表現にＡＳＣＩＩを使用し、別のコンピュータはＵｎｉｃｏｄｅを使用することができる。異種のコンピュータ間の通信を可能にするために、ブロードキャストチャネルを通じて送信するメッセージにはＸＤＲ（外部データ表現）形式を使用することができる。
【００４３】
基本となるピアツーピアの通信プロトコルは、複数のメッセージを単一のメッセージストリームで送信することができる。ストリームからメッセージを取り出すための従来の技術は、オペレーティングシステムルーチンを繰り返し起動してストリーム中の次のメッセージを取り出すものである。各メッセージの取り出しには、オペレーティングシステムを２回呼び出すことが必要となる。すなわち、次のメッセージのサイズを取り出すための呼出しと、取り出したサイズで示されるバイト数を取り出すための呼出しである。しかし、このようなオペレーティングシステムの呼出しは、ローカルルーチンの起動と比べると非常に低速である可能性がある。この呼出しを繰り返す非効率性を克服するために、一実施形態におけるこのブロードキャスト技術ではＸＤＲを使用してメッセージストリーム中のメッセージ境界を識別する。このブロードキャスト技術では、例えば次の１０２４バイトをストリームから提供するようにオペレーティングシステムに要求することができる。そしてこのブロードキャスト技術では、繰り返しＸＤＲルーチンを起動してメッセージを取り出し、各起動の成功または失敗を使用して、オペレーティングシステムからさらに１０２４バイトブロックを取り出す必要があるかどうかを判断することができる。ＸＤＲルーチンの起動はシステムコールを伴わず、したがってシステムコールを繰り返すよりもはるかに効率的である。
【００４４】
Ｍ正則
上記の実施形態では、完全に接続されたコンピュータはそれぞれ４つの内部接続を有する。このブロードキャスト技術は、この他の数の内部接続にも使用することができる。例えば、各コンピュータは、６つ、８つ、あるいは任意数の偶数個の内部接続を有することができる。内部接続の数が増すと、ブロードキャストチャネルの直径は縮小する傾向にあり、したがってメッセージの伝搬時間が短縮する傾向にある。しかし、接続を求めるコンピュータをブロードキャストチャネルに接続するのに要する時間は、内部接続の数が増すにつれて増大する可能性がある。内部接続の数が偶数である場合、ブロードキャストチャネルはｍ正則、ｍ連結として維持することができる（安定状態）。内部接続の数が奇数個である場合には、ブロードキャストチャネルに奇数個のコンピュータが接続されていると、コンピュータの１つはその奇数より少ない数の内部接続を有する。このような状況では、ブロードキャストネットワークはｍ正則でもｍ連結でもない。次のコンピュータがブロードキャストチャネルに接続すると、ネットワークは再びｍ正則、ｍ連結になることができる。したがって、内部接続が奇数個である場合には、ブロードキャストチャネルはｍ正則かつｍ連結であるか、そうでないかの間を切り替わることになる。
【００４５】
構成要素
図６は、ブロードキャストチャネルに接続されたコンピュータの構成要素を示すブロック図である。上記の説明では概して、ブロードキャストチャネルが１つだけあり、各コンピュータはそのブロードキャストチャネルに１つのみの接続を有するものと仮定した。より一般的には、コンピュータのネットワークは複数のブロードキャストチャネルを有することができ、各コンピュータは複数のブロードキャストチャネルに接続することができ、各コンピュータは、同じブロードキャストチャネルに複数の接続を有することができる。このブロードキャストチャネルは、ネットワーク会議プログラムなど、協調して実行されるコンピュータプロセス（例えばアプリケーションプログラム）に非常に適している。各コンピュータプロセスは、１つまたは複数のブロードキャストチャネルに接続することができる。ブロードキャストチャネルは、チャネルタイプ（例えばアプリケーションプログラム名）と、そのチャネルタイプのための別々のブロードキャストチャネルを表すチャネルインスタンスによって識別することができる。プロセスがあるブロードキャストチャネルへの接続を試みる際には、ポータルコンピュータで実行されている、現在そのブロードキャストチャネルに接続されているプロセスを探す。接続を求めるプロセスは、チャネルタイプとチャネルインスタンスによってブロードキャストチャネルを識別する。
【００４６】
コンピュータ６００は、個別のプロセスとして実行される複数のアプリケーションプログラム６０１を含む。各アプリケーションプログラムは、それが接続された、各ブロードキャストチャネル用のブロードキャスタコンポーネント６０２とインタフェースをとる。ブロードキャスタコンポーネントは、そのアプリケーションプログラムのプロセス空間内にインスタンス化したオブジェクトとして実装することができる。あるいは、ブロードキャスタコンポーネントは、アプリケーションプログラムの別のプロセスあるいはスレッドとして実行してもよい。一実施形態では、ブロードキャスタコンポーネントは、アプリケーションプログラムによって起動できる機能（例えばクラスのメソッド）を提供する。提供される主な機能には、アプリケーションプログラムが起動して、それが接続したいブロードキャストチャネルの指示を渡す接続機能を含むことができる。アプリケーションプログラムは、ブロードキャスタコンポーネントが起動して、接続が完了した、すなわちプロセスが完全に接続された状態に入ったことをアプリケーションプログラムに通知するためのコールバックルーチンを提供することができる。ブロードキャスタコンポーネントは、アプリケーションプログラムが起動してブロードキャストチャネルでブロードキャストされる次のメッセージを取り出すためのメッセージ取得機能も提供することができる。あるいは、アプリケーションプログラムは、ブロードキャスタコンポーネントが起動してブロードキャストメッセージを受信したことをアプリケーションプログラムに通知するコールバックルーチン（アプリケーションプログラムによって提供される仮想機能であってもよい）を提供することもできる。各ブロードキャスタコンポーネントは、ハッシュアルゴリズムを使用して着呼ポートを割り当てる。着呼ポートで呼出しに応答すると、呼出しは、外部ポートおよび内部ポートとして機能する他のポートに転送される。
【００４７】
ブロードキャストチャネルに接続するコンピュータは、中央演算処理装置、メモリ、入力装置（例えばキーボードやポインティングデバイス）、出力装置（例えば表示装置）、および記憶装置（例えばディスクドライブ）を含むことができる。メモリおよび記憶装置は、ブロードキャスタコンポーネントを実装するコンピュータ命令を含むことができるコンピュータ可読媒体である。また、データ構造およびメッセージ構造は記憶しておくか、または、通信リンクなどのコンピュータ可読媒体で伝送される信号を介して伝送してもよい。
【００４８】
図７は、一実施形態における、ブロードキャスタコンポーネントのサブコンポーネントを示すブロック図である。ブロードキャスタコンポーネントは、接続コンポーネント７０１、外部ディスパッチャ７０２、各内部接続のための内部ディスパッチャ７０３、メッセージ取得コンポーネント７０４、およびブロードキャストコンポーネント７１２を含む。アプリケーションプログラムは、ブロードキャスタコンポーネントによって起動される接続コールバックコンポーネント７１０と応答受信コンポーネント７１１を提供することができる。アプリケーションプログラムは、接続コンポーネントを起動して指示されたブロードキャストチャネルへの接続を確立する。接続コンポーネントは、外部ポートを識別し、その外部ポートで受信するメッセージを処理する外部ディスパッチャをインストールする。接続コンポーネントは、ポータルコンピュータ探索コンポーネント７０５を起動して、ブロードキャストチャネルに接続されたポータルコンピュータを識別し、接続要求コンポーネント７０６を起動して、新しく接続しようとするプロセスの隣接プロセスを選択するように（完全に接続されていれば）ポータルコンピュータに要求する。外部ディスパッチャは外部メッセージを受信し、メッセージタイプを識別し、適切な処理ルーチン７０７を起動する。内部ディスパッチャは内部メッセージを受信し、メッセージタイプを識別し、適切な処理ルーチン７０８を起動する。受信したブロードキャストメッセージは、ブロードキャストメッセージキュー７０９に格納する。メッセージ取得コンポーネントは、ブロードキャストキューからメッセージを取り出すために起動される。ブロードキャストコンポーネントはアプリケーションプログラムによって起動されてブロードキャストチャネルにメッセージをブロードキャストする。
【００４９】
情報配信サービス
一実施形態では、ブロードキャストチャネルを使用して情報配信サービスアプリケーションを実装する。この情報配信サービスは、参加者がブロードキャストチャネルにブロードキャストされたメッセージを監視することを可能にする。各参加者は情報の生成側として、情報の消費側として、あるいはその双方として機能することができる。生成側はブロードキャストチャネルにメッセージをブロードキャストし、消費者はそのブロードキャストメッセージを受信する。例えば、スポーツのブロードキャストチャネルを使用してスポーツイベントの結果を配布することができる。Ｎａｔｉｏｎａｌ　Ｆｏｏｔｂａｌｌ　Ｌｅａｇｕｅなど特定の組織に、スポーツイベントの結果をブロードキャストチャネルでブロードキャストする権限を与えることができる。ブロードキャストチャネルの運営者は、ブロードキャストチャネルの利用権をスポーツ愛好家に販売することができる。この情報配信サービスを使用して、ニュース記事、株価、天気警報、医療に関する忠告、交通情報などを含む幅広い内容を配信することができる。
【００５０】
情報配信サービスは、消費者が興味のあるブロードキャストチャネルを見つけて、利用を申し込むことができるディレクトリウェブサイトを提供することができる。このディレクトリは、各種のブロードキャストチャネルのトピックを階層的に編成したものを提供することができる。ユーザが、あるブロードキャストチャネルの申し込みを決定すると、まだユーザのコンピュータで利用できる状態になっていない場合には、ブロードキャスタコンポーネントと情報配信サービスアプリケーションプログラムをユーザのコンピュータにダウンロードすることができる。また、そのブロードキャストチャネルと関連付けられたチャネルタイプとチャネルインスタンス、およびそのブロードキャストチャネルのためのポータルコンピュータの識別を利用者のコンピュータにダウンロードすることができる。情報配信サービスは、ポータルコンピュータがブロードキャストチャネルへのアクセスを許可する、あるいは誰がブロードキャストチャネルに接続したかを追跡するのに使用できる利用者の識別子も提供することができる。
【００５１】
情報配信サービスのウェブサイトは、エンティティが新しいブロードキャストチャネルを作成することも可能にする。例えば、ＮＦＬが自身の制御下で情報を配布するのに専用のブロードキャストチャネルを必要とすることが考えられる。この場合には、そのエンティティがウェブサイトと対話してブロードキャストチャネルを作成する。ブロードキャストチャネルの作成には、チャネルタイプとチャネルインスタンスの生成、セキュリティレベルの指定（例えばメッセージの暗号化）、利用者の条件の指定などが必要とされる。
【００５２】
ユーザは、階層の葉ノードに相当する個々のトピックについてのブロードキャストチャネルに申し込むか、あるいは、階層中の非葉ノードに相当するあるトピックカテゴリを利用することができる。例えば、ユーザは、スポーツスコアのカテゴリを利用する、あるいはＮＦＬスコアのトピックを利用することができる。一実施形態では、各トピックがそれ自体のブロードキャストチャネルを有する。この結果、あるトピックカテゴリを利用することは、複数のブロードキャストチャネルを利用することを意味する。あるいは、１つのトピックカテゴリが単一のブロードキャストチャネルを備えてもよい。ユーザがそのカテゴリ中の１つのトピックだけを申し込む場合、利用者のコンピュータで実行される情報配信サービスアプリケーションプログラムは、単にそのトピックに関連しないメッセージを無視する。
【００５３】
情報配信サービスには、様々な料金体系を使用することができる。利用者には、あるトピックの利用に対して月単位の固定料金を課金することができる。あるいは、実際に接続した時間に基づいて利用者に課金してもよい。例えば、利用者のコンピュータは、接続されると１時間おきなどに識別メッセージをブロードキャストすることができる。課金コンピュータはそのブロードキャストを監視し、識別メッセージに基づいて接続時間を記録する。課金コンピュータが一定期間識別メッセージを受信しない場合は、その利用者のコンピュータの接続が切断されたとみなす。また、ブロードキャストチャネルの運営者は、ブロードキャストチャネルを通じた広告のブロードキャストから収入を得ることができる。ブロードキャストチャネルで広告を流すための料金は、その広告がブロードキャストされている時にブロードキャストチャネルに接続している利用者の数によって変動する。
【００５４】
分散会議システム
一実施形態では、ブロードキャストチャネルを使用して会議システムを実装する。会議の各参加者はその会議のブロードキャストチャネルに接続し、ある参加者が発言者に指名される。会議アプリケーションプログラムは、発言者コンポーネントと出席者コンポーネントを含むことができる。発言者コンポーネントは、会議イベントをブロードキャストチャネルでブロードキャストする。各出席者コンポーネントは、会議イベントを受信し、会議イベントの結果を表示する。例えば、発言者は、会議でスライドと各スライドの説明を提示することができる。各出席者は、会議に先立ってそのスライドの電子コピーを受信することができる。予定された会議の時刻に、発言者と各出席者はその会議のブロードキャストチャネルに接続することにより会議に参加する。発言者コンポーネントは、発言者がいつどのスライドを表示するか指示することを可能にする。新しいスライドが表示されると、発言者コンポーネントは新スライドメッセージをブロードキャストする。出席者コンポーネントは、新スライドメッセージを受信すると、その新しいスライドを参加者に表示する。また、発言者コンポーネントは、発言者がスタイラスやその他のポインティングデバイスを使用してスライドに描画することも可能にする。そして発言者コンポーネントは描画メッセージをブロードキャストチャネルにブロードキャストし、出席者コンポーネントはその描画内容を出席者に表示することができる。この会議システムでは、発言者の発言をすべての参加者に配布するために音声−テキスト変換およびテキスト−音声変換を使用することもできる。
【００５５】
会議システムは、関係者が興味のある会議を見つけ、参加を申し込むことができるディレクトリウェブサイトを提供することができる。このディレクトリは、予定される会議を階層的に編成したものを提供することができる。ユーザが会議の申し込みを決定すると、ウェブサーバは、まだ参加者のコンピュータに記憶されていない場合にはブロードキャスタコンポーネントと会議アプリケーションプログラムを参加者のコンピュータにダウンロードすることができる。ウェブサーバは、その会議のブロードキャストチャネルに関連付けられたチャネルタイプおよびチャネルインスタンスと、そのブロードキャストチャネルのポータルコンピュータの識別もダウンロードする。ウェブサーバは、会議中に参加者に表示するスライドや他の内容もダウンロードすることができる。
【００５６】
会議システムは、エンティティがウェブサイトを使用して会議を予定することを可能にする。例えば、ソフトウェア会社が新製品発表の会議を予定する必要があるとする。会議の作成には、チャネルタイプおよびチャネルインスタンスの生成、セキュリティレベルの指定（例えばメッセージの暗号化）、出席者の条件の指定、会議の説明と予定時刻の提供、参加者に配布する内容の指定などが必要とされる。会議の発言者は、実際の内容（例えばスライド）を事前に公表することを望まない場合がある。このような場合は、出席者に配布する際には内容を暗号化し、その内容を解読するための鍵を会議中に発言者によって配布することができる。例えば、ソフトウェア会社の発表用の各スライドを異なる鍵で暗号化し、各新スライドメッセージとともに適切な鍵をブロードキャストすることができる。
【００５７】
この会議システムでは出席者が発言をブロードキャストチャネルにブロードキャストすることができる。出席者が発言をブロードキャストできる時間は発言者によって制御することができる。例えば、発言者コンポーネントは、発言許可メッセージと発言不可メッセージをブロードキャストして発言を許可する時間を定めることができる。その時間外にブロードキャストされる発言は無視することができる。あるいは出席者がいつでも発言をブロードキャストできるようにしてもよいが、発言者が承認メッセージをブロードキャストして、出席者コンポーネントが特定の発言を表示してよいことを知らせるまでは、他の出席者はその発言を無視する。
【００５８】
会議システムは、それぞれの出席者が必要に応じて会議中に会議ブロードキャストチャネルに接続し、接続を切断することを可能にする。さらに、会議システムは複数の発言者が「演壇」を共有することも可能にする。発言者はその間で発言者トークンを渡して、現在誰が発言中で、したがって会議を支配しているかを示すことができる。遅れて会議に加わる出席者は、会議監視ウェブサーバにアクセスすることにより、会議を同時進行で追うことができる。監視ウェブサーバは会議ブロードキャストチャネルに接続し、会議の現在の状態を監視することができる。出席者が遅れて加わると、監視ウェブサーバは、その出席者に会議の現在の状況を提供することができる。その後は、出席者はブロードキャストチャネルをリッスンして会議の進行を追うことができる。また、出席者コンポーネントは、出席者が現在提示されているもの以外の提示の一部を見ることも可能にする。このようにして、出席者は提示の他の部分を遡って参照することも、先に参照することもできる。
【００５９】
分散ゲーム環境
一実施形態では、ブロードキャストチャネルを使用してゲーム環境を実装する。このゲーム環境は、ブロードキャスタコンポーネントと対話する各プレーヤのコンピュータで実行されるゲームアプリケーションプログラムによって提供される。各プレーヤは、そのゲームがプレーされるブロードキャストチャネルに接続することによりゲーム（例えば一人称形式の射撃ゲーム）に参加する。ゲームでプレーヤが行動を行うたびに、その行動を表すメッセージがそのゲームのブロードキャストチャネルでブロードキャストされる。また、プレーヤは、メッセージをブロードキャストすることにより、１人または複数の他のプレーヤにメッセージ（例えば戦略情報）を送信することができる。ゲームアプリケーションプログラムは、ブロードキャストチャネルで受信された、あるいはそのコンピュータでプレーヤによって生成された行動の指示を受信すると、ゲームの現在の状態を更新する。ゲームは、プレーヤの１人が特定スコアに達したとき、すべての他のプレーヤを負かしたとき、すべてのプレーヤがゲームをやめたときに終了することができる。
【００６０】
このゲーム環境のためのゲームの作成を容易にするために、アプリケーションプログラムインタフェース（「ＡＰＩ」）を提供してゲーム開発者を支援する。このＡＰＩは、大半のタイプの一人称射撃ゲームで使用される高レベルのゲーム機能を提供することができる。ＡＰＩは例えば、プレーヤが新しい位置に移動したことを示す、特定の方向に撃つ、スコアを報告する、プレーヤの入退を知らせる、別のプレーヤにメッセージを送信するなどの機能を含むことができる。
【００６１】
このゲーム環境は、プレーヤが現在のゲームの状況を見、新しいゲームを登録することができるゲームウェブサイトを提供することができる。ゲームウェブサーバは、各ゲームと、そのゲームをプレーするブロードキャストチャネルの対応付けを含む。ゲームに参加する際、ユーザはウェブサーバからブロードキャスタコンポーネントとゲームアプリケーションプログラムをダウンロードする。ユーザは、そのゲームのグラフィックを含むことができるゲームの説明もダウンロードする。ウェブサーバは、ゲームと関連付けられたチャネルタイプおよびチャネルインスタンスと、そのゲームのポータルコンピュータの識別も提供する。ゲーム環境は、各ゲームに接続してゲームのアクティビティを監視し、そのアクティビティをウェブサーバに報告するゲーム監視コンピュータも備えることができる。このアクティビティ情報により、ウェブサーバは、各ゲームの現在の状態についての情報（例えばプレーヤ数）を提供することができる。
【００６２】
このゲーム環境は、一人称形式の射撃ゲーム以外のゲームにも使用することができる。例えば、プレーヤが様々な役のプレーを申し込む社会シミュレーションゲームの変形をプレーすることができる。役が満たされないか、あるいはその役のプレーヤがプレーをしていない場合には、自動化されたプレーヤがその役を引き受けることができる。
【００６３】
次の表にブロードキャスタコンポーネントによって送信されるメッセージを挙げる。
【００６４】
【表１】
2004505550.tif 000003
【００６５】
【表２】
2004505550.tif 000004
【００６６】
流れ図
図８−３４は、一実施形態におけるブロードキャスタコンポーネントの処理を表す流れ図である。図８は、一実施形態における接続ルーチンの処理を表す流れ図である。このルーチンには、このプロセスが接続を必要とするブロードキャストチャネルを識別するチャネルタイプ（例えばアプリケーション名）およびチャネルインスタンス（例えばセッション識別子）が渡される。このルーチンには、ポータルコンピュータのリストを含む補助情報と接続コールバックルーチンも渡される。接続が確立されると、接続コールバックルーチンが起動されてアプリケーションプログラムに通知する。このプロセスがこのルーチンを起動するとき、プロセスは接続探索状態にある。接続されたポータルコンピュータを見つけ、このルーチンが少なくとも１つの隣接プロセスに接続すると、このプロセスは部分的に接続した状態に入り、プロセスが最終的に４つの隣接プロセスに接続すると、完全に接続された状態に入る。小規模体制では、完全に接続されたプロセスが有する隣接プロセスは３つ以下の場合がある。ブロック８０１で、ルーチンは、プロセスが外部接続と内部接続を確立する際に他のプロセスと通信するための着呼ポートを開く。このポートは、上述のハッシュアルゴリズムを使用して、最初の利用可能ポートとして選択される。ブロック８０２で、ルーチンは接続時刻を現在の時刻に設定する。この接続時刻を使用して、その外部ポートを通じて接続されるプロセスのインスタンスを識別する。あるプロセスが１つの着呼ポートを使用してあるチャネルタイプおよびチャネルインスタンスのブロードキャストチャネルに接続し、その後切断し、別のプロセスが同じ着呼ポートを使用して同じブロードキャストチャネルに接続することができる。もう一方のプロセスが完全に接続した状態になる前に、別のプロセスがそれが完全に接続された古いプロセスであると考えて、そのプロセスとの通信を試みることができる。このような場合は、接続時刻を使用してこの状況を識別することができる。ブロック８０３で、ルーチンはポータルコンピュータ探索ルーチンを起動してチャネルタイプとチャネルインスタンスを渡す。ポータルコンピュータ探索ルーチンは、渡されたタイプとインスタンスについて、そのプロセスがブロードキャストチャネルに接続するためのポータルコンピュータを見つけることを試みる。判定ブロック８０４で、ポータルコンピュータ探索ルーチンがそのポータルコンピュータで完全に接続されたプロセスを見つけることができた場合、ルーチンはブロック８０５に進み、そうでない場合は失敗の指示を戻す。判定ブロック８０５でそのプロセスが実行されているポータルコンピュータ以外にポータルコンピュータが見つからない場合は、それがブロードキャストチャネルに完全に接続される最初のプロセスということであり、ルーチンはブロック８０６に進み、そうでない場合はブロック８０８に進む。ブロック８０６でルーチンは接続成立ルーチンを起動して、そのプロセスの状態を完全に接続された状態に変更する。ブロック８０７で、ルーチンは、渡されたチャネルタイプおよびチャネルインスタンスについて、そのプロセスの外部ポートを通じて受信するメッセージを処理する外部ディスパッチャをインストールする。その外部ポートを通じてメッセージを受信すると、この外部ディスパッチャが起動される。次いでルーチンは戻る（リターンする）。ブロック８０８で、ルーチンは外部ディスパッチャをインストールする。ブロック８０９でルーチンは接続要求ルーチンを起動して、接続を求めるコンピュータの隣接コンピュータを識別するプロセスを開始する。この後ルーチンは戻る。
【００６７】
図９は、一実施形態におけるポータルコンピュータ探索ルーチンの処理を表す流れ図である。このルーチンには、そのプロセスが接続を求めるブロードキャストチャネルのチャネルタイプとチャネルインスタンスが渡される。このルーチンは、検索の深さ（例えばポート番号）ごとに、その検索の深さにあるポータルコンピュータを調べる。ブロードキャストチャネルに完全に接続されたプロセスを有するポータルコンピュータがその検索の深さで見つかった場合、ルーチンは成功の指示を返す。ブロック９０２−９１１で、ルーチンは、プロセスを見つけるまで各検索深さの選択をループで行う。ブロック９０２で、ルーチンはポート番号順序付けアルゴリズムを用いて次の探索深さを選択する。判定ブロック９０３で、そのループの実行中、すなわち現在選択されている深さですべての検索深さがすでに選択されている場合、ルーチンは失敗の指示を戻し、そうでない場合はブロック９０４に進む。ブロック９０４−９１１で、ルーチンは、各ポータルコンピュータの選択と、そのポータルコンピュータのプロセスが、渡されたチャネルタイプおよびチャネルインスタンスを有するブロードキャストチャネルに接続されているか（あるいは接続を試みているか）どうかの判定をループで行う。ブロック９０４でルーチンは次のポータルコンピュータを選択する。判定ブロック９０５で、すでにすべてのポータルコンピュータが選択されている場合は、ルーチンはループしてブロック９０２に戻って次の探索深さを選択し、そうでない場合はブロック９０６に進む。ブロック９０６で、ルーチンは、その検索の深さで表されるポートを通じて選択されたポータルコンピュータにダイヤルする。判定ブロック９０７でダイヤルが成功した場合ルーチンはブロック９０８に進み、そうでない場合はループしてブロック９０４に戻り次のポータルコンピュータを選択する。ダイヤルは、ダイヤルしたポートが、そのポータルコンピュータで実行されるプロセスの、渡されたチャネルタイプおよびチャネルインスタンスのブロードキャストチャネルの着呼ポートである場合に成功する。ブロック９０８でルーチンは接触プロセスルーチンを起動し、このルーチンはダイヤルしたポートを通じてポータルコンピュータの応答プロセスに接触し、そのプロセスがブロードキャストチャネルに完全に接続されているかどうかを判定する。ブロック９０９で、ルーチンは、選択されたポータルコンピュータとの接続を切断する。判定ブロック９１０で、応答プロセスが完全にブロードキャストチャネルに接続されている場合には、ルーチンは成功の指示を戻し、そうでない場合はブロック９１１に進む。ブロック９１１で、ルーチンは、外部呼出し確認ルーチンを起動して、ポータルコンピュータとしてのそのプロセスに外部呼出しが行われたかどうかを判定し、その呼出しを処理する。ルーチンは次いでループしてブロック９０４に戻り、次のポータルコンピュータを選択する。
【００６８】
図１０は、一実施形態における接触プロセスルーチンの処理を表す流れ図である。このルーチンは、選択されたポートへの着呼に応答した選択されたポータルコンピュータのプロセスが完全にブロードキャストチャネルに接続されているかどうかを判定する。ブロック１００１で、ルーチンは、応答プロセスに外部メッセージ（ｓｅｅｋｉｎｇ＿ｃｏｎｎｅｃｔｉｏｎ＿ｃａｌｌ）を送信して、接続を求めるプロセスが、応答プロセスがブロードキャストチャネルに完全に接続されているかどうかを知る必要があることを知らせる。ブロック１００２で、ルーチンは、応答プロセスから外部応答メッセージを受信する。判定ブロック１００３で、外部応答メッセージ（ｓｅｅｋｉｎｇ＿ｃｏｎｎｅｃｔｉｏｎ＿ｒｅｓｐ）の受信に成功した場合、ルーチンはブロック１００４に進み、そうでない場合は戻る。ブロードキャストコンポーネントは、外部メッセージの受信を要求する際には必ずタイムアウト期間を設定する。そのタイムアウト期間内に外部メッセージを受信しない場合、ブロードキャスタコンポーネントは、それ自体の着呼ポートを調べて別のプロセスがそのポートを呼び出しているかどうかを確認する。詳細には、ダイヤルされたプロセスがダイヤル側のプロセスを呼び出している可能性があり、この結果デッドロック状態になることがある。ブロードキャスタコンポーネントは、受信要求を数回繰り返すことができる。予期されるメッセージを受信しない場合、ブロードキャスタコンポーネントはそのエラーを適宜処理する。判定ブロック１００４で、応答プロセスがその応答メッセージの中でそれが完全にブロードキャストチャネルに接続されていることを示す場合、ルーチンはブロック１００５に進み、そうでない場合はブロック１００６に進む。ブロック１００５で、ルーチンは接続されたポータルコンピュータのリストに選択されたポータルコンピュータを追加し、戻る。ブロック１００６で、ルーチンは接続を求める同様プロセスのリストに応答プロセスを追加し、戻る。
【００６９】
図１１は、一実施形態における接続要求ルーチンの処理を表す流れ図である。このルーチンは、ブロードキャストチャネルに完全に接続されていると識別されたポータルコンピュータのプロセスに、このプロセスとブロードキャストチャネルの接続を開始することを要求する。判定ブロック１１０１で、ブロードキャストチャネルに完全に接続されたポータルコンピュータの少なくとも１つのプロセスを見つけた場合、ルーチンはブロック１１０３に進み、そうでない場合はブロック１１０２に進む。ポータルコンピュータのプロセスは、そのコンピュータが最近ブロードキャストチャネルとの接続を切断した場合にはもはやリストにない可能性がある。一実施形態では、接続を求めるコンピュータは常にその検索深さ全体を検索し、ブロードキャストチャネルに接続するための複数のポータルコンピュータを見つけることができる。ブロック１１０２で、ルーチンはブロードキャストチャネルへの接続プロセスを再開し、戻る。ブロック１１０３で、ルーチンは、着呼ポートを通じて、見つかったポータルコンピュータの１つのプロセスにダイヤルする。判定ブロック１１０４でダイヤルが成功した場合ルーチンはブロック１１０５に進み、そうでない場合はブロック１１１３に進む。ダイヤルは、例えばダイヤルされたプロセスが最近ブロードキャストチャネルとの接続を切断している場合に失敗となる。ブロック１１０５で、ルーチンはダイヤルしたプロセスに外部メッセージ（ｃｏｎｎｅｃｔｉｏｎ＿ｒｅｑｕｅｓｔ＿ｃａｌｌ）を送信して、ブロードキャストチャネルへの接続を要求する。ブロック１１０６で、ルーチンは応答メッセージ（ｃｏｎｎｅｃｔｉｏｎ＿ｒｅｑｕｅｓｔ＿ｒｅｓｐ）を受信する。判定ブロック１１０７で応答メッセージを受信した場合ルーチンはブロック１１０８に進み、そうでない場合はブロック１１１３に進む。ブロック１１０８で、ルーチンは、受信した応答に基づいてそのプロセスの予想されるホール（すなわち空の内部接続）の数を設定する。大規模体制の場合、予想ホール数はゼロである。小規模体制の場合、予想ホール数は１から３の範囲である。ブロック１１０９で、ルーチンは、受信した応答に基づいてブロードキャストチャネルの推定直径を設定する。判定ブロック１１１１で、ダイヤルしたプロセスがそのプロセスに接続できる状態にあると応答メッセージに示される場合、ルーチンはブロック１１１２に進み、そうでない場合はブロック１１１３に進む。ブロック１１１２でルーチンは隣接プロセス追加ルーチンを起動して、応答プロセスをそのプロセスの隣接プロセスとして追加する。この応答プロセスの追加は、通例、ブロードキャストチャネルが小規模体制の場合に行われる。大規模体制の場合には、隣接プロセスを求めるランダムウォーク検索を行う。ブロック１１１３で、ルーチンは応答プロセスコンピュータとの外部接続を切断し、戻る。
【００７０】
図１２は、一実施形態における外部呼出し確認ルーチンの処理を示す流れ図である。このルーチンは、接続を求める同様プロセスがこのプロセスを通じてブロードキャストチャネルへの接続を試みているかどうかを識別するために起動される。ブロック１２０１で、ルーチンは着呼ポートへの呼出しへの応答を試みる。判定ブロック１２０２で応答が成功した場合ルーチンはブロック１２０３に進み、そうでない場合は戻る。ブロック１２０３で、ルーチンは外部ポートから外部メッセージを受信する。判定ブロック１２０４で、そのメッセージのタイプが、接続を求めるプロセスが呼出し元であることを示す場合（ｓｅｅｋｉｎｇ＿ｃｏｎｎｅｃｔｉｏｎ＿ｃａｌｌ）ルーチンはブロック１２０５に進み、そうでない場合は戻る。ブロック１２０５で、ルーチンは接続を求めるもう一方のプロセスに外部メッセージ（ｓｅｅｋｉｎｇ＿ｃｏｎｎｅｃｔｉｏｎ＿ｒｅｓｐ）を送信して、このプロセスも接続を要求していることを知らせる。判定ブロック１２０６で外部メッセージの送信が成功した場合、ルーチンはブロック１２０７に進み、そうでない場合は戻る。ブロック１２０７で、ルーチンは、接続を求めるもう一方のプロセスを、接続を求める同様プロセスのリストに追加し、戻る。このリストは、このプロセスが、ブロードキャストチャネルに完全に接続されたプロセスを見つけられない場合に使用することができる。その場合、このプロセスは、接続を求める同様プロセスの中にブロードキャストチャネルへの接続に成功したものがあるかどうかを調べることができる。例えば、接続を求めるある同様プロセスが、ブロードキャストチャネルに完全に接続された最初のプロセスになることができる。
【００７１】
図１３は、一実施形態における接続成立ルーチンの処理を示す流れ図である。このルーチンは、このプロセスの状態をブロードキャストチャネルに完全に接続された状態に設定し、コールバックルーチンを起動して、プロセスが要求のブロードキャストチャネルに完全に接続された状態になったことをアプリケーションプログラムに通知する。ブロック１３０１で、ルーチンはこのプロセスの接続状態を完全に接続された状態に設定する。ブロック１３０２で、ルーチンは、接続状態外部メッセージ（ｃｏｎｎｅｃｔｅｄ＿ｓｔｍｔ）を送信することにより、プロセスが完全に接続されていることを接続を求める同様プロセスに通知する。ブロック１３０３で、ルーチンは接続コールバックルーチンを起動してアプリケーションプログラムに通知し、戻る。
【００７２】
図１４は、一実施形態における外部ディスパッチャルーチンの処理を示す流れ図である。このルーチンは、外部ポートがメッセージを受信した時に起動される。このルーチンはメッセージを取り出し、外部メッセージのタイプを識別し、そのメッセージを処理する適切なルーチンを起動する。このルーチンは、受信したすべてのメッセージを処理するまで各メッセージの処理をループで繰り返す。ブロック１４０１で、ルーチンは外部ポートに応答し（例えば受信し（ｐｉｃｋ　ｕｐ））、外部メッセージを取り出す。判定ブロック１４０２で、メッセージが取り出された場合、ルーチンはブロック１４０３に進み、そうでない場合はブロック１４１５で外部ポートを切断して戻る。判定ブロック１４０３で、そのメッセージタイプが接続を求めるプロセスである場合（ｓｅｅｋｉｎｇ＿ｃｏｎｎｅｃｔｉｏｎ＿ｃａｌｌ）、ルーチンはブロック１４０４で接続探索呼出し処理ルーチンを起動し、そうでない場合はブロック１４０５に進む。判定ブロック１４０５で、メッセージタイプが接続要求呼出しである場合（ｃｏｎｎｅｃｔｉｏｎ＿ｒｅｑｕｅｓｔ＿ｃａｌｌ）、ルーチンはブロック１４０６で接続要求呼出し処理ルーチンを起動し、そうでない場合はブロック１４０７に進む。判定ブロック１４０７で、メッセージタイプがエッジ提示呼出し（ｅｄｇｅ＿ｐｒｏｐｏｓａｌ＿ｃａｌｌ）である場合、ルーチンはブロック１４０８でエッジ提示呼出し処理ルーチンを起動し、そうでない場合はブロック１４０９に進む。判定ブロック１４０９で、メッセージタイプがポート接続呼出し（ｐｏｒｔ＿ｃｏｎｎｅｃｔ＿ｃａｌｌ）である場合、ルーチンはブロック１４１０でポート接続呼出し処理ルーチンを起動し、そうでない場合はブロック１４１１に戻る。判定ブロック１４１１で、メッセージタイプが接続状態ステートメント（ｃｏｎｎｅｃｔｅｄ＿ｓｔｍｔ）である場合、ルーチンはブロック１１１２で接続状態ステートメント処理を起動し、そうでない場合はブロック１２１２に進む。判定ブロック１４１２で、メッセージタイプが状態修復ステートメント（ｃｏｎｄｉｔｉｏｎ＿ｒｅｐａｉｒ＿ｓｔｍｔ）である場合、ルーチンはブロック１４１３で状態修復処理ルーチンを起動し、そうでない場合はブロック１４１４にループして次のメッセージを処理する。各処理ルーチンを起動すると、ルーチンはブロック１４１４にループする。ブロック１４１４で、ルーチンは外部ポートを切断し、ブロック１４０１に進んで次のメッセージを受信する。
【００７３】
図１５は、一実施形態における接続探索呼出し処理ルーチンの処理を示す流れ図である。このルーチンは、接続を求めるプロセスが、ブロードキャストチャネルに接続するためのポータルコンピュータを識別するために呼出しを行う際に起動される。判定ブロック１５０１で、このプロセスが、メッセージ中で識別されるブロードキャストチャネルに現在完全に接続されている場合、ルーチンはブロック１５０２に進み、そうでない場合はブロック１５０３に進む。ブロック１５０２で、ルーチンは、このプロセスがブロードキャストチャネルに完全に接続されていることを示すようにメッセージを設定し、ブロック１５０５に進む。ブロック１５０３で、ルーチンはこのプロセスが完全に接続された状態ではないことを示すメッセージを設定する。ブロック１５０４で、ルーチンは、接続を求めるプロセスの識別を、接続を求める同様プロセスのリストに追加する。このプロセスが完全に接続されていない場合、このプロセスはブロードキャストチャネルへの接続を試みていることになる。ブロック１５０５で、ルーチンは接続を求めるプロセスに外部メッセージ応答（ｓｅｅｋｉｎｇ＿ｃｏｎｎｅｃｔｉｏｎ＿ｒｅｓｐ）を送信し、戻る。
【００７４】
図１６は、一実施形態における接続要求呼出し処理ルーチンの処理を示す流れ図である。このルーチンは、呼出し側プロセスが、ブロードキャストチャネルへのそのプロセスの接続の開始をこのプロセスに求めるときに起動される。このルーチンは、呼出し側プロセスがこのプロセスとの内部接続を確立することを可能にする（例えば小規模体制の場合）か、または呼出し側プロセスが接続できるプロセスを識別するプロセスを開始する。判定ブロック１６０１で、このプロセスが現在ブロードキャストチャネルに完全に接続されている場合、ルーチンはブロック１６０３に進み、そうでない場合はブロック１６０２で外部ポートを切断し、戻る。ブロック１６０３で、ルーチンは、呼出し側プロセスの予想ホール数を応答メッセージ中に設定する。ブロック１６０４で、ルーチンは応答メッセージ中に推定直径を設定する。ブロック１６０５で、ルーチンはこのプロセスが呼出し側プロセスに接続できる状態であるかどうかを知らせる。このプロセスは、ホール数が１以上で、かつ呼出し側プロセスがこのプロセスの隣接プロセスでないときに接続できる状態となる。ブロック１６０６で、ルーチンは、接続要求呼出し（ｃｏｎｎｅｃｔｉｏｎ＿ｒｅｑｕｅｓｔ＿ｃａｌｌ）に応答する外部メッセージを呼出し側プロセスに送信する。ブロック１６０７で、ルーチンは、要求メッセージに示される呼出し側プロセスが埋める必要のあるホールの数を認識する。判定ブロック１６０８で、このプロセスが呼出し側プロセスに接続できる状態である場合、ルーチンはブロック１６０９に進み、そうでない場合はブロック１６１１に進む。ブロック１６０９で、ルーチンは、隣接プロセス追加ルーチンを起動して呼出し側プロセスを隣接プロセスとして追加する。ブロック１６１０で、ルーチンは呼出し側プロセスが埋める必要のあるホール数を減分し、ブロック１６１１に進む。ブロック１６１１で、ルーチンは外部ポートを切断する。判定ブロック１６１２で、このプロセスにホールがないか、または推定直径が２以上である（すなわち大規模体制である）場合、ルーチンはブロック１６１３に進み、そうでない場合はブロック１６１６に進む。ブロック１６１３−１６１５で、ルーチンは、呼出し側プロセスをブロードキャストチャネルに接続するためのエッジを求める要求の転送をループで行う。埋める必要のある呼出し側プロセスのホールの対１つにつき１つの要求を転送する。判定ブロック１６１３で埋めるべき呼出し側プロセスのホール数が２以上である場合、ルーチンはブロック１６１４に進み、そうでない場合はブロック１６１６に進む。ブロック１６１４で、ルーチンは、接続エッジ探索転送ルーチンを起動する。起動したルーチンは、呼出し側プロセスの指示とランダムウォークの距離に渡される。一実施形態では、この距離はブロードキャストチャネルの推定直径の２倍である。ブロック１６１４で、ルーチンは埋めるべき残りのホールを２だけ減分し、ブロック１６１３にループする。判定ブロック１６１６で、埋めるべきホールがまだある場合、ルーチンはブロック１６１７に進み、そうでない場合は戻る。ブロック１６１７で、ルーチンはホールフィルルーチンを起動し、呼出し側プロセスの識別を渡す。ホールフィルルーチンは、呼出し側プロセスがそれを通じてブロードキャストチャネルに接続できる接続されたプロセスのホールを求めて、接続ポート探索ステートメント（ｃｏｎｎｅｃｔｉｏｎ＿ｐｏｒｔ＿ｓｅａｒｃｈ＿ｓｔｍｔ）をブロードキャストする。
【００７５】
図１７は、一実施形態における隣接プロセス追加ルーチンの処理を示す流れ図である。このルーチンは、外部ポートに呼出しを行うプロセスをこのプロセスの隣接プロセスとして追加する。ブロック１７０１で、ルーチンは、外部ポートの呼出しプロセスを識別する。ブロック１７０２で、ルーチンは、フラグをセットしてその隣接プロセスがまだこのプロセスからのブロードキャストメッセージを受信していないことを示す。このフラグを使用して、その新しい隣接プロセスに最初に送信されたメッセージに断絶がないことを保証する。外部ポートは、この接続の内部ポートとなる。判定ブロック１７０３でこのプロセスが接続探索状態にある場合、このプロセスはその最初の隣接プロセスに接続しようとしており、ルーチンはブロック１７０４に進み、そうでない場合はブロック１７０５に進む。ブロック１７０４で、ルーチンは、このプロセスの接続状態を部分的に接続された状態に設定する。ブロック１７０５で、ルーチンは、呼出し側プロセスをこのプロセスの隣接プロセスのリストに追加する。ブロック１７０６で、ルーチンは新しい隣接プロセスのために内部ディスパッチャをインストールする。この内部ディスパッチャは、その内部ポートを通じてその新しい隣接プロセスからメッセージを受信すると起動される。ブロック１７０７で、このプロセスが完全に接続されていなかった間にメッセージをバッファリングしていた場合には、ルーチンはブロック１７０８に進み、そうでない場合はブロック１７０９に進む。一実施形態では、部分的に接続されたプロセスは内部接続を通じて受信するメッセージをバッファリングしておき、新しい隣接プロセスに接続するとそのメッセージを送信することができる。ブロック１７０８で、ルーチンは、バッファリングされたメッセージを内部ポートを通じて新しい隣接プロセスに送信する。判定ブロック１７０９で、このプロセスのホール数が予想ホール数と等しい場合には、このプロセスは完全に接続されていることになり、ルーチンはブロック１７１０に進み、そうでない場合はブロック１７１１に進む。ブロック１７１０で、ルーチンは、接続成立ルーチンを起動して、このプロセスが完全に接続されていることを示す。判定ブロック１７１１で、このプロセスのホール数がゼロである場合、ルーチンはブロック１７１２に進み、そうでない場合は戻る。ブロック１７１２で、ルーチンは保留中のエッジがあればそれを削除して戻る。保留中のエッジとはエッジピンニングのためにこのプロセスに提示されたエッジであるが、この場合にはもはや必要でない。
【００７６】
図１８は、一実施形態における接続エッジ探索転送ルーチンの処理を示す流れ図である。このルーチンは、無作為に選択したこのプロセスの隣接プロセスの内部ポートを通じて要求元のプロセスをその隣接プロセスに接続する要求を送出する役目を担うが、これはランダムウォークの一部である。判定ブロック１８０１で残りの転送距離が１以上である場合、ルーチンはブロック１８０４に進み、そうでない場合はブロック１８０２に進む。判定ブロック１８０２でこのプロセスの隣接プロセスの数が２以上である場合、ルーチンはブロック１８０４に進み、そうでない場合はこのブロードキャストチャネルは小規模体制にあることになり、ルーチンはブロック１８０３に進む。判定ブロック１８０３で、要求元プロセスがこのプロセスの隣接プロセスである場合ルーチンは戻り、そうでない場合はブロック１８０４に進む。ブロック１８０４−１８０７で、ルーチンは、接続エッジ探索呼出しの内部メッセージ（ｃｏｎｎｅｃｔｉｏｎ＿ｅｄｇｅ＿ｓｅａｒｃｈ＿ｃａｌｌ）を無作為に選択した隣接プロセスに送信することをループで試みる。ブロック１８０４で、ルーチンはこのプロセスの隣接プロセスを無作為に選択する。判定ブロック１８０５で、すでにこのプロセスの隣接プロセスがすべて選択されている場合、ルーチンはメッセージを転送することができず、戻り、そうでない場合はブロック１８０６に進む。ブロック１８０６で、ルーチンは接続エッジ探索呼出しの内部メッセージを選択された隣接プロセスに送信する。判定ブロック１８０７でメッセージの送信が成功した場合、ルーチンはブロック１８０８に進み、そうでない場合はブロック１８０４にループして次の隣接プロセスを選択する。内部メッセージの送信が成功しないときは、隣接コンピュータが計画しない形でブロードキャストチャネルとの接続を切断している可能性がある。ブロードキャストコンポーネントは、そのような状況を検出したときには、ホールフィルルーチンを起動して１つのホールを埋めるか、または接続エッジ探索転送ルーチンを起動して２つのホールを埋めることにより別の隣接コンピュータを見つけることを試みる。ブロック１８０８で、ルーチンは、最近送信した接続エッジ探索呼出しがまだ認識されていないことに気付き、残りの転送距離が１以下である場合にはその隣接コンピュータへのエッジが確保されていることを知らせる。このエッジは、選択された隣接プロセスがエッジピンニングのためにそのエッジを要求元プロセスに提供する可能性があるために確保される。そしてルーチンは戻る。
【００７７】
図１９は、エッジ提示呼出し処理ルーチンの処理を示す流れ図である。このルーチンは、提示側のプロセスとその隣接プロセスの１つとの間のエッジをエッジピンニングのためにこのプロセスに接続することを提案するメッセージを提示側プロセスから受信した際に起動される。判定ブロック１９０１で、このプロセスのホール数から保留中エッジの数を引いた数が１以上である場合には、このプロセスには埋めるべきホールがまだあることになり、ルーチンはブロック１９０２に進み、そうでない場合にはブロック１９１１に進む。判定ブロック１９０２で、提示側プロセスまたはその隣接プロセスがこのプロセスの隣接プロセスである場合には、ルーチンはブロック１９１１に進み、そうでない場合はブロック１９０３に進む。ブロック１９０３で、ルーチンは、このプロセスと提示側プロセスの間のエッジが保留中であることを知らせる。判定ブロック１９０４で、提示された隣接プロセスがすでに提示された隣接プロセスとして保留中である場合には、ルーチンはブロック１９１１に進み、そうでない場合にはブロック１９０７に進む。ブロック１９０７で、ルーチンは、エッジ提示応答を外部メッセージ（ｅｄｇｅ＿ｐｒｏｐｏｓａｌ＿ｒｅｓｐ）として提示側プロセスに送信し、提示されたエッジを承認することを知らせる。判定ブロック１９０８でメッセージの送信が成功した場合、ルーチンはブロック１９０９に進み、そうでない場合は戻る。ブロック１９０９で、ルーチンはそのエッジを保留エッジとして追加する。ブロック１９１０で、ルーチンは隣接プロセス追加ルーチンを起動して、外部ポートの提示側プロセスを隣接プロセスとして追加する。そしてルーチンは戻る。ブロック１９１１で、ルーチンは外部メッセージ（ｅｄｇｅ＿ｐｒｏｐｏｓａｌ＿ｒｅｓｐ）を送信し、その提示されたエッジを承認しないことを知らせる。判定ブロック１９１２でホール数が奇数である場合、ルーチンはブロック１９１３に進み、そうでない場合は戻る。ブロック１９１３で、ルーチンはホールフィルルーチンを起動し、戻る。
【００７８】
図２０は、一実施形態におけるポート接続呼出し処理ルーチンの処理を示す流れ図である。このルーチンは、送信元プロセスがこのプロセスの１つのホールへの接続を求めることを知らせる外部メッセージを受信したときに起動される。判定ブロック２００１で、このプロセスのホール数が１以上である場合は、ルーチンはブロック２００２に進み、そうでない場合はブロック２００３に進む。判定ブロック２００２で、送信元プロセスが隣接プロセスでない場合、ルーチンはブロック２００４に進み、そうでない場合はブロック２００３に進む。ブロック２００３で、ルーチンはポート接続応答の外部メッセージ（ｐｏｒｔ＿ｃｏｎｎｅｃｔｉｏｎ＿ｒｅｓｐ）を送信元プロセスに送信して、このプロセスへの接続は許可できないことを知らせる。次いでルーチンは戻る。ブロック２００４で、ルーチンは、ポート接続応答の外部メッセージを送信元プロセスに送信して、このプロセスへの接続を許可することを知らせる。判定ブロック２００５で、メッセージの送信が成功した場合ルーチンはブロック２００６に進み、そうでない場合はブロック２００７に進む。ブロック２００６で、ルーチンは、隣接プロセス追加ルーチンを起動して送信元プロセスをこのプロセスの隣接プロセスとして追加し、戻る。ブロック２００７で、ルーチンは外部接続を切断する。ブロック２００８で、ルーチンは接続要求ルーチンを起動して、このプロセスのホールの１つにプロセスを接続させることを要求する。次いでルーチンは戻る。
【００７９】
図２１は、一実施形態におけるホールフィルルーチンの処理を示す流れ図である。このルーチンには要求元プロセスの指示が渡される。このプロセスがホールを埋めることを要求している場合、このルーチンは他のプロセスに内部メッセージを送信する。別のプロセスがホールを埋めることを要求している場合、このルーチンは接続ポート探索要求を処理するルーチンを起動する。ブロック２１０１で、ルーチンは接続ポート探索ステートメントの内部メッセージ（ｃｏｎｎｅｃｔｉｏｎ＿ｐｏｒｔ＿ｓｅａｒｃｈ＿ｓｔｍｔ）を初期化する。判定ブロック２１０２で、このプロセスが要求元プロセスである場合、ルーチンはブロック２１０３に進み、そうでない場合はブロック２１０４に進む。ブロック２１０３で、ルーチンは内部ポートを通じてこのプロセスの隣接プロセスにメッセージを配信し、戻る。ブロック２１０４で、ルーチンは接続ポート探索処理ルーチンを起動し、戻る。
【００８０】
図２２は、一実施形態における内部ディスパッチャルーチンの処理を示す流れ図である。このルーチンには、内部メッセージを送信した隣接プロセスの指示が渡される。ブロック２２０１で、ルーチンは内部メッセージを受信する。このルーチンはメッセージタイプを識別し、メッセージを処理する適切なルーチンを起動する。ブロック２２０２で、ルーチンは、受信したメッセージ中の情報に基づいて、ブロードキャストチャネルの推定直径を変更するかどうかを判断する。判定ブロック２２０３で、このプロセスがメッセージの発信元プロセスであるか、そのメッセージをすでに受信している（すなわち複製である）場合、ルーチンはメッセージを無視してブロック２２０８に進み、そうでない場合はブロック２２０３Ａに進む。判定ブロック２２０３Ａでプロセスが部分的に接続されている場合、ルーチンはブロック２２０３Ｂに進み、そうでない場合はブロック２２０４に進む。ブロック２２０３Ｂで、ルーチンはメッセージを保留中の接続用のバッファに追加し、ブロック２２０４に進む。判定ブロック２２０４−２２０７でルーチンはメッセージタイプを解読し、メッセージを処理する適切なルーチンを起動する。例えば、判定ブロック２２０４でメッセージのタイプがブロードキャストステートメント（ｂｒｏａｄｃａｓｔ＿ｓｔｍｔ）である場合、ルーチンはブロック２２０５でブロードキャストメッセージ処理ルーチンを起動する。適切な処理ルーチンを起動すると、ルーチンはブロック２２０８に進む。判定ブロック２２０８で、部分的に接続された状態用のバッファがいっぱいである場合、ルーチンはブロック２２０９に進み、そうでない場合はブロック２２１０に進む。ブロードキャスタコンポーネントは、部分的に接続されている間にすべてのその内部メッセージをバッファに集めておき、新しい隣接プロセスに接続したときにそのメッセージを転送することができる。しかし、このバッファがいっぱいになると、ブロードキャストチャネルはこの時点では小規模体制にあるので、プロセスはそれが完全に接続された状態になっており、予想接続数が多すぎたとみなす。ブロック２２０９でルーチンは接続成立ルーチンを起動し、ブロック２２１０に進む。判定ブロック２２１０でアプリケーションプログラムメッセージキューが空である場合、ルーチンは戻り、そうでない場合はブロック２２１２に進む。ブロック２２１２でルーチンは応答受信ルーチンを起動し、取得したメッセージを渡して戻る。応答受信ルーチンは、アプリケーションプログラムのコールバックルーチンである。
【００８１】
図２３は、一実施形態におけるブロードキャストメッセージ処理ルーチンの処理を示す流れ図である。このルーチンには、発信元プロセスの指示、ブロードキャストメッセージの送信元である隣接コンピュータの指示、およびブロードキャストメッセージ自体が渡される。ブロック２３０１で、ルーチンはそのメッセージの順序はずれ処理を行う。ブロードキャスタコンポーネントは、通し番号順にアプリケーションプログラムに送れるようになるまで、各発信元プロセスからのメッセージをキューに入れておく。ブロック２３０２で、ルーチンはブロードキャストメッセージ配信ルーチンを起動して、このプロセスの隣接プロセスにメッセージを転送する。判定ブロック２３０３で、新しく接続された隣接プロセスがメッセージの受信を待っている場合ルーチンはブロック２３０４に進み、そうでない場合は戻る。ブロック２３０４で、ルーチンは可能である場合には各発信元プロセスに正しい順序でメッセージを送信し、そして戻る。
【００８２】
図２４は、一実施形態におけるブロードキャストメッセージ配信ルーチンの処理を示す流れ図である。このルーチンは、メッセージをこのプロセスに送信した隣接プロセスを除く、このプロセスの各隣接プロセスにブロードキャストメッセージを送信する。ブロック２４０１で、ルーチンは、メッセージの送信元である隣接プロセス以外の次の隣接プロセスを選択する。判定ブロック２４０２で、すでにそのような隣接プロセスがすべて選択されている場合、ルーチンは戻る。ブロック２４０３で、ルーチンは選択した隣接プロセスにメッセージを送信し、ブロック２４０１にループして次の隣接プロセスを選択する。
【００８３】
図２６は、一実施形態における接続ポート探索ステートメント処理ルーチンの処理を示す流れ図である。このルーチンには、メッセージの送信元である隣接プロセスの指示とメッセージ自体が渡される。ブロック２６０１で、ルーチンは内部メッセージ配信を起動し、送信元の隣接プロセス以外の各隣接プロセスにメッセージを送信する。判定ブロック２６０２でこのプロセスのホール数が１以上である場合、ルーチンはブロック２６０３に進み、そうでない場合は戻る。判定ブロック２６０３で要求元プロセスが隣接プロセスである場合、ルーチンはブロック２６０５に進み、そうでない場合はブロック２６０４に進む。ブロック２６０４で、ルーチンは、隣接プロセス接近ルーチンを起動し、戻る。隣接プロセス接近ルーチンは、可能な場合にはこのプロセスを要求元プロセスに接続する。ブロック２６０５でこのプロセスのホールが１つである場合には、隣接コンピュータ同士に空きポートがある状態が存在することになり、ルーチンはブロック２６０６に進み、そうでない場合には戻る。ブロック２６０６で、ルーチンは、このプロセスの隣接プロセスのリストを含む状態確認メッセージ（ｃｏｎｄｉｔｉｏｎ＿ｃｈｅｃｋ）を生成する。ブロック２６０７で、ルーチンは要求元の隣接プロセスにそのメッセージを送信する。
【００８４】
図２７は、一実施形態における隣接プロセス接近ルーチンの処理を示す流れ図である。このルーチンには、このプロセスの潜在的な隣接プロセスの指示が渡される。このプロセスが潜在的な隣接プロセスに接続できる場合は、ポート接続呼出しの外部メッセージをその潜在的な隣接プロセスに送信し、その潜在的な隣接プロセスを隣接プロセスとして追加する。判定ブロック２７０１で潜在的な隣接プロセスがすでに隣接プロセスである場合には、ルーチンは戻り、そうでない場合はブロック２７０２に進む。ブロック２７０２で、ルーチンは潜在的な隣接プロセスにダイヤルする。判定ブロック２７０３でこのプロセスのホール数が１以上である場合、ルーチンはブロック２７０４に進み、そうでない場合はブロック２７０６に進む。ブロック２７０４で、ルーチンは、潜在的な隣接プロセスにポート接続呼出しの外部メッセージ（ｐｏｒｔ＿ｃｏｎｎｅｃｔｉｏｎ＿ｃａｌｌ）を送信し、その応答（ｐｏｒｔ＿ｃｏｎｎｅｃｔｉｏｎ＿ｒｅｓｐ）を受信する。この応答を無事受信したとすると、ルーチンは、ブロック２７０５で隣接プロセス追加ルーチンを起動することにより、潜在的な隣接プロセスをこのプロセスの隣接プロセスとして追加する。ブロック２７０６で、ルーチンは潜在的なコンピュータとの接続を切断し、戻る。
【００８５】
図２８は、一実施形態における接続エッジ探索呼出し処理ルーチンの処理を示す流れ図である。このルーチンには、メッセージの送信元である隣接プロセスの指示とメッセージ自体が渡される。このルーチンは、隣接プロセスにメッセージを転送するか、またはこのプロセスと送信側隣接プロセスとの間のエッジをエッジピンニングのために要求元プロセスに提案する。判定ブロック２８０１で、このプロセスが要求元プロセスではないか、あるいは要求元プロセスのホール数がなお２以上である場合、ルーチンはブロック２８０２に進み、そうでない場合はブロック２８１３に進む。判定ブロック２８０２で、転送距離が１以上である場合はランダムウォークが完了していないことになり、ルーチンはブロック２８０３に進み、そうでない場合はブロック２８０４に進む。ブロック２８０３で、ルーチンは、接続エッジ探索転送ルーチンを起動して要求元プロセスの指示と減分した転送距離を渡す。ルーチンは次いでブロック２８１５に進む。判定ブロック２８０４で、要求元プロセスが隣接プロセスであるか、このプロセスと送信元の隣接プロセスとの間のエッジがあるプロセスにすでに提供されているために確保されている場合、ルーチンはブロック２８０５に進み、そうでない場合はブロック２８０６に進む。ブロック２８０５で、ルーチンは、接続エッジ探索転送ルーチンを起動して、要求元パーティの指示と、二者択一的にあと１つまたは２つのコンピュータにわたってランダムウォークを続けるように指示するトグルインディケータを渡す。ルーチンは次いでブロック２８１５に進む。ブロック２８０６で、ルーチンは着呼ポートを介して要求元プロセスにダイヤルする。ブロック２８０７で、ルーチンはエッジ提示呼出しの外部メッセージ（ｅｄｇｅ＿ｐｒｏｐｏｓａｌ＿ｃａｌｌ）を送信し、応答（ｅｄｇｅ＿ｐｒｏｐｏｓａｌ＿ｒｅｓｐ）を受信する。この応答を無事に受信した場合、ルーチンはブロック２８０８に進む。判定ブロック２８０８で、エッジが要求元プロセスにとって受容できることを応答が示す場合、ルーチンはブロック２８０９に進み、そうでない場合はブロック２８１２に進む。ブロック２８０９で、ルーチンは、このプロセスと送信元の隣接プロセスの間のエッジを確保する。ブロック２８１０で、ルーチンは、隣接プロセス追加ルーチンを起動することにより、要求元プロセスを隣接プロセスとして追加する。ブロック２８１１で、ルーチンは隣接プロセスとしての送信元隣接プロセスを削除する。ブロック２８１２でルーチンは外部ポートの接続を切断し、ブロック２８１５に進む。判定ブロック２８１３で、このプロセスが要求元プロセスであり、かつこのプロセスのホール数が１に等しい場合、ルーチンはブロック２８１４に進み、そうでない場合はブロック２８１５に進む。ブロック２８１４で、ルーチンはホールフィルルーチンを起動する。ブロック２８１５で、ルーチンは、接続エッジ探索応答メッセージ（ｃｏｎｎｅｃｔｉｏｎ＿ｅｄｇｅ＿ｓｅａｒｃｈ＿ｒｅｓｐｏｎｓｅ）を送信元の隣接プロセスに送信して承認を知らせ、戻る。グラフはパリティに影響される。つまり、あるノードで開始しそのノードで終わるすべての可能な経路は、グラフの周期の長さが奇数でない限り偶数の長さになる。ブロードキャスタコンポーネントは、トグルインディケータを使用して偶数の距離と奇数の距離とでランダムウォークの距離を変える。
【００８６】
図２９は、一実施形態における接続エッジ探索応答処理ルーチンの処理を示す流れ図である。このルーチンには、要求元プロセスの指示、送信元の隣接プロセス、およびメッセージが渡される。ブロック２９０１で、ルーチンは接続エッジ探索応答（ｃｏｎｎｅｃｔｉｏｎ＿ｅｄｇｅ＿ｓｅａｒｃｈ＿ｒｅｓｐ）を受信したことに気付き、転送距離が１以下である場合には、このプロセスと送信元の隣接プロセス間に確保されたエッジを解除する。判定ブロック２９０２で、要求元プロセスがエッジを受容できることがメッセージに示される場合、ルーチンはブロック２９０３に進み、そうでない場合は戻る。ブロック２９０３で、ルーチンはこのプロセスと送信元隣接プロセスの間のエッジを確保する。ブロック２９０４で、ルーチンは隣接プロセスとしての送信元隣接プロセスを削除する。ブロック２９０５で、ルーチンは隣接プロセス接近ルーチンを起動して要求元プロセスに接続する。判定ブロック２９０６で起動したルーチンが機能しなかった場合は、ルーチンはブロック２９０７に進み、そうでない場合は戻る。判定ブロック２９０７でこのプロセスのホールの数が１以上である場合、ルーチンはブロック２９０８に進み、そうでない場合は戻る。ブロック２９０８でルーチンはホールフィルルーチンを起動し、戻る。
【００８７】
図３０は、一実施形態におけるブロードキャストルーチンの処理を示す流れ図である。このルーチンはアプリケーションプログラムによって起動され、ブロードキャストチャネルでメッセージをブロードキャストする。このルーチンにはブロードキャストするメッセージが渡される。判定ブロック３００１で、このプロセスが少なくとも１つの隣接プロセスを有する場合、ルーチンはブロック３００２に進み、そうでない場合はそれがブロードキャストチャネルに接続された唯一のプロセスになるのでルーチンは戻る。ブロック３００２で、ルーチンはブロードキャストステートメントタイプの内部メッセージ（ｂｒｏａｄｃａｓｔ＿ｓｔｍｔ）を生成する。ブロック３００３で、ルーチンはメッセージの通し番号を設定する。ブロック３００４で、ルーチンは内部メッセージ配信ルーチンを起動して、ブロードキャストチャネルにメッセージをブロードキャストする。ルーチンは戻る。
【００８８】
図３１は、一実施形態におけるメッセージ取得ルーチンの処理を示す図である。メッセージ取得ルーチンは、アプリケーションプログラム、またはアプリケーションプログラムによって提供されるコールバックルーチンによって起動することができる。このルーチンはメッセージを戻す。ブロック３１０１で、ルーチンはブロードキャストチャネルのメッセージキューからメッセージをポップする。判定ブロック３１０２でメッセージを取り出した場合は、ルーチンは成功の指示を戻し、そうでない場合は失敗の指示を戻す。
【００８９】
図３２−３４は、隣接コンピュータ同士に空きポートがある状態と関連付けられたメッセージの処理を示す流れ図である。図３２は、一実施形態における状態確認メッセージ処理の処理を示す流れ図である。このメッセージは、ホールが１つあり、このプロセスのホールへの接続を求める要求を受信した隣接プロセスによって送信される。判定ブロック３２０１で、このプロセスのホール数が１に等しい場合、ルーチンはブロック３２０２に進み、そうでない場合は隣接コンピュータ同士に空きポートがある状態はもう存在しないことになり、ルーチンは戻る。判定ブロック３２０２で、送信元の隣接プロセスとこのプロセスが同じ隣接プロセスのセットを有する場合、ルーチンはブロック３２０３に進み、そうでない場合はブロック３２０５に進む。ブロック３２０３で、ルーチンは、このプロセスの隣接プロセスのリストを含む状態二重確認メッセージ（ｃｏｎｄｉｔｉｏｎ＿ｄｏｕｂｌｅ＿ｃｈｅｃｋ）を初期化する。ブロック３２０４で、ルーチンは、送信元の隣接プロセスでない隣接プロセスにメッセージを内部的に送信する。そしてルーチンは戻る。ブロック３２０５で、ルーチンは、同じくこのプロセスの隣接プロセスではない送信元プロセスの隣接プロセスを選択する。ブロック３２０６で、ルーチンは、選択したプロセスに状態修復メッセージ（ｃｏｎｄｉｔｉｏｎ＿ｒｅｐａｉｒ＿ｓｔｍｔ）を外部的に送信する。ブロック３２０７で、ルーチンは隣接プロセス追加ルーチンを起動して、選択した隣接プロセスをこのプロセスの隣接プロセスとして追加し、戻る。
【００９０】
図３３は、一実施形態における状態修復ステートメント処理ルーチンの処理を示す流れ図である。このルーチンは、既存の隣接プロセスを削除し、メッセージの送信元のプロセスに接続する。判定ブロック３３０１でこのプロセスにホールがない場合、ルーチンはブロック３３０２に進み、そうでない場合はブロック３３０４に進む。ブロック３３０２で、ルーチンは、隣接コンピュータ同士に空きポートがある状態に関係しない隣接プロセスを選択する。ブロック３３０３で、ルーチンは、このプロセスの隣接プロセスとしての選択された隣接プロセスを削除する。したがって、ルーチンを実行しているこのプロセスには現在少なくとも１つのホールがあることになる。ブロック３３０４で、ルーチンは隣接プロセス追加ルーチンを起動して、メッセージの送信元であるプロセスをこのプロセスの隣接プロセスとして追加する。そしてルーチンは戻る。
【００９１】
図３４は、状態二重確認処理ルーチンの処理を示す流れ図である。このルーチンは、隣接コンピュータ同士に空きポートがある状態が実際に問題となっているかどうか、またはブロードキャストチャネルが小規模体制にあるかどうかを判定する。判定ブロック３４０１で、このプロセスにホールが１つある場合、ルーチンはブロック３４０２に進み、そうでない場合はブロック３４０３に進む。このプロセスのホールが１つでない場合は、このプロセスの隣接プロセスのセットは送信元プロセスの隣接プロセスのセットと同じでない。判定ブロック３４０２で、このプロセスと送信元プロセスが同じ隣接プロセスのセットを有する場合はブロードキャストチャネルが小規模体制ではないことになり、ルーチンはブロック３４０３に進み、そうでない場合はブロック３４０６に進む。判定ブロック３４０３でこのプロセスにホールがない場合、ルーチンは戻り、そうでない場合はブロック３４０４に進む。ブロック３４０４で、ルーチンはこのプロセスの推定直径を１に設定する。ブロック３４０５で、ルーチンは、直径再設定の内部メッセージ（ｄｉａｍｅｔｅｒ＿ｒｅｓｅｔ）をブロードキャストして推定直径が１であることを知らせ、戻る。ブロック３４０６で、ルーチンはこのプロセスの隣接プロセスのリストを作成する。ブロック３４０７で、ルーチンは、状態二重確認メッセージの送信元である隣接プロセスに隣接プロセスのリストを含む状態確認メッセージ（ｃｏｎｄｉｔｉｏｎ＿ｃｈｅｃｋ＿ｓｔｍｔ）を送信し、戻る。
【００９２】
上記の説明から、この技術の特定の実施形態について述べたが、本発明の精神および範囲から逸脱せずに各種の変更を行えることが理解されよう。例えば、ブロードキャストチャネルにおける通信は暗号化してもよい。また、チャネルインスタンスまたはセッション識別子は非常に大きな数（例えば１２８ビット）にして、無許可のユーザが悪意をもってブロードキャストチャネルに侵入するのを妨害する助けとすることができる。ポータルコンピュータは、セキュリティを強化し、無許可ユーザをブロードキャストチャネルに接続させないことも可能である。したがって、本発明は特許請求の範囲以外によっては制限されない。
【００９３】
分散競売システム
分散した競売人による電子的な競売を行うための方法およびシステムを提供する。一実施形態では、各参加者のコンピュータは、競売を開始し、入札を受け付け、そして競売を終了する競売人コンポーネントを含む。したがって、この競売システムは、競売で入札を調整する中央競売サーバに依存しない。この競売システムは、ある意味でサーバレスである。この競売システムではブロードキャストチャネルを使用して、競売の参加者間の通信を行う。各参加者のコンピュータはブロードキャストチャネルに接続され、競売参加者プログラムを実行する。競売参加者プログラムは、参加者が競売にかけられている商品に入札し、他の参加者の入札を受信して表示し、競売の終了を調整することを可能にする。参加者が競売にかけられている商品に入札すると、競売参加者プログラムはブロードキャストチャネルに入札メッセージをブロードキャストする。ブロードキャストチャネルに接続された各競売参加者プログラムは、入札メッセージを受信し、現在の最高入札額をその参加者に表示する。その参加者が最高入札額を提示した競売参加者プログラムは、終了の規則に従って競売の終了を調整する。例えば、競売参加者プログラムは、その参加者を上回る入札額が一定の期間出ていないと判断すると、「終了間近（ｇｏｉｎｇ）」メッセージをブロードキャストすることができる。終了間近メッセージは、競売の終了が近いことを参加者に通告する競売人に相当する。競売参加者プログラムは、終了間近メッセージの送信後に一定期間その参加者を上回る入札が出ていないと判断すると、「終了（ｇｏｎｅ）」メッセージをブロードキャストすることができる。競売参加者プログラムは、終了メッセージを受信すると、各自の参加者に競売が終了したことを通知する。参加者が落札価格を出した競売参加者プログラムは、競売リッスンサーバと通信してトランザクションを完了する。参加者同士はブロードキャストチャネルを通じて接続されているので、各参加者は各入札が出されるとその通知を受信する。また、この競売システムの信頼性は中央の競売サーバに依存しない。参加者の１人のコンピュータに障害が起こった場合も、他の参加者は競売を続けることができる。一実施形態では、ここに記載するブロードキャストチャネルを使用してこの競売システムを実装する。ただし、当業者は、この競売システムは他の基礎通信ネットワークでも使用できることを理解されよう。
【００９４】
競売システムは、競売リッスンサーバコンピュータ、競売モニタコンピュータ、および参加者のコンピュータを含むことができる。競売リッスンサーバコンピュータは、販売者が競売にかける商品をリストするためのウェブサイトを提供することができる。商品をリストする際、販売者は（適切な場合には）競売にかける商品の写真、商品の最低落札価格、競売の開始時間を提供することができる。潜在的な入札者は競売リッスンサーバのウェブページにアクセスしてリストされた競売を見ることができる。潜在的な入札者は、競売リッスンサーバから競売参加者プログラムを各自のコンピュータにダウンロードすることもできる。ユーザがある競売に参加したいときには、参加者は、現在行われている競売のリストと各競売の状況を提供することができる競売参加者プログラムを実行する。参加者は特定の競売を選択し、その競売に入札することができる。２人の参加者がほぼ同時にある商品に同額の入札を出す可能性があるので、競売参加者プログラムは、競売者の競売参加者プログラムによって生成される乱数に基づいてその入札を参加者に与える。入札が出されると、競売参加者プログラムは、自動的に乱数を生成し、それをブロードキャストする際に入札メッセージに含める。競売参加者プログラムは、現在の最高入札額と同額の入札を受信すると、無作為に生成された数が最も大きい参加者にその入札を与える。競売モニタコンピュータもブロードキャストチャネルに接続することができる。競売モニタは、競売で出される入札を監視することにより競売の状態を追跡する。競売モニタは、競売リッスンサーバと、競売に加わると競売参加者プログラムに競売の状態を提供することができる。
【００９５】
図３５は、一実施形態における競売システムの構成要素を表すブロック図である。競売システムは、競売リッスンサーバ（ｌｉｓｔｉｎｇ）３５０１、参加者のコンピュータ３５０２、および競売モニタ３５０３を含む。各コンピュータは、中央演算処理装置、メモリ、入力装置（例えばキーボードやポインティングデバイス）、出力装置（例えば表示装置）、および記憶装置（例えばディスクドライブ）を含むことができる。メモリと記憶装置は、競売システムを実装するコンピュータ命令を含むことが可能なコンピュータ可読媒体である。コンピュータ可読媒体は、配線式または無線式の通信機構などのコンピュータデータ伝送媒体も含むことができる。参加者コンピュータは、競売リッスンサーバによって提供されるウェブページにアクセスするためのブラウザを含むことができる。参加者コンピュータと競売モニタはブロードキャストチャネル３５０５に接続される。参加者コンピュータ、競売モニタコンピュータ、および競売リッスンサーバはインターネット３５０４を通じて相互に接続される。参加者コンピュータは、ブラウザを使用して競売リッスンサーバによって提供される競売情報にアクセスすることができる。競売リッスンサーバは、ウェブエンジン３５０６、競売作成コンポーネント３５０７、競売終了コンポーネント３５０８、および競売データベース３５０９を含むことができる。競売作成コンポーネントは、販売者が商品の競売を作成するために使用する。競売終了コンポーネントは、落札者が購買する商品の支払いを行うために使用する。競売リッスンサーバは、参加者を登録するためのコンポーネントと参加者データベースも含むことができる。競売データベースは競売を定義し、競売モニタから提供される競売の現在の状態を保持することができる。当業者は、競売システムには各種の通信機構を使用できることを理解されよう。例えば、ブロードキャストチャネルは実際にはインターネット自体を使用して実装することが可能である。さらに、複数の競売を同時にブロードキャストチャネル上で行うことができる。この場合には、ブロードキャストされる各メッセージは競売識別子を含む。あるいは、各競売が各自のブロードキャストチャネルを備えてもよい。競売リッスンサーバは、各競売参加者プログラムにブロードキャストチャネル情報（例えばアプリケーションとセッションの識別子）を提供することができる。このメッセージは暗号化するか、その他の形でセキュリティを確保して、許可された競売参加者プログラムだけが競売に参加することを保証することができる。
【００９６】
図３６は、一実施形態における参加者コンピュータの構成要素を表すブロック図である。参加者コンピュータは、ブロードキャスタコンポーネント３６０１、競売参加者プログラム３６０２、および競売データベース３６０３を含む。ブロードキャスタコンポーネントは、ブロードキャストチャネルへの接続、ブロードキャストチャネルへのメッセージのブロードキャスト、およびブロードキャストチャネルからのメッセージの受信を制御する。競売参加者プログラムは、ブロードキャスタコンポーネントを使用して、ブロードキャストチャネルによるメッセージの送信およびメッセージの受信により競売への参加を制御する。競売データベースは、競売の現在の状態に関する情報を含む。競売参加者プログラムは、モニタサブコンポーネント３６０５、メッセージハンドラ３６０６、表示状態サブコンポーネント３６０７、および入札提出コンポーネント３６０８を含む。モニタサブコンポーネントは、ブロードキャストチャネルで送信されるメッセージを監視し、適切なメッセージハンドラルーチンを起動する。表示状態サブコンポーネントは、競売の現在の状態を表示する。入札提出コンポーネントは、参加者が競売で入札を提出したいときに起動される。
【００９７】
図３７は、現在定義されている競売の表示を示すブロック図である。ウィンドウ３７００は、表示状態ルーチンによって表示される。このウィンドウは、競売ごとにサブウィンドウ３７０１を含む。各サブウィンドウは、競売を記述する情報を含むことができる。ユーザがサブウィンドウを選択すると、表示状態ルーチンは競売固有のウィンドウを表示する。図３８は、購買固有のウィンドウの表示を表す図である。ウィンドウ３８００は、商品の写真３８０１、商品の説明領域３８０２、競売の説明領域３８０３、および入札ボタン３８０４を含む。商品写真の領域は、競売にかけられている商品の写真を含むことができる。商品の説明の流域は、競売にかけられている商品の説明を含む。競売の説明の領域は、競売の現在の状態を表す情報を含む。例えば、実際の競売の状態は、競売の開始時刻、競売が進行中である旨の指示、競売が「終了間近」である旨の指示、および競売が終了した旨の指示などである。競売の説明領域は、最低落札価格、現在の入札額、および無効にすることが可能な提案入札額も含むことができる。参加者が入札ボタンを選択すると、競売参加者プログラムは入札額を提出する。
【００９８】
図３９−４８は、競売参加者プログラムの処理を示す流れ図である。これらの流れ図における処理は、単一の競売を参照して説明している。当業者は、この処理を変更して複数の同時に行われる競売に対応することも可能であることを理解されよう。図３９は、競売の現在の状態を要求するルーチンの流れ図である。このルーチンは、競売参加者プログラムが最初に実行を開始するときに起動することができる。競売参加者プログラムが開始する際には、競売リッスンサーバに接触して競売の現在の状態を取り出す。あるいは、ブロック３９０１に示すように、現在状態要求ルーチンは、ブロードキャストチャネルに現在状態要求メッセージをブロードキャストしてもよい。競売参加者プログラムは、それに対して競売の現在の状態の指示を受信する。競売参加者プログラムは、この状態情報をその競売データベースに格納する。図４０は、現在状態要求メッセージを受信し処理するルーチンの流れ図である。各競売参加者プログラムは、競売モニタがこの要求に応答するように構成されている場合はこの要求を無視することができる。あるいは、現在競売で最も高い入札額をつけている競売参加者プログラムは、競売の現在の状態を含むメッセージをブロードキャストすることによって応答してもよい。判定ブロック４００１で、この参加者が現在最高の入札額をつけている場合、ルーチンはブロック４００２に進み、そうでない場合は戻る。ブロック４００２でルーチンは競売の状態をブロードキャストし、戻る。図４１は、現在状態メッセージを受信するルーチンの流れ図である。ブロック４１０１で、ルーチンは競売データベースの競売状態を更新し、戻る。
【００９９】
図４２は、一実施形態における入札提出ルーチンの処理を示す流れ図である。このルーチンは入札額を確認し、その入札をブロードキャストする。このルーチンは、それを上回る入札額をつける参加者がない場合には競売が終了することを他の参加者に通知するために、終了間近メッセージをいつブロードキャストすべきかを知らせるタイマも設定する。判定ブロック４２０１で入札が有効である場合、ルーチンはブロック４２０２に進み、そうでない場合は戻る。ルーチンは、現在の最高入札額よりも入札額が大きいことを保証することにより、入札が有効であるかどうかを判定する。ルーチンは、競売がまだ行われているかどうかも確認することができる。競売は、参加者が入札ボタンを選択した時点から終了している可能性がある。ブロック４２０２で、ルーチンは入札メッセージに含める乱数を生成する。この乱数は、同額の入札が２人の参加者によって受信された場合に、その受信参加者によって使用される。この場合、参加者は、一番大きい乱数を有する入札者にその入札を与える。ブロック４２０３で、ルーチンは、参加者の識別、入札額、および乱数を含む入札メッセージを生成する。複数の競売についてのメッセージがブロードキャストチャネルでブロードキャストされている状況では、入札メッセージは競売の識別子も含むことができる。ブロック４２０４で、ルーチンはブロードキャストチャネルに入札メッセージをブロードキャストする。ブロック４２０５で、ルーチンは終了間近メッセージを送信するためのタイマを開始する。そしてルーチンは戻る。
【０１００】
図４３は、一実施形態における入札メッセージ受信ルーチンの処理を示す流れ図である。このルーチンは、競売参加者プログラムがブロードキャストチャネルから入札メッセージを受信した際に起動される。このルーチンは、入札を確認し、競売の状態を更新し、タイマをクリアする。判定ブロック４３０１で現在競売が開かれている場合、ルーチンはブロック４３０２に進み、そうでない場合は戻る。判定ブロック４３０２で、受信した入札が現在の最高入札額よりも大きいか等しい場合、ルーチンはブロック４３０３に進み、そうでない場合は受信した入札額を上回る入札がすでに出ていることになり、ルーチンは戻る。判定ブロック４３０３で、受信した入札額が現在の最高入札額と等しい場合は２人の参加者が同額の入札を出していることになり、ルーチンはブロック４３０４に進み、そうでない場合はブロック４３０５に進む。判定ブロック４３０４で、受信した入札メッセージに含まれる乱数が、現在の最高入札額を含む入札メッセージに含まれていた乱数よりも大きい場合は、その入札メッセージを送信した参加者にその入札が与えられ、ルーチンはブロック４３０５に進み、そうでない場合は戻る。ブロック４３０５で、ルーチンは、競売データベースの現在の最高入札額を置き換え、表示を更新することができる。ブロック４３０６で、ルーチンは、競売の終了を知らせるために設定されている可能性のあるタイマがあればクリアする。そしてルーチンは戻る。
【０１０１】
図４４は、終了間近タイマの満了を処理するルーチンを表す流れ図である。ブロック４４０１で、ルーチンは終了間近メッセージをブロードキャストする。終了間近メッセージは、参加者および現在の最高入札額を識別することができる。ブロック４４０２で、ルーチンは、競売がすでに終了したことを知らせる終了メッセージを送信するためのタイマを設定する。そしてルーチンは戻る。図４５は、受信した終了間近メッセージを処理するルーチンを表す流れ図である。判定ブロック４５０１で、終了間近メッセージがすでにそれを上回る入札額が出た入札に対応するものである場合、ルーチンは戻り、そうでない場合はブロック４５０２に進む。ブロック４５０２でルーチンは競売の状態を更新し、これは表示の更新を含むことができる。そしてルーチンは戻る。
【０１０２】
図４６は、終了タイマの満了を処理するルーチンを表す流れ図である。ブロック４６０１で、ルーチンは、入札額と併せてメッセージを送信する参加者を識別できる終了メッセージをブロードキャストする。ブロック４６０２で、ルーチンは、競売のステータスを更新して競売が終了したことを示す。図４７は、受信した終了メッセージを処理するルーチンを表すブロック図である。ブロック４７０１で、ルーチンは競売の状態を更新して競売が終了したことを示す。一実施形態では、競売参加者プログラムは、終了メッセージをブロードキャストする前に抑制メッセージをブロードキャストすることもできる。参加者は抑制メッセージを受信すると、もはやその競売には入札を提出することができない。抑制メッセージをブロードキャストした参加者が一定期間にわたり他の参加者から入札メッセージを受信しない場合、その参加者は終了メッセージをブロードキャストする。ただし、抑制メッセージの受信後一定期間内に参加者が終了メッセージを受信しない場合は、競売がまだ行われているとみなすことができる。
【０１０３】
図４８は、一実施形態における競売エージェントを表す流れ図である。競売エージェントは、参加者がある商品につけたい最大入札額を指定することを可能にするプログラムである。競売エージェントは自動的に競売を監視し、参加者に代わってその最大入札額まで入札する。競売エージェントは、それが自動化されたエージェントであることを他の参加者から隠すために各種の技術を使用することができる。例えば、競売エージェントは、自分を上回る入札額が出たときに新たな入札を遅らせることができる。この遅延期間は、無作為に選択された期間とするか、あるいは参加者から提供される規則で指定することができる。また、競売エージェントは、終了間近メッセージを受信するまで新しい入札を待つこともできる。ブロック４８０１で、ルーチンは競売データベースから現在の最高入札額を取り出す。判定ブロック４８０２で現在の最高入札額がこのエージェントに許可された最大入札額よりもすでに大きい場合、ルーチンはブロック４８０３に進み、そうでない場合はブロック４８０４に進む。ブロック４８０３で、ルーチンは競売でその参加者を上回る入札額が出たことを参加者に通知し、戻る。ブロック４８０４で、ルーチンは、現在の入札額に最小の入札の増分を足した入札額を提出する。提出された入札はブロードキャストチャネルでブロードキャストされる。ブロック４８０５で、ルーチンはその競売についてメッセージがブロードキャストされるのを待つ。この競売参加者プログラムは、終了間近メッセージおよび終了メッセージも適宜ブロードキャストする。判定ブロック４８０６で、現在の入札額よりも高い新しい入札が出たことをメッセージが示す場合は、ルーチンはブロック４８０７に進み、そうでない場合はこの競売参加者プログラムが終了メッセージをブロードキャストしているのでブロック４８０８に進む。ブロック４８０７で、ルーチンはオプションで遅延をとり、次いでブロック４８０２にループして新しい入札を提出する。ブロック４８０８で、ルーチンは競売で落札したことを参加者に通知し、戻る。
【０１０４】
上記の説明に基づくと、説明のために本発明の特定の実施形態を説明したが、本発明の精神および範囲から逸脱せずに各種の変更を加えられることが理解されよう。したがって、本発明は頭記の特許請求の範囲以外によっては制限されない。
【０１０５】
以下の段落でさらに本発明の諸態様について述べる。
【０１０６】
ブロードキャストネットワーク
１．複数の関係者を含むブロードキャストチャネルであって、各関係者は隣接関係者に接続され、関係者とその間の接続はｍ正則グラフを形成し、ｍは３以上であり、関係者の数はｍよりも多いことを特徴とするブロードキャストチャネル。
【０１０７】
２．グラフがｍ連結であるパラグラフ１のブロードキャストチャネル。
【０１０８】
３．ｍが偶数であるパラグラフ１のブロードキャストチャネル。
【０１０９】
４．ｍが奇数であり、関係者の数が偶数であるパラグラフ１のブロードキャストチャネル。
【０１１０】
５．関係者がコンピュータプロセスであるパラグラフ１のブロードキャストチャネル。
【０１１１】
６．関係者がコンピュータであるパラグラフ１のブロードキャストチャネル。
【０１１２】
７．ＴＣＰ／ＩＰプロトコルを使用して接続を確立するパラグラフ１のブロードキャストチャネル。
【０１１３】
８．発信元の関係者がその各隣接関係者にメッセージを送信し、各関係者は隣接関係者からメッセージを受信するとそのメッセージを各自の他の隣接関係者に送信することにより、ブロードキャストチャネルでメッセージをブロードキャストするパラグラフ１のブロードキャストチャネル。
【０１１４】
９．複数の関係者を含むブロードキャストチャネルであって、各関係者は隣接関係者に接続され、関係者とその間の接続はｍ正則グラフを形成し、ｍは３以上であり、関係者は隣接関係者からデータを受信すると、そのデータを他の隣接関係者に送信することを特徴とするブロードキャストチャネル。
【０１１５】
１０．関係者の数がｍよりも大きいパラグラフ９のブロードキャストチャネル。
【０１１６】
１１．グラフがｍ連結であるパラグラフ９のブロードキャストチャネル。
【０１１７】
１２．ｍが偶数であるパラグラフ９のブロードキャストチャネル。
【０１１８】
１３．ｍが奇数であり、関係者の数が偶数であるパラグラフ９のブロードキャストチャネル。
【０１１９】
１４．関係者がコンピュータプロセスであるパラグラフ９のブロードキャストチャネル。
【０１２０】
１５．関係者がコンピュータであるパラグラフ９のブロードキャストチャネル。
【０１２１】
１６．ＴＣＰ／ＩＰプロトコルを使用して接続を確立するパラグラフ９のブロードキャストチャネル。
【０１２２】
ブロードキャストチャネルへの参加
１．関係者のネットワークに関係者を追加するコンピュータベースの方法であって、各関係者は３つ以上の他の関係者に接続され、
接続済みのネットワーク関係者のペアを識別し、
識別されたペアの関係者を互いから切断し、
識別された関係者のペアの各関係者を追加した関係者に接続する
ことを特徴とする方法。
【０１２３】
２．各関係者が４つの関係者に接続されるパラグラフ１の方法。
【０１２４】
３．対を識別することが、接続された関係者のペアを無作為に選択することを含むパラグラフ１の方法。
【０１２５】
４．無作為にペアを選択することが、無作為に選択した経路でネットワークを通じてメッセージを送信することを含むパラグラフ３の方法。
【０１２６】
５．関係者がメッセージを受信すると、無作為に選択した、その関係者が接続されている関係者にそのメッセージを送信するパラグラフ４の方法。
【０１２７】
６．無作為に選択される経路がネットワークの直径にほぼ比例するパラグラフ４の方法。
【０１２８】
７．追加する関係者が、関係者のペアの識別を開始するようにポータルコンピュータに要求するパラグラフ１の方法。
【０１２９】
８．関係者のペアの識別を開始することが、ポータルコンピュータが、接続された関係者にメッセージを送信してエッジ接続を要求することを含むパラグラフ７の方法。
【０１３０】
９．ポータルコンピュータはメッセージが一定の距離を移動することを指示し、その一定距離を移動した後にメッセージを受信する関係者が、識別される関係者のペアの関係者の１つであるパラグラフ８の方法。
【０１３１】
１０．一定の距離がネットワークの直径のほぼ２倍であるパラグラフ９の方法。
【０１３２】
１１．関係者がインターネットを介して接続されるパラグラフ１の方法。
【０１３３】
１２．関係者がＴＣＰ／ＩＰ接続を介して接続されるパラグラフ１の方法。
【０１３４】
１３．関係者がコンピュータプロセスであるパラグラフ１の方法。
【０１３５】
１４．ｍ正則かつｍ連結であるグラフにノードを追加してグラフをｍ正則に維持するコンピュータベースの方法であって、ｍは４以上であり、
グラフの接続されたｐ個のノードペアを識別し、ｐはｍの半分であることと、
識別された各ペアのノードを互いから切断することと、
識別されたノードペアの各ノードを追加したノードに接続することと
を含む方法。
【０１３６】
１５．ｐ個のノードペアを識別することが、接続されたノードのペアを無作為に選択することを含むパラグラフ１４の方法。
【０１３７】
１６．ノードがコンピュータであり、接続が二地点間通信接続であるパラグラフ１４の方法。
【０１３８】
１７．ｍが偶数であるパラグラフ１４の方法。
【０１３９】
１８．ネットワークへの関係者の追加を開始する方法であって、
追加する関係者から接続メッセージを受信し、
メッセージを受信した関係者の隣接関係者に接続エッジ探索メッセージを送信し、そこでは、接続エッジ探索メッセージは、接続エッジ探索メッセージを受信する関係者が、追加する関係者への接続を決定するまで隣接関係者に転送される　ことを特徴とする方法。
【０１４０】
１９．送信される接続エッジ探索メッセージは、その接続エッジ探索メッセージを転送すべき関係者の数の指示を含むパラグラフ１８の方法。
【０１４１】
２０．関係者の数がネットワークの直径に基づくパラグラフ１９の方法。
【０１４２】
２１．関係者の数が直径のほぼ２倍であるパラグラフ１９の方法。
【０１４３】
２２．関係者が追加する関係者への接続を決定すると、接続を決定した関係者に接続エッジ探索メッセージを送信した隣接関係者も追加する関係者への接続を決定するパラグラフ１８の方法。
【０１４４】
２３．接続エッジ探索メッセージを受信する関係者は、無作為に選択した隣接関係者に接続エッジ探索メッセージを転送するパラグラフ１８の方法。
【０１４５】
２４．コンピュータシステムにおいて新しいネットワーク関係者に接続する方法であって、
関係者で接続エッジ探索メッセージを受信し、
接続エッジ探索メッセージを受信した関係者の隣接関係者を識別し、
その隣接関係者に新しい関係者に接続するように通知し、
識別された隣接関係者から関係者を切断し、
その関係者を新しい関係者に接続する
ことを特徴とする方法。
【０１４６】
２５．その関係者が、接続エッジ探索メッセージが送信された関係者の経路で最後の関係者であるかどうかを判定することを含むパラグラフ２４の方法。
【０１４７】
２６．関係者が経路で最後の関係者でないときは、その関係者の隣接関係者に接続エッジ探索メッセージを送信するパラグラフ２５の方法。
【０１４８】
２７．接続エッジ探索メッセージを送信する隣接関係者を無作為に選択することを含むパラグラフ２６の方法。
【０１４９】
２８．受信される接続エッジ探索メッセージが、その接続エッジ探索メッセージをそれを通じて送信する関係者の数の指示を含むパラグラフ２４の方法。
【０１５０】
２９．関係者がすでに新しい関係者の隣接関係者であるときには、その関係者の隣接関係者に接続エッジ探索メッセージを送信することを含むパラグラフ２４の方法。
【０１５１】
３０．関係者がコンピュータプロセスであるパラグラフ２４の方法。
【０１５２】
３１．接続が二地点間接続であるパラグラフ２４の方法。
【０１５３】
３２．接続されているネットワーク関係者のペアを識別し、
識別されたペアの関係者を互いから切断し、
識別された関係者のペアの各関係者を追加する関係者に接続する
方法により、コンピュータシステムを制御して関係者のネットワークに関係者を接続する命令を含むコンピュータ可読媒体であって、各関係者は３つ以上の他の関係者に接続され、ネットワークはブロードキャストチャネルを表し、各関係者は受信したブロードキャストメッセージをその隣接関係者に転送することを特徴とするコンピュータ可読媒体。
【０１５４】
３３．各関係者が４つの関係者に接続されるパラグラフ３２のコンピュータ可読媒体。
【０１５５】
３４．ペアを識別することが、接続された関係者のペアを無作為に選択することを含むパラグラフ３２のコンピュータ可読媒体。
【０１５６】
３５．無作為にペアを選択することが、無作為に選択した経路でネットワークを通じてメッセージを送信することを含むパラグラフ３４のコンピュータ可読媒体。
【０１５７】
３６．関係者がメッセージを受信すると、無作為に選択された、その関係者が接続されている関係者にそのメッセージを送信するパラグラフ３５のコンピュータ可読媒体。
【０１５８】
３７．無作為に選択される経路がネットワークの直径のほぼ２倍であるパラグラフ３５のコンピュータ可読媒体。
【０１５９】
３８．追加する関係者が、関係者のペアの識別を開始するようにポータルコンピュータに要求するパラグラフ３２のコンピュータ可読媒体。
【０１６０】
３９．関係者のペアの識別を開始することが、ポータルコンピュータが、接続された関係者にメッセージを送信してエッジ接続を要求することを含むパラグラフ３８のコンピュータ可読媒体。
【０１６１】
４０．ポータルコンピュータが、メッセージが一定距離を移動することを指示し、その一定距離を移動した後にメッセージを受信する関係者が、識別される関係者ペアの１つであるパラグラフ３８のコンピュータ可読媒体。
【０１６２】
４１．コンピュータシステムにおいてネットワークの関係者に接続する方法であって、
関係者において要求元関係者によって送信された接続ポート探索メッセージを受信し、
その関係者にそれを通じて要求元関係者に接続することができる利用可能なポートがあるときには、
要求元関係者にポート接続メッセージを送信して、要求元関係者が関係者の利用可能なポートに接続することを提案し、
要求元関係者が利用可能なポートへの接続を受け入れることを示すポート提示応答メッセージを関係者が受信すると、その関係者を要求元関係者に接続する
ことを特徴とする方法。
【０１６３】
４２．関係者にそれを通じて要求元関係者に接続することができる利用可能なポートがないときには、隣接関係者に接続ポート探索メッセージを送信することを含むパラグラフ４１の方法。
【０１６４】
４３．要求元関係者がまだその関係者に接続されておらず、その関係者に空きポートがあるときにポートが利用可能な状態となるパラグラフ４１の方法。
【０１６５】
４４．コンピュータシステムにおいてネットワーク内の隣接関係者同士に空きポートがある状態を検出する方法であって、
第１の関係者で、第２の関係者に空きポートがあることを示す接続ポート探索メッセージを受信し、
第１の関係者がすでに第２の関係者に接続され、第１の関係者に空きポートがあるときに、第１の関係者から第２の関係者に状態確認メッセージを送信し、状態確認メッセージは第１の関係者の隣接関係者を識別する
ことを特徴とする方法。
【０１６６】
４５．第２の関係者が状態確認メッセージを受信すると、
第２の関係者が第１の関係者と同じ隣接関係者を有さない場合は、第１の関係者の隣接関係者であるが第２の関係者の隣接関係者ではない第３の関係者に状態修復メッセージを送信することを含むパラグラフ４４の方法。
【０１６７】
４６．第３の関係者が状態修復メッセージを受信すると、
第１の関係者を除く第３の関係者の隣接関係者から切断することと、
第２の関係者に接続することと
を含むパラグラフ４５の方法。
【０１６８】
４７．第２の関係者が状態確認メッセージを受信すると、
第２の関係者が第１の関係者と同じ隣接関係者を有する場合は、第２の関係者の隣接関係者である第３の関係者に状態二重確認メッセージを送信することを含むパラグラフ４４の方法。
【０１６９】
４８．第３の関係者が状態二重確認メッセージを受信すると、
第３の関係者が第１の関係者と同じ隣接関係者を有さない場合は、第１の関係者または第２の関係者でない第４の関係者に状態確認メッセージを送信することを含むパラグラフ４７の方法。
【０１７０】
４９．第４の関係者が状態確認メッセージを受信すると、
第５の関係者に状態修復メッセージを送信して、第５の関係者が第１の関係者または第２の関係者に接続することを指示することを含むパラグラフ４８の方法。
【０１７１】
ブロードキャストチャネルからの退出
１．コンピュータシステムにおいてブロードキャストチャネルの直径を判定する方法であって、ブロードキャストチャネルはコンピュータを備え、各コンピュータは少なくとも３つの隣接コンピュータに接続され、
隣接コンピュータからメッセージを受信し、
受信したメッセージから移動距離を識別し、
識別した移動距離量に基づいて推定直径を設定し、
メッセージ中の移動距離を増分し、
移動距離を増分したメッセージを隣接コンピュータに送信する
ことを特徴とする方法。
【０１７２】
２．推定直径の設定は、識別された移動距離が現在の推定直径よりも大きいときには必ず推定直径をその移動距離に設定するパラグラフ１の方法。
【０１７３】
３．ブロードキャストチャネルのコンピュータがｍ正則かつｍ連結のグラフを形成するパラグラフ１の方法。
【０１７４】
４．ｍが４であるパラグラフ３の方法。
【０１７５】
５．各コンピュータが二地点間接続を介してその隣接コンピュータに接続されるパラグラフ１の方法。
【０１７６】
６．推定直径を設定すると、新しい推定直径を知らせるメッセージをブロードキャストすることを含むパラグラフ１の方法。
【０１７７】
７．新しい推定直径を知らせるメッセージを受信することと、
推定直径が現在推定される直径よりも大きい場合は、推定直径を新しい推定直径に設定することと
を含むパラグラフ１の方法。
【０１７８】
８．推定直径を新しい推定直径に再設定するように通知するメッセージを受信することと、
推定直径を新しい推定直径に設定することと
を含むパラグラフ１の方法。
【０１７９】
９．第２のコンピュータから第１のコンピュータを切断する方法であって、第１のコンピュータと第２のコンピュータはブロードキャストチャネルに接続され、
第１のコンピュータが第２のコンピュータからの切断を決定すると、第１のコンピュータは第２のコンピュータに切断メッセージを送信し、
第２のコンピュータが第１のコンピュータから切断メッセージを受信すると、第２のコンピュータは接続ポート探索メッセージをブロードキャストして、それが接続できる第３のコンピュータを見つける
ことを特徴とする方法。
【０１８０】
１０．第２のコンピュータは、第３のコンピュータと第２のコンピュータとの接続を第３のコンピュータが提案していることを示すポート接続メッセージを受信するパラグラフ９の方法。
【０１８１】
１１．第１のコンピュータは、切断メッセージの送信後に第２のコンピュータから切断するパラグラフ９の方法。
【０１８２】
１２．インターネットを使用してブロードキャストチャネルを実装するパラグラフ９の方法。
【０１８３】
１３．ブロードキャストチャネルに接続された各コンピュータは、少なくとも３つの他のコンピュータに接続されるパラグラフ９の方法。
【０１８４】
１４．コンピュータとそれらの接続がｍ正則グラフを形成するパラグラフ１３の方法。
【０１８５】
１５．第１のコンピュータと第２のコンピュータがＴＣＰ／ＩＰ接続を介して接続されるパラグラフ９の方法。
【０１８６】
１６．第２のコンピュータから第１のコンピュータを切断する方法であって、これらコンピュータはブロードキャストチャネルに接続され、
第１のコンピュータを第２のコンピュータに接続し、
第１のコンピュータから第２のコンピュータにメッセージの送信を試み、
メッセージ送信の試みが成功しない場合は、第１のコンピュータが接続を必要とすることを知らせる接続ポート探索メッセージを第１のコンピュータからブロードキャストする
ことを特徴とする方法。
【０１８７】
１７．第３のコンピュータが接続ポート探索メッセージを受信し、第３のコンピュータも接続を必要とするときに、第３のコンピュータから第１のコンピュータにメッセージを送信して第１のコンピュータと第３のコンピュータとの接続を提案することを含むパラグラフ１６の方法。
【０１８８】
１８．第１のコンピュータと第３のコンピュータの接続を提案するメッセージを第１のコンピュータが受信すると、第１のコンピュータから第３のコンピュータに、第１のコンピュータを第３のコンピュータに接続する提案を受け入れることを知らせるメッセージを送信することを含むパラグラフ１７の方法。
【０１８９】
１９．ブロードキャストチャネルに接続された各コンピュータは少なくとも３つの他のコンピュータに接続されるパラグラフ１６の方法。
【０１９０】
２０．コンピュータとブロードキャストチャネルの接続がｍ正則グラフを形成するパラグラフ１９の方法。
【０１９１】
２１．コンピュータとブロードキャストチャネルの接続がｍ連結グラフを形成するパラグラフ１９の方法。
【０１９２】
２２．ブロードキャストすることが、第１のコンピュータが接続された各コンピュータにメッセージを送信することを含むパラグラフ１６の方法。
【０１９３】
２３．コンピュータを別のコンピュータから切断することを制御する命令を含むコンピュータ可読媒体であって、コンピュータともう一方のコンピュータはブロードキャストチャネルに接続され、
コンピュータがもう一方のコンピュータからの切断を決定すると、コンピュータがもう一方のコンピュータに切断メッセージを送信するためのコンポーネントと、
コンピュータが別のコンピュータから切断メッセージを受信すると、コンピュータが接続ポート探索メッセージをブロードキャストしてそのコンピュータが接続できるコンピュータを見つけるためのコンポーネントと
を含むことを特徴とするコンピュータ可読媒体。
【０１９４】
２４．コンピュータが接続ポート探索メッセージを受信し、そのコンピュータが別のコンピュータへの接続を必要とする場合、接続ポート探索メッセージの送信元であるコンピュータに、接続ポート探索メッセージの送信元であるコンピュータがそのコンピュータに接続することをそのコンピュータが提案していることを知らせるポート接続メッセージを送信するためのコンポーネントを含むパラグラフ２３のコンピュータ可読媒体。
【０１９５】
２５．コンピュータがポート接続メッセージを受信すると、ポート接続メッセージの送信元であるコンピュータに接続するためのコンポーネントを含むパラグラフ２４のコンピュータ可読媒体。
【０１９６】
２６．ブロードキャストチャネルに接続された各コンピュータは少なくとも３つの他のコンピュータに接続されるパラグラフ２３のコンピュータ可読媒体。
【０１９７】
２７．コンピュータとそれらの接続がｍ正則グラフを形成するパラグラフ２３のコンピュータ可読媒体。
【０１９８】
２８．ＴＣＰ／ＩＰ接続を介してコンピュータが接続されるパラグラフ２３のコンピュータ可読媒体。
【０１９９】
２９．ブロードキャストチャネルに接続されたコンピュータがピアであるパラグラフ２３のコンピュータ可読媒体。
【０２００】
３０．インターネットを使用してブロードキャストチャネルを実装するパラグラフ２３のコンピュータ可読媒体。
【０２０１】
ブロードキャストチャネルによるブロードキャスト
１．コンピュータネットワークを通じてデータをブロードキャストする方法であって、
コンピュータで隣接コンピュータからデータを受信し、
受信したデータがすでに受信側コンピュータからその隣接コンピュータに送信されているかどうかを判定し、
すでにデータが送信されていると判定されると、受信データを無視し、
データがまだ送信されていないと判定されると、受信側コンピュータの隣接コンピュータに受信データを送信する
ことを特徴とする方法。
【０２０２】
２．コンピュータネットワークが４正則グラフであるパラグラフ１の方法。
【０２０３】
３．コンピュータネットワークがブロードキャストチャネルを実装し、二地点間接続を使用してコンピュータネットワークの隣接コンピュータ間を接続するパラグラフ１の方法。
【０２０４】
４．接続がＴＣＰ／ＩＰ接続であるパラグラフ３の方法。
【０２０５】
５．コンピュータネットワークが、二地点間接続を使用してコンピュータを接続する基本ネットワークを使用して実装されるブロードキャストチャネルであるパラグラフ１の方法。
【０２０６】
６．基本ネットワークがインターネットであるパラグラフ５の方法。
【０２０７】
７．コンピュータネットワークに接続されたコンピュータ中のブロードキャスタコンポーネントであって、
そのコンピュータを発信元とするデータを各隣接コンピュータに送信する発信モジュールと、
別のコンピュータを発信元とするデータの複数のコピーを受信し、各データコピーは異なる隣接コンピュータから受信される受信モジュールと、
受信データのコピーを、そのコピーの送信元である隣接コンピュータ以外の各隣接コンピュータに送信する転送モジュールと
を含むことを特徴とするブロードキャスタコンポーネント。
【０２０８】
８．受信データのコピーをアプリケーションプログラムに提供する送信モジュールを含むパラグラフ７のブロードキャスタコンポーネント。
【０２０９】
９．コンピュータネットワークが、基本となる二地点間コンピュータネットワークを使用して実装されたブロードキャストチャネルであるパラグラフ７のブロードキャスタコンポーネント。
【０２１０】
１０．コンピュータネットワークに接続されたポータルコンピュータを見つける発見モジュールを含むパラグラフ７のブロードキャスタコンポーネント。
【０２１１】
１１．コンピュータネットワークにコンピュータを接続する接続モジュールを含むパラグラフ７のブロードキャスタコンポーネント。
【０２１２】
１２．要求元コンピュータをコンピュータネットワークに加えることを開始するポータルモジュールを含むパラグラフ７のブロードキャスタコンポーネント。
【０２１３】
１３．二地点間接続を使用してコンピュータをその隣接コンピュータに接続するパラグラフ７のブロードキャスタコンポーネント。
【０２１４】
１４．コンピュータネットワークでデータをブロードキャストする方法であって、
コンピュータネットワークの各コンピュータと、コンピュータネットワークの少なくとも３つの他のコンピュータとの間に接続を確立し、
コンピュータがデータを発信すると、そのコンピュータが接続された各コンピュータにそのデータを送信し、
コンピュータがデータを受信すると、そのデータの送信元であるコンピュータを除く、そのコンピュータが接続された各コンピュータに受信データの第１のコピーを送信する
ことを特徴とする方法。
【０２１５】
１５．コンピュータとコンピュータネットワークの接続がｍ正則グラフを形成するパラグラフ１４の方法。
【０２１６】
１６．各コンピュータが偶数個のコンピュータに接続されるパラグラフ１５の方法。
【０２１７】
１７．コンピュータとコンピュータネットワークの接続がｍ正則かつｍ連結のグラフを形成するパラグラフ１４の方法。
【０２１８】
１８．ｍが偶数であるパラグラフ１７の方法。
【０２１９】
１９．ｍが４であるパラグラフ１７の方法。
【０２２０】
２０．二地点間接続を使用してコンピュータを接続するパラグラフ１４の方法。
【０２２１】
２１．インターネットを使用してコンピュータを接続するパラグラフ１４の方法。
【０２２２】
２２．二地点間接続を使用して、ブロードキャストチャネルの各コンピュータとブロードキャストチャネルの３つの他のコンピュータとの間に接続を確立し、
コンピュータがデータを発信すると、そのコンピュータが接続されている各コンピュータにそのデータを送信し、
コンピュータがデータを受信すると、そのデータの送信元であるコンピュータを除くそのコンピュータが接続されている各コンピュータにそのデータのコピーを送信する
方法により、コンピュータシステムを制御してブロードキャストチャネルでデータをブロードキャストする命令を含むコンピュータ可読媒体。
【０２２３】
２３．コンピュータとコンピュータネットワークの接続がｍ正則グラフを形成することを特徴とするパラグラフ２２のコンピュータ可読媒体。
【０２２４】
２４．各コンピュータが偶数個のコンピュータに接続されるパラグラフ２３のコンピュータ可読媒体。
【０２２５】
２５．コンピュータとブロードキャストチャネルの接続がｍ正則かつｍ連結のグラフを形成するパラグラフ２２のコンピュータ可読媒体。
【０２２６】
２６．ｍが偶数であるパラグラフ２５のコンピュータ可読媒体。
【０２２７】
２７．ｍが４であるパラグラフ２５のコンピュータ可読媒体。
【０２２８】
２８．インターネットを使用してコンピュータを接続するパラグラフ２２のコンピュータ可読媒体。
【０２２９】
ブロードキャストチャネルへの接触
１．コンピュータにおいてそれを通じてネットワークに接続するためのコンピュータを見つける方法であって、
ポータルコンピュータの識別を提供し、そこでは、ポータルコンピュータは通信ポートを備え、その通信ポートの１つは、ポータルコンピュータが、接続を求めるコンピュータとネットワークとの接続を調整する状態にあるときに通信が可能となり、
ポータルコンピュータの通信ポートを繰り返し選択し、選択した通信ポートとの通信が成功するまで選択された通信ポートとの通信を試み、
選択された通信ポートを使用して、そのコンピュータとネットワークとの接続を調整するようにポータルコンピュータに要求する
ことを特徴とする方法。
【０２３０】
２．通信ポートは、ポータルコンピュータが通信ポートを選択した際に使用した順序と同じ順序で選択されるパラグラフ１の方法。
【０２３１】
３．ハッシュアルゴリズムによる順序付けに基づいて通信ポートが選択されるパラグラフ１の方法。
【０２３２】
４．ハッシュアルゴリズムによる順序付けは、通信ポートを２度選択することなく各通信ポートが選択される順序付けを提供するパラグラフ３の方法。
【０２３３】
５．ハッシュアルゴリズムによる順序付けを修正して、同じハッシュアルゴリズムを使用する接続を求める他のコンピュータとの衝突を減少させるパラグラフ３の方法。
【０２３４】
６．ハッシュアルゴリズムによって順序付けられた複数の第１の通信ポートを再度順序付けするパラグラフ５の方法。
【０２３５】
７．複数のポータルコンピュータの識別が提供され、通信ポートが選択されると、次の通信ポートを選択する前に、選択された通信ポートを通じて識別された各ポータルコンピュータとの通信を試みるパラグラフ１の方法。
【０２３６】
８．通信ポートがＴＣＰ／ＩＰポートであるパラグラフ１の方法。
【０２３７】
９．コンピュータシステムにおいて通信ポートを見つける方法であって、各通信ポートはポート番号を有し、
連続したポート番号でない通信ポートの順序付けを提供することと、
それを通じて接続を確立できる通信ポートが見つかるまで、
提供された順序で次の通信ポートを選択することと、
選択された通信ポートを通じて接続を確立できるかどうかを判定することとを含む方法。
【０２３８】
１０．順序付けがハッシュアルゴリズムによって提供されるパラグラフ９の方法。
【０２３９】
１１．通信ポートがＴＣＰ／ＩＰポートであるパラグラフ９の方法。
【０２４０】
１２．通信ポートが別のコンピュータのポートであるパラグラフ９の方法。
【０２４１】
１３．もう一方のコンピュータが、その通信ポートを選択する際に提供された同じ通信ポートの順序付けを使用するパラグラフ１２の方法。
【０２４２】
１４．提供された通信ポートの順序付けの一部を再度順序付けすることを含むパラグラフ９の方法。
【０２４３】
１５．メッセージのシーケンスを含む、通信チャネルで送信されるデータ構造であって、シーケンス中の各メッセージはコンピュータシステムの通信ポートを識別し、ハッシュアルゴリズムを使用してメッセージシーケンス中の通信ポートの識別を順序付けることを特徴とするデータ構造。
【０２４４】
１６．各メッセージが、識別された通信ポートを介した受信側コンピュータへの接続を要求するパラグラフ１５のデータ構造。
【０２４５】
１７．メッセージがＴＣＰ／ＩＰメッセージであるパラグラフ１５のデータ構造。
【０２４６】
１８．通信チャネルがインターネットであるパラグラフ１５のデータ構造。
【０２４７】
１９．メッセージシーケンスを使用して、送信側コンピュータがそれを通じてブロードキャストチャネルへの接続を要求できるポータルコンピュータを見つけるパラグラフ１５のデータ構造。
【０２４８】
２０．複数の関係者を有するコンピュータネットワークであって、各関係者は隣接関係者への接続を有し、関係者は、ポータルコンピュータの通信ポートを繰り返し選択し、選択した通信ポートとの通信が成功するまで選択された通信ポートとの通信を試みることにより、ポータルコンピュータの通信ポートを見つけることを特徴とするコンピュータネットワーク。
【０２４９】
２１．通信ポートの選択が関数に従って順序付けされるパラグラフ２０のコンピュータネットワーク。
【０２５０】
２２．ポータルコンピュータは同じ関数を使用してその通信ポートの選択を順序付けるパラグラフ２１のコンピュータネットワーク。
【０２５１】
２３．発信元の関係者は、その各接続を通じてその隣接関係者にデータを送信することにより他の関係者にデータを送信し、各関係者は隣接関係者から受信するデータを他の隣接関係者に送信するパラグラフ２０のコンピュータネットワーク。
【０２５２】
２４．各関係者が４つの他の関係者に接続されるパラグラフ２０のコンピュータネットワーク。
【０２５３】
２５．各関係者が偶数個の他の関係者に接続されるパラグラフ２０のコンピュータネットワーク。
【０２５４】
２６．ネットワークがｍ正則であり、ｍは各関係者の隣接関係者の数であるパラグラフ２０のコンピュータネットワーク。
【０２５５】
２７．ネットワークがｍ連結であり、ｍは各関係者の隣接関係者の数であるパラグラフ２６のコンピュータネットワーク。
【０２５６】
２８．ネットワークがｍ正則かつｍ連結であり、ｍは各関係者の隣接関係者の数であるパラグラフ２０のコンピュータネットワーク。
【０２５７】
２９．すべての関係者がピアであるパラグラフ２０のコンピュータネットワーク。
【０２５８】
３０．接続がピアツーピア接続であるパラグラフ２０のコンピュータネットワーク。
【０２５９】
３１．隣接コンピュータ間の接続が二地点間であるパラグラフ２０のコンピュータネットワーク。
【０２６０】
３２．接続がＴＣＰ／ＩＰ接続であるパラグラフ２０のコンピュータネットワーク。
【０２６１】
３３．ポータルコンピュータの通信ポートを見つけるコンピュータシステム中のコンポーネントであって、
他のコンピュータと通信するための動的に選択される通信ポートを有するポータルコンピュータを識別する手段と、
接続の確立に成功するまで、通信ポートを通じて識別されたポータルコンピュータとの接続を確立することを繰り返し試みることにより、識別されたポータルコンピュータの通信ポートを識別する手段と
を含むことを特徴とするコンポーネント。
【０２６２】
３４．通信ポートは、ポータルコンピュータが動的に通信ポートを選択する際に使用する順序と同じ順序で試みられるパラグラフ３３のコンポーネント。
【０２６３】
３５．通信ポートが、ハッシュアルゴリズムによる順序付けに基づいて試みられるパラグラフ３３のコンポーネント。
【０２６４】
３６．ハッシュアルゴリズムによる順序付けが、２度通信ポートを試みることなく各通信ポートを試みる順序付けを提供するパラグラフ３５のコンポーネント。
【０２６５】
３７．ハッシュアルゴリズムによる順序付けを修正して、同じハッシュアルゴリズムを使用する他のコンピュータとの衝突を減少させるパラグラフ３５のコンポーネント。
【０２６６】
３８．ハッシュアルゴリズムによって順序付けられる複数の第１の通信ポートを再度順序付けするパラグラフ３７のコンポーネント。
【０２６７】
３９．複数のポータルコンピュータを識別する手段と、
次の通信ポートを試す前に、ある通信ポートを通じて識別された各ポータルコンピュータとの接続を確立することを試みる手段と
を含むパラグラフ３３のコンポーネント。
【０２６８】
４０．通信ポートがＴＣＰ／ＩＰポートであるパラグラフ３３のコンポーネント。
【０２６９】
分散競売システム
１．それを通じて商品の競売を定義することができ、定義された競売についての情報を取り出すことができる競売リッスンサーバと、
各参加者のコンピュータで実行され、ブロードキャストチャネルでブロードキャストされる入札メッセージを受信し、参加者が入札すると入札メッセージをブロードキャストし、参加者が最も高い入札を提出するといつ競売を終了するかを決定する競売参加者プログラムと
を含むことを特徴とする競売システム。
【０２７０】
２．参加者コンピュータが少なくとも３つの他の参加者コンピュータに接続されるパラグラフ１の競売システム。
【０２７１】
３．ブロードキャストチャネルで送信されるメッセージに基づいて競売の状態を監視する競売監視コンピュータを含むパラグラフ１の競売システム。
【０２７２】
４．ブロードキャストチャネル上で複数の競売を同時に行うパラグラフ１の競売システム。
【０２７３】
５．各競売を個別のブロードキャストチャネルで行うパラグラフ１の競売システム。
【０２７４】
６．ブロードキャストされる各入札メッセージが、２人以上の参加者が同額を入札した場合に入札を与える際に使用される無作為に生成された数を含むパラグラフ１の競売システム。
【０２７５】
７．競売参加者プログラムが、競売を間もなく終了することを決定すると終了間近メッセージをブロードキャストするパラグラフ１の競売システム。
【０２７６】
８．現在の最高入札額を提出した競売参加者プログラムによって終了間近メッセージが送信されるパラグラフ７の競売システム。
【０２７７】
９．複数のコンピュータシステムを含む競売システムであって、各コンピュータシステムは他の各コンピュータシステムにメッセージを送信可能であり、各コンピュータシステムは、他のコンピュータシステムから入札メッセージを受信し、他のコンピュータシステムに入札メッセージを送信し、入札メッセージに基づいて現在の最高入札額を設定し、コンピュータシステムが現在の最高入札額を提出しているときにいつ競売を終了するかを決定するコンポーネントを含むことを特徴とする競売システム。
【０２７８】
１０．コンピュータシステムがブロードキャストチャネルを介して接続されるパラグラフ９の競売システム。
【０２７９】
１１．コンピュータシステムが相互接続されてｍ正則グラフを形成し、ｍは４以上であるパラグラフ９の競売システム。
【０２８０】
１２．コンピュータシステムが、他のコンピュータシステムに終了間近メッセージを送信した後に競売の終了を決定するパラグラフ９の競売システム。
【０２８１】
１３．終了の決定が、終了間近メッセージの送信後一定期間内に行われるパラグラフ１２の競売システム。
【０２８２】
１４．コンピュータシステムが競売を終了することを決定すると終了メッセージを送信することを含むパラグラフ１２の競売システム。
【０２８３】
１５．各コンピュータシステムが、入札メッセージに含まれる乱数に基づいて同額の入札を解決するパラグラフ９の競売システム。
【０２８４】
１６．コンピュータシステムにおいて競売で同額の入札を解決する方法であって、
第１の入札と第１のタイブレーカーを受信し、
第１の入札が競売において現在の最高入札額であることを知らせ、
第２の入札と第２のタイブレーカーを受信し、
第１の入札と第２の入札が同額である場合は、
第１のタイブレーカーと第２のタイブレーカーを比較し、
比較に基づいて第２の入札が競売において現在の最高入札額であることを知らせる
ことを特徴とする方法。
【０２８５】
１７．第１のタイブレーカーと第２のタイブレーカーが無作為に生成された数であるパラグラフ１６の方法。
【０２８６】
１８．コンピュータシステムがブロードキャストチャネルに接続されるパラグラフ１６の方法。
【０２８７】
１９．競売が中央競売サーバを備えないパラグラフ１６の方法。
【０２８８】
２０．競売の各参加者がピアコンピュータシステムであるパラグラフ１６の方法。
【０２８９】
２１．第２のタイブレーカーが第１のタイブレーカーよりも大きいときに第２の入札が現在の最高入札額であると示されるパラグラフ１６の方法。
【０２９０】
２２．競売に参加するコンピュータシステムがｍ正則グラフで相互接続され、ｍは４以上であるパラグラフ１６の方法。
【０２９１】
情報配信サービス
１．複数の関係者に情報配信サービスを提供するコンピュータネットワークであって、各関係者は少なくとも３つの隣接関係者への接続を有し、発信元の関係者は、その各接続を通じて隣接関係者にデータを送信することにより他の関係者にデータを送信し、各関係者は、隣接関係者から受信するデータを他の隣接関係者に送信することを特徴とするコンピュータネットワーク。
【０２９２】
２．各関係者が４つの他の関係者に接続されるパラグラフ１のコンピュータネットワーク。
【０２９３】
３．各関係者が偶数個の他の関係者に接続されるパラグラフ１のコンピュータネットワーク。
【０２９４】
４．ネットワークがｍ正則であり、ｍは各関係者の隣接関係者の数であるパラグラフ１のコンピュータネットワーク。
【０２９５】
５．ネットワークがｍ連結であり、ｍは各関係者の隣接関係者の数であるパラグラフ１のコンピュータネットワーク。
【０２９６】
６．ネットワークがｍ正則かつｍ連結であり、ｍは各関係者の隣接関係者の数であるパラグラフ１のコンピュータネットワーク。
【０２９７】
７．すべての関係者がピアであるパラグラフ１のコンピュータネットワーク。
【０２９８】
８．接続がピアツーピア接続であるパラグラフ１のコンピュータネットワーク。
【０２９９】
９．接続がＴＣＰ／ＩＰ接続であるパラグラフ１のコンピュータネットワーク。
【０３００】
１０．各関係者がコンピュータで実行されるプロセスであるパラグラフ１のコンピュータネットワーク。
【０３０１】
１１．コンピュータが複数の関係者をホストするパラグラフ１のコンピュータネットワーク。
【０３０２】
１２．各関係者が、その各隣接関係者に１つのみのデータコピーを送信するパラグラフ１のコンピュータネットワーク。
【０３０３】
１３．関係者の相互接続が対象トピックのためのブロードキャストチャネルを形成するパラグラフ１のコンピュータネットワーク。
【０３０４】
１４．それぞれがあるトピックに関連する情報を配信する複数のブロードキャストチャネルと、
対象トピックのためのブロードキャストチャネルを識別する手段と、
識別されたブロードキャストチャネルに接続する手段と
を含むことを特徴とする情報配信サービス。
【０３０５】
１５．対象トピックを識別する手段が、トピックとそれに対応するブロードキャストチャネルを対応付けるウェブサーバにアクセスすることを含むパラグラフ１４の情報配信サービス。
【０３０６】
１６．それぞれが少なくとも３つの他の利用者コンピュータに相互接続された利用者コンピュータによってブロードキャストチャネルが形成されるパラグラフ１４の情報配信サービス。
【０３０７】
分散会議システム
１．複数の関係者のための会議システムを提供するコンピュータネットワークであって、各関係者は少なくとも３つの他の隣接関係者への接続を有し、発信元の関係者は、その各接続を通じて各隣接関係者にデータを送信することにより他の関係者にデータを送信し、各関係者は隣接関係者から受信するデータを他の隣接関係者に送信することを特徴とするコンピュータネットワーク。
【０３０８】
２．各関係者が４つの他の関係者に接続されるパラグラフ１のコンピュータネットワーク。
【０３０９】
３．各関係者が偶数個の他の関係者に接続されるパラグラフ１のコンピュータネットワーク。
【０３１０】
４．ネットワークがｍ正則であり、ｍは各関係者の隣接関係者の数であるパラグラフ１のコンピュータネットワーク。
【０３１１】
５．ネットワークがｍ連結であり、ｍは各関係者の隣接関係者の数であるパラグラフ１のコンピュータネットワーク。
【０３１２】
６．ネットワークがｍ正則かつｍ連結であり、ｍは各関係者の隣接関係者の数であるパラグラフ１のコンピュータネットワーク。
【０３１３】
７．すべての関係者がピアであるパラグラフ１のコンピュータネットワーク。
【０３１４】
８．接続がピアツーピア接続であるパラグラフ１のコンピュータネットワーク。
【０３１５】
９．接続がＴＣＰ／ＩＰ接続であるパラグラフ１のコンピュータネットワーク。
【０３１６】
１０．各関係者がコンピュータで実行されるプロセスであるパラグラフ１のコンピュータネットワーク。
【０３１７】
１１．コンピュータが複数の関係者をホストするパラグラフ１のコンピュータネットワーク。
【０３１８】
１２．各関係者が、その各隣接関係者に１つのみのデータコピーを送信するパラグラフ１のコンピュータネットワーク。
【０３１９】
１３．関係者の相互接続が対象トピックのためのブロードキャストチャネルを形成するパラグラフ１のコンピュータネットワーク。
【０３２０】
１４．それぞれで会議を行うための複数のブロードキャストチャネルと、
対象の会議のためのブロードキャストチャネルを識別する手段と、
識別されたブロードキャストチャネルに接続する手段と
を含むことを特徴とする分散会議システム。
【０３２１】
１５．対象の会議を識別する手段が、会議とそれに対応するブロードキャストを対応付けるウェブサーバにアクセスすることを含むパラグラフ１４の分散会議システム。
【０３２２】
１６．それぞれが少なくとも３つの他のコンピュータに相互接続された出席者コンピュータと発言者コンピュータによってブロードキャストチャネルが形成されるパラグラフ１４の分散会議システム。
【０３２３】
分散ゲーム環境
１．複数の参加者のためのゲーム環境を提供するコンピュータネットワークであって、各参加者は少なくとも３つの他の隣接参加者への接続を有し、発信元の参加者は、その各接続を通じて隣接参加者にデータを送信することにより他の参加者にデータを送信し、各参加者は隣接参加者から受信するデータを他の隣接参加者に送信することを特徴とするコンピュータネットワーク。
【０３２４】
２．各参加者は４つの他の参加者に接続されるパラグラフ１のコンピュータネットワーク。
【０３２５】
３．各参加者は偶数個の他の参加者に接続されるパラグラフ１のコンピュータネットワーク。
【０３２６】
４．ネットワークがｍ正則であり、ｍは各参加者の隣接参加者の数であるパラグラフ１のコンピュータネットワーク。
【０３２７】
５．ネットワークがｍ連結であり、ｍは各参加者の隣接参加者の数であるパラグラフ１のコンピュータネットワーク。
【０３２８】
６．ネットワークがｍ正則かつｍ連結であり、ｍは各参加者の隣接参加者の数であるパラグラフ１のコンピュータネットワーク。
【０３２９】
７．すべての参加者がピアであるパラグラフ１のコンピュータネットワーク。
【０３３０】
８．接続がピアツーピア接続であるパラグラフ１のコンピュータネットワーク。
【０３３１】
９．接続がＴＣＰ／ＩＰ接続であるパラグラフ１のコンピュータネットワーク。
【０３３２】
１０．各参加者がコンピュータで実行されるプロセスであるパラグラフ１のコンピュータネットワーク。
【０３３３】
１１．コンピュータが複数の参加者をホストするパラグラフ１のコンピュータネットワーク。
【０３３４】
１２．各参加者が、その各隣接参加者に１つのみのデータコピーを送信するパラグラフ１のコンピュータネットワーク。
【０３３５】
１３．参加者の相互接続が対象ゲームのためのブロードキャストチャネルを形成するパラグラフ１のコンピュータネットワーク。
【０３３６】
１４．それぞれでゲームを行うための複数のブロードキャストチャネルと、
対象ゲームのためのブロードキャストチャネルを識別する手段と、
識別されたブロードキャストチャネルに接続する手段と
を含むことを特徴とする分散ゲームシステム。
【０３３７】
１５．対象のゲームを識別する手段が、ゲームとそれに対応するブロードキャストを対応付けるウェブサーバにアクセスすることを含むパラグラフ１４の分散ゲームシステム。
【０３３８】
１６．それぞれが少なくとも３つの他のコンピュータに相互接続されたプレーヤコンピュータによってブロードキャストチャネルが形成されるパラグラフ１４の分散ゲームシステム。
【図面の簡単な説明】
【図１】ブロードキャストチャネルを表す４正則、４連結のグラフの図である。
【図２】ブロードキャストチャネルに接続された２０台のコンピュータを表すグラフの図である。
【図３Ａ】新しいコンピュータＺをブロードキャストチャネルに接続するプロセスの図である。
【図３Ｂ】新しいコンピュータＺをブロードキャストチャネルに接続するプロセスの図である。
【図４Ａ】図１のブロードキャストチャネルにコンピュータを追加した図である。
【図４Ｂ】図４Ａのブロードキャストチャネルにコンピュータを追加した図である。
【図４Ｃ】図４Ａのブロードキャストチャネルにコンピュータを追加した図である。
【図５Ａ】計画された形によるブロードキャストチャネルとのコンピュータの接続の切断を表す図である。
【図５Ｂ】計画しない形によるブロードキャストチャネルとのコンピュータの接続の切断を表す図である。
【図５Ｃ】隣接コンピュータ同士に空きポートがある状態の図である。
【図５Ｄ】空きポートを有する隣接コンピュータ同士でない２つのコンピュータを示す図である。
【図５Ｅ】小規模体制における隣接コンピュータ同士に空きポートがある状態を示す図である。
【図５Ｆ】大規模体制における図５Ｅの状況を示す図である。
【図６】ブロードキャストチャネルに接続されたコンピュータの構成要素を示すブロック図である。
【図７】一実施形態におけるブロードキャスタコンポーネントのサブコンポーネントを示すブロック図である。
【図８】一実施形態における接続ルーチンの処理を示す流れ図である。
【図９】一実施形態におけるポータルコンピュータ探索ルーチンの処理を示す流れ図である。
【図１０】一実施形態における接触プロセスルーチンの処理を示す流れ図である。
【図１１】一実施形態における接続要求ルーチンの処理を示す流れ図である。
【図１２】一実施形態における外部呼出し確認ルーチンの処理を示す流れ図である。
【図１３】一実施形態における接続成立ルーチンの処理を示す流れ図である。
【図１４】一実施形態における外部ディスパッチャルーチンの処理を示す流れ図である。
【図１５】一実施形態における接続探索呼出し処理ルーチンの処理を示す流れ図である。
【図１６】一実施形態における接続要求呼出し処理ルーチンの処理を示す流れ図である。
【図１７】一実施形態における隣接コンピュータ追加ルーチンの処理を示す流れ図である。
【図１８】一実施形態における接続エッジ探索転送ルーチンの処理を示す流れ図である。
【図１９】エッジ提示呼出し処理ルーチンの処理を示す流れ図である。
【図２０】一実施形態におけるポート接続呼出し処理ルーチンの処理を示す流れ図である。
【図２１】一実施形態におけるホールフィルルーチンの処理を示す流れ図である。
【図２２】一実施形態における内部ディスパッチャルーチンの処理を示す流れ図である。
【図２３】一実施形態におけるブロードキャストメッセージ処理ルーチンの処理を示す流れ図である。
【図２４】一実施形態におけるブロードキャストメッセージ配信ルーチンの処理を示す流れ図である。
【図２５】
【図２６】一実施形態における接続ポート探索ステートメント処理ルーチンの処理を示す流れ図である。
【図２７】一実施形態における隣接コンピュータ接近ルーチンの処理を示す流れ図である。
【図２８】一実施形態における接続エッジ探索呼出し処理ルーチンの処理を示す流れ図である。
【図２９】一実施形態における接続エッジ探索応答処理ルーチンの処理を示す流れ図である。
【図３０】一実施形態におけるブロードキャストルーチンの処理を示す流れ図である。
【図３１】一実施形態におけるメッセージ取得ルーチンの処理を示す流れ図である。
【図３２】一実施形態における状態確認メッセージ処理の処理を示す流れ図である。
【図３３】一実施形態における状態修復ステートメント処理ルーチンの処理を示す流れ図である。
【図３４】状態二重確認処理ルーチンの処理を示す流れ図である。
【図３５】一実施形態における競売システムの構成要素を示すブロック図である。
【図３６】一実施形態における参加者のコンピュータの構成要素を示すブロック図である。
【図３７】ウィンドウ３００が表示状態ルーチンによって表示された、現在の競売の表示を示すブロック図である。
【図３８】すべての競売固有のウィンドウの表示を示す図である。
【図３９】競売の現在の状態を要求するルーチンの流れ図である。
【図４０】現在状態要求メッセージを受信するルーチンの流れ図である。
【図４１】現在状態メッセージを受信するルーチンの流れ図である。
【図４２】一実施形態における入札提出ルーチンの処理を示す流れ図である。
【図４３】一実施形態における入札メッセージ受信ルーチンの処理を示す流れ図である。
【図４４】終了間近タイマの満了を処理するルーチンを示す流れ図である。
【図４５】受信した終了間近メッセージを処理するルーチンを示す流れ図である。
【図４６】終了タイマの満了を処理するルーチンを示す流れ図である。
【図４７】受信したｏｎメッセージを処理するルーチンを示す流れ図である。
【図４８】一実施形態における競売エージェントを示す流れ図である。
【図１】
2004505550.tif 000005
【図２】
2004505550.tif 000006
【図３Ａ】
2004505550.tif 000007
【図３Ｂ】
2004505550.tif 000008
【図４Ａ】
2004505550.tif 000009
【図４Ｂ】
2004505550.tif 000010
【図４Ｃ】
2004505550.tif 000011
【図５Ａ】
2004505550.tif 000012
【図５Ｂ】
2004505550.tif 000013
【図５Ｃ】
2004505550.tif 000014
【図５Ｄ】
2004505550.tif 000015
【図５Ｅ】
2004505550.tif 000016
【図５Ｆ】
2004505550.tif 000017
【図６】
2004505550.tif 000018
【図７】
2004505550.tif 000019
【図８】
2004505550.tif 000020
【図９】
2004505550.tif 000021
【図１０】
2004505550.tif 000022
【図１１】
2004505550.tif 000023
【図１２】
2004505550.tif 000024
【図１３】
2004505550.tif 000025
【図１４】
2004505550.tif 000026
【図１５】
2004505550.tif 000027
【図１６】
2004505550.tif 000028
【図１７】
2004505550.tif 000029
【図１８】
2004505550.tif 000030
【図１９】
2004505550.tif 000031
【図２０】
2004505550.tif 000032
【図２１】
2004505550.tif 000033
【図２２】
2004505550.tif 000034
【図２３】
2004505550.tif 000035
【図２４】
2004505550.tif 000036
【図２６】
2004505550.tif 000037
【図２７】
2004505550.tif 000038
【図２８】
2004505550.tif 000039
【図２９】
2004505550.tif 000040
【図３０】
2004505550.tif 000041
【図３１】
2004505550.tif 000042
【図３２】
2004505550.tif 000043
【図３３】
2004505550.tif 000044
【図３４】
2004505550.tif 000045
【図３５】
2004505550.tif 000046
【図３６】
2004505550.tif 000047
【図３７】
2004505550.tif 000048
【図３８】
2004505550.tif 000049
【図３９】
2004505550.tif 000050
【図４０】
2004505550.tif 000051
【図４１】
2004505550.tif 000052
【図４２】
2004505550.tif 000053
【図４３】
2004505550.tif 000054
【図４４】
2004505550.tif 000055
【図４５】
2004505550.tif 000056
【図４６】
2004505550.tif 000057
【図４７】
2004505550.tif 000058
【図４８】
2004505550.tif 000059
【国際公開パンフレット】
2004505550.tif 000060
2004505550.tif 000061
2004505550.tif 000062
2004505550.tif 000063
2004505550.tif 000064
2004505550.tif 000065
2004505550.tif 000066
2004505550.tif 000067
2004505550.tif 000068
2004505550.tif 000069
2004505550.tif 000070
2004505550.tif 000071
2004505550.tif 000072
2004505550.tif 000073
2004505550.tif 000074
2004505550.tif 000075
2004505550.tif 000076
2004505550.tif 000077
2004505550.tif 000078
2004505550.tif 000079
2004505550.tif 000080
2004505550.tif 000081
2004505550.tif 000082
2004505550.tif 000083
2004505550.tif 000084
2004505550.tif 000085
2004505550.tif 000086
2004505550.tif 000087
2004505550.tif 000088
2004505550.tif 000089
2004505550.tif 000090
2004505550.tif 000091
2004505550.tif 000092
2004505550.tif 000093
2004505550.tif 000094
2004505550.tif 000095
2004505550.tif 000096
2004505550.tif 000097
2004505550.tif 000098
2004505550.tif 000099
2004505550.tif 000100
2004505550.tif 000101
2004505550.tif 000102
2004505550.tif 000103
2004505550.tif 000104
2004505550.tif 000105
2004505550.tif 000106
2004505550.tif 000107
2004505550.tif 000108
2004505550.tif 000109
2004505550.tif 000110
2004505550.tif 000111
2004505550.tif 000112
2004505550.tif 000113
2004505550.tif 000114
2004505550.tif 000115
2004505550.tif 000116
2004505550.tif 000117
2004505550.tif 000118
2004505550.tif 000119
2004505550.tif 000120
2004505550.tif 000121
2004505550.tif 000122
2004505550.tif 000123
2004505550.tif 000124
2004505550.tif 000125
2004505550.tif 000126
2004505550.tif 000127
2004505550.tif 000128
2004505550.tif 000129
2004505550.tif 000130
2004505550.tif 000131
2004505550.tif 000132
2004505550.tif 000133
2004505550.tif 000134
2004505550.tif 000135
2004505550.tif 000136
2004505550.tif 000137
2004505550.tif 000138
2004505550.tif 000139
2004505550.tif 000140
2004505550.tif 000141
2004505550.tif 000142
2004505550.tif 000143
2004505550.tif 000144
2004505550.tif 000145
2004505550.tif 000146
2004505550.tif 000147
2004505550.tif 000148
2004505550.tif 000149
2004505550.tif 000150
2004505550.tif 000151
2004505550.tif 000152
2004505550.tif 000153
2004505550.tif 000154
2004505550.tif 000155
2004505550.tif 000156
2004505550.tif 000157
2004505550.tif 000158
2004505550.tif 000159
2004505550.tif 000160
2004505550.tif 000161
2004505550.tif 000162
2004505550.tif 000163
2004505550.tif 000164
2004505550.tif 000165
2004505550.tif 000166
2004505550.tif 000167
2004505550.tif 000168
2004505550.tif 000169
2004505550.tif 000170
2004505550.tif 000171
2004505550.tif 000172
2004505550.tif 000173
2004505550.tif 000174
2004505550.tif 000175
2004505550.tif 000176
2004505550.tif 000177
2004505550.tif 000178
2004505550.tif 000179
2004505550.tif 000180
2004505550.tif 000181
2004505550.tif 000182
2004505550.tif 000183
2004505550.tif 000184
2004505550.tif 000185
2004505550.tif 000186
2004505550.tif 000187
2004505550.tif 000188
2004505550.tif 000189
2004505550.tif 000190
2004505550.tif 000191
2004505550.tif 000192
2004505550.tif 000193
2004505550.tif 000194
2004505550.tif 000195
2004505550.tif 000196
2004505550.tif 000197
2004505550.tif 000198
2004505550.tif 000199
2004505550.tif 000200
2004505550.tif 000201
2004505550.tif 000202
2004505550.tif 000203
2004505550.tif 000204
2004505550.tif 000205
2004505550.tif 000206
2004505550.tif 000207
2004505550.tif 000208
2004505550.tif 000209
2004505550.tif 000210
2004505550.tif 000211
2004505550.tif 000212
2004505550.tif 000213
【国際公開パンフレット（コレクトバージョン）】
2004505550.tif 000214
2004505550.tif 000215
【手続補正書】
【提出日】平成14年11月4日(2002.11.4)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の関係者を有するコンピュータネットワークであって、各関係者は少なくとも３つの隣接関係者への接続を有し、発信元の関係者は、その各接続を通じてその隣接関係者にデータを送信することにより他の関係者にデータを送信するように構成され、各関係者は、隣接関係者から受信するデータを他の隣接関係者に送信するように構成され、前記ネットワークはｍ正則かつｍ連結であり、ｍは各関係者の隣接関係者の数であることを特徴とするコンピュータネットワーク。
【請求項２】
各関係者が４つの他の関係者に接続されることを特徴とする請求項１に記載のコンピュータネットワーク。
【請求項３】
各関係者が偶数個の他の関係者に接続されることを特徴とする請求項１または２に記載のコンピュータネットワーク。
【請求項４】
すべての前記関係者がピアであることを特徴とする請求項１から３のいずれかに記載のコンピュータネットワーク。
【請求項５】
前記接続がピアツーピア接続であることを特徴とする請求項１から４に記載のコンピュータネットワーク。
【請求項６】
前記接続がＴＣＰ／ＩＰ接続であることを特徴とする請求項１から５のいずれかに記載のコンピュータネットワーク。
【請求項７】
各関係者がコンピュータで実行されるプロセスであることを特徴とする請求項１から６のいずれかに記載のコンピュータネットワーク。
【請求項８】
コンピュータが複数の関係者をホストすることを特徴とする請求項１から７のいずれかに記載のコンピュータネットワーク。
【請求項９】
各関係者がその各隣接関係者に１つのみのデータコピーを送信することを特徴とする請求項１から８のいずれかに記載のコンピュータネットワーク。
【請求項１０】
関係者とブロードキャストチャネルの通信を制御するコンポーネントであって、
ポータルコンピュータを見つけ、前記関係者が接続できる隣接コンピュータの指示を提供するように前記見つけたポータルコンピュータに要求する接触モジュールと、
前記隣接関係者の指示を受信し、前記関係者と前記指示された隣接関係者それぞれとの間に接続を確立する結合モジュールであって、前記ブロードキャストチャネルはｍ正則かつｍ連結の関係者ネットワークであり、ｍは各関係者の隣接関係者の数であり、ｍは少なくとも３である結合モジュールと
を含むことを特徴とするコンポーネント。
【請求項１１】
各関係者がコンピュータプロセスであることを特徴とする請求項１０に記載のコンポーネント。
【請求項１２】
前記指示される関係者が、異なるコンピュータシステムで実行されるコンピュータプロセスであることを特徴とする請求項１０または１１に記載のコンポーネント。
【請求項１３】
前記関係者の隣接関係者からデータを受信し、前記受信データを前記他の隣接関係者に送信するブロードキャストモジュール
を含むことを特徴とする請求項１０から１２のいずれかに記載のコンポーネント。
【請求項１４】
別の関係者への接続を求める要求を受信し、隣接関係者から切断し、もう一方の関係者に接続する接続要求モジュール
を含むことを特徴とする請求項１０から１３のいずれかに記載のコンポーネント。
【請求項１５】
前記ＴＣＰ／ＩＰプロトコルを使用して前記接続を確立することを特徴とする請求項１０から１４のいずれかに記載のコンポーネント。
【請求項１６】
前記ブロードキャストチャネルに接続された前記関係者間にピアツーピア通信を提供する通信ネットワークと、
前記ブロードキャストチャネルに接続された各関係者に対して、
その関係者の４つの隣接関係者の指示、および
前記通信ネットワークを使用して隣接関係者からデータを受信し、前記受信データを他の隣接関係者に送信して、前記ブロードキャストチャネルの各関係者に対する前記データのブロードキャストを行うブロードキャストコンポーネント
を含むことを特徴とする関係者のためのブロードキャストチャネル。
【請求項１７】
前記ブロードキャストコンポーネントは、それがすでにその隣接関係者に送信した受信データを無視することを特徴とする請求項１６に記載のブロードキャストチャネル。
【請求項１８】
関係者は、すでにブロードキャストチャネルに接続された関係者に接触することにより前記ブロードキャストチャネルに接続することを特徴とする請求項１６または１７に記載のブロードキャストチャネル。
【請求項１９】
各関係者がコンピュータプロセスであることを特徴とする請求項１６から１８のいずれかに記載のブロードキャストチャネル。
【請求項２０】
各関係者がコンピュータスレッドであることを特徴とする請求項１６から１９のいずれかに記載のブロードキャストチャネル。
【請求項２１】
各関係者がコンピュータであることを特徴とする請求項１６から２０のいずれかに記載のブロードキャストチャネル。
【請求項２２】
前記通信ネットワークがＴＣＰ／ＩＰプロトコルを使用することを特徴とする請求項１６から２１のいずれかに記載のブロードキャストチャネル。
【請求項２３】
前記通信ネットワークがインターネットであることを特徴とする請求項１６から２２のいずれかに記載のブロードキャストチャネル。
【請求項２４】
前記関係者がピアであることを特徴とする請求項１６から２３のいずれかに記載のブロードキャストチャネル。
【請求項２５】
ポータルコンピュータを見つけ、
前記関係者を接続できる隣接関係者の指示を提供するように前記見つけたポータルコンピュータに要求し、
前記隣接コンピュータの指示を受信し、
前記関係者と前記指示された隣接関係者それぞれとの間に接続を確立し、
前記ブロードキャストチャネルはｍ正則かつｍ連結の関係者ネットワークであり、ｍは各関係者の隣接関係者の数であり、ｍは少なくとも３である方法により、ブロードキャストチャネルの関係者の通信を制御する命令を含むことを特徴とするコンピュータ可読媒体。
【請求項２６】
各関係者がコンピュータプロセスであることを特徴とする請求項２５に記載のコンピュータ可読媒体。
【請求項２７】
前記指示される関係者が、異なるコンピュータシステムで実行されるコンピュータプロセスであることを特徴とする請求項２５または２６のいずれかに記載のコンピュータ可読媒体。
【請求項２８】
前記関係者の隣接関係者からデータを受信することと、前記受信データを他の隣接関係者に送信することを含むことを特徴とする請求項２５から２７のいずれかに記載のコンピュータ可読媒体。
【請求項２９】
別の関係者への接続を求める要求を受信し、
隣接関係者から切断し、
もう一方の関係者に接続する
ことを特徴とする請求項２５から２８のいずれかに記載のコンピュータ可読媒体。
【請求項３０】
前記ＴＣＰ／ＩＰプロトコルを使用して前記接続を確立することを特徴とする請求項２５から２９のいずれかに記載のコンピュータ可読媒体。
【国際調査報告】
2004505550.tif 000216
2004505550.tif 000217
2004505550.tif 000218