(57)【特許請求の範囲】
【請求項１】
ノードを構成する各通信装置にアプリケーションプログラム及び通信を中継するプロキシの少なくとも一方が設けられ、アプリケーションプログラムを備える複数のノードが複数のプロキシ及び所定のネットワークを介して互いに接続される通信システムの制御に用いるマルチキャスト通信制御方法であって、
各々のアプリケーションプログラム及び各々のプロキシを特定するサービスアドレス、並びに各々の通信を表すセッションを管理し、
各々のアプリケーションプログラムの所在及び各々のプロキシの所在をリソーステーブルとして管理し、
セッション毎に、各々のプロキシに対して、データを入力するアプリケーションプログラム又はプロキシを表す第１のサービスアドレスと、入力されたデータの送出先のアプリケーションプログラム又はプロキシを表す第２のサービスアドレスとの対応関係を分岐テーブルとして管理するとともに、同一の第１のサービスアドレスに対して複数の第２のサービスアドレスを関連付けることを許容し、
各々のプロキシが、それに対応付けられた前記分岐テーブルの内容に従って入力されるデータの送出を制御し、
送信元から指定された宛先への通信回線の接続を行う際、もしくは通信中に宛先の第１のアプリケーションプログラムが利用できない状態が発生した場合には、通信を中継する少なくとも１つのプロキシの制御により、代替え可能な第２のアプリケーションプログラムを検索し、見つかった第２のアプリケーションプログラムとの間で通信経路を確立し、
通信サービスを提供する通信経路を切り替える場合には、前記通信経路上に配置されたプロキシが、切替元の第１のアプリケーションプログラムにおけるサービス中断位置に関する情報を切替先の第２のアプリケーションプログラムに通知し、前記プロキシが切替先との間の通信コネクションを該当する通信サービスの通信コネクションと結び付ける
ことを特徴とするマルチキャスト通信制御方法。
【請求項２】
請求項１のマルチキャスト通信制御方法において、
プロキシがマルチキャストの新たな接続要求を表す接続フレームを他のノードから受信した場合には、宛先のアプリケーションプログラムもしくはその宛先と接続されている通信経路上のプロキシに対する接続が確立した後で、前記接続フレームに該当する接続情報を前記分岐テーブルに追加する
ことを特徴とするマルチキャスト通信制御方法。
【請求項３】
請求項１のマルチキャスト通信制御方法において、
各々のプロキシは、アプリケーションプログラムもしくは他のプロキシから受信したデータをそれが属するノード上のキャッシュに通信コネクション毎に分離して一時的に蓄積してから前記分岐テーブルの内容に従って送信するとともに、
通信リンクが確立されている通信コネクションについてはキャッシュに蓄積されたデータを順次に送出し、
通信リンクが一定時間途切れた通信コネクションについては未送信のデータをキャッシュ上に保持しておき、通信リンクが回復するかもしくは通信リンクが再構築された後で、キャッシュに蓄積されているデータを送出する
ことを特徴とするマルチキャスト通信制御方法。
【請求項４】
請求項１のマルチキャスト通信制御方法において、
宛先のアプリケーションプログラムを表す第３のサービスアドレスと、それに接続されている通信経路上で自プロキシの次ホップに位置する他のプロキシを表す第４のサービスアドレスとの対応関係をプロキシルーチングテーブルとして管理し、
各ノードに存在する通信デバイスのネットワークアドレスをロケーションテーブルとして管理する
ことを特徴とするマルチキャスト通信制御方法。
【請求項５】
請求項２のマルチキャスト通信制御方法において、
宛先のアプリケーションプログラムを表す第３のサービスアドレスと、その宛先に接続されている通信経路上で自プロキシの次ホップに位置する他のプロキシを表す第４のサービスアドレスとの対応関係をプロキシルーチングテーブルとして管理し、
各ノードに存在する通信デバイスのネットワークアドレスをロケーションテーブルとして管理し、
他のノードから受信した接続フレームに対して接続を確立できない場合には、サービス不能フレームを前記接続フレームの送信元に対して送信し、
前記サービス不能フレームを受け取った場合には、前記プロキシルーチングテーブル上の該当するサービスアドレスについて利用不可を表す情報を記録する
ことを特徴とするマルチキャスト通信制御方法。
【請求項６】
ノードを構成する各通信装置にアプリケーションプログラム及び通信を中継するプロキシの少なくとも一方が設けられ、アプリケーションプログラムを備える複数のノードが複数のプロキシ及び所定のネットワークを介して互いに接続される通信システムの制御に用いる通信制御装置であって、
プロキシが配置されたノード上で、各々のアプリケーションプログラム及び各々のプロキシを特定するサービスアドレス、並びに各々の通信を表すセッションを管理するセッション管理手段と、
プロキシが配置されたノード上で、各々のアプリケーションプログラムの所在及び各々のプロキシの所在を管理するリソーステーブルと、
プロキシが配置されたノード上で、セッション毎に、各々のプロキシに対して、データを入力するアプリケーションプログラム又はプロキシを表す第１のサービスアドレスと、入力されたデータの送出先のアプリケーションプログラム又はプロキシを表す第２のサービスアドレスとの対応関係を管理するとともに、同一の第１のサービスアドレスに対して複数の第２のサービスアドレスを関連付けることを許容する分岐テーブルと、
前記分岐テーブルの内容に従って各々のプロキシに入力されるデータの送出先を制御するプロキシ制御手段と、
プロキシが配置されたノード上で、送信元から指定された宛先への通信回線の接続を行う際、もしくは通信中に宛先の第１のアプリケーションプログラムが利用できない状態が発生した場合には、通信を中継する少なくとも１つのプロキシの制御により、代替え可能な第２のアプリケーションプログラムを検索し、見つかった第２のアプリケーションプログラムとの間で通信経路を確立する通信経路確立手段と、
プロキシが配置されたノード上で、通信サービスを提供する通信経路を切り替える場合には、前記通信経路上に配置されたプロキシが、切替元の第１のアプリケーションプログラムにおけるサービス中断位置に関する情報を切替先の第２のアプリケーションプログラムに通知し、前記プロキシが切替先との間の通信コネクションを該当する通信サービスの通信コネクションと結び付ける通信経路切り替え手段と
を設けたことを特徴とする通信制御装置。
【請求項７】
請求項６の通信制御装置において、
プロキシがマルチキャストの新たな接続要求を表す接続フレームを他のノードから受信した場合に、宛先のアプリケーションプログラムもしくはその宛先と接続されている通信経路上のプロキシに対する接続が確立した後で、前記接続フレームに該当する接続情報を前記分岐テーブルに追加する分岐テーブル更新手段
を更に設けたことを特徴とする通信制御装置。
【請求項８】
請求項６の通信制御装置において、プロキシがアプリケーションプログラムもしくは他のプロキシから受信したデータを一時的に蓄積するキャッシュを、前記プロキシの属するノード上に設けたことを特徴とする通信制御装置。
【請求項９】
請求項６の通信制御装置において、
宛先のアプリケーションプログラムを表す第３のサービスアドレスと、それに接続されている通信経路上で自プロキシの次ホップに位置する他のプロキシを表す第４のサービスアドレスとの対応関係を管理するプロキシルーチングテーブルと、
各ノードに存在する通信デバイスのネットワークアドレスを管理するロケーションテーブルと
を更に設けたことを特徴とする通信制御装置。
【請求項１０】
請求項７の通信制御装置において、
宛先のアプリケーションプログラムを表す第３のサービスアドレスと、その宛先に接続されている通信経路上で自プロキシの次ホップに位置する他のプロキシを表す第４のサービスアドレスとの対応関係を管理するプロキシルーチングテーブルと、
各ノードに存在する通信デバイスのネットワークアドレスを管理するロケーションテーブルと、
他のノードから受信した接続フレームに対して接続を確立できない場合には、サービス不能フレームを前記接続フレームの送信元に対して送信するサービス不能フレーム送信手段と、
前記サービス不能フレームを受け取った場合には、前記プロキシルーチングテーブル上の該当するサービスアドレスについて利用不可を表す情報を記録する利用不可情報記録手段と
を更に設けたことを特徴とする通信制御装置。
【請求項１１】
ノードを構成する各通信装置にアプリケーションプログラム及び通信を中継するプロキシの少なくとも一方が設けられ、アプリケーションプログラムを備える複数のノードが複数のプロキシ及び所定のネットワークを介して互いに接続される通信システムの制御に用いるマルチキャスト通信制御のためのコンピュータで実行可能な制御プログラムを記録した記録媒体であって、前記制御プログラムには、
各々のアプリケーションプログラム及び各々のプロキシを特定するサービスアドレス、並びに各々の通信を表すセッションを管理する手順と、
各々のアプリケーションプログラムの所在及び各々のプロキシの所在をリソーステーブルとして管理する手順と、
セッション毎に、各々のプロキシに対して、データを入力するアプリケーションプログラム又はプロキシを表す第１のサービスアドレスと、入力されたデータの送出先のアプリケーションプログラム又はプロキシを表す第２のサービスアドレスとの対応関係を分岐テーブルとして管理するとともに、同一の第１のサービスアドレスに対して複数の第２のサービスアドレスを関連付けることを許容する手順と、
各々のプロキシが、それに対応付けられた前記分岐テーブルの内容に従って入力されるデータの送出を制御する手順と、
送信元から指定された宛先への通信回線の接続を行う際、もしくは通信中に宛先の第１のアプリケーションプログラムが利用できない状態が発生した場合には、通信を中継する少なくとも１つのプロキシの制御により、代替え可能な第２のアプリケーションプログラムを検索し、見つかった第２のアプリケーションプログラムとの間で通信経路を確立する手順と、
通信サービスを提供する通信経路を切り替える場合には、前記通信経路上に配置されたプロキシが、切替元の第１のアプリケーションプログラムにおけるサービス中断位置に関する情報を切替先の第２のアプリケーションプログラムに通知し、前記プロキシが切替先との間の通信コネクションを該当する通信サービスの通信コネクションと結び付ける手順と
を設けたことを特徴とする記録媒体。
【請求項１２】
ノードを構成する各通信装置にアプリケーションプログラム及び通信を中継するプロキシの少なくとも一方が設けられ、アプリケーションプログラムを備える複数のノードが複数のプロキシ及び所定のネットワークを介して互いに接続される通信システムの制御に用いるマルチキャスト通信制御のためのコンピュータで実行可能な制御プログラムであって、
各々のアプリケーションプログラム及び各々のプロキシを特定するサービスアドレス、並びに各々の通信を表すセッションを管理する手順と、
各々のアプリケーションプログラムの所在及び各々のプロキシの所在をリソーステーブルとして管理する手順と、
セッション毎に、各々のプロキシに対して、データを入力するアプリケーションプログラム又はプロキシを表す第１のサービスアドレスと、入力されたデータの送出先のアプリケーションプログラム又はプロキシを表す第２のサービスアドレスとの対応関係を分岐テーブルとして管理するとともに、同一の第１のサービスアドレスに対して複数の第２のサービスアドレスを関連付けることを許容する手順と、
各々のプロキシが、それに対応付けられた前記分岐テーブルの内容に従って入力されるデータの送出を制御する手順と、
送信元から指定された宛先への通信回線の接続を行う際、もしくは通信中に宛先の第１のアプリケーションプログラムが利用できない状態が発生した場合には、通信を中継する少なくとも１つのプロキシの制御により、代替え可能な第２のアプリケーションプログラムを検索し、見つかった第２のアプリケーションプログラムとの間で通信経路を確立する手順と、
通信サービスを提供する通信経路を切り替える場合には、前記通信経路上に配置されたプロキシが、切替元の第１のアプリケーションプログラムにおけるサービス中断位置に関する情報を切替先の第２のアプリケーションプログラムに通知し、前記プロキシが切替先との間の通信コネクションを該当する通信サービスの通信コネクションと結び付ける手順と
を設けたことを特徴とする制御プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク上で接続された複数の端末同士がサーバアプリケーション及びクライアントアプリケーションにより通信するシステムにおいて、マルチキャスト通信を行う場合に利用されるマルチキャスト通信制御方法及び通信制御装置に関する。
【０００２】
【従来の技術】
利用者が通信を行っているアプリケーション（プログラム）の利用をやめて他のアプリケーションで通信を行おうとする場合には、通信を中断してから、他のアプリケーションで通信を再開する必要がある。しかしながら、この場合は通信が切断されてしまうので、相手のアプリケーションとの通信手続きを最初からやり直す必要がある。すなわち、あるアプリケーションに対する通信サービスを途中から他のアプリケーションに切り替えることはできない。
【０００３】
例えば、ノートパソコンやＰＤＡのような移動端末は持ち運びができるため様々な場所で利用される可能性があるし、移動しながら利用される場合もある。このような移動端末をオンラインで利用する場合には、例えばイーサネット（登録商標），構内無線ＬＡＮ（Local Area Network），公衆無線通信（例えばＰＨＳ（Personal Handy-phone System））等に対応する通信アダプタを用いて移動端末をネットワークに接続する必要がある。
【０００４】
移動端末が利用される様々な場所においては、１つ又は複数の通信媒体を利用して移動端末をネットワークに接続することが可能である。予め複数種類の通信媒体に対応する複数の通信アダプタを搭載しておけば、１台の移動端末を様々な場所で、必要に応じて通信方式を切り替えてネットワークに接続することができる。
【０００５】
実際に複数の端末同士がサーバアプリケーション及びクライアントアプリケーションにより通信する場合には、まず端末のハードウェアをネットワークに接続し、サービスを提供するサーバアプリケーションと前記サービスを利用するクライアントアプリケーションとの間に通信コネクションを確立する必要がある。
また、例えば障害などによって一時的に通信が途絶えた場合でも通信の継続を可能にするために、サーバアプリケーションとクライアントアプリケーションとの間にプロキシと呼ばれる中継装置を介在するように通信経路を構築するのが一般的である。
【０００６】
このような従来の通信システムにおいては、サーバアプリケーションとクライアントアプリケーションとの間の通信を開始する際にその通信経路が決定される。従って、通信の途中では利用するサーバアプリケーション，クライアントアプリケーション及びプロキシの組み合わせを変更することはできない。
サーバアプリケーション，クライアントアプリケーション又はプロキシを変更する場合には、通信を一旦終了し、通信コネクションを解放し、サーバアプリケーションとクライアントアプリケーションとの間の各通信コネクションをつなぎ直す必要がある。
【０００７】
しかしながら、移動端末が移動しながら通信する場合には、移動に伴ってサーバアプリケーション，クライアントアプリケーション及びプロキシの位置関係が変わるため、冗長な通信経路が形成される可能性がある。例えば、不必要なプロキシを中継して通信を継続する場合が生じる。
また、例えば通信中の端末に障害が発生した場合には、通信を一旦終了し、通信コネクションを解放し、障害が生じた端末のアプリケーションやプロキシの機能を他の端末で置き換えるように通信経路を再構築して最初から通信をやり直す必要がある。
【０００８】
また、例えばユーザが利用する端末を画面の小さい移動端末から画面の大きい固定端末（例えばデスクトップパソコン）に切り替えようとする場合にも、移動端末の通信を終了し、通信コネクションを解放し、固定端末を用いて新たな通信経路を構築し、通信を最初からやり直す必要がある。
【０００９】
一方、マルチキャスト通信をプロキシを用いて制御する従来技術としては、特開２００１−１６８８６０号公報が知られている。この従来技術においては、サーバ又はクライアントと接続されたネットワークから入力されるマルチキャストのデータをプロキシ計算機で受信し、高信頼性マルチキャストプロトコルを用いてプロキシ計算機間でデータの複製及び同報送信を行い、データをプロキシ計算機を中継してサーバ又はクライアントのノードへデータをマルチキャスト配信する。
【００１０】
また、ＩＰ（Internet Protocol）レベルでマルチキャストを制御する場合には、従来よりマルチキャストルータが用いられている。但し、マルチキャストルータの機能は単にデータを複製及び中継するだけである。従って、信頼性を確保するためにはサーバ及びクライアントに、それらの間で信頼性を確保するための仕組みを導入する必要がある。
【００１１】
【発明が解決しようとする課題】
特開２００１−１６８８６０号公報の従来技術では、プロキシ間で信頼性を確保するため、サーバノードの負荷が減りスループットの向上が期待できる、しかし、この従来技術ではプロキシ間において有線の高速ネットワークのように信頼性のある通信環境が構築されていることが前提とされているので、例えばプロキシ間の無線リンクが切断される等、通信環境が変化した場合には通信を継続することができなくなる。
【００１２】
また、ＩＰレベルでマルチキャストを制御する場合には、信頼性を確保するためにサーバとクライアントとの間で確認信号（ＡＣＫ）の転送を行ったり再送制御を行う必要がある。そして、マルチキャスト配送経路の一部が途切れただけで、その影響はサーバアプリケーションに影響し、ネットワーク全体に負荷がかかりスループットが減少する。更に、無線リンクの切断などによって通信環境が変化した場合には通信を継続することができなくなる。
【００１３】
また、いずれの従来技術を用いる場合であっても、マルチキャストサービスを実施している途中で、ノードを変更し、変更した時点からマルチキャストサービスを再開して通信を継続することはできない。
また、多くの企業や機関ではネットワーク層（ＩＰレベル）の通信を遮断するファイアウォール（ネットワークの防護壁）が設置されているが、エンド−エンドのアプリケーションがネットワーク層で提供される通信機能で完結する通信はこのファイアウォールを超えて動作することができない。
【００１４】
本発明は、マルチキャスト通信を行う場合に、無線リンクの切断などによって通信環境が変化した場合であっても通信を継続することが可能なマルチキャスト通信制御方法及び通信制御装置を提供するとともに、プロキシで構成される通信ネットワークを用いることにより、ファイアウォールを超える通信を可能にすることを目的とする。
【００１５】
【課題を解決するための手段】
請求項１は、ノードを構成する各通信装置にアプリケーションプログラム及び通信を中継するプロキシの少なくとも一方が設けられ、アプリケーションプログラムを備える複数のノードが複数のプロキシ及び所定のネットワークを介して互いに接続される通信システムの制御に用いるマルチキャスト通信制御方法であって、各々のアプリケーションプログラム及び各々のプロキシを特定するサービスアドレス、並びに各々の通信を表すセッションを管理し、各々のアプリケーションプログラムの所在及び各々のプロキシの所在をリソーステーブルとして管理し、セッション毎に、各々のプロキシに対して、データを入力するアプリケーションプログラム又はプロキシを表す第１のサービスアドレスと、入力されたデータの送出先のアプリケーションプログラム又はプロキシを表す第２のサービスアドレスとの対応関係を分岐テーブルとして管理するとともに、同一の第１のサービスアドレスに対して複数の第２のサービスアドレスを関連付けることを許容し、各々のプロキシが、それに対応付けられた前記分岐テーブルの内容に従って入力されるデータの送出を制御し、送信元から指定された宛先への通信回線の接続を行う際、もしくは通信中に宛先の第１のアプリケーションプログラムが利用できない状態が発生した場合には、通信を中継する少なくとも１つのプロキシの制御により、代替え可能な第２のアプリケーションプログラムを検索し、見つかった第２のアプリケーションプログラムとの間で通信経路を確立し、通信サービスを提供する通信経路を切り替える場合には、前記通信経路上に配置されたプロキシが、切替元の第１のアプリケーションプログラムにおけるサービス中断位置に関する情報を切替先の第２のアプリケーションプログラムに通知し、前記プロキシが切替先との間の通信コネクションを該当する通信サービスの通信コネクションと結び付けることを特徴とする。
【００１６】
請求項１においては、各プロキシについてデータの入力元（第１のサービスアドレス）とデータの送出先（第２のサービスアドレス）との関係が分岐テーブルとして管理されているので、各プロキシはそれぞれの通信（セッション）についてデータの入出力を分岐テーブルに基づいて制御することができる。
また、同一の第１のサービスアドレスに対して複数の第２のサービスアドレスを関連付けることができるので、各プロキシにおいて１つの入力を分岐して複数の送出先に送ることができ、マルチキャストのデータ配信が実現する。
【００１７】
更に、各々のアプリケーションプログラムの所在及び各々のプロキシの所在がリソーステーブルとして管理されているので、無線リンクの切断などによって通信環境が変化した場合であってもリソーステーブルに基づいて通信経路を変更し、通信を継続することができる。
また、通信経路を切り替える場合には、切替元がサービスを中断した位置の情報が切替先のアプリケーションプログラムに通知されるので、切替先では中断された位置から通信を再開しサービスを継続することができる。
【００１８】
従って、ノードの移動，ネットワークの分割，統合，ノードのネットワークからの離脱，ノード自体の変更等が発生し、目的とするマスターエージェントが利用できなくなった場合であっても、そのままサービスを継続することができる。請求項２は、請求項１のマルチキャスト通信制御方法において、プロキシがマルチキャストの新たな接続要求を表す接続フレームを他のノードから受信した場合には、宛先のアプリケーションプログラムもしくはその宛先と接続されている通信経路上のプロキシに対する接続が確立した後で、前記接続フレームに該当する接続情報を前記分岐テーブルに追加することを特徴とする。
【００１９】
請求項２においては、プロキシが受信した接続フレームに従って新たな接続情報を前記分岐テーブルに追加するので、マルチキャストのデータ配信を行っている途中であっても配信先に新たなクライアントを追加することが可能になる。
請求項３は、請求項１のマルチキャスト通信制御方法において、各々のプロキシは、アプリケーションプログラムもしくは他のプロキシから受信したデータをそれが属するノード上のキャッシュに通信コネクション毎に分離して一時的に蓄積してから前記分岐テーブルの内容に従って送信するとともに、通信リンクが確立されている通信コネクションについてはキャッシュに蓄積されたデータを順次に送出し、通信リンクが一定時間途切れた通信コネクションについては未送信のデータをキャッシュ上に保持しておき、通信リンクが回復するかもしくは通信リンクが再構築された後で、キャッシュに蓄積されているデータを送出することを特徴とする。
【００２０】
請求項３においては、各々のプロキシが受信したデータをそれが属するノード上のキャッシュに蓄積するので、例えば無線リンクにおけるデータ誤り発生や無線リンクの切断などに対して、キャッシュに蓄積されているデータを用いてプロキシがデータを再送することができる。このため、データ誤りや無線リンク切断の影響をプロキシで吸収し、それがサーバの動作に影響を及ぼすのを避けることができる。従って、マルチキャストのデータ配信を効率的に行うことができる。
【００２１】
請求項４は、請求項１のマルチキャスト通信制御方法において、宛先のアプリケーションプログラムを表す第３のサービスアドレスと、それに接続されている通信経路上で自プロキシの次ホップに位置する他のプロキシを表す第４のサービスアドレスとの対応関係をプロキシルーチングテーブルとして管理し、各ノードに存在する通信デバイスのネットワークアドレスをロケーションテーブルとして管理することを特徴とする。
【００２２】
請求項４においては、プロキシルーチングテーブルを参照することにより、宛先のアプリケーションプログラムと次ホップの他のプロキシとの対応関係を把握でき、ロケーションテーブルを参照することにより、各ノードに存在する通信デバイスのネットワークアドレスを把握できる。
従って、例えばマルチキャストのデータ配信を行っている通信経路上で無線リンクが切断された場合であっても、使用する通信デバイスやノードを切り替えてサービスを継続することが可能になる。
【００２３】
請求項５は、請求項２のマルチキャスト通信制御方法において、宛先のアプリケーションプログラムを表す第３のサービスアドレスと、その宛先に接続されている通信経路上で自プロキシの次ホップに位置する他のプロキシを表す第４のサービスアドレスとの対応関係をプロキシルーチングテーブルとして管理し、各ノードに存在する通信デバイスのネットワークアドレスをロケーションテーブルとして管理し、他のノードから受信した接続フレームに対して接続を確立できない場合には、サービス不能フレームを前記接続フレームの送信元に対して送信し、前記サービス不能フレームを受け取った場合には、前記プロキシルーチングテーブル上の該当するサービスアドレスについて利用不可を表す情報を記録することを特徴とする。
【００２４】
請求項５においては、プロキシルーチングテーブルを参照することにより、宛先のアプリケーションプログラムと次ホップの他のプロキシとの対応関係を把握でき、ロケーションテーブルを参照することにより、各ノードに存在する通信デバイスのネットワークアドレスを把握できる。
【００２５】
従って、例えばマルチキャストのデータ配信を行っている通信経路上で無線リンクが切断された場合であっても、使用する通信デバイスやノードを切り替えてサービスを継続することが可能になる。
また、受信した接続フレームに対して接続を確立できないサービスアドレスについては利用不可を表す情報が記録されるので、プロキシルーチングテーブルを参照することにより効率的にマルチキャストのルーチングを行うことができる。
【００２６】
請求項６は、ノードを構成する各通信装置にアプリケーションプログラム及び通信を中継するプロキシの少なくとも一方が設けられ、アプリケーションプログラムを備える複数のノードが複数のプロキシ及び所定のネットワークを介して互いに接続される通信システムの制御に用いる通信制御装置であって、プロキシが配置されたノード上で、各々のアプリケーションプログラム及び各々のプロキシを特定するサービスアドレス、並びに各々の通信を表すセッションを管理するセッション管理手段と、プロキシが配置されたノード上で、各々のアプリケーションプログラムの所在及び各々のプロキシの所在を管理するリソーステーブルと、プロキシが配置されたノード上で、セッション毎に、各々のプロキシに対して、データを入力するアプリケーションプログラム又はプロキシを表す第１のサービスアドレスと、入力されたデータの送出先のアプリケーションプログラム又はプロキシを表す第２のサービスアドレスとの対応関係を管理するとともに、同一の第１のサービスアドレスに対して複数の第２のサービスアドレスを関連付けることを許容する分岐テーブルと、前記分岐テーブルの内容に従って各々のプロキシに入力されるデータの送出先を制御するプロキシ制御手段と、プロキシが配置されたノード上で、送信元から指定された宛先への通信回線の接続を行う際、もしくは通信中に宛先の第１のアプリケーションプログラムが利用できない状態が発生した場合には、通信を中継する少なくとも１つのプロキシの制御により、代替え可能な第２のアプリケーションプログラムを検索し、見つかった第２のアプリケーションプログラムとの間で通信経路を確立する通信経路確立手段と、プロキシが配置されたノード上で、通信サービスを提供する通信経路を切り替える場合には、前記通信経路上に配置されたプロキシが、切替元の第１のアプリケーションプログラムにおけるサービス中断位置に関する情報を切替先の第２のアプリケーションプログラムに通知し、前記プロキシが切替先との間の通信コネクションを該当する通信サービスの通信コネクションと結び付ける通信経路切り替え手段とを設けたことを特徴とする。
【００２７】
請求項６の通信制御装置を用いることにより、請求項１のマルチキャスト通信制御方法を実施できる。
請求項７は、請求項６の通信制御装置において、プロキシがマルチキャストの新たな接続要求を表す接続フレームを他のノードから受信した場合に、宛先のアプリケーションプログラムもしくはその宛先と接続されている通信経路上のプロキシに対する接続が確立した後で、前記接続フレームに該当する接続情報を前記分岐テーブルに追加する分岐テーブル更新手段を更に設けたことを特徴とする。
【００２８】
請求項７の通信制御装置を用いることにより、請求項２のマルチキャスト通信制御方法を実施できる。
請求項８は、請求項６の通信制御装置において、プロキシがアプリケーションプログラムもしくは他のプロキシから受信したデータを一時的に蓄積するキャッシュを、前記プロキシの属するノード上に設けたことを特徴とする。
【００２９】
請求項８の通信制御装置を用いることにより、請求項３のマルチキャスト通信制御方法を実施できる。
請求項９は、請求項６の通信制御装置において、宛先のアプリケーションプログラムを表す第３のサービスアドレスと、それに接続されている通信経路上で自プロキシの次ホップに位置する他のプロキシを表す第４のサービスアドレスとの対応関係を管理するプロキシルーチングテーブルと、各ノードに存在する通信デバイスのネットワークアドレスを管理するロケーションテーブルとを更に設けたことを特徴とする。
【００３０】
請求項９の通信制御装置を用いることにより、請求項４のマルチキャスト通信制御方法を実施できる。
請求項１０は、請求項７の通信制御装置において、宛先のアプリケーションプログラムを表す第３のサービスアドレスと、その宛先に接続されている通信経路上で自プロキシの次ホップに位置する他のプロキシを表す第４のサービスアドレスとの対応関係を管理するプロキシルーチングテーブルと、各ノードに存在する通信デバイスのネットワークアドレスを管理するロケーションテーブルと、他のノードから受信した接続フレームに対して接続を確立できない場合には、サービス不能フレームを前記接続フレームの送信元に対して送信するサービス不能フレーム送信手段と、前記サービス不能フレームを受け取った場合には、前記プロキシルーチングテーブル上の該当するサービスアドレスについて利用不可を表す情報を記録する利用不可情報記録手段とを更に設けたことを特徴とする。
【００３１】
請求項１０の通信制御装置を用いることにより、請求項５のマルチキャスト通信制御方法を実施できる。
請求項１１は、ノードを構成する各通信装置にアプリケーションプログラム及び通信を中継するプロキシの少なくとも一方が設けられ、アプリケーションプログラムを備える複数のノードが複数のプロキシ及び所定のネットワークを介して互いに接続される通信システムの制御に用いるマルチキャスト通信制御のためのコンピュータで実行可能な制御プログラムを記録した記録媒体であって、前記制御プログラムには、各々のアプリケーションプログラム及び各々のプロキシを特定するサービスアドレス、並びに各々の通信を表すセッションを管理する手順と、各々のアプリケーションプログラムの所在及び各々のプロキシの所在をリソーステーブルとして管理する手順と、セッション毎に、各々のプロキシに対して、データを入力するアプリケーションプログラム又はプロキシを表す第１のサービスアドレスと、入力されたデータの送出先のアプリケーションプログラム又はプロキシを表す第２のサービスアドレスとの対応関係を分岐テーブルとして管理するとともに、同一の第１のサービスアドレスに対して複数の第２のサービスアドレスを関連付けることを許容する手順と、各々のプロキシが、それに対応付けられた前記分岐テーブルの内容に従って入力されるデータの送出を制御する手順と、送信元から指定された宛先への通信回線の接続を行う際、もしくは通信中に宛先の第１のアプリケーションプログラムが利用できない状態が発生した場合には、通信を中継する少なくとも１つのプロキシの制御により、代替え可能な第２のアプリケーションプログラムを検索し、見つかった第２のアプリケーションプログラムとの間で通信経路を確立する手順と、通信サービスを提供する通信経路を切り替える場合には、前記通信経路上に配置されたプロキシが、切替元の第１のアプリケーションプログラムにおけるサービス中断位置に関する情報を切替先の第２のアプリケーションプログラムに通知し、前記プロキシが切替先との間の通信コネクションを該当する通信サービスの通信コネクションと結び付ける手順とを設けたことを特徴とする。
【００３２】
請求項１１の記録媒体に記録された制御プログラムを所定のコンピュータで実行することにより、請求項１の方法を実施できる。
請求項１２は、ノードを構成する各通信装置にアプリケーションプログラム及び通信を中継するプロキシの少なくとも一方が設けられ、アプリケーションプログラムを備える複数のノードが複数のプロキシ及び所定のネットワークを介して互いに接続される通信システムの制御に用いるマルチキャスト通信制御のためのコンピュータで実行可能な制御プログラムであって、各々のアプリケーションプログラム及び各々のプロキシを特定するサービスアドレス、並びに各々の通信を表すセッションを管理する手順と、各々のアプリケーションプログラムの所在及び各々のプロキシの所在をリソーステーブルとして管理する手順と、セッション毎に、各々のプロキシに対して、データを入力するアプリケーションプログラム又はプロキシを表す第１のサービスアドレスと、入力されたデータの送出先のアプリケーションプログラム又はプロキシを表す第２のサービスアドレスとの対応関係を分岐テーブルとして管理するとともに、同一の第１のサービスアドレスに対して複数の第２のサービスアドレスを関連付けることを許容する手順と、各々のプロキシが、それに対応付けられた前記分岐テーブルの内容に従って入力されるデータの送出を制御する手順と、送信元から指定された宛先への通信回線の接続を行う際、もしくは通信中に宛先の第１のアプリケーションプログラムが利用できない状態が発生した場合には、通信を中継する少なくとも１つのプロキシの制御により、代替え可能な第２のアプリケーションプログラムを検索し、見つかった第２のアプリケーションプログラムとの間で通信経路を確立する手順と、通信サービスを提供する通信経路を切り替える場合には、前記通信経路上に配置されたプロキシが、切替元の第１のアプリケーションプログラムにおけるサービス中断位置に関する情報を切替先の第２のアプリケーションプログラムに通知し、前記プロキシが切替先との間の通信コネクションを該当する通信サービスの通信コネクションと結び付ける手順とを設けたことを特徴とする。
【００３３】
請求項１２の制御プログラムを所定のコンピュータで実行することにより、請求項１の方法を実施できる。
【００３４】
【発明の実施の形態】
本発明の実施の形態について以下に説明する。この形態は全ての請求項に対応する。
【００３５】
この形態では、請求項６のセッション管理手段，リソーステーブル，分岐テーブル及びプロキシ制御手段は、それぞれセッション管理部５０２，リソーステーブルＲＳＴ，分岐テーブルＪＣＴ及びコネクション管理部５０４に対応する。
また、請求項７の分岐テーブル更新手段はステップＳ２２４，Ｓ２２７，Ｓ２３４に対応する。請求項８のキャッシュはキャッシュ管理部５０３に対応する。請求項９のプロキシルーチングテーブル及びロケーションテーブルは、それぞれプロキシルーチングテーブルＰＲＴ及びロケーションテーブルＬＣＴに対応する。
【００３６】
請求項１０のプロキシルーチングテーブル，ロケーションテーブル，サービス不能フレーム送信手段及び利用不可情報記録手段は、それぞれプロキシルーチングテーブルＰＲＴ，ロケーションテーブルＬＣＴ，ステップＳ２３５及びステップＳ２１２に対応する。
本発明の特徴的な説明に入る前に、本発明を実施する際に必要とされる基本技術について説明する。
【００３７】
（第１の基本技術）
図３０〜図４９を参照して説明する。
図３０はプロキシ及びアプリケーションを切り替える場合の制御シーケンスを示すシーケンス図である。図３１はプロキシ及びアプリケーションを切り替える場合の通信経路の例を示すブロック図である。図３２はセッションにプロキシを追加する場合の制御シーケンスを示すシーケンス図である。図３３はセッションにプロキシを追加する場合の通信経路の例を示すブロック図である。
【００３８】
図３４はセッションからプロキシを削除する場合の制御シーケンスを示すシーケンス図である。図３５はセッションからプロキシを削除する場合の通信経路の例を示すブロック図である。図３６はセッション上のプロキシを置換する場合の制御シーケンスを示すシーケンス図である。図３７はセッション上のプロキシを置換する場合の通信経路の例を示すブロック図である。
【００３９】
図３８は通信システムの構成例を示すブロック図である。図３９は移動端末の構成例を示すブロック図である。図４０はサービス管理部ＳＲが保持する情報の例を示す模式図である。図４１は位置管理部ＬＲが保持する情報の例を示す模式図である。図４２はセッション管理部ＳＭが保持する情報の例を示す模式図である。
【００４０】
図４３は通信システムの構成例を示すブロック図である。図４４はネットワークの構成例を示すブロック図である。図４５はノード及びサービスの移動モデルを示すブロック図である。図４６は端末の移動時の位置情報更新手順を示すシーケンス図である。
この形態では、例えば図３８に示すような通信システムを利用する場合を想定している。図３８の例では、３種類のサブネットワーク５１，５２，５３が広域ネットワーク５４を介して互いに接続されている。
【００４１】
サブネットワーク５１においては、イーサネット（登録商標）の規格に沿って構成された通信インタフェースを介して、有線で多数の端末（５５，５６）を互いに通信可能な状態で接続することができる。
サブネットワーク５２は無線ＬＡＮを構成している。この規格に適合する無線通信インタフェースを備える移動端末５９，６０は、基地局５７，５８との間で無線通信が可能であり、無線でサブネットワーク５２と接続される。勿論、特定の通信可能エリアの外では基地局５７，５８との通信はできない。
【００４２】
サブネットワーク５３は、公衆無線通信システムであるＰＨＳのネットワークである。図３８の例では、サブネットワーク５３には移動端末６１，固定端末６２及びＴＡＰ（ＰＩＡＦＳ用ターミナルアダプタ）６３が接続され、ＴＡＰ６３には基地局６４，６５が接続されている。ＰＨＳの通信規格に沿って構成された無線通信インタフェースを備える移動端末６６，６７は、基地局６４，６５との間で無線通信が可能である。勿論、特定の通信可能エリアの外では基地局６４，６５との通信はできない。
【００４３】
例えば、図３８に示す移動端末５９が移動端末５５の近傍に移動した場合には、移動端末５９は基地局５７との無線通信ができなくなる可能性がある。しかし、その位置では移動端末５９を有線でサブネットワーク５１に接続することができる。
一般的なシステムの場合、端末が通信のために利用するネットワークをサブネットワーク５１，５２，５３の間で切り替える場合には、アプリケーションの通信を一旦終了して通信経路を再構築する必要があるため手間がかかる。
【００４４】
ここで説明する技術を用いることにより、端末が通信のために利用するネットワークをサブネットワーク５１，５２，５３の間で切り替える場合であっても、アプリケーションの通信を終了することなく自動的に切替を行うことができる。また、例えば移動端末５５及び固定端末５６に同一のアプリケーションプログラムが存在する場合には、一人のユーザが移動端末５５上のアプリケーションプログラムを利用して通信している途中で、固定端末５６上のアプリケーションプログラムに切り替えて継続的に通信を行うこともできる。
【００４５】
ここで用いる各端末（この例では移動端末）は、図３９のように構成される。図３９の移動端末は、サブネットワーク５１との接続を可能にするためにイーサネット（登録商標）通信アダプタ２１を備え、サブネットワーク５２との接続を可能にするために無線ＬＡＮアダプタ２２を備え、サブネットワーク５３との接続を可能にするためにＰＨＳ通信アダプタ２３を備えている。
【００４６】
また、図３９の移動端末はソフトウェア１０としてサーバアプリケーション１１，クライアントアプリケーション１２，プロキシ１３，エージェント１４，リンク切替部１５，リンク１６，１７，１８，位置管理部ＬＲ，セッション管理部ＳＭ及びサービス管理部ＳＲを備えている。
サーバアプリケーション１１は、特定のアプリケーションのサービスを提供するためのプログラムである。クライアントアプリケーション１２は、特定のアプリケーションについてサーバが提供するサービスを利用するためのプログラムである。
【００４７】
プロキシ１３は、ある送信元からある受信先への通信の中継を行うとともに通信の内容をそれ自身の記憶装置に蓄積する。例えば、一時的にプロキシ１３と受信先との間の通信が不能になった場合であっても、送信元からプロキシ１３に入力される通信の内容はプロキシ１３に蓄積されるので、プロキシ１３と受信先との間の通信が回復した場合には、プロキシ１３に蓄積された情報を受信先に送信し通信を継続することができる。
【００４８】
図３９のプロキシ１３は、サーバアプリケーション１１の通信又はクライアントアプリケーション１２の通信を中継することができる。
リンク切替部１５は他の端末との間の通信に利用するリンク１６，１７，１８を切り替える。リンク１６はイーサネット（登録商標）通信アダプタ２１と接続され、リンク１７は無線ＬＡＮアダプタ２２と接続され、リンク１８はＰＨＳ通信アダプタ２３と接続されている。
【００４９】
リンク１６及びイーサネット（登録商標）通信アダプタ２１を利用して通信する場合には、サブネットワーク５１を介して通信することができ、リンク１７及び無線ＬＡＮアダプタ２２を介して通信する場合には、サブネットワーク５２を介して通信することができ、リンク１８及びＰＨＳ通信アダプタ２３を利用する場合には、サブネットワーク５３を介して通信することができる。
【００５０】
つまり、リンク切替部１５で使用するリンク１６，１７，１８を切り替えることにより通信方式を切り替えて、サブネットワーク５１，５２，５３のいずれかに接続することができる。
通信を行う各端末には、それぞれＩＰ（Internet Protocol）アドレスが割り当てられる。また、端末が通信方式を切り替える際には、アドレスの割り当て単位であるサブネットの境界を超えて端末がネットワーク上を移動することになるため、切替のたびに新たなアドレスを用いる。
【００５１】
サービス管理部ＳＲは各端末に備わっているサーバアプリケーション１１，クライアントアプリケーション１２及びプロキシ１３の種類や機能の情報を管理している。
実際には、例えば図４０に示す内容がサービス管理部ＳＲに保持される。図４０の例では、端末Ａ１１はアプリケーションプログラムとしてサーバＢ１１を保持し、プロキシＣ１１を備えている。また、端末Ａ１２はアプリケーションプログラムとしてサーバＢ１２を保持し、プロキシＣ１２を備えている。更に、端末Ａ１３はアプリケーションプログラムとしてクライアントＢ１３を保持し、プロキシＣ１３を備えている。
【００５２】
位置管理部ＬＲは端末毎にＩＰアドレスを管理する。位置管理部ＬＲは、それを備えた端末だけでなく、多数の端末のＩＰアドレスを管理することができる。但し、位置管理の効率向上のため、ならびにリソースの少ない端末でも位置の管理ができるようにするため、端末の移動量及び位置管理に関する記憶可能容量の管理も行う。更に、管理する端末の範囲を限定するために複数の端末をグループで区分して管理する。
【００５３】
実際には、例えば図４１に示すように、端末の識別名Ｅ１０，グループ名Ｅ１１，ＩＰアドレスＥ１２，各ＩＰアドレスの状態（利用可否）Ｅ１３，移動量Ｅ１４，ＬＲの記憶容量及び更新時刻の情報が管理している特定グループの端末毎に保持される。
【００５４】
また、端末の移動などに伴って通信デバイスを切り替えた場合にはその端末のＩＰアドレスが変化するので、この場合には位置管理部ＬＲの保持する内容を更新する。同時に、通信相手が存在する場合には、その通信相手に対して位置情報の更新命令を送信する。すなわち、図４６に示す更新手順を実行する。
また、各端末が位置情報の更新命令を送信する場合には、所定の優先順位を考慮して命令を送信する順序を決定する。例えば、固定端末（デスクトップパソコンなど）５６のように移動量の少ない端末については高い優先順位を与える。また、位置情報の記憶容量（Ｅ１５）が大きい端末についても高い優先順位を与える。
【００５５】
位置管理部ＬＲの管理に用いられる各々のグループには、サブネットの境界を超える範囲に存在する複数の端末を含めることができる。また、１つのサブネット内には複数のグループを共存させることができる。
新たにグループに加入しようとする端末（Ｘ１）は、そのＩＰアドレスを取得し、グループ検索要求をサブネットワーク内にブロードキャストするか、又は既知の特定の端末（Ｘ２）に対してグループ検索要求を送信する。
【００５６】
その後、端末（Ｘ１）はグループ検索要求を受け取った端末（Ｘ２）からの応答を受信すると、その内容からグループの情報を取得し、加入するグループを選択する。
また、端末（Ｘ１）は端末（Ｘ２）に対して選択したグループへの登録要求を送信する。端末（Ｘ２）はこの登録要求を送信した端末（Ｘ１）の位置情報を取得する。
【００５７】
また、登録要求を受信した端末（Ｘ２）がそれに含まれる位置管理部ＬＲの情報を端末（Ｘ１）に送信し、加入した端末（Ｘ１）の位置情報を位置管理部ＬＲの内容に追加することによりグループへの加入手続きが完了する。
【００５８】
各端末に関する位置情報の検索を行う場合には、その端末自身に含まれる位置管理部ＬＲの保持している情報から位置情報の検索を行う。検索できなかった場合には、位置管理部ＬＲの保持している情報に含まれる任意の端末に対して検索要求を送出する。この検索要求に対して結果が返ってきたら、その位置情報を位置管理部ＬＲに追加する。
【００５９】
また、サブネット内の同じグループに属している端末を検索する場合には、ブロードキャストパケットを送信し、それに対する応答に基づいて位置管理部ＬＲに位置情報を登録する。
位置管理部ＬＲには、次に示す機能が含まれている。
（１）端末位置の移動などに伴うＩＰアドレスの変更
（２）ノードの離脱，回線断，障害などに伴うＩＰアドレスの状態の変更
（３）エージェント１４に対する変更の通知
（４）グループへの参加及び離脱
（５）グループ内のノードの位置管理部ＬＲとの間の位置情報の送受信
図３９のセッション管理部ＳＭは、各々の通信についてその通信経路の全体をセッションとして管理している。例えば、図４４においては、セッション１０３を用いてアプリケーション１０１とアプリケーション１０２との間で通信することができる。この場合、セッション１０３にはプロキシ１０４，１０５，１０６が含まれている。
【００６０】
また、セッション１０３は通信コネクション１０７，１０８，１０９，１１０を利用する。通信コネクション１０７は、アプリケーション１０２とプロキシ１０４との間に確立された通信路である。通信コネクション１０８は、プロキシ１０４，１０５の間に確立された通信路である。通信コネクション１０９は、プロキシ１０５，１０６の間に確立された通信路である。通信コネクション１１０は、アプリケーション１０１とプロキシ１０６との間に確立された通信路である。
【００６１】
実際のセッション管理部ＳＭは、例えば図４２に示すような情報Ｇ１１〜Ｇ１８を保持している。情報Ｇ１１は、複数のセッションを区別するための識別子である。情報Ｇ１２は、利用するサーバアプリケーションが存在するノード（端末）の名称を表す。情報Ｇ１３は、利用するサーバアプリケーションに与えられたポート番号を表す。
【００６２】
また、情報Ｇ１４は利用するクライアントアプリケーションが存在するノードの名称を表す。情報Ｇ１５は、利用するクライアントアプリケーションに与えられたポート番号を表す。情報Ｇ１６は、利用するプロキシが存在するノードの名称を表す。情報Ｇ１７は、利用するプロキシに与えられたポートの番号を表す。また、複数のプロキシを中継するように１つのセッションの通信経路を構成している場合には、利用する複数プロキシのそれぞれのノード名，ポート番号及び複数プロキシの接続状態が１つのセッションＩＤ（Ｇ１１）に関連付けられてセッション管理部ＳＭに保持される。
【００６３】
セッション管理部ＳＭが実行する機能としては、各セッションに対するプロキシの追加，プロキシの削除，プロキシの切替や、他の端末に存在するセッション管理部ＳＭとの間の通信がある。
図３９のエージェント（アプリケーションとは異なる）１４は、位置管理部ＬＲ，セッション管理部ＳＭ，サービス管理部ＳＲが保持している様々な情報を仲介し、それらの情報の総合的な判断により、プロキシ１３及びリンク切替部１５を制御する。
【００６４】
例えば、所定の通信サービスを継続した状態でそのサービスを現在提供しているサーバアプリケーションを終了させたい場合には、それと同じ種類の代わりのサーバアプリケーションについてサービス管理部ＳＲを用いて検索することができる。
また、位置管理部ＬＲには端末の識別名及びそのＩＰアドレスが保持されているので、切替先のサーバアプリケーションが存在する端末の位置を特定できる。更に、セッション管理部ＳＭで管理されている特定のセッションの情報を利用して後述する処理を行うことにより、サーバアプリケーションを切り替えて通信サービスを継続することができる。
【００６５】
エージェント１４は、リンク切替部１５に対してリンク切替を命令するとともに、リンク切替後、プロキシに通信コネクションの再開処理を依頼する。リンク切替部１５は、新しいリンクへの接続，リンクの切断，ルーティング管理などの機能を有している。また、プロキシは、コネクション下のリンクの切断や変更を隠蔽する機能を有している（図４５参照）。
【００６６】
ある移動元からある移動先にサービスを移動する場合には、そのサービスの通信で利用しているセッションから、移動先のアプリケーション又はプロキシ上に構築されるサービスに対して移動元のサービスの状態を転送することで実現することができる。転送すべきサービスの状態としては、セッションを構成しているアプリケーション及びプロキシの接続状態，送受信しているデータのバイト数，フレーム数などがある。
【００６７】
例えば、携帯型の移動端末を用い、無線回線及びネットワークを介して特定のサーバアプリケーションからストリームデータを受信し閲覧している場合には、端末の表示能力が低いため品質の高いサービスを受けることができない。しかし、ユーザが移動端末から画面の大きい固定端末にサービスを移動すれば、品質の高いサービスを受けることができる。このような移動の場合でも、継続的にサービスを利用することができる。
【００６８】
また、同じサーバアプリケーションが複数の端末に存在する場合には、サーバ側の端末及びアプリケーションを切り替えるようにサービスの提供に利用される通信経路を切り替えることもできる。端末の切替により、サービスの通信速度を改善することも可能である。
サービスの提供に利用される通信経路を切り替える場合や、サーバアプリケーション又はクライアントアプリケーションを切り替える場合の具体例について以下に説明する。ここでは、図４３に示すような通信システムを想定する。
【００６９】
図４３においては移動端末３０(1)〜３０(5)のそれぞれの機能を簡略化して表してある。実際には、移動端末３０(1)〜３０(5)のそれぞれは図３９に示す移動端末と同様の機能を有している。
但し、サーバアプリケーション１１は移動端末３０(1)だけに設けてあり、クライアントアプリケーション１２は移動端末３０(2)及び３０(3)だけに設けてある。また、移動端末３０(5)にはセッション管理部ＳＭが備わっていない。なお、移動端末３０(5)のプロキシ１３を利用する場合には、移動端末３０(5)以外の移動端末３０に備わったセッション管理部ＳＭを利用して制御を行えばよい。
【００７０】
まず、プロキシ及びアプリケーションを切り替える場合について説明する。具体的には、切替前の状態では図３１において移動端末３０(1)のサーバアプリケーション１１(1)とプロキシ１３(1)との間に通信コネクション２０１が確立され、プロキシ１３(1)とプロキシ１３(2)との間に通信コネクション２０２が確立され、クライアントアプリケーション１２(2)とプロキシ１３(2)との間に通信コネクション２０３が確立され、サーバアプリケーション１１(1)−プロキシ１３(1)−プロキシ１３(2)−クライアントアプリケーション１２(2)の通信経路を通るようにセッションが形成されている場合を想定している。
【００７１】
ここで、移動端末３０(2)上のクライアントアプリケーション１２(2)の代わりに移動端末３０(3)上のクライアントアプリケーション１２(3)を利用して継続的にサーバアプリケーション１１(1)のサービスを受けようとする場合には、セッション管理部ＳＭ(2)の機能を利用して、図３０に示す制御シーケンスを実行する。すなわち、プロキシ１３(2)からプロキシ１３(3)に切り替える。
【００７２】
ユーザの利用状態及び端末間の接続状態を管理している端末のエージェント１４は、必要に応じて（例えばユーザの指示により）アプリケーション（ＡＰ）の切替要求を発生する。
【００７３】
この切替要求は、例えばセッション管理部ＳＭ(2)に通知される。この場合、セッション管理部ＳＭ(2)は図３０のステップＳ１１を実行する。すなわち、切替先のクライアントアプリケーション１２(3)との間で通信コネクション２０４が確立された切替先のプロキシ１３(3)に切り替えるために、プロキシ１３(3)に対して切替に関する問い合わせを行う。この問い合わせの際には、該当するセッションのセッションＩＤやプロキシの接続状態の情報もパラメータとしてセッション管理部ＳＭ(2)からプロキシ１３(3)に送信する。
【００７４】
このパラメータには、切替元のプロキシ１３(2)が転送を中継しているファイルのファイル名及び転送を終了したバイト数（ファイル上の現在の転送位置）も含まれている。
問い合わせを受けたプロキシ１３(3)は、受信したパラメータに基づいて、必要なプロセス等を起動し、ステップＳ１２で通信の中継をするための準備を行う。このプロキシ１３(3)は、受信したパラメータに基づいて切替元のプロキシ１３(2)の状態を継承する。
【００７５】
また、この準備においては、必要なアプリケーション１２(3)が起動していない場合には、そのアプリケーション１２(3)をプロキシ１３(3)が起動する。また、アプリケーション１２(3)とプロキシ１３(3)との間の通信コネクション２０４が確立していない場合には、通信コネクション２０４を確立する。
準備が完了したら、ステップＳ１３でプロキシ１３(3)はセッション管理部ＳＭ(2)に対して準備完了通知を送信する。
【００７６】
セッション管理部ＳＭ(2)は、準備完了通知を受信するとステップＳ１４で、切替元のプロキシ１３(2)との間で通信コネクション２０２を確立していたプロキシ１３(1)に対して切替要求を送信する。この切替要求には、パラメータとして切替先のプロキシ１３(3)に関するノード名（Ｇ１６）及びポート番号（Ｇ１７）が含まれている。
【００７７】
プロキシ１３(1)は、切替要求を受信した場合には、切替要求のパラメータ及びセッションＩＤを利用して、プロキシ１３(3)の接続ポイント（端末のＩＰアドレスとプロキシ１３(3)のポート番号）に対して通信コネクション２０５を確立する（Ｓ１５）。
プロキシ１３(3)はプロキシ１３(1)との間で通信コネクション２０５が確立すると、通信コネクション２０５の確立の際に受信したセッションＩＤで定まる特定のセッションについて、通信コネクション２０４及びクライアントアプリケーション１２(3)を関連付ける（Ｓ１６）。これにより、通信コネクション２０５と通信コネクション２０４との間の通信を中継（蓄積転送）するためのプロキシ１３(3)の準備が完了する。
【００７８】
また、プロキシ１３(1)はそれまでに通信コネクション２０２を介して行っていた全ての通信を通信コネクション２０５に切り替える（Ｓ１７）。この切替が完了した後、プロキシ１３(1)はセッション管理部ＳＭ(2)に対して切替の完了通知を送信する（Ｓ１８）。
セッション管理部ＳＭ(2)は、完了通知を受信すると管理しているテーブルの内容を更新する（Ｓ１９）。すなわち、セッションＩＤで定まる特定のセッション（今回の処理で切替を行ったセッション）について、切替後のクライアントアプリケーション１２(3)及びプロキシ１３(3)のノード名及びポート番号ならびにそれらの接続関係を反映するように情報を更新する。
【００７９】
また、セッション管理部ＳＭ(2)は、変更を行ったセッションの情報を管理している他のセッション管理部ＳＭ(1)，ＳＭ(3)，ＳＭ(4)に対して変更した情報を通知する（Ｓ２１）。
以上の制御シーケンスの結果、図３１に示すようにサーバアプリケーション１１(1)とクライアントアプリケーション１２(2)との間の通信で提供していたサービスが、サーバアプリケーション１１(1)とクライアントアプリケーション１２(3)との間の通信に切り替わるようにセッション（通信経路）の内容が変更される。
【００８０】
次に、セッションにプロキシを追加する場合について説明する。具体的には、追加前の状態では図３３に示すようにサーバアプリケーション１１(1)とプロキシ１３(1)との間に通信コネクション２１１が確立され、プロキシ１３(1)，１３(2)の間に通信コネクション２１２が確立され、プロキシ１３(2)とクライアントアプリケーション１２(2)との間に通信コネクション２１３が確立され、２つのプロキシ１３(1)，１３(2)がサーバアプリケーション１１(1)とクライアントアプリケーション１２(2)との間の通信をを中継するようにセッションが構築されている。
【００８１】
その状態から、通信を継続したままプロキシ１３(1)とプロキシ１３(2)との間にプロキシ１３(3)を追加する場合には、セッション管理部ＳＭ(2)の機能を利用して、図３２に示す制御シーケンスを実行する。
端末のエージェント１４は、必要に応じて（例えばユーザの指示により）プロキシの追加要求を発生する。この追加要求は、例えばセッション管理部ＳＭ(2)に通知される。この場合、セッション管理部ＳＭ(2)は図３２のステップＳ３１を実行する。
【００８２】
すなわち、追加すべきプロキシ１３(3)に追加の準備をさせるために、セッション管理部ＳＭ(2)は追加の問い合わせを行う。この問い合わせの際には、該当するセッションのセッションＩＤやプロキシの接続状態の情報もパラメータとしてセッション管理部ＳＭ(2)からプロキシ１３(3)に送信する。
このパラメータには、プロキシ１３(2)が転送を中継しているファイルのファイル名及び転送を終了したバイト数（ファイル上の現在の転送位置）も含まれている。
【００８３】
問い合わせを受けたプロキシ１３(3)は、受信したパラメータに基づいて、必要なプロセス等を起動し、ステップＳ３２で通信の中継をするための準備を行う。このプロキシ１３(3)は、受信したパラメータに基づいてプロキシ１３(2)の状態を継承する。準備が完了したら、ステップＳ３３でプロキシ１３(3)はセッション管理部ＳＭ(2)に対して準備完了通知を送信する。
【００８４】
セッション管理部ＳＭ(2)は、準備完了通知を受信すると、ステップＳ３４，Ｓ３５で、追加するプロキシ１３(3)と接続すべきプロキシ１３(1)，１３(2)に対して切替要求を送信する。この切替要求には、パラメータとして追加するプロキシ１３(3)に関するノード名（Ｇ１６）及びポート番号（Ｇ１７）が含まれる。
プロキシ１３(1)及び１３(2)は、切替要求を受信すると、切替要求のパラメータ及びセッションＩＤを利用して、プロキシ１３(3)の接続ポイント（端末のＩＰアドレスとプロキシ１３(3)のポート番号）に対して通信コネクション２１４又は２１５を確立する（Ｓ３６，Ｓ３７）。
【００８５】
プロキシ１３(3)は通信コネクション２１４，２１５が確立すると、それらのコネクションの確立の際に受信したセッションＩＤで定まる特定のセッションについて、通信コネクション２１４と通信コネクション２１５とを関連付ける（Ｓ３８）。これにより、通信コネクション２１４と通信コネクション２１５との間の通信を中継（蓄積転送）するためのプロキシ１３(3)の準備が完了する。
【００８６】
一方、プロキシ１３(1)はそれまでに通信コネクション２１２を介して行っていた全ての通信を通信コネクション２１４に切り替える（Ｓ４１）。この切替が完了した後、プロキシ１３(1)はセッション管理部ＳＭ(2)に対して切替の完了通知を送信する（Ｓ４４）。
同様に、プロキシ１３(2)はそれまでに通信コネクション２１２を介して行っていた全ての通信を通信コネクション２１５に切り替える（Ｓ４０）。この切替が完了した後、プロキシ１３(2)はセッション管理部ＳＭ(2)に対して切替の完了通知を送信する（Ｓ４２）。
【００８７】
セッション管理部ＳＭ(2)は、完了通知を受信すると管理しているテーブルの内容を更新する（Ｓ４５）。すなわち、セッションＩＤで定まる特定のセッション（今回の処理でプロキシの追加を行ったセッション）について、追加したプロキシ１３(3)のノード名及びポート番号ならびにプロキシ間の接続関係を反映するように情報を更新する。
【００８８】
また、セッション管理部ＳＭ(2)は、変更を行ったセッションの情報を管理している他のセッション管理部ＳＭ(1)，ＳＭ(3)，ＳＭ(4)に対して変更した情報を通知する（Ｓ４６）。
以上の制御シーケンスの結果、図３３に示すようにサーバアプリケーション１１(1)とクライアントアプリケーション１２(2)との間の通信がプロキシ１３(1)−プロキシ１３(3)−プロキシ１３(2)の経路で中継されるようにセッションの内容が変更される。
【００８９】
次に、セッションからそれまで利用していたプロキシを削除する場合について説明する。具体的には、追加前の状態では図３５に示すようにサーバアプリケーション１１(1)とプロキシ１３(1)との間に通信コネクション２２１が確立され、プロキシ１３(1)，１３(3)の間に通信コネクション２２２が確立され、プロキシ１３(3)，１３(2)の間に通信コネクション２２３が確立され、プロキシ１３(2)とクライアントアプリケーション１２(2)との間に通信コネクション２２４が確立され、３つのプロキシ１３(1)，１３(3)，１３(2)がサーバアプリケーション１１(1)とクライアントアプリケーション１２(2)との間の通信をを中継するようにセッションが構築されている。
【００９０】
その状態から、通信を継続したままプロキシ１３(1)とプロキシ１３(2)との間のプロキシ１３(3)を削除（セッションから除外）する場合には、セッション管理部ＳＭ(2)の機能を利用して、図３４に示す制御シーケンスを実行する。
端末のエージェント１４は、必要に応じて（例えばユーザの指示により）プロキシの削除要求を発生する。この削除要求は、例えばセッション管理部ＳＭ(2)に通知される。この場合、セッション管理部ＳＭ(2)は図３４のステップＳ５１から順に処理を実行する。
【００９１】
セッション管理部ＳＭ(2)は、削除対象のプロキシ１３(3)との間で通信コネクション２２２，２２３を確立しているプロキシ１３(1)及び１３(2)のそれぞれに対して、プロキシ１３(3)に関する削除要求を送信する（Ｓ５１，Ｓ５２）。
プロキシ１３(2)は、削除要求を受信すると、セッションＩＤを利用して、プロキシ１３(2)とプロキシ１３(1)との間の通信コネクション２２５を確立する（Ｓ５３）。
【００９２】
更に、プロキシ１３(2)はそれまでに通信コネクション２２３を介して行っていた全ての通信を通信コネクション２２５に切り替える（Ｓ５４）。この切替が完了した後、プロキシ１３(2)はセッション管理部ＳＭ(2)に対して切替の完了通知を送信する（Ｓ５８）。プロキシ１３(2)とプロキシ１３(3)との間の通信コネクション２２３はプロキシ１３(2)によって切断される（Ｓ５６）。
【００９３】
同様に、プロキシ１３(1)はそれまでに通信コネクション２２２を介して行っていた全ての通信を通信コネクション２２５に切り替える（Ｓ５５）。この切替が完了した後、プロキシ１３(1)はセッション管理部ＳＭ(2)に対して切替の完了通知を送信する（Ｓ５９）。プロキシ１３(1)とプロキシ１３(3)との間の通信コネクション２２２はプロキシ１３(1)によって切断される（Ｓ５７）。
【００９４】
セッション管理部ＳＭ(2)は、完了通知を受信すると管理しているテーブルの内容を更新する（Ｓ６０）。すなわち、セッションＩＤで定まる特定のセッション（今回の処理でプロキシの削除を行ったセッション）について、プロキシ間の接続関係に削除の結果を反映するように情報を更新する。
また、セッション管理部ＳＭ(2)は、変更を行ったセッションの情報を管理している他のセッション管理部ＳＭ(1)，ＳＭ(3)，ＳＭ(4)に対して変更した情報を通知する（Ｓ６１）。
【００９５】
以上の制御シーケンスの結果、図３５に示すようにサーバアプリケーション１１(1)とクライアントアプリケーション１２(2)との間の通信がプロキシ１３(1)−プロキシ１３(2)の経路で中継されるようにセッションの内容が変更される。
次に、特定のセッション上で利用しているプロキシを他のプロキシに置き換える場合について説明する。具体的には、追加前の状態では図３７に示すようにサーバアプリケーション１１(1)とプロキシ１３(1)との間に通信コネクション２３１が確立され、プロキシ１３(1)，１３(4)の間に通信コネクション２３２が確立され、プロキシ１３(4)，１３(2)の間に通信コネクション２３３が確立され、プロキシ１３(2)とクライアントアプリケーション１２(2)との間に通信コネクション２３４が確立され、３つのプロキシ１３(1)，１３(4)，１３(2)がサーバアプリケーション１１(1)とクライアントアプリケーション１２(2)との間の通信をを中継するようにセッションが構築されている。
【００９６】
その状態から、通信を継続したまま利用しているプロキシ１３(4)をプロキシ１３(5)に置換する場合には、セッション管理部ＳＭ(2)の機能を利用して、図３６に示す制御シーケンスを実行する。
端末のエージェント１４は、必要に応じて（例えばユーザの指示により）プロキシの置換要求を発生する。この置換要求は、例えばセッション管理部ＳＭ(2)に通知される。この場合、セッション管理部ＳＭ(2)は図３６のステップＳ７１を実行する。
【００９７】
すなわち、置換先のプロキシ１３(5)に中継の準備をさせるために、セッション管理部ＳＭ(2)は置換の問い合わせを行う。この問い合わせの際には、該当するセッションのセッションＩＤやプロキシの接続状態の情報もパラメータとしてセッション管理部ＳＭ(2)からプロキシ１３(5)に送信する。
このパラメータには、置換元のプロキシ１３(4)が転送を中継しているファイルのファイル名及び転送を終了したバイト数（ファイル上の現在の転送位置）も含まれている。
【００９８】
問い合わせを受けたプロキシ１３(5)は、受信したパラメータに基づいて、必要なプロセス等を起動し、ステップＳ７２で通信の中継をするための準備を行う。このプロキシ１３(5)は、受信したパラメータに基づいて置換元のプロキシ１３(4)の状態を継承する。準備が完了したら、ステップＳ７３でプロキシ１３(5)はセッション管理部ＳＭ(2)に対して準備完了通知を送信する。
【００９９】
セッション管理部ＳＭ(2)は、準備完了通知を受信すると、ステップＳ７４，Ｓ７５で、置換元のプロキシ１３(4)との間に通信コネクション２３２，２３３を確立しているプロキシ１３(1)，１３(2)に対して切替要求を送信する。この切替要求には、パラメータとして置換先のプロキシ１３(5)に関するノード名（Ｇ１６）及びポート番号（Ｇ１７）が含まれる。
【０１００】
プロキシ１３(1)及び１３(2)は、切替要求を受信すると、切替要求のパラメータ及びセッションＩＤを利用して、プロキシ１３(5)の接続ポイント（端末のＩＰアドレスとプロキシ１３(3)のポート番号）に対して通信コネクション２３５又は２３６を確立する（Ｓ７６，Ｓ７７）。
置換先のプロキシ１３(5)は、通信コネクション２３５，２３６が確立すると、それらのコネクションの確立の際に受信したセッションＩＤで定まる特定のセッションについて、通信コネクション２３５と通信コネクション２３６とを関連付ける（Ｓ７８）。これにより、通信コネクション２３５と通信コネクション２３６との間の通信を中継（蓄積転送）するためのプロキシ１３(5)の準備が完了する。
【０１０１】
一方、プロキシ１３(2)はそれまでに通信コネクション２３３を介して行っていた全ての通信を通信コネクション２３６に切り替える（Ｓ８０）。この切替が完了した後、プロキシ１３(2)はセッション管理部ＳＭ(2)に対して切替の完了通知を送信する（Ｓ８２）。
同様に、プロキシ１３(1)はそれまでに通信コネクション２３２を介して行っていた全ての通信を通信コネクション２３５に切り替える（Ｓ８１）。この切替が完了した後、プロキシ１３(1)はセッション管理部ＳＭ(2)に対して切替の完了通知を送信する（Ｓ８３）。
【０１０２】
通信コネクション２３２，２３３から通信コネクション２３５，２３６への切替が終了した後で、不要になった通信コネクション２３２，２３３は切断される（Ｓ８４，Ｓ８５）。
セッション管理部ＳＭ(2)は、完了通知を受信すると管理しているテーブルの内容を更新する（Ｓ８６）。すなわち、セッションＩＤで定まる特定のセッション（今回の処理でプロキシの置換を行ったセッション）について、プロキシ間の接続関係に置換の結果を反映するように情報を更新する。
【０１０３】
また、セッション管理部ＳＭ(2)は、変更を行ったセッションの情報を管理している他のセッション管理部ＳＭ(1)，ＳＭ(3)，ＳＭ(4)に対して変更した情報を通知する（Ｓ８７）。
以上の制御シーケンスの結果、図３７に示すようにサーバアプリケーション１１(1)とクライアントアプリケーション１２(2)との間の通信がプロキシ１３(1)−プロキシ１３(5)−プロキシ１３(2)の経路で中継されるようにセッションの内容が変更される。
【０１０４】
なお、サーバアプリケーション１１とクライアントアプリケーション１２との間で行われる通信には、セッション毎に異なる固有のセッションＩＤが割り当てられる。また、プロキシの接続ポイントは、ネットワーク上での位置と接続要求の受付ポートを表す。プロトコルとしてＴＣＰ／ＩＰを想定する場合には、接続ポイントはＩＰアドレスとプロキシがリッスンしているポート番号になる。
【０１０５】
また、例えばセッションの通信経路を切り替えるために通信コネクションを切り替える際には一時的に通信ができなくなるが、そのセッションに含まれている少なくとも１つのプロキシがアプリケーションの送出する通信内容を蓄積し、通信が可能になったときには蓄積された情報を送信して通信回復作業を自動的に行う。従って、通信の途中で通信経路を切り替える場合であっても、ユーザが特別な操作を行うことなくそのまま通信を継続することができる。
【０１０６】
ここで説明している機能の概略は、図４５に示す移動モデルで表すことができる。すなわち、ユーザが使用する端末が移動して通信方式が切り替わった場合や、ユーザが使用する端末を切り替えた場合でも、同じサービスを継続的に同じユーザに提供することができる。
ここで扱うサービスとは、各セッションを通してアプリケーション間で送受信される通信内容，それに付随する通信プロトコル（ｈｔｔｐ等）及び表現方法（再生，ブラウジング等）を意味する。
【０１０７】
サービスを移動する場合には、同じセッションＩＤで示される移動元のセッションから移動先のセッションに対してサービスの状態を転送することにより、同じ状態でサービスを継続することができる。
各端末（ノード）は、図４５に示すようにリンク層のアドレス空間にマッピングされる。従って、ノードの移動はノードとアドレスとの対応関係を変更することで実現できる。また、各端末は複数の通信デバイスをもつことが可能であり、それぞれが固有のアドレスを保持することができる。
【０１０８】
このような通信システムにおける位置管理の方式について性能を評価するために、計算機を用いてシミュレーションを実施した。シミュレーションの条件は次の通りである。
（１）端末の移動間隔：グループを構成している多数の端末のうち(１／３)は平均移動時間が３０分、残りの(２／３)の端末は平均移動時間を１０分とする。
【０１０９】
（２）端末の通信待機時間は２０分とし、通信時間は５０分とする。
（３）位置管理部ＬＲの記憶容量：多数の端末のうち(１／３)のＬＲは全ての端末の位置情報を保持可能、他の(１／３)の端末のＬＲは(１／２)の端末の位置情報を保持可能、残りの(１／３)の端末のＬＲは(１／４)の端末の位置情報を保持可能と仮定する。
【０１１０】
（４）１２００分間に発行された位置情報更新命令の数及び位置管理部ＬＲの検索成功率を４００試行分測定した。但し、最初の１００分間については統計から除外。
（５）位置管理部ＬＲが位置情報更新命令を送出する際には、自らが保持している全ての位置情報を送信する。受信側のＬＲでは、位置情報のタイムスタンプにより取捨選択して保持している位置情報を更新する。
【０１１１】
（６）位置情報更新命令を発行する際の端末の優先順位については２種類の方式を評価する。「Method A」の方式では位置管理部ＬＲが自らの保持する位置情報を更新した場合に全ての端末に対して位置情報更新命令を発行する。「Method B」の方式では、移動間隔が３０分でかつ全ての端末の位置情報を保持可能な記憶容量を有する端末のＬＲのみが全ての端末に対して位置情報更新命令を発行し、残りの端末の位置管理部ＬＲについては、移動間隔が３０分でかつ全ての端末の位置情報を保持可能な記憶容量を有する端末のみに対して位置情報更新命令を発行する。
【０１１２】
なお、「Method A」の方式では各端末の位置が更新されるたびに全ての端末に位置更新命令が発行されるので通信量は多くなるが、優れた位置管理能力が得られる。
上記シミュレーションの結果が図４７〜図４９に示されている。図４７は、位置情報更新命令の発行数を示している。また、図４８及び図４９は位置検索成功率を示している。図４８の位置検索成功率は、特定の端末の位置管理部ＬＲが保持している位置情報の検索及び他の端末の位置管理部ＬＲの検索によって相手端末の位置情報の取得に成功した割合である。また、図４９の位置検索成功率は、特定の端末の位置管理部ＬＲが保持している位置情報のみを検索して相手端末の位置情報の取得に成功した割合である。
【０１１３】
図４７，図４８を参照すると、「Method A」に比べて「Method B」の方が通信コストが低減（６０〜８０％減）され、位置検索能力の劣化も許容できる範囲であることが分かる。また、この効果はグループを構成している端末数が大きいほど顕著であり、位置検索成功率の差も小さくなる。従って、各端末の移動量や位置管理部ＬＲの記憶容量を考慮して位置情報更新命令の発行対象となる端末を制限することにより、各端末の位置管理の負荷を分担するとともに通信量を抑制することができる。
【０１１４】
また、図４９から分かるように、他の端末に存在する位置情報を検索しなくても、２５〜４５％の端末の位置を正しく検出することができる。従って、端末が一時的にネットワークから離脱している場合であっても、それ自身の位置管理部ＬＲが保持する位置情報のみの検索により、ネットワークへの再接続の手がかりを得ることが可能である。
【０１１５】
（第２の基本技術）
次に図５１及び図５２を参照して説明する。
この形態では、ＨＴＴＰの通信を行うことを想定しているので、アプリケーションとしてブラウザ５及びＷｅｂサーバ７を用いる。
図５１の例では、ノード８（Ａ），８（Ｂ）にはクライアントアプリケーションとして動作するブラウザ５が配置されているので、ノード８（Ａ），８（Ｂ）はクライアントノードとして機能する。また、ノード８（Ｃ）にはサーバアプリケーションとして動作するＷｅｂサーバ７が配置されているので、ノード８（Ｃ）はサーバノードとして機能する。
【０１１６】
また、図５２の例では、ノード８（Ａ）にはクライアントアプリケーションとして動作するブラウザ５（Ａ），５（Ｂ）が配置されているので、ノード８（Ａ）はクライアントノードとして機能する。また、図５２のノード８（Ｃ）にはサーバアプリケーションとして動作するＷｅｂサーバ７が配置されているので、ノード８（Ｃ）はサーバノードとして機能する。
【０１１７】
図５１の例について動作を説明する。
まず、ブラウザ５（Ａ）からプロキシ６（Ａ），６（Ｂ）を介してＷｅｂサーバ７に要求を行う（Ｃ１１）。この要求に対するＷｅｂサーバ７の応答が、プロキシ６（Ｃ），６（Ａ）を介してブラウザ５（Ａ）に伝送される（Ｃ１２）。このとき、セッションが成立する。また、セッション毎にそれを区別するためのセッションＩＤが割り当てられる。
【０１１８】
この後で、プロキシ６（Ｃ）がサービス移動要求を受け付ける（Ｃ１３）。その場合、プロキシ６（Ｃ）は通信を中断し（Ｃ１４）、移動先のノード８（Ｂ）のプロキシ６（Ｂ１）に接続する（Ｃ１５）。
この場合、移動先のプロキシ６（Ｂ１）は該当するセッションのセッションＩＤを含むＵＲＬを引数として、ブラウザ５（Ｂ）を起動する（Ｃ１６）。
【０１１９】
起動されたブラウザ５（Ｂ）は、起動の際に指定されたＵＲＬを用いてプロキシ６（Ｂ２）に接続する（Ｃ１７）。このプロキシ６（Ｂ２）は、セッションＩＤに基づいて、ブラウザ５（Ｂ）の通信とサーバノードであるノード８（Ｃ）のプロキシ６（Ｃ）とを結び付けてデータの転送を行う（Ｃ１８）。
このようにして、サービスの連続性を確保したまま、クライアントノード簡をサービスが移動する。
【０１２０】
次に、図５２の例について動作を説明する。
まず、ブラウザ５（Ａ）からプロキシ６（Ａ），６（Ｃ）を介してＷｅｂサーバ７に要求を行う（Ｃ２１）。それに対するＷｅｂサーバ７の応答が、プロキシ６（Ｃ），６（Ａ）を介してブラウザ５（Ａ）に転送される（Ｃ２２）。このとき、セッションが設立する。また、セッション毎にそれを区別するためのセッションＩＤが割り当てられる。
【０１２１】
この後で、プロキシ６（Ａ）がサービス移動要求を受け付ける（Ｃ２３）。その場合、プロキシ６（Ａ）は該当するセッションのセッションＩＤを含むＵＲＬを引数として、ブラウザ５（Ｂ）を起動する（Ｃ２４）。
【０１２２】
起動されたブラウザ５（Ｂ）は、起動の際に指定されたＵＲＬを用いてプロキシ６（Ｂ２）に接続する（Ｃ２５）。このプロキシ６（Ｂ２）は、セッションＩＤに基づいて、ブラウザ５（Ｂ）の通信とサーバノードであるノード８（Ｃ）のプロキシ６（Ｃ）とを結び付けてデータの転送を行う（Ｃ２６）。
このようにして、サービスの連続性を確保したまま、クライアントノード簡をサービスが移動する。
【０１２３】
（第３の基本技術）
次に図５３〜図５５を参照して説明する。
図５３は、セッションにプロキシを追加する場合の簡略化された制御シーケンスを示すシーケンス図である。図５４は、セッションからプロキシを削除する場合の簡略化された制御シーケンスを示すシーケンス図である。図５５は、セッション上のプロキシを置換する場合の簡略化された制御シーケンスを示すシーケンス図である。
【０１２４】
この形態は、前記第１の基本技術の変形例であり、制御シーケンスの内容が第１の実施の形態よりも簡略化されている。また、この形態においても図３９に示すような構成の移動端末を用いることを想定している。但し、図３９に示す位置管理部ＬＲ，サービス管理部ＳＲ，リンク切替部１５については必ずしも必要とはしない。
【０１２５】
図５３〜図５５に示す動作の内容については第１の基本技術と同様であるが、各図の制御の内容について以下に説明する。
まず、図３３の場合と同様にセッションにプロキシ１３（３）を追加する場合について、図５３を参照して説明する。
この例では、図３３において、クライアントアプリケーション１２（２），プロキシ１３（２），プロキシ１３（１），サーバアプリケーション１１（１）の順に通信コネクションが確立され、クライアントアプリケーション１２（２）とサーバアプリケーション１１（１）との間にセッションが構築されている状態から、クライアントアプリケーション１２（２），プロキシ１３（２），プロキシ１３（３），プロキシ１３（１），サーバアプリケーション１１（１）の順に通信コネクションが確立されて、クライアントアプリケーション１２（２）とサーバアプリケーション１１（１）との間のセッションの経路が変更される場合を想定している。
【０１２６】
すなわち、プロキシ１３（２）とプロキシ１３（１）との間にもう１つのプロキシ１３（３）を追加するための動作を表している。
エージェントソフトウェア（図３９の１４）は、ユーザ又は端末間の接続状態に関する命令や管理を制御している。このエージェントソフトウェアからのプロキシ切替要求を移動端末３０（２）が受信すると、移動端末３０（２）はそれをセッション管理部ＳＭ（２）に通知する。
【０１２７】
この場合、セッション管理部ＳＭ（２）は、追加されるプロキシ１３（３）に接続されるプロキシ１３（１），１３（２）に対して、プロキシ１３（３）の名前と接続ポイントをパラメータとして切替要求を送信する（Ｓ３４，Ｓ３５）。
切替要求を受信したプロキシ１３（１），１３（２）は、受信したパラメータとセッション識別子（ＩＤ）を用いてプロキシ１３（３）の接続ポイントに対して、セッション識別子に対応する通信コネクションを確立する（Ｓ３６，Ｓ３７）。
【０１２８】
その後、プロキシ１３（１）はプロキシ１３（２）との間の通信コネクションで行っていた通信を全てプロキシ１３（３）の通信コネクションに切り替える（Ｓ４０，Ｓ４１）。
追加されるプロキシ１３（３）には２つの通信コネクションが確立される。このプロキシ１３（３）は、通信コネクションの確立時に受信したセッション識別子に基づいて、２つの通信コネクションを関連付け、蓄積転送が可能な状態にする。
【０１２９】
次に、図３５の場合と同様にセッションからプロキシ１３（３）を削除する場合について、図５４を参照して説明する。
この例では、図３５において、クライアントアプリケーション１２（２），プロキシ１３（２），プロキシ１３（３），プロキシ１３（１），サーバアプリケーション１１（１）の順に通信コネクションが確立され、クライアントアプリケーション１２（２）とサーバアプリケーション１１（１）との間のセッションが構築されている状態から、クライアントアプリケーション１２（２），プロキシ１３（２），プロキシ１３（１），サーバアプリケーション１１（１）の順に通信コネクションが確立されて、クライアントアプリケーション１２（２）とサーバアプリケーション１１（１）との間にセッションの経路が変更される場合を想定している。
【０１３０】
すなわち、セッションからプロキシ１３（３）を削除するための動作を表している。
エージェントソフトウェアからのプロキシ削除要求を移動端末３０（２）が受信すると、移動端末３０（２）はそれをセッション管理部ＳＭ（２）に通知する。
この場合、セッション管理部ＳＭ（２）は、プロキシ１３（１），１３（２）に対して削除要求を送信する（Ｓ５１，Ｓ５２）。
【０１３１】
プロキシ１３（２）は、削除要求を受信すると、セッション識別子を用いてプロキシ１３（１）との間でコネクションを確立する。また、プロキシ１３（３）との間で行われていた通信を全てプロキシ１３（１）との間の通信コネクションに切り替える。
また、プロキシ１３（１）が削除要求を受信するとともにプロキシ１３（２）から通信コネクションを確立された場合には、プロキシ１３（１）はプロキシ１３（３）との間の通信コネクションで行われていた通信を全てプロキシ１３（２）との間の通信コネクションに切り替える。
【０１３２】
次に、図３７の場合と同様にセッション上のプロキシ１３（４），１３（５）を置換する場合について、図５５を参照して説明する。
この例では、図３７において、クライアントアプリケーション１２（２），プロキシ１３（２），プロキシ１３（４），プロキシ１３（１），サーバアプリケーション１１（１）の順に通信コネクションが確立され、クライアントアプリケーション１２（２）とサーバアプリケーション１１（１）との間にセッションが構築されている状態から、クライアントアプリケーション１２（２），プロキシ１３（２），プロキシ１３（５），プロキシ１３（１），サーバアプリケーション１１（１）の順に通信コネクションが確立されて、クライアントアプリケーション１２（２）とサーバアプリケーション１１（１）との間のセッションの経路が変更される場合を想定している。
【０１３３】
すなわち、セッション上のプロキシ１３（４）をプロキシ１３（５）に置換するための動作を表している。
エージェントソフトウェアからのプロキシ置き換え要求を移動端末３０（２）が受信すると、移動端末３０（２）はそれをセッション管理部ＳＭ（２）に通知する。
【０１３４】
この場合、セッション管理部ＳＭ（２）は、通信コネクションを持っているプロキシ１３（１），１３（２）に対してプロキシ１３（５）の名前及び接続ポイントをパラメータとして含む切替要求を送信する（Ｓ７４，Ｓ７５）。
切替要求を受信したプロキシ１３（１），１３（２）は、受信したパラメータに基づいて、プロキシ１３（５）の接続ポイントに対してセッション識別子に対応する通信コネクションを確立する。
【０１３５】
その後、プロキシ１３（１）はプロキシ１３（４）との間の通信コネクションで行っていた通信を全てプロキシ１３（５）との間の通信コネクションに切り替える。
同様に、プロキシ１３（２）はプロキシ１３（４）との間の通信コネクションで行っていた通信を全てプロキシ１３（５）との間の通信コネクションに切り替える。
【０１３６】
セッションに追加されるプロキシ１３（５）は、２つの通信コネクションが確立された後で、コネクション確立時に受信したセッション識別子に基づいて２つの通信コネクションを関連付け、蓄積転送が可能な状態にする。
（実施例）
次に、本発明の特徴を含む具体的な実施例について図１〜図２９を参照して説明する。
【０１３７】
図１はマスター，シャドーエージェントが存在する場合のプロキシの動作を示すフローチャートである。図２はマスター，シャドーエージェントの動作を示すフローチャートである。図３はマスター，シャドーエージェントが利用するサービステーブルの構成例を示す模式図である。図４はシャドーエージェント生成シーケンスの例を示すシーケンス図である。図５はシャドーエージェント生成シーケンスの例を示すシーケンス図である。
【０１３８】
図６はメッセージ転送シーケンスの例を示すシーケンス図である。図７はマルチキャストに関するプロキシの動作（１）を示すフローチャートである。図８はマルチキャストに関するプロキシの動作（２）を示すフローチャートである。図９はルーチングに関するプロキシの動作（１）を示すフローチャートである。図１０はルーチングに関するプロキシの動作（２）を示すフローチャートである。図１１はルーチングに関するプロキシの動作（３）を示すフローチャートである。
【０１３９】
図１２はネットワークの構成例を示すブロック図である。図１３は各ノードにおけるテーブルの構成例（１）を示す模式図である。図１４は各ノードにおけるテーブルの構成例（２）を示す模式図である。図１５はサービス提供のための基本通信シーケンスを示すシーケンス図である。図１６はサービスの動的な変化例を示すブロック図である。
【０１４０】
図１７はマスター，シャドーエージェントが存在する場合の通信シーケンスを示すシーケンス図である。図１８はマルチキャストの通信シーケンスを示すシーケンス図である。図１９は分岐テーブルを用いた通信経路の構成例を示すブロック図である。図２０はプロキシの基本動作（１）を示すフローチャートである。図２１はプロキシの基本動作（２）を示すフローチャートである。図２２はプロキシの基本動作（３）を示すフローチャートである。
【０１４１】
図２３はプロキシの機能構成を示すブロック図である。図２４はコネクション管理を示すブロック図である。図２５はコネクション管理における変化を示す模式図である。図２６はノード上の各テーブルの構成を示す模式図である。図２７はプロキシ間フレームの構成を示す模式図である。図２８は制御コマンドの構成を示す模式図である。図２９はプロキシ間メッセージの構成を示す模式図である。
【０１４２】
ここで想定しているネットワークは、前述のように動的に変化するネットワークであり、サービスを提供している途中でネットワークアドレスが変更されたり通信するノード（通信装置）が変化する可能性がある。
なお、以下の説明で使用される各用語は次のように定義される。
セッションＩＤはセッションをノードで一意に識別するための識別名であり、ノードＩＤとノード内番号との組で構成される。また、同一セッションでもノードが異なればセッションＩＤは異なる。
【０１４３】
サービスアドレスはプロキシ，アプリケーションを一意に識別する名前である。
ノードＩＤは、ノードを一意に識別する名前である。
ネットワークアドレスは、ノード間で通信コネクションを形成するのに必要なアドレス（ＴＣＰ／ＩＰを想定するとＩＰアドレス）である。
セッションはアプリケーション間で構成される通信を表す。
【０１４４】
コネクションは、プロキシ間又はアプリケーションとプロキシとの間の通信を表す。
プロキシ間フレームは、サービスに伴いプロキシ間でコネクションを通して送受信されるデータフレームを表す。
プロキシ間メッセージは、テーブルの内容の更新又は検索のためにプロキシ間でやり取りされるメッセージを表す。
【０１４５】
ここで想定している通信システムの基本的な構成及び動作は次の通りである。
（１）物理的なネットワークの上に、仮想的なネットワークを構成する。
（２）通信はアプリケーション間で行われる。
（３）構成要素はアプリケーション及びプロキシである。アプリケーションはノード上のソフトウェアとして構成されている。
【０１４６】
（４）セッションはアプリケーション間の通信で構成され、アプリケーション間の通信は複数のプロキシによって中継される。
（５）セッションを構成しているアプリケーションやプロキシはいつでも他のアプリケーション又はプロキシと交換可能であり、その構成は自由に変化する。さらにその際セッションは維持される。
【０１４７】
（６）プロキシ間での通信はシーケンス番号により送受信が管理されており、プロキシ間の接続（コネクション）が変化した場合（図２４，図２５のＣＡＳＥ１，ＣＡＳＥ２，ＣＡＳＥ３の場合）、それまでに受信したシーケンス番号を確認しシーケンス番号が不連続にならないように次に送るべきシーケンス番号をコネクション接続先のプロキシに要求し再送してもらう。これにより、データの欠損なくサービスが継続される。
【０１４８】
この形態では、図２４，図２５に示すＣＡＳＥ１，ＣＡＳＥ２，ＣＡＳＥ３の３種類の移動がネットワーク上で生じる場合を想定している。
具体的なネットワークとしては、図１２に示すような構成が想定される。図１２の例では７つのノードが互いに接続されている。各々のノードには互いに異なるノードＩＤが割り当ててある。
【０１４９】
各ノードに備わったアプリケーション及びプロキシは次の通りである。
ノードＩＤ：１００１のノード：アプリケーションＰＡ，プロキシＰＦ
ノードＩＤ：１００２のノード：アプリケーションＰＣ，プロキシＰＧ
ノードＩＤ：１００３のノード：アプリケーションＰＢ，プロキシＰＨ
ノードＩＤ：１００４のノード：アプリケーションＰＤ，プロキシＰＩ
ノードＩＤ：１００５のノード：アプリケーションＰＬ，プロキシＰＪ
ノードＩＤ：１００６のノード：アプリケーションＰＥ
ノードＩＤ：１００７のノード：プロキシＰＫ
各ノードには図２６に示すような様々なテーブルが備わっている。代表的なテーブルの内容の概略は次の通りである。
【０１５０】
１．セッションテーブルＳＳＴ：セッションＩＤとサービスアドレスの対応。
２．プロキシルーチングテーブルＰＲＴ：サービスアドレスと次ホップのサービスアドレスとの対応、並びにマスターエージェントとシャドーシャドーエージェントとの対応。
３．リソーステーブルＲＳＴ：ノードＩＤとサービスアドレスとの対応。
【０１５１】
４．ロケーションテーブルＬＣＴ：ノードＩＤとネットワークアドレスの対応。
５．分岐テーブルＪＣＴ：受信サービスアドレスと送信サービスアドレスの対応。
プロキシ間で転送される各フレームは図２７に示すように構成される。すなわち、コマンド，送信元ノードＩＤ，送信元セッションＩＤ，送信先ノードＩＤ，送信先セッションＩＤ，送信シーケンス番号，受信シーケンス番号，データ長及びデータが各フレームに含まれている。
【０１５２】
また、通信を制御するための制御コマンドとして、図２８に示す切替要求及び切断要求がある。これらの制御コマンドはプロキシに与えられる。
また、プロキシ間で転送されるメッセージは図２９に示すように構成される。すなわち、コマンド，メッセージ長，ホップ数，検索方法及びパラメータがメッセージに含まれている。
【０１５３】
図２３に示すように、各プロキシには主要な構成要素として、プロキシ制御部５０１，セッション管理部５０２，キャッシュ管理部５０３，コネクション管理部５０４，セッションテーブルＳＳＴ，プロキシルーチングテーブルＰＲＴ，リソーステーブルＲＳＴ，ロケーションテーブルＬＣＴ及び分岐テーブルＪＣＴが備わっている。
【０１５４】
図２３におけるキャッシュ管理部５０３は、接続コネクション毎にキャッシュを構築する。各キャッシュは、未送信のデータを送信が完了するか又はキャッシュ解放の命令が来るまで蓄積する。各キャッシュは、プロキシに接続されている接続コネクション毎に存在し管理される。特に、マルチキャスト通信では接続コネクション毎に複数のキャッシュが存在することが考えられ、受信したデータは分岐テーブルＪＣＴの記述に従って各キャッシュに分配され送信される。これらのキャッシュは独立に動作するため、送信できない通信コネクションが存在した場合には、その通信コネクションに割り当てられたキャッシュは蓄積状態を維持し、他の送信可能な通信コネクションのキャッシュに蓄積されたデータは読み出されて送信される。
【０１５５】
図１２のネットワークに示された各ノードに備わっている主要な各テーブルの内容の具体例は図１３及び図１４に示されている。
前述の各基本技術に対応する機能を実現するために、各ノードに設けられるプロキシは図２０，図２１，図２２に示す基本動作を実行する。図２０〜図２２に示すプロキシの基本動作について以下に説明する。
【０１５６】
プロキシは、接続フレーム（図２７参照）を受信した場合には図２０のステップＳ１１１からＳ１１２の処理に進み、サービス不能フレームを受信した場合にはステップＳ１１６からＳ１１７に進む。
【０１５７】
受信した接続フレームの送信先のセッションＩＤ（ＳＩＤ）がヌル（ＮＵＬＬ）の場合には初めての接続なのでステップＳ１１２からＳ１１３に進み、それ自身が属するノード上で一意なセッションＩＤを生成する。また、次のステップＳ１１４でセッションＩＤ及び宛先のサービスアドレス（ＳＡ）をセッションテーブルＳＳＴに追加する。そして次のステップＳ１１５で「接続処理」を実行する。この「接続処理」の内容は図２１に示されている。
【０１５８】
一方、受信した接続フレームの送信先のセッションＩＤ（ＳＩＤ）がヌルでなければ、ステップＳ１１２からＳ１１９に進む。
また、サービス不能フレームを受信した場合には、ステップＳ１１７で受信したプロキシとの間のコネクションを切断する。更に、ステップＳ１１８で受信したサービス不能フレーム内のサービスアドレスをキーとしてプロキシルーチングテーブルＰＲＴを検索し、該当するサービスアドレスの記載部分に利用不可フラグを立てる。すなわち、そのサービスアドレスのプロキシ又はアプリケーションが利用できない状態にあることを把握する。
【０１５９】
ステップＳ１１９では、送信先セッションＩＤをキーにセッションテーブルＳＳＴの現宛先サービスアドレス（エンド，エンドのＳＡ）を検索する。
ステップＳ１２０では、セッション現宛先ＳＡと接続フレーム宛先ＳＡとを比較する。両者が等しい場合には、接続先の変更はないのでステップＳ１２０からＳ１１５に進み、異なる場合には接続先が変更されているのでセッションテーブルＳＳＴの宛先ＳＡを新しい宛先ＳＡに変更してからステップＳ１１５に進む。
【０１６０】
図２１に示す「接続処理」について説明する。
ステップＳ１３１では、宛先ＳＡをキーにプロキシルーチングテーブルＰＲＴを検索し、次ホップのプロキシ（又はアプリケーション）のＳＡを複数取得する。例えば、図１２のネットワークに示すアプリケーションＰＡが他のアプリケーションＰＥに対して接続しようとする場合のプロキシＰＦの動作を想定すると、プロキシＰＦの次ホップはプロキシＰＩになる。従ってプロキシＰＩのＳＡをステップＳ１３１で取得する。
【０１６１】
また、ステップＳ１３１では取得したＳＡの中にコネクション確立済みのプロキシが存在するか否かを識別する。コネクション確立済みのプロキシが存在する場合にはステップＳ１３１からＳ１３２に進み、存在しない場合にはステップＳ１３３に進む。
ステップＳ１３２では、接続フレームを送ってきたプロキシと次のプロキシとの間でデータフレームの中継転送を開始する。
【０１６２】
ステップＳ１３３では、ステップＳ１３１で取得したＳＡの中に自プロキシのＳＡがあり既に宛先ＳＡのアプリケーションへのコネクションがあるか否かを識別する。ｙｅｓであればステップＳ１３３からＳ１３４に進み、ｎｏであればＳ１３５に進む。
ステップＳ１３４では、接続フレームを送ってきたプロキシと次の宛先のアプリケーションとの間でデータフレームの中継転送を開始する。
【０１６３】
ステップＳ１３５では、既に次ホップとは違うコネクションが存在するか否かを識別する。存在する場合には、次のステップＳ１３６でそのコネクションを切断する。
接続が完了しない場合には、図２１におけるステップＳ１３７以降の処理は全ての次ホップＳＡについて繰り返し実行される。
【０１６４】
ステップＳ１３９では、未処理の次ホップＳＡを１つ選択する。ステップＳ１４０では選択されたＳＡを自ノードのプロキシのＳＡと比較する。一致する場合にはステップＳ１４０からＳ１４２に進み、一致しなければＳ１４１に進む。
ステップＳ１４１では「プロキシへの接続処理」を実行し、ステップＳ１４２では「アプリケーションへの接続処理」を実行する。これらの処理の内容は図２２に示されている。
【０１６５】
また、全ての次ホップＳＡについて接続を試みた後でも依然として接続が完了しない場合には、ステップＳ１３７からＳ１３８に進み、サービス不能フレームを到来したフレームとは逆方向のコネクションに向かって通知する。
次に、図２２を参照して説明する。
「プロキシへの接続処理」においては、最初のステップＳ１５１で次ホップのＳＡをキーにリソーステーブルＲＳＴを検索し、次ホップ先のノードＩＤを取得する。
【０１６６】
次のステップＳ１５２では、次ホップのプロキシのあるノードＩＤをキーにロケーションテーブルＬＣＴを検索し、接続先のＩＰアドレスを取得する。また、ステップＳ１５３ではロケーションテーブルＬＣＴから自ノードのＩＰアドレスを取得する。
ステップＳ１５４では、得られたＩＰアドレスを用いて次ホップＳＡのプロキシに接続フレームを送信して接続する。
【０１６７】
「アプリケーションへの接続処理」においては、最初のステップＳ１５６でリソーステーブルＲＳＴを宛先ＳＡをキーとして検索しノードＩＤを取得する。
次のステップＳ１５７では、ノードＩＤをキーとしてロケーションテーブルＬＣＴを検索し、接続先のＩＰアドレスを取得する。また、ステップＳ１５８ではロケーションテーブルＬＣＴから自ノードのＩＰアドレスを取得する。
【０１６８】
ステップＳ１５９では、得られたＩＰアドレスを用いて宛先ＳＡに接続する。次に、図１５に示す基本通信シーケンスについて説明する。図１５に示すＰＡ，ＰＦ，ＰＩ，ＰＤ，ＰＫ，ＰＨ，ＰＢは、図１２に示された各ノードのアプリケーション又はプロキシを表している。これらのアプリケーション及びプロキシはサービスアドレスにより特定される。
【０１６９】
図１５の例では、最初にアプリケーションＰＡがプロキシＰＦに接続し、プロキシＰＦが接続フレームを次ホップのプロキシＰＩに送信している。これにより、プロキシＰＩはアプリケーションＰＤに接続する。
従って、アプリケーションＰＡとアプリケーションＰＤとの間にセッションが形成され、そのセッションを用いてサービス提供が開始される。この場合、通信経路上のプロキシＰＦ，ＰＩは通信を中継する。
【０１７０】
例えば、ノードの移動，ノードのネットワークからの離脱などが発生すると、ノードのネットワークアドレスの変化又は通信デバイスの利用可否の変化が生じる。これは図２４，図２５に示すＣＡＳＥ３に該当するので、図２５に示すようにプロキシのＳＡ又はノードＩＤとネットワークアドレスとの対応が変わり、コネクションを構成するリンクが変わる。
【０１７１】
従って、図１５に示すＣＡＳＥ３の切替要求に対しては、プロキシＰＦ，ＰＩの間で通信路の変更が生じるが、変更の後でもプロキシＰＦ，ＰＩを中継してアプリケーションＰＡとアプリケーションＰＤとの間でサービス提供が継続される。
一方、ユーザが利用しているノードを変更すると、利用するアプリケーションが変わる。これは図２４，図２５に示すＣＡＳＥ１に該当するので、図２５に示すようにセッションＩＤとエンド−エンドのアプリケーション（ＡＰ）のＳＡとの対応が変わる。
【０１７２】
図１５においては、プロキシＰＦに対する切替要求（ＣＡＳＥ１）に対して、プロキシＰＦが接続フレームをプロキシＰＫに送信し、それを受信したプロキシＰＫはプロキシＰＨに対して接続フレームを転送している。
従って、プロキシＰＨがアプリケーションＰＢに接続し、アプリケーションＰＡとアプリケーションＰＢとの間にセッションが形成され、そのセッションを用いてサービス提供が継続される。
【０１７３】
次に、シームレスなサービス提供のためにネットワークの形態の変化に応じて動的に生成されるアプリケーションプログラム（サーバ）の複製がネットワーク上に配置される場合について説明する。
ここでは、アプリケーションプログラムのモジュールをアプリケーションエージェントと呼ぶ。また、１つのアプリケーションエージェントからその複製を作成した場合に、複製により新たに生成されたアプリケーションエージェントをシャドーエージェントと呼び、複製元のアプリケーションエージェントをマスターエージェントと呼ぶ。
【０１７４】
また、１つのマスターエージェントから複製されたシャドーエージェントは、マスターエージェントのサービス提供機能の一部分もしくは全てを備えるように構成される。また、１つのマスターエージェント及びそこから複製された全てのシャドーエージェントを１つのグループとして管理する。そのグループをサービスグループと呼ぶ。
【０１７５】
更に、この形態ではマスターエージェント，シャドーエージェントについて次のように扱う。
（１）シャドウエージェントはマスターエージェントのサービスの全て又は一部を行うことができるように構成する。
（２）マスターエージェントがネットワークの状態やリソースの競合によって利用できない場合には、シャドーエージェントを利用してマスターエージェントと同じサービスを提供する。また、マスターエージェントとシャドーエージェントとの切り替えは、通信中であっても動的に行う。
【０１７６】
（３）アプリケーションエージェントとシャドーエージェント、マスターエージェント間の通信もプロキシによる中継によって行う。ノードの変更が発生した場合には、プロキシを介して各エージェントを切り替え、継続的にサービスを提供する。
（４）シャドーエージェントは自エージェントで十分にサービスを達成できない場合には、他のシャドーエージェント又はマスターエージェントに対して接続し自エージェントでは中継を行う。これにより、あたかも自エージェントでサービスを行っているように見せることができる。また、シャドーエージェントと他のシャドーエージェント又はマスターエージェント間の通信はプロキシにより中継する場合もあり、ネットワークアドレスの変更や、ノードの変更が発生した場合においても、継続的にサービスを提供する。このような機能を実現するために、サービスの一部しか行うことのできないシャドーエージェントについては、自分の提供できるサービスと同じサービスグループに属する他のエージェントに接続しないと提供できないサービスとを識別するためにサービステーブルＡＳＴを保持する。
【０１７７】
（５）マスターエージェントとシャドーエージェントの対応関係は各ノードのプロキシルーチングテーブルＰＲＴに保持する。
（６）シャドーエージェントが作成された場合、マスターエージェント又はシャドーエージェント又は双方のエージェントが存在するノードのロケーションテーブルＬＣＴ、プロキシルーチングテーブルＰＲＴ、リソーステーブルＲＳＴに、相手のエージェントのノードＩＤ，ネットワークアドレス，エージェントのサービスアドレス，シャドー／マスターの対応関係を記述する。
【０１７８】
（７）マスタエージェントが存在するノードのネットワークアドレスが変更された場合には、同じサービスグループに存在するシャドーエージェントをプロキシルーチングテーブルＰＲＴから得た後、そのシャドーエージェントの属するノードにネットワークアドレスの変更を通知する。通知されたノードはロケーションテーブルＬＣＴを変更する。これにより、マスターエージェントの位置が変化した場合においても把握できる。
【０１７９】
（８）シャドーエージェントが存在するノードのネットワークアドレスが変更された場合には、同じサービスグループに存在するマスターエージェントをプロキシルーチングテーブルＰＲＴから得た後、そのマスターエージェントの属するノードにネットワークアドレスの変更を通知する。通知されたノードはロケーションテーブルを変更する。これによりシャドーエージェントの位置が変化した場合においても把握できる。
【０１８０】
図２６に示すようにプロキシルーチングテーブルＰＲＴにはマスターサービスアドレス（マスターエージェントのＳＡ）とシャドーサービスアドレス（シャドーエージェントのＳＡ）との対応関係が記述されている。
例えば、図１３に示すノードＩＤ：１００１のプロキシルーチングテーブルＰＲＴに記述されている「ＰＥ：ＰＤ(Ｓ)」及び「ＰＥ：ＰＢ(Ｓ)」は、それぞれ図１２に示されたアプリケーションＰＤ及びＰＢがマスターエージェントである同じアプリケーションＰＥから複製されたシャドーエージェントであることを表している。
【０１８１】
従って、プロキシルーチングテーブルＰＲＴを検索することにより、同じサービスグループに属するマスターエージェントとシャドーエージェントとの関係を調べることができる。
一方、サービステーブルＡＳＴには例えば図３に示すような情報が記述される。この例では、同じサービスグループに属するマスターエージェントは
http://hogehoge.com/undoukai.mpg
http://hogehoge.com/ensoku.mpg
http://hogehoge.com/yuuenchi.mpg
のＵＲＬでそれぞれ特定される３つの映像サービスを提供する機能を備え、このサービステーブルＡＳＴを参照するシャドーエージェントは「ｙｅｓ」で示された２つの映像サービスだけを提供できる場合を表している。このシャドーエージェントは「ｎｏ」で示された
http://hogehoge.com/ensoku.mpg
の映像サービスを提供できないが、この映像サービスについては同じサービスグループに属する他のシャドーエージェント又はマスターエージェントを利用すれば提供できる。
【０１８２】
ネットワーク上にマスターエージェント及びシャドーエージェントが存在する場合には、プロキシは図１に示す動作を実行する。プロキシの基本的な動作は既に説明した図２０〜図２２と同じであるが、図２１のステップＳ１３１が図１のステップＳ１３１Ｂのように変更されている。
図１のステップＳ１３１Ｂにおいては、宛先ＳＡのマスターエージェント又はシャドーエージェントが存在する場合には、該当するエージェントのＳＡをキーにプロキシルーチングテーブルＰＲＴを検索し、次ホップのサービスを得る。但し、宛先はキーとしたエージェントのＳＡとする。なお、利用不可フラグが立っている情報については参照しない。
【０１８３】
これ以外のプロキシの動作は図２０〜図２２と同じである。
一方、マスターエージェント及びシャドーエージェントは図２に示す処理を実行する。図２の処理について説明する。
ステップＳ１５１で自エージェント（マスターエージェント又はシャドーエージェント）がユーザからのデータを受信すると、次のステップＳ１５２でサービステーブルＡＳＴを参照し、受信したデータに該当するサービスを提供する機能が自エージェントに備わっているか否かを調べる。
【０１８４】
サービスを提供する機能が自エージェントに備わっている場合には、ステップＳ１５２からＳ１５３に進み、自エージェントがサービスを提供するための処理を実施する。
サービスを提供する機能が自エージェントに備わっていない場合には、ステップＳ１５２からＳ１５４に進む。ステップＳ１５４では、プロキシルーチングテーブルＰＲＴを参照し同じサービスグループに属する他のマスターエージェント又はシャドーエージェントを検索する。
【０１８５】
検索に成功した場合にはステップＳ１５４からＳ１５５に進み、見つかった他のエージェントに接続する。また、該当するエージェントが見つからない場合にはステップＳ１５６に進みサービス不能を通知する。
【０１８６】
ステップＳ１５７では、ユーザから受信したデータフレームをステップＳ１５５で接続した他のエージェントに対して転送する。
ステップＳ１５５で接続した他のエージェントに該当するサービスを提供する機能が備わっている場合には、そのエージェントの処理によってユーザに対するサービスが提供されるので、ステップＳ１５８からＳ１５９に進む。
【０１８７】
ステップＳ１５５で接続した他のエージェントに該当するサービスを提供する機能が備わっていない場合には、サービスは提供されないのでステップＳ１５８からＳ１５４に進み再びその他のエージェントをプロキシルーチングテーブルＰＲＴから検索する。
ステップＳ１５９では、データフレームの中継伝送を実施する。すなわち、ユーザのデータを中継するプロキシとステップＳ１５５で接続した他のエージェントとの間でデータフレームを中継する。
【０１８８】
これにより、自エージェント自身はデータフレームの中継を行うだけであるが、接続した他のエージェントがサービスを提供するので、サービスの提供を受けるユーザからみると自エージェントがサービスを提供しているように見える。
新たなシャドーエージェントを生成する場合には、図４及び図５に示すような様々なシーケンスを実行することができる。
【０１８９】
すなわち、複製を生成した直後に、複製元のマスターエージェント及び／又は複製されたシャドーエージェントがプロキシルーチングテーブルＰＲＴにマスターエージェントとシャドーエージェントとの対応関係を記述する。
これにより、プロキシルーチングテーブルＰＲＴを参照することにより、生成されたシャドーエージェントとマスターエージェントとの関係を把握できるので、シャドーエージェントを利用できる。
【０１９０】
また、複製元のマスターエージェント及び／又は複製されたシャドーエージェントが自ノードのロケーションテーブルＬＣＴ及びリソーステーブルＲＳＴに相手ノードのネットワークアドレス（ＮＡ），ノードＩＤ，エージェントのサービスアドレス（ＳＡ）を記述する。
これにより、生成されたシャドーエージェントがマスターエージェントと異なるノードに配置された場合であっても、シャドーエージェントを検索して利用することができる。
【０１９１】
一方、マスターエージェント又はシャドーエージェントが動作しているノードにおいてネットワークアドレス（ＮＡ）が変化した場合には、図６に示すようなメッセージ転送シーケンスを実行する。
すなわち、マスターエージェントが動作しているノードにおいてネットワークアドレスが変化した場合には、ステップＳ４７１でシャドーエージェントを検索し、同じサービスグループの全てのシャドーエージェントに対してＮＡ更新メッセージを送信する。メッセージを受信した各シャドーエージェントは、メッセージに従ってロケーションテーブルＬＣＴの内容を変更する。
【０１９２】
また、シャドーエージェントが動作しているノードにおいてネットワークアドレスが変化した場合には、ステップＳ４８１でマスターエージェントを検索し、同じサービスグループのマスターエージェントに対してＮＡ更新メッセージを送信する。メッセージを受信したマスターエージェントは、メッセージに従ってロケーションテーブルＬＣＴの内容を変更する。
【０１９３】
マスターエージェント及びシャドーエージェントを利用することにより、ネットワークの動的な変化に対して例えば図１６に示すように通信経路の構成を変更し、サービスの提供を継続することができる。
ネットワーク上にマスターエージェント及びシャドーエージェントが存在する場合には、例えば図１７に示すような通信シーケンスが実行される。
【０１９４】
図１７の例では、ステップＳ７０１でアプリケーションＰＡとアプリケーション（マスターエージェント又はシャドーエージェント）ＰＤとの間でサービス提供の通信を行っている状態からアプリケーションＰＤがサービス提供不能になると、アプリケーションＰＤがプロキシＰＩに接続し、プロキシＰＩが接続フレームをプロキシＰＪに送信し、プロキシＰＪはアプリケーション（マスターエージェント又はシャドーエージェント）ＰＬに接続するので、アプリケーションＰＤ−ＰＬ間が接続され、アプリケーションＰＬによってサービスが提供される。
【０１９５】
また、ステップＳ７０２でアプリケーションＰＡとアプリケーションＰＬとの間でサービス提供の通信を行っている状態からアプリケーションＰＬがサービス提供不能になると、アプリケーションＰＤがプロキシＰＩに接続し、プロキシＰＩが接続フレームをプロキシＰＪに送信し、プロキシＰＪはアプリケーション（マスターエージェント又はシャドーエージェント）ＰＥに接続するので、アプリケーションＰＤ−ＰＥ間が接続され、アプリケーションＰＥによってサービスが提供される。
【０１９６】
なお、次のような条件の検出によってサービス提供不可能な状態を認識できる。例えば、サービス提供先にアクセスしたが応答なしの場合、サービス提供先からの通知（明示的なものやＴＣＰレイヤの接続終了メッセージなどを含む）を検出した場合、要求したサービスがサービステーブルでサービス可能になっていなかった場合などがある。
【０１９７】
ステップＳ７０３では、サービス提供を継続したままアプリケーションＰＤはノードを離脱することができる。
また、プロキシＰＦ，ＰＩ，ＰＪを経由してアプリケーションＰＡ，ＰＥの間でサービスを提供している途中で、プロキシＰＩが離脱するようなネットワークの変化が発生すると（Ｓ７０５）、プロキシＰＦがプロキシＰＪに対して切替通知を送信する。この切替通知によってプロキシＰＦとプロキシＰＪとの間の通信経路からプロキシＰＩが離脱し、そのままアプリケーションＰＡ，ＰＥの間のサービス提供が継続される。
【０１９８】
更に、サービスを提供している途中でプロキシＰＦに切替要求が発生すると（Ｓ７０６）、プロキシＰＦの送信した接続フレームがプロキシＰＫに転送され、プロキシＰＫの送信した接続フレームがプロキシＰＨに転送され、プロキシＰＨはアプリケーションＰＢと接続する。従って、アプリケーションＰＡとアプリケーションＰＢとの間にプロキシＰＦ，ＰＫ，ＰＨを介して通信経路が形成され、アプリケーションＰＡとアプリケーションＰＢとの間の通信にサービスが移動する。
【０１９９】
すなわち、アプリケーションＰＡとアプリケーションＰＥとの間に形成されたセッション（アプリケーション間の１つの通信サービス）を、アプリケーションＰＡとアプリケーションＰＢとの間に形成されたセッションに切り替える。この場合、切替を行うプロキシＰＦは、アプリケーションＰＥで行われていた通信サービスが中断された地点（データ転送なら転送したバイト数）の状態を切替先のアプリケーションＰＢに通知する。これにより、アプリケーションＰＢは中断されたアプリケーションＰＥの通信サービスを引き継ぐことができる。
【０２００】
また、切替を行うプロキシＰＦは、切替元のアプリケーションＰＥにつながるコネクションの連鎖の中でプロキシＰＦに隣接して接続されているプロキシＰＪ（途中に他のプロキシが存在しない場合にはアプリケーションＰＥ）との間に形成されている通信コネクションを、切替先のアプリケーションＰＢにつながるコネクションの連鎖の中でプロキシＰＦに隣接して接続されているプロキシＰＫ（途中に他のプロキシが存在しない場合にはアプリケーションＰＢ）との間に形成されている通信コネクションに切り替える。更に、切り替えた通信コネクションをアプリケーションＰＡ（途中に他のプロキシが介在する場合にはＰＦに隣接するプロキシ）と直接接続されている通信コネクションと結び付け、各通信コネクションの間で通信を中継する。これによりサービスを継続できる。
【０２０１】
また、通信サービスの提供に利用している経路上に存在する２つのプロキシ（例えばＰＫ，ＰＨ）の間を接続するリンクが、例えば無線ＬＡＮから有線ＬＡＮに切り替わったような場合には、２つのプロキシＰＫ，ＰＨの間の通信コネクションを再構築する（各テーブルの内容を更新したりネットワークアドレスなどを変更する）ことで通信サービスを継続できる。
【０２０２】
次に、プロキシがマルチキャストのデータ配信を制御する場合について説明する。
プロキシが備わったノードには、図１３，図１４，図２３，図２６に示すような分岐テーブルＪＣＴが備わっている。この分岐テーブルＪＣＴには、図２６に示すようにセッションＩＤ毎に区別して入力側サービスアドレス（ＳＡ）と出力側サービスアドレスとの対応関係が記述される。
【０２０３】
すなわち、プロキシは入力側サービスアドレスから入力されたデータフレームを出力側サービスアドレスのプロキシ又はアプリケーションに転送するようにデータの入出力を制御する。
なお、分岐テーブルＪＣＴには入力側サービスアドレス及び出力側サービスアドレスを複数記述することができる。
【０２０４】
分岐テーブルＪＣＴを用いてマルチキャストの通信経路を制御する場合の具体例について、図１９を参照して説明する。図１９に示す各分岐テーブルＪＣＴは、矢印の左側及び右側が、それぞれ入力側サービスアドレス及び出力側サービスアドレスを表している。
図１９（ａ）におけるプロキシＰＧは、分岐テーブルＪＣＴに従ってプロキシＰＤから入力されたデータフレームをプロキシＰＥに出力し、プロキシＰＤから入力されたデータフレームをプロキシＰＦに出力し、プロキシＰＥから入力されたデータフレームをプロキシＰＤに出力し、プロキシＰＦから入力されたデータフレームをプロキシＰＤに出力する。
【０２０５】
このため、図１９（ａ）の例ではアプリケーションＰＡから送出されたマルチキャストのデータフレームはプロキシＰＤを介してプロキシＰＧに入力され、プロキシＰＧの部分で２系統に分岐され、プロキシＰＥ，ＰＦにそれぞれ送出される。これにより、アプリケーションＰＡから送出されたデータフレームは２つのアプリケーションＰＢ，ＰＣにそれぞれ届けられる。
【０２０６】
一方、アプリケーションＰＢから送出されたデータフレームはアプリケーションＰＡのみに届き、アプリケーションＰＣから送出されたデータフレームもアプリケーションＰＡのみに届く。
また、図１９（ｂ）におけるプロキシＰＧは、分岐テーブルＪＣＴに従ってプロキシＰＤから入力されたデータフレームをプロキシＰＥに出力し、プロキシＰＤから入力されたデータフレームをプロキシＰＦに出力し、プロキシＰＥから入力されたデータフレームをプロキシＰＤに出力し、プロキシＰＦから入力されたデータフレームをプロキシＰＤに出力し、プロキシＰＥから入力されたデータフレームをプロキシＰＦに出力し、プロキシＰＦから入力されたデータフレームをプロキシＰＥに出力する。
【０２０７】
このため、図１９（ｂ）の例ではアプリケーションＰＡから送出されたマルチキャストのデータフレームはプロキシＰＤを介してプロキシＰＧに入力され、プロキシＰＧの部分で２系統に分岐され、プロキシＰＥ，ＰＦにそれぞれ送出される。
また、アプリケーションＰＢから送出されたマルチキャストのデータフレームはプロキシＰＥを介してプロキシＰＧに入力され、プロキシＰＧの部分で２系統に分岐され、プロキシＰＤ，ＰＦにそれぞれ送出される。
【０２０８】
また、アプリケーションＰＣから送出されたマルチキャストのデータフレームはプロキシＰＦを介してプロキシＰＧに入力され、プロキシＰＧの部分で２系統に分岐され、プロキシＰＤ，ＰＥにそれぞれ送出される。
従って、プロキシが配置された各ノードの分岐テーブルＪＣＴの内容を書き換えるだけで、マルチキャストのデータ配信先を制御することができる。
【０２０９】
また、例えばプロキシＰＧ，ＰＤの間の通信リンクが一定時間途切れた場合には、プロキシＰＧは分岐テーブルに基づいて中継する際に、プロキシＰＤへの送信データは内部のキャッシュに蓄積しておき、アプリケーションＰＢとアプリケーションＰＣとの間の通信のみを中継する。プロキシＰＧ，ＰＤの間のリンクが再構築され、通信コネクションが再構築された場合には、プロキシＰＧは内部のキャッシュに蓄積されているデータを読み出して送信し、３つのアプリケーションＰＡ，ＰＢ，ＰＣの間のマルチキャスト通信サービスを継続する。
【０２１０】
また、通信の途切れたプロキシＰＤの代わりとなる他のプロキシＰｘが存在する場合には、プロキシＰＧはプロキシＰＤとの間の通信コネクションをプロキシＰｘへの通信コネクションに変更し、プロキシＰｘを介してアプリケーションＰＡとの間の通信路を確保する。この場合、プロキシＰＧはプロキシＰｘとの間の通信コネクションを、アプリケーションＰＢ又はそれに続く通信コネクションの連鎖の中でプロキシＰＧと直接接続されているプロキシＰＥとの通信コネクション、並びにアプリケーションＰＣ又はそれに続く通信コネクションの連鎖の中でプロキシＰＧと直接接続されているプロキシＰＦとの通信コネクションと結び付け、分岐テーブルに基づいて通信の中継を行う。
【０２１１】
図１９（ａ）のような通信経路を形成することにより、アプリケーションＰＡを放送型サーバとする通信サービスを提供することが可能になる。また、図１９（ｂ）のような通信経路を形成することにより、チャット通信のようなサービスの提供が可能になる。
分岐テーブルＪＣＴを用いてマルチキャストを制御する場合のプロキシの動作は図７及び図８に示す通りである。まず図７を参照してマルチキャストに特有な動作を説明する。
【０２１２】
ステップＳ２０１でマルチキャストの接続フレームを受信すると、ステップＳ２０２に進み複数の宛先ＳＡが含まれているか否かを識別する。複数の宛先ＳＡが含まれているマルチキャストの接続フレームを受信した場合には、所定の処理を行った後、ステップＳ２０６以降の処理に進む。ステップＳ２０６以降では、マルチキャストの接続フレームで指定された複数の宛先ＳＡのそれぞれについて接続処理を実行する。
【０２１３】
この接続処理の内容は図８に示されている。図８の処理について説明する。
ステップＳ２２１では、宛先ＳＡをキーにプロキシルーチングテーブルＰＲＴを検索し、次ホップのＳＡを複数取得する。
ステップＳ２２２では取得したＳＡの中にコネクションが確立済みのプロキシが存在するか否かを識別する。
【０２１４】
それが存在する場合には、ステップＳ２２４で分岐テーブルＪＣＴに前ホップＳＡ（入力側サービスアドレス）及び次ホップＳＡ（出力側サービスアドレス）を追加する。
また、次のステップＳ２２５では接続フレームを送ってきたプロキシと次のプロキシとの間でデータフレームの中継転送を開始する。ステップＳ２２６では、現在処理している宛先ＳＡを含むマルチキャスト接続フレームを送信する。
【０２１５】
一方、ステップＳ２２３ではステップＳ２２１で得られたＳＡの中に自プロキシのＳＡがあり宛先ＳＡのアプリケーションへのコネクションがあるか否かを識別する。ｙｅｓであればステップＳ２２７に進み、分岐テーブルＪＣＴに前ホップＳＡ（入力側サービスアドレス）及び次ホップＳＡ（出力側サービスアドレス）を追加する。
【０２１６】
次のステップＳ２２８では、接続フレームを送ってきたプロキシと次の宛先のアプリケーションとの間でデータフレームの中継転送を開始する。
ステップＳ２２１で得られたＳＡの中で、コネクションが確立していない宛先ＳＡについては、ステップＳ２２９以降の処理において「プロキシへの接続」もしくは「アプリケーションへの接続」を実行してコネクションを確立する。
【０２１７】
また、接続に成功した場合には、ステップＳ２３４で分岐テーブルＪＣＴに前ホップＳＡ（入力側サービスアドレス）及び次ホップＳＡ（出力側サービスアドレス）を追加する。
マルチキャストを処理する場合には、例えば図１８に示す通信シーケンスが実行される。すなわち、アプリケーションＰＣとアプリケーションＰＤとの通信にもう１つのアプリケーションＰＡが加わる場合には、サービスの途中でアプリケーションＰＡがプロキシＰＦに接続し、プロキシＰＦがプロキシＰＩに接続フレームを送る。これにより、プロキシＰＩのノード上の分岐テーブルＪＣＴが変更され、プロキシＰＩの分岐処理によってアプリケーションＰＡにもデータが配信される。
【０２１８】
また、アプリケーションＰＤが２つのアプリケーションＰＡ，ＰＣに接続する場合には、アプリケーションＰＤがプロキシＰＩに接続し、プロキシＰＩが２つのプロキシＰＦ，ＰＧにそれぞれ接続フレームを送り、プロキシＰＦはアプリケーションＰＡに接続し、プロキシＰＧはアプリケーションＰＣに接続する。これにより、３つのアプリケーションＰＤ，ＰＡ，ＰＣの間でマルチキャストのデータ配信サービスを行うことができる。
【０２１９】
次に、ルーチングに関する具体的な制御について説明する。この形態では各ノードにプロキシルーチングテーブルＰＲＴ，リソーステーブルＲＳＴ，ロケーションテーブルＬＣＴが備わっているが、ネットワークの変化に対応するために、自ノードのテーブルで取得できない情報については他のノードに備わったテーブルを利用して検索する。また、自ノードのネットワークアドレスなどが変化した場合には、それに伴うテーブルの更新を他のノードに通知する。
【０２２０】
プロキシは図９，図１０及び図１１に示す動作を行う。具体的な動作は次の通りである。
他ノードのテーブルを検索する場合には、リソーステーブルＲＳＴ，ロケーションテーブルＬＣＴに記述されているノードＩＤを持つノード間で検索を実行する。
【０２２１】
他ノードのテーブルを検索する場合には、プロキシはリソーステーブルＲＳＴ又はロケーションテーブルＬＣＴに記載されているノードに対し、検索メッセージを発行する（Ｓ３０５）。
検索メッセージを発行する場合又は検索メッセージを受信したが、該当する検索結果を持っていなかった場合には、ステップＳ３０４以降の処理を行う。
【０２２２】
検索メッセージに該当する結果を持っていた場合には、検索メッセージを発行したノードに対してステップＳ３０６で検索の結果を通知する。
また、同一の検索メッセージを複数受信した場合には最初の検索メッセージに対してのみ処理をおこない、残りは無視する。
実際の検索や情報の通知の方法には次に示すようにいくつかの種類がある。転送されるメッセージには、検索あるいは通知の方法を指定するための情報が含まれているので、メッセージを受信したプロキシは、ステップＳ３０５又はＳ３１６においてメッセージ内で指定された方法に従ってメッセージの転送を行う。
【０２２３】
（方法（１））ホップ数制限による検索，通知：メッセージを発行するノードは最大のホップ数を定める。メッセージを受信したノードはホップ数を１つ減じ、ホップ数が０でなかったら、リソーステーブルＲＳＴ又はロケーションテーブルＬＣＴに記載されているノードに対しさらにメッセージを送信する。
（方法（２））ホップ致制限と送信ノード制限による検索，通知：方法（１）に加え、各ノードで同一メッセージを送信するノードを一定数以内に制限する。
【０２２４】
（方法（３））ホップ数制限と検索済みノード情報による検索，通知：方法（１）に加え、メッセージが通ってきたノードの履歴をそのメッセージに含めて送信する。メッセージを受信したノードは、そのメッセージが既に通過したノードに対してはメッセージの転送を行わない。
【０２２５】
（方法（４））  ホップ数制限とノード間の類似度又は重要度情報を用いた検索，通知：方法（１）に加え、リソーステーブルＲＳＴ又はロケーションテーブルＬＣＴに、重要度又は類似度に関する項目を加え、重要度，類似度の高いノードに対してだけメッセージを送信する。この場合の重要度は、該当するノードとの通信頻度によって増減する。増減する割合は増減率による。類似度は、各ノード間リソーステーブルＲＳＴ又はロケーションテーブルＬＣＴに記載のノードがどのぐらいの割合で重複しているかを表す。
【０２２６】
一方、各ノードを構成する通信装置における各テーブルの記憶容量には限りがある。また、大容量の記憶装置を備えると通信装置のコストが高くなる。従って、ルーチングの効率が低下しないように配慮しながら各テーブルに保持する情報の容量を制限する必要がある。
そこで、この形態ではリソーステーブルＲＳＴ又はロケーションテーブルＬＣＴに重要度及び増減率の項目を加える。この重要度は該当するノードとの通信頻度によって増減する（Ｓ３２５，Ｓ３２７）。増減する割合は増減率による。
【０２２７】
そして、テーブルの容量が各ノードによって予め決められた容量を超えた場合には、ステップＳ３２２で重要度の低いノードの情報から優先的に削除し、テーブル容量が規定以内におさまるように管理する。
この形態では、ルーチングにおけるノード間の距離は物理的な距離とは異なり、特定のノードと他の特定のノードとがしばしば通信を行うといった、ユーザの利用頻度や使いやすさといった尺度が非常に重要になる。
【０２２８】
ところで、現在、多くの企業や機関ではネットワーク層（ＩＰレベル）の通信を遮断するファイアウォールが設置されているが、本発明のプロキシで構成される通信ネットワークは、このファイアウォールを超えて通信することが可能である。
ファイアウォールを超える通信を可能にするための具体的な方法は次の通りである。
【０２２９】
（１）プロキシをファイアウォールとともに設置する。
（２）ファイアウォールを超えることができる設定になっているＨＴＴＰなどのトランスポートプロトコルを用いてＨＴＴＰプロキシ等（本発明のプロキシとは全く別のもの）を通過することで、プロキシ間の通信を実現する。
【０２３０】
【発明の効果】
本発明においては、プロキシ間のネットワークの変化を吸収し、アプリケーションの動作するノードの変更も可能なプロキシで通信を動的に複数の通信に分岐することにより、マルチキャスト通信に途中から参加したり、離脱したりといった具合に動的にアプリケーション間のマルチキャスト通信を実現することができる。
【０２３１】
また、マルチキャスト通信路の一部であるプロキシ間の通信ネットワークの状態が変化し、ネットワークが分断された場合においても、個々のマルチキャスト通信は維持され、代わりの通信手段によりネットワークの分断を回復させることができるので、ネットワークの分断を解消し、サービスを継続することが可能である。また、アプリケーションやプロキシを動作させているノードが変更になった場合においても、継続的にサービスを提供できる。
【０２３２】
また、現在、多くの企業や機関ではネットワーク層（ＩＰレベル）の通信を遮断するファイアウォールが設置されているが、本発明のようなプロキシで構成される通信ネットワークでは、ファイアウォールを超えて動作することが可能である。また、このファイアウォールがプロキシで構成されるネットワークの通信を許したとしても、ネットワーク層の通信に比べて通信方法や手順が限定されるため、一定のセキュリティを確保しつつ、ユーザの利便性を向上させることができる。
【図面の簡単な説明】
【図１】マスター，シャドーエージェントが存在する場合のプロキシの動作を示すフローチャートである。
【図２】マスター，シャドーエージェントの動作を示すフローチャートである。
【図３】マスター，シャドーエージェントが利用するサービステーブルの構成例を示す模式図である。
【図４】シャドーエージェント生成シーケンスの例を示すシーケンス図である。
【図５】シャドーエージェント生成シーケンスの例を示すシーケンス図である。
【図６】メッセージ転送シーケンスの例を示すシーケンス図である。
【図７】マルチキャストに関するプロキシの動作（１）を示すフローチャートである。
【図８】マルチキャストに関するプロキシの動作（２）を示すフローチャートである。
【図９】ルーチングに関するプロキシの動作（１）を示すフローチャートである。
【図１０】ルーチングに関するプロキシの動作（２）を示すフローチャートである。
【図１１】ルーチングに関するプロキシの動作（３）を示すフローチャートである。
【図１２】ネットワークの構成例を示すブロック図である。
【図１３】各ノードにおけるテーブルの構成例（１）を示す模式図である。
【図１４】各ノードにおけるテーブルの構成例（２）を示す模式図である。
【図１５】サービス提供のための基本通信シーケンスを示すシーケンス図である。
【図１６】サービスの動的な変化例を示すブロック図である。
【図１７】マスター，シャドーエージェントが存在する場合の通信シーケンスを示すシーケンス図である。
【図１８】マルチキャストの通信シーケンスを示すシーケンス図である。
【図１９】分岐テーブルを用いた通信経路の構成例を示すブロック図である。
【図２０】プロキシの基本動作（１）を示すフローチャートである。
【図２１】プロキシの基本動作（２）を示すフローチャートである。
【図２２】プロキシの基本動作（３）を示すフローチャートである。
【図２３】プロキシの機能構成を示すブロック図である。
【図２４】コネクション管理を示すブロック図である。
【図２５】コネクション管理における変化を示す模式図である。
【図２６】ノード上の各テーブルの構成を示す模式図である。
【図２７】プロキシ間フレームの構成を示す模式図である。
【図２８】制御コマンドの構成を示す模式図である。
【図２９】プロキシ間メッセージの構成を示す模式図である。
【図３０】プロキシ及びアプリケーションを切り替える場合の制御シーケンスを示すシーケンス図である。
【図３１】プロキシ及びアプリケーションを切り替える場合の通信経路の例を示すブロック図である。
【図３２】セッションにプロキシを追加する場合の制御シーケンスを示すシーケンス図である。
【図３３】セッションにプロキシを追加する場合の通信経路の例を示すブロック図である。
【図３４】セッションからプロキシを削除する場合の制御シーケンスを示すシーケンス図である。
【図３５】セッションからプロキシを削除する場合の通信経路の例を示すブロック図である。
【図３６】セッション上のプロキシを置換する場合の制御シーケンスを示すシーケンス図である。
【図３７】セッション上のプロキシを置換する場合の通信経路の例を示すブロック図である。
【図３８】通信システムの構成例を示すブロック図である。
【図３９】移動端末の構成例を示すブロック図である。
【図４０】サービス管理部ＳＲが保持する情報の例を示す模式図である。
【図４１】位置管理部ＬＲが保持する情報の例を示す模式図である。
【図４２】セッション管理部ＳＭが保持する情報の例を示す模式図である。
【図４３】通信システムの構成例を示すブロック図である。
【図４４】ネットワークの構成例を示すブロック図である。
【図４５】ノード及びサービスの移動モデルを示すブロック図である。
【図４６】端末の移動時の位置情報更新手順を示すシーケンス図である。
【図４７】位置情報更新命令の発行数を示すグラフである。
【図４８】位置検索成功率を示すグラフである。
【図４９】位置検索成功率を示すグラフである。
【図５０】ネットワークの構成例を示すブロック図である。
【図５１】サービスの移動例（１）を示すシーケンス図である。
【図５２】サービスの移動例（２）を示すシーケンス図である。
【図５３】セッションにプロキシを追加する場合の簡略化された制御シーケンスを示すシーケンス図である。
【図５４】セッションからプロキシを削除する場合の簡略化された制御シーケンスを示すシーケンス図である。
【図５５】セッション上のプロキシを置換する場合の簡略化された制御シーケンスを示すシーケンス図である。
【符号の説明】
１，３  アプリケーション
２  プロキシ
４  ノード
５  ブラウザ
６  プロキシ
７  Ｗｅｂサーバ
８  ノード
９  データベース
１０  ソフトウェア
１１  サーバアプリケーション
１２  クライアントアプリケーション
１３  プロキシ
１４  エージェント
１５  リンク切替部
１６，１７，１８  リンク
２１  イーサネット（登録商標）通信アダプタ
２２  無線ＬＡＮアダプタ
２３  ＰＨＳ通信アダプタ
３０  移動端末
４０  ネットワーク
５１，５２，５３  サブネットワーク
５４  広域ネットワーク
５５，５９，６０，６１，６６，６７  移動端末
５６，６２  固定端末
５７，５８，６４，６５  基地局
６３  ＴＡＰ
１０１，１０２  アプリケーション
１０３  セッション
１０４，１０５，１０６  プロキシ
１０７，１０８，１０９，１１０  通信コネクション
ＬＲ  位置管理部
ＳＭ  セッション管理部
ＳＲ  サービス管理部
５０１  プロキシ制御部
５０２  セッション管理部
５０３  キャッシュ管理部
５０４  コネクション管理部
５０５  パス管理部
５０６  リンク管理部
５０７  通信デバイス
ＰＲＴ  プロキシルーチングテーブル
ＲＳＴ  リソーステーブル
ＬＣＴ  ロケーションテーブル
ＪＣＴ  分岐テーブル
ＳＳＴ  セッションテーブル
ＡＳＴ  サービステーブル
【図１】
0003712983.tif 000002
【図２】
0003712983.tif 000003
【図３】
0003712983.tif 000004
【図４】
0003712983.tif 000005
【図５】
0003712983.tif 000006
【図６】
0003712983.tif 000007
【図７】
0003712983.tif 000008
【図８】
0003712983.tif 000009
【図９】
0003712983.tif 000010
【図１０】
0003712983.tif 000011
【図１１】
0003712983.tif 000012
【図１２】
0003712983.tif 000013
【図１３】
0003712983.tif 000014
【図１４】
0003712983.tif 000015
【図１５】
0003712983.tif 000016
【図１６】
0003712983.tif 000017
【図１７】
0003712983.tif 000018
【図１８】
0003712983.tif 000019
【図１９】
0003712983.tif 000020
【図２０】
0003712983.tif 000021
【図２１】
0003712983.tif 000022
【図２２】
0003712983.tif 000023
【図２３】
0003712983.tif 000024
【図２４】
0003712983.tif 000025
【図２５】
0003712983.tif 000026
【図２６】
0003712983.tif 000027
【図２７】
0003712983.tif 000028
【図２８】
0003712983.tif 000029
【図２９】
0003712983.tif 000030
【図３０】
0003712983.tif 000031
【図３１】
0003712983.tif 000032
【図３２】
0003712983.tif 000033
【図３３】
0003712983.tif 000034
【図３４】
0003712983.tif 000035
【図３５】
0003712983.tif 000036
【図３６】
0003712983.tif 000037
【図３７】
0003712983.tif 000038
【図３８】
0003712983.tif 000039
【図３９】
0003712983.tif 000040
【図４０】
0003712983.tif 000041
【図４１】
0003712983.tif 000042
【図４２】
0003712983.tif 000043
【図４３】
0003712983.tif 000044
【図４４】
0003712983.tif 000045
【図４５】
0003712983.tif 000046
【図４６】
0003712983.tif 000047
【図４７】
0003712983.tif 000048
【図４８】
0003712983.tif 000049
【図４９】
0003712983.tif 000050
【図５０】
0003712983.tif 000051
【図５１】
0003712983.tif 000052
【図５２】
0003712983.tif 000053
【図５３】
0003712983.tif 000054
【図５４】
0003712983.tif 000055
【図５５】
0003712983.tif 000056