(57)【要約】【課題】クライアントアプリケーションがプロキシサーバを介してサーバアプリケーションと通信を行うプロキシ通信において、使用するポート番号が固定のクライアントアプリケーションであっても頻繁に接続と切断を繰り返すプロキシ通信を行うことができる。【解決手段】動的に任意のポート番号を割り当てて、割り当てたポート番号を同一ネットワーク内に通知し、割り当てたポート番号で要求を待つプロキシサーバと、通知されたポート番号と設定された通信情報を元にクライアントアプリケーションの要求をプロキシサーバへ送信するプロキシクライアントによって達成される。【選択図】      図１
2005157639.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアントアプリケーションと複数のサーバアプリケーションがプロキシサーバを介して接続され、前記クライアントアプリケーションが前記プロキシサーバを介して前記サーバアプリケーションと通信を行うプロキシ通信システムにおいて、
各クライアントアプリケーションは各々プロキシクライアントを有し、
前記プロキシサーバは自身が使用するポート番号を動的に任意のポート番号に割り当て、前記プロキシクライアントに割り当てた前記ポート番号を通知することを特徴とするプロキシ通信システム。
【請求項２】
請求項１記載のプロキシ通信システムにおいて、
前記プロキシサーバは、
動的にポート番号を割り当てる動的ポート割当部と、 
割り当てたポート番号の状態を監視するポート監視部と、 
割り当てたポート番号に関する情報を管理し、割り当て済みのポート番号の解放を行うポート情報管理部と、 
割り当てたポート番号を前記プロキシクライアントへ通知し、割り当て済みのポート番号の解放を行ったときに前記プロキシクライアントへその旨を通知するポート情報通知部と、 
割り当てたポート番号に関する情報を格納するポート情報データベースと、
を備えることを特徴とするプロキシ通信システム。
【請求項３】
請求項２記載のプロキシ通信システムにおいて、
前記プロキシクライアントは、
前記プロキシサーバから受け取ったポート番号を格納するポート情報データベースと、
クライアントアプリケーションとサーバアプリケーション間の通信情報を格納する通信情報データベースと、
を有し、
クライアントアプリケーションからの要求を受け付たときに、前記通信情報データベースにしたがって判定を行い、前記ポート情報データベースを参照することでプロキシサーバから通知されたポート番号宛てに通信を行うことを特徴とするプロキシ通信システム。
【請求項４】
各々プロキシクライアントを有する複数のクライアントアプリケーションと、複数のサーバアプリケーションが、プロキシサーバを介して接続されたプロキシ通信システムにおけるプロキシサーバのプログラムであって、
コンピュータに、
前記プロキシクライアントへ動的に割り当てたポート番号を通知するステップと、
割り当て済みのポート番号の解放を行ったときに前記プロキシクライアントにその旨を通知するステップと、
を実行させるためのプログラム。
【請求項５】
各々プロキシクライアントを有する複数のクライアントアプリケーションと、複数のサーバアプリケーションが、動的に割り当てたポート番号を通知するプロキシサーバを介して接続されたプロキシ通信システムにおけるプロキシクライアントのプログラムであって、
コンピュータに、
前記プロキシサーバからポート番号の追加要求を受けた場合に、ポート情報データベースに該ポート番号を追加するステップと、
前記プロキシサーバからポート番号の削除要求を受けた場合に、前記ポート情報データベースから該ポート番号を削除するステップと、
前記クライアントアプリケーションから接続要求を受けた場合に、前記ポート情報データベースに格納されたプロキシサーバの使用可能なポート番号を用いて、該プロキシサーバへ接続要求を行うステップと、
を実行させるためのプログラム。
【請求項６】
各々プロキシクライアントを有する複数のクライアントアプリケーションと、複数のサーバアプリケーションが、動的に割り当てたポート番号を通知するプロキシサーバを介して接続されたプロキシ通信システムにおけるプロキシクライアントのプログラムであって、
コンピュータに、
クライアントアプリケーションの接続要求を受け付けるステップと、
クライアントアプリケーションとサーバアプリケーション間の通信情報を格納する通信情報データベースを参照し、前記接続要求の接続先がプロキシ通信の適用対象であるかどうかを判定するステップと、
前記接続要求の接続先がプロキシ通信の適用対象でない場合は、処理を終了するステップと、
前記接続要求の接続先がプロキシ通信の適用対象である場合は、
プロキシサーバから通知されたポート情報を保持するポート情報データベースから、切断後経過時間が未使用、または、ＴＩＭＥ＿ＷＡＩＴ状態の時間を超えているプロキシサーバのポート番号を取得するステップと、
前記クライアントアプリケーションの前記接続要求の接続先を前記プロキシサーバに変更するステップと、
前記プロキシサーバへ接続要求を行うステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークにおけるクライアントアプリケーションとサーバアプリケーション間の通信で、プロキシサーバを介して行うプロキシ通信に係り、特に、クライアントアプリケーションが使用するポート番号が固定の場合のプロキシ通信において、頻繁に接続と切断を繰り返すことを可能にするシステムおよびそのためのプログラムに関する。
【背景技術】
【０００２】
ネットワークにおけるクライアントアプリケーションとサーバアプリケーション間の通信で、直接通信を行うのではなくプロキシサーバと呼ばれる中継サーバを介して通信を行うプロキシ通信は広く知られている。例えば、ＷｅｂブラウザとＷｅｂサーバ間の通信をプロキシサーバを介した通信を行うことで、通信の高速化やアクセス制御を行うことができる。
【０００３】
また、特許文献１には、クライアントが経由するプロキシ情報を所定の情報に応じて動的に付加できるプロキシサーバを実現するプロキシサーバ制御用プログラムが記載されている。
【０００４】
一般にプロキシサーバが使用する接続受付用のポート番号は、ある固定のポート番号が使用される。
【０００５】
ＲＦＣ７９３と、特にＲＦＣ１１２２に規定されるＴＣＰ／ＩＰプロトコルスタックの仕様で、一度接続に使用した送信元ＩＰアドレス、送信元ポート番号、送信先ＩＰアドレス、送信先ポート番号、ＴＣＰプロトコルの五つの組み合わせは、接続を切断した後、ある一定時間内は同じ組み合わせを再利用しての接続ができないことが知られている。ある一定時間はＴＩＭＥ＿ＷＡＩＴ状態と呼ばれ、ＯＳの実装によって異なるが、一般に３０秒から１２０秒である。
【０００６】
クライアントアプリケーションが使用するポート番号が任意である場合は、プロキシサーバが使用するポート番号が固定であっても、前述の五つの組み合わせが同じになることはないので問題はない。
【０００７】
【特許文献１】特開２００３−５８５００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、クライアントアプリケーションが使用するポート番号が固定で、かつ、プロキシサーバの使用するポート番号も固定である場合、前述の五つの組み合わせが常に固定となり、一度使用した後は最低でも３０秒待たないと再利用できない。このことは、クライアントアプリケーションがプロキシサーバと頻繁に接続と切断を繰り返すことができないことを意味する。
【０００９】
前述の五つの組み合わせが常に固定とならないようにするためには、五つの要素のうちどれか一つを固定ではなく任意にする必要がある。
【００１０】
しかしながら、送信元ＩＰアドレス、及び送信先ＩＰアドレスは通常、各マシンに一意に割り当てられるものであるため、任意にすることはできない。また、通信プロトコルもクライアントアプリケーションとサーバアプリケーションの通信の決めごとであるので、任意にすることはできない。
【００１１】
次に、クライアントアプリケーションが使用するポート番号、つまり送信元ポート番号は、クライアントアプリケーションのポート割り当て要求を受けてＯＳが割り当てるものであるから、ＯＳのレベルで要求された固定のポート番号ではなく、任意のポート番号を割り当てることは可能である。
【００１２】
しかしながら、クライアントアプリケーションが割り当てを要求したポート番号とは異なるポート番号をＯＳが割り当てたことにより、クライアントアプリケーションまたはサーバアプリケーションに影響がでてしまいプロキシ通信を行えない場合がある。
【００１３】
そこで、プロキシサーバが使用するポート番号、つまり送信先ポート番号を固定ではなく動的に変更して任意のポート番号にしてプロキシ通信を行う手段があれば、クライアントアプリケーションが使用するポート番号が固定の場合のプロキシ通信においても頻繁に接続と切断を繰り返すことが可能となるが、この点については開示されていない。
【００１４】
本発明の目的は、クライアントアプリケーションがプロキシサーバを介してサーバアプリケーションと通信を行うプロキシ通信において、プロキシサーバが使用するポート番号を動的に任意のポート番号を割り当てることによって、使用するポート番号が固定のクライアントアプリケーションであっても頻繁に接続と切断を繰り返すことができる技術を提供することにある。
【課題を解決するための手段】
【００１５】
本発明は、動的に任意のポート番号を割り当てて、割り当てたポート番号をプロキシクライアントへ通知し、クライアントアプリケーションからの要求を待つプロキシサーバと、通知されたポート番号と設定された通信情報を元にクライアントアプリケーションの要求をプロキシサーバへ送信するプロキシクライアントによって達成される。
【００１６】
すなわち、本発明のプロキシ通信システムは、複数のクライアントアプリケーションと複数のサーバアプリケーションがプロキシサーバを介して接続され、前記クライアントアプリケーションが前記プロキシサーバを介して前記サーバアプリケーションと通信を行うプロキシ通信システムであり、各クライアントアプリケーションは各々プロキシクライアントを有し、前記プロキシサーバは自身が使用するポート番号を動的に任意のポート番号に割り当て、前記プロキシクライアントに割り当てた前記ポート番号を通知する。
【００１７】
前記プロキシサーバは、動的にポート番号を割り当てる動的ポート割当部と、割り当てたポート番号の状態を監視するポート監視部と、割り当てたポート番号に関する情報を管理し、割り当て済みのポート番号の解放を行うポート情報管理部と、割り当てたポート番号を前記プロキシクライアントへ通知し、割り当て済みのポート番号の解放を行ったときに前記プロキシクライアントへその旨を通知するポート情報通知部と、割り当てたポート番号に関する情報を格納するポート情報データベースと、を備える。
【００１８】
前記プロキシクライアントは、前記プロキシサーバから受け取ったポート番号を格納するポート情報データベースと、クライアントアプリケーションとサーバアプリケーション間の通信情報を格納する通信情報データベースと、を有し、クライアントアプリケーションからの要求を受け付たときに、前記通信情報データベースにしたがって判定を行い、前記ポート情報データベースを参照することでプロキシサーバから通知されたポート番号宛てに通信を行う。
【００１９】
また、本発明のプロキシサーバのプログラムは、各々プロキシクライアントを有する複数のクライアントアプリケーションと、複数のサーバアプリケーションが、プロキシサーバを介して接続されたプロキシ通信システムにおけるプロキシサーバのプログラムでり、コンピュータに、前記プロキシクライアントへ動的に割り当てたポート番号を通知するステップと、割り当て済みのポート番号の解放を行ったときに前記プロキシクライアントにその旨を通知するステップと、を実行させる。
【００２０】
また、本発明のプロキシクライアントのプログラムは、各々プロキシクライアントを有する複数のクライアントアプリケーションと、複数のサーバアプリケーションが、動的に割り当てたポート番号を通知するプロキシサーバを介して接続されたプロキシ通信システムにおけるプロキシクライアントのプログラムであり、コンピュータに、前記プロキシサーバからポート番号の追加要求を受けた場合に、ポート情報データベースに該ポート番号を追加するステップと、前記プロキシサーバからポート番号の削除要求を受けた場合に、前記ポート情報データベースから該ポート番号を削除するステップと、前記クライアントアプリケーションから接続要求を受けた場合に、前記ポート情報データベースに格納されたプロキシサーバの使用可能なポート番号を用いて、該プロキシサーバへ接続要求を行うステップと、を実行させる。
【発明の効果】
【００２１】
本発明によれば、クライアントアプリケーションがプロキシサーバを介してサーバアプリケーションと通信を行うプロキシ通信において、クライアントアプリケーションが使用するポート番号が固定の場合であっても、頻繁に接続と切断を繰り返すプロキシ通信を行うことができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施の形態を図面を用いて詳細に説明する。
【００２３】
図１は、本発明を適応した構成例を示したものである。
【００２４】
図１において、複数のプロキシクライアント１０１、１０２、１０３が、ローカルネットワーク１１０を介して、プロキシサーバ１０７と接続されている。
【００２５】
プロキシサーバ１０７は、ネットワーク１１１を介して、サーバアプリケーション１０８、１０９と接続されている。
【００２６】
各クライアントアプリケーション１０４、１０５、１０６は、各々プロキシクライアント１０１、１０２、１０３を有する。
【００２７】
尚、プロキシクライアントとは、クライアントアプリケーションの要求を受け付け、プロキシサーバと通信を行う装置であり、詳細は図２に示す。
【００２８】
また、プロキシサーバとは、プロキシクライアントからの要求を受け付け、プロキシクライアント及びサーバアプリケーションと通信を行う装置であり、詳細は図３に示す。
【００２９】
図２は、本発明におけるプロキシクライアントのブロック図である。
【００３０】
プロキシクライアント１０１は、クライアントアプリケーションの要求を受け付ける要求受付部２０１、接続先をプロキシサーバに変更する接続先変更部２０２、プロキシサーバに要求を発行する要求発行部２０３、プロキシサーバから通知されるポート情報を受信するポート情報受信部２０４、プロキシサーバから通知されたポート情報を管理するポート情報管理部２０５、ポート情報を保持するポート情報ＤＢ２０６、プロキシ通信情報を設定する通信情報設定部２０７、プロキシ通信情報を保持する通信情報ＤＢ２０８から構成される。
【００３１】
ポート情報ＤＢ２０６は、プロキシサーバ１０７から通知されたポート番号と、そのポートを使用した接続を切断してからの経過時間を有するテーブルであり、この詳細は図１３に示す。
【００３２】
通信情報ＤＢ２０８は、プロキシサーバを介したプロキシ通信を行うための設定情報であり、この詳細は図９に示す。
【００３３】
図３は、本発明におけるプロキシサーバのブロック図である。
【００３４】
プロキシサーバ１０７は、プロキシクライアントからの接続を受け付けるためのポート番号を動的に任意のポート番号に割り当てる動的ポート割当部３０１、割り当てたポートの接続受け付け状態を監視するポート監視部３０２、プロキシクライアントからの要求を受け付ける要求受付部３０３、割り当てたポート番号に関する情報を管理するポート情報管理部３０４、割り当てたポート番号をプロキシクライアント１０１に通知するポート情報通知部３０５、割り当てたポート番号に関する情報を保持するポート情報ＤＢ３０６、割り当てたポートを閉じるための判定条件を設定する経過時間設定部３０７、サーバアプリケーション１０８、１０９に要求を発行する要求発行部３０８から構成される。
【００３５】
ポート情報ＤＢ３０６は、割り当てたポート番号とそのポートが現在受け付けている接続数とそのポートで受け付けている全ての接続を切断してからの経過時間を有するテーブルであり、詳細は図１０に示す。
【００３６】
図４は、プロキシサーバ１０７が自身が使用するポート番号を動的に任意に割り当て、割り当てたポート番号をプロキシクライアント１０１、１０２、１０３へブロードキャストで通知する処理を説明するフローチャートである。
【００３７】
ステップ４０１で、動的ポート割当部３０１はプロキシクライアント１０１、１０２、１０３からの接続を受け付けるために使用するポート番号を任意に割り当てるようにＯＳに要求する。
【００３８】
ステップ４０２で、動的ポート割当部３０１は、ＯＳによって割り当てられた任意のポート番号をポート情報管理部３０４に通知し、ポート情報管理部３０４はそのポート番号をポート情報ＤＢ３０６に登録する。
【００３９】
ステップ４０３で、ポート情報通知部３０５はＯＳによって割り当てられた任意のポート番号をプロキシクライアント１０１、１０２、１０３へブロードキャストで通知する。なお、通知する情報のデータ構造の詳細は図１２に示す。
【００４０】
本実施形態においては、ポート番号をブロードキャストで通知しているが、他の通信方法でポート番号をプロキシクライアントへ通知してもよい。
【００４１】
図５は、プロキシクライアント１０１がプロキシサーバ１０７から通知されたポート番号を保持するポート情報ＤＢ２０６の更新を行う処理を説明するフローチャートである。
【００４２】
ステップ５０１で、ポート情報受信部２０４はプロキシサーバ１０７から通知されるポート番号と更新要求種別を受信する。
【００４３】
ステップ５０２で、ポート情報管理部２０５はポート情報受信部２０４から通知された更新要求種別が追加要求であるかを判定する。
追加要求であればステップ５０３へ進み、削除要求であればステップ５０４へ進む。
【００４４】
ステップ５０３で、ポート情報管理部２０５はポート情報ＤＢ２０６に通知されたポート番号を追加する。
【００４５】
ステップ５０４で、ポート情報管理部２０５はポート情報ＤＢ２０６から通知されたポート番号を削除する。
【００４６】
なお、プロキシサーバ１０７から通知される情報のデータ構造の詳細は図１２（ポート情報追加通知）と図１３（ポート情報削除通知）に示す。
【００４７】
図６は、プロキシクライアント１０１がクライアントアプリケーション１０４の接続要求を受け付け、接続先をプロキシサーバ１０７に変更する処理を説明するフローチャートである。
【００４８】
ステップ６０１で、要求受付部２０１はクライアントアプリケーション１０４の接続要求を検知し受け付ける。
【００４９】
ステップ６０２で、接続先変更部２０２は、接続要求の接続先と通信情報ＤＢを参照し、プロキシ通信の適用対象であるかどうかを判定する。なお、プロキシ通信の適用対象ではない場合は、プロキシサーバ１０７を経由せずにサーバアプリケーションと直接通信を行う。
【００５０】
プロキシ通信の適用対象であればステップ６０３へ進み、プロキシ通信の適用対象でなければステップ６０６へ進む。
【００５１】
ステップ６０３で、ポート情報管理部２０５はポート情報ＤＢから、切断後経過時間が−（未使用）、または、ＴＩＭＥ＿ＷＡＩＴ状態の時間を超えているプロキシサーバのポート番号を取得し、接続先変更部２０２に通知する。
【００５２】
ステップ６０４で、接続先変更部２０２はクライアントアプリケーション１０４の接続要求の接続先をプロキシサーバ１０７に変更する。
【００５３】
ステップ６０５で、要求発行部２０３は、プロキシサーバ１０７へ接続要求を行う。
【００５４】
ステップ６０６で、接続先変更部２０２はクライアントアプリケーション１０４の接続要求の接続先を変更せずに、サーバアプリケーションと直接通信を行う。
【００５５】
図７は、プロキシサーバ１０７が割り当てたポートを監視する処理を説明するフローチャートである。
【００５６】
ステップ７０１で、ポート監視部３０２は保持しているポート情報ＤＢ３０６（詳細は図１１）を参照し、現在の接続受付数が０のポート番号が存在するかを判定する。
【００５７】
現在の接続受付数が０のポート番号が存在すればステップ７０２へ進み、存在しなければステップ７０１を再度行う。
【００５８】
ステップ７０２で、ポート監視部３０２は現在の接続受付数が０のポートの全接続切断後経過時間が経過時間設定値を超えているかどうかを判定する。
【００５９】
経過時間設定値を超えている場合はステップ７０３へ進み、超えていない場合はステップ７０１に戻る。
【００６０】
ステップ７０３で、ポート監視部３０２は現在の接続受付数が０で、かつ、全接続切断後経過時間が経過時間設定値を超えているポートを閉じる。
【００６１】
ステップ７０４で、ポート情報管理部３０４は閉じたポートのポート情報をポート情報ＤＢ３０６から削除する。
【００６２】
ステップ７０５で、ポート情報通知部３０５はプロキシクライアントへ閉じたポートのポート番号に関する情報を削除するよう通知する。
【００６３】
以上により、既に割り当て済みのポート番号の解放が行われる。削除するよう通知を受けたプロキシクライアントでは、図５のステップ５０４に示すように、ポート情報ＤＢから通知されたポート番号を削除する。
【００６４】
図８は、プロキシサーバ１０７がプロキシクライアント１０１からの接続要求または切断要求を受け付けたときにポート情報ＤＢ２０６を更新し、サーバアプリケーション１０８との接続を確立、または切断する処理を説明するフローチャートである。なお、プロキシクライアントからの要求には接続要求と切断要求がある。
【００６５】
ステップ８０１で、要求受付部３０３はプロキシクライアント１０１からの要求が接続要求であるかどうかを判定する。
【００６６】
接続要求であればステップ８０２へ進み、切断要求であればステップ８０５へ進む。
【００６７】
ステップ８０２で、ポート情報管理部３０４はポート情報ＤＢ３０６の該当する行の現在接続受付数をインクリメントする。
【００６８】
ステップ８０３で、要求発行部３０８はサーバアプリケーション１０８に接続を要求する。
【００６９】
ステップ８０４で、ポート情報管理部３０４はポート情報ＤＢ３０６（詳細は図１１）の該当する行の全接続切断後経過時間のカウンタをクリアする（０にする）。
【００７０】
ステップ８０５で、ポート情報管理部３０４はポート情報ＤＢ３０６の該当する行の現在接続受付数をデクリメントする。
【００７１】
ステップ８０６で、要求発行部３０８はサーバアプリケーション１０８に切断を要求する。
【００７２】
ステップ８０７で、ポート監視部３０２は切断要求を行ったポートで最後の切断が行われたのかを判定する。
【００７３】
ステップ８０５で、ポート情報管理部３０４はポート情報ＤＢ３０６の該当する行の全接続切断後経過時間のカウンタをスタートする。
【００７４】
図９は、プロキシクライアントがクライアントアプリケーションの切断要求を検知した時の処理を説明するフローチャートである。
【００７５】
ステップ９０１で、要求受付部２０１はクライアントアプリケーションの切断要求を検知する。
【００７６】
ステップ９０２で、切断要求が現在行っているプロキシ通信の接続上での切断要求であればステップ９０３へと進み、そうでなければ、クライアントアプリケーションがプロキシサーバを介さず直接サーバアプリケーションと通信を行っている接続を切断するのであるから、プロキシクライアントは何もしない。
【００７７】
ステップ９０３でボート情報ＤＢの切断を行ったポート番号の切断後経過時間のカウンタをスタートする。
【００７８】
図１０は、クライアントアプリケーションがプロキシ通信を行うための設定を定義している、通信情報ＤＢ２０８を説明する図である。
【００７９】
通信情報ＤＢ１００１は、クライアントアプリケーションがサーバアプリケーションと通信を行うために使用する送信元ポート番号と、クライアントアプリケーションが通信を行う送信先ＩＰアドレスと送信先ポート番号からなるテーブルである。なお、行１００２、１００３、１００４のアスタリスク＊部分は任意の数値であることを示している。
【００８０】
プロキシクライアントは、この情報を元にプロキシ通信を適用するかどうかを判定する。この情報に該当すればプロキシ通信を行い、該当しない場合はプロキシサーバを介さず直接サーバアプリケーションと通信を行う。
【００８１】
図１１は、プロキシサーバが動的に割り当てた任意のポート番号に関する情報をプロキシサーバ自身が保持する、ポート情報ＤＢ３０６を説明する図である。
【００８２】
プロキシサーバ側ポート情報ＤＢ１１０１は、動的に割り当てたポート番号と、そのポートが現在受け付けている接続数、そのポートで受け付けた接続を全て切断してからの経過時間を表す全接続切断後経過時間からなるテーブルである。
【００８３】
プロキシサーバは、全接続切断後経過時間が設定値を超えるとそのポートは不必要と判断し、そのポートを閉じる。
【００８４】
図１２は、プロキシサーバ１０７が動的に割り当てたポート番号をプロキシクライアント１０１、１０２、１０３へ通知する情報を説明する図である。ポート情報追加通知１２０１は、ポート情報ＤＢ２０６へ追加、または削除の要求の区別をするための更新要求種別と、プロキシサーバ１０７が動的に割り当てたポート番号からなる。なお、更新要求種別は、プロキシサーバ１０７が新たにポート番号を割り当てたときに追加要求となる。
【００８５】
図１３は、プロキシサーバ１０７が動的に割り当てたポート番号をプロキシクライアント１０１、１０２、１０３へ通知する情報を説明する図である。ポート情報追加通知１３０１は、ポート情報ＤＢ２０６へ追加、または削除の要求の区別をするための更新要求種別と、プロキシサーバ１０７が動的に割り当てたポート番号からなる。なお、更新要求種別は、プロキシサーバ１０７が割り当て済みのポート番号を閉じたときに削除要求となる。
【００８６】
図１４は、プロキシクライアントがプロキシサーバから通知されたポート番号に関する情報を保持する、ポート情報ＤＢ２０６を説明する図である。プロキシクライアント側ポート情報ＤＢ１４０１は、プロキシサーバ１０７から通知されたポート番号と、そのポートを使用した接続を切断してからの経過時間を表す切断後経過時間からなるテーブルである。切断後経過時間がＴＩＭＥ＿ＷＡＩＴ状態の時間を超えている場合は、そのポート番号を再利用できる。
【００８７】
次に、図１５以降を用いて、本プロキシ通信システムにおける全体の処理の流れを、プロキシクライアント及びプロキシサーバにＩＰアドレスを割り当て、より具体的に説明する。
【００８８】
図１５は、本発明を適応した構成において、各装置にＩＰアドレスを割り当てた具体例である。
【００８９】
図１５において、プロキシクライアント１５０１、１５０２が、ローカルネットワーク１５０５を介して、プロキシサーバ１５０６と接続されている。プロキシサーバ１５０６は、サーバアプリケーション１５０８、１５０９と通信可能である。プロキシクライアント１５０１を有するクライアントアプリケーション１５０３のＩＰアドレスは１０．２０８．１００．１が割り当てられており、プロキシクライアント１５０２を有するクライアントアプリケーション１５０４のＩＰアドレスは１０．２０８．１００．２が割り当てられている。プロキシサーバ１５０６のＩＰアドレスは１０．２０８．１００．２５４が割り当てられている。サーバアプリケーション１５０８のＩＰアドレスは１９２．１６８．０．１が割り当てられており、サーバアプリケーション１５０９のＩＰアドレスは１７２．１６．０．１が割り当てられている。
【００９０】
本説明では、クライアントアプリケーション１５０３はサーバアプリケーション１５０８と通信を行い、クライアントアプリケーション１５０４はサーバアプリケーション１５０９と通信を行う。
【００９１】
まず、プロキシ通信を行うための設定を行う必要がある。
【００９２】
クライアントアプリケーション１５０３がサーバアプリケーション１５０８とプロキシ通信を行うための設定を、プロキシクライアント１５０１の通信情報設定部２０７で行う。設定する情報は、クライアントアプリケーション１５０３が使用するポート番号６０００とサーバアプリケーション１５０８のＩＰアドレス１９２．１６８．０．１とポート番号６６６６を設定する。設定した情報は、図１６に示すようにプロキシクライアント１５０１の通信情報ＤＢ１６０１に行１６０２として追加される。
【００９３】
同様に、クライアントアプリケーション１５０４がサーバアプリケーション１５０９とプロキシ通信を行うための設定を、プロキシクライアント１５０２の通信情報設定部２０７で行う。設定する情報は、クライアントアプリケーション１５０４が使用するポート番号５０００とサーバアプリケーション１５０９のＩＰアドレス１７２．１６．０．１とポート番号５５５５を設定する。設定した情報は、図１７に示すようにプロキシクライアント１５０２の通信情報ＤＢ１７０１に行１７０２として追加される。
【００９４】
プロキシサーバ１５０６が割り当てたポートで受け付けている全ての接続を切断してから何秒後にそのポートを閉じるかを判定するための設定値（閾値）をプロキシサーバ１５０６の経過時間設定部３０７で設定する。本説明では、６０秒を設定する。
【００９５】
以上で、プロキシ通信を行うための設定は完了である。
【００９６】
次に、図４のフローチャートに従い、プロキシサーバ１５０６は処理を行う。
【００９７】
プロキシサーバ１５０６の動的ポート割当部３０１は、プロキシサーバ１５０６の起動時に動的に任意のポート番号を割り当てる。本説明では、ポート番号１０２４が割り当てられたとする。割り当てられたポート番号１０２４は、図１８に示すようにプロキシサーバ１５０６のポート情報ＤＢ１８０１に行１８０２として追加される。この時点では、プロキシクライアント１５０１、１５０２からの接続はまだ受け付けていないため、行１８０２の現在接続数は０であり全接続切断後経過時間も０である。
【００９８】
プロキシサーバ１５０６のポート情報通知部３０５は割り当てられたポート番号１０２４をプロキシクライアント１５０１、１５０２へ図１９に示すポート情報追加通知１９０１を行う。行１９０２に示すように更新要求種別は追加であり、ポート番号は１０２４である。
【００９９】
次に、図５のフローチャートに従い、プロキシクライアント１５０１、１５０２は処理を行う。
【０１００】
プロキシクライアント１５０１、１５０２はポート情報受信部２０４でプロキシサーバ１５０６のポート情報追加通知１９０１を受信する。
【０１０１】
プロキシクライアント１５０１、１５０２のポート情報管理部２０５はポート情報追加通知１９０１の要求種別が追加なのでポート情報ＤＢ２０６へポート情報追加通知１９０１のポート番号１０２４を追加する。追加された情報は、図２０に示すようにポート情報ＤＢ２００１の行２００２として追加される。この時点では、プロキシサーバ１５０６との接続・切断を行っていないため、行２００２の切断後経過時間は−（未使用）である。
【０１０２】
この時点で、プロキシクライアント１５０１はクライアントアプリケーション１５０３からの接続要求を受け付けることができる状態になり、プロキシクライアント１５０２はクライアントアプリケーション１５０４からの接続要求を受け付けることができる状態になる。
【０１０３】
次に、クライアントアプリケーション１５０３がサーバアプリケーション１５０８宛てに接続要求を行ったとする。
【０１０４】
図６のフローチャートに従い、プロキシクライアント１５０１は処理を行う。
【０１０５】
要求受付部２０１は、クライアントアプリケーション１５０３の接続要求を検知し、通信情報ＤＢ１６０１を参照する。通信情報ＤＢ１６０１の行１６０２にクライアントアプリケーション１５０３からサーバアプリケーション１５０８宛てへの通信情報が登録されているため、プロキシ通信適用対象であると判断する。
【０１０６】
ポート情報管理部２０５は、ポート情報ＤＢ２００１を参照し行２００２のポート番号１０２４が使用可能であることを接続先変更部２０２に通知する。
【０１０７】
接続先変更部２０２は、接続先をプロキシサーバ１５０６のＩＰアドレス１０．２０８．１００．２５４、ポート番号１０２４宛てに変更する。
【０１０８】
要求発行部２０３は、プロキシサーバ１５０６へ接続要求を行う。
【０１０９】
次に、図８のフローチャートに従い、プロキシサーバ１５０６は処理を行う。
【０１１０】
要求受付部３０３は、プロキシクライアント１５０１からの要求を受け付ける。受け付けた要求は接続要求でポート番号１０２４で受け付けるので、ポート情報ＤＢ１８０１の行１８０２の現在接続受付数をインクリメントする。
【０１１１】
要求発行部３０８はサーバアプリケーション１５０８に接続要求を行う。接続が確立された時点で、ポート情報ＤＢ１８０１の行１８０２は、図２１に示すポート情報ＤＢ２１０１の行２１０２に更新される。行２１０２が示すように現在接続受付数は１となり、全接続切断後経過時間は０のままである。
【０１１２】
続いて、プロキシサーバ１５０６は新たに接続受け付け用のポートを任意に割り当てるために、図４のフローチャートに従い処理を行う。
【０１１３】
プロキシサーバ１５０６の動的ポート割当部３０１は、動的に任意のポート番号を新たに割り当てる。本説明では、ポート番号１０２５が割り当てられたとする。
【０１１４】
割り当てられたポート番号１０２５は、図２１に示すようにプロキシサーバ１５０６のポート情報ＤＢ２１０１に行２１０３として追加される。この時点では、プロキシクライアント１５０１、１５０２からの接続はまだ受け付けていないため、行２１０３の現在接続数は０であり全接続切断後経過時間も０である。
【０１１５】
プロキシサーバ１５０６のポート情報通知部３０５は割り当てられたポート番号１０２５をプロキシクライアント１５０１、１５０２へ図２２に示すポート情報追加通知２２０１を行う。行２２０２に示すように更新要求種別は追加であり、ポート番号は１０２５である。
【０１１６】
次に、図５のフローチャートに従い、プロキシクライアント１５０１、１５０２は処理を行う。
【０１１７】
プロキシクライアント１５０１、１５０２はポート情報受信部２０４でプロキシサーバ１５０６のポート情報追加通知２２０１を受信する。
【０１１８】
プロキシクライアント１５０１、１５０２のポート情報管理部２０５はポート情報追加通知２２０１の要求種別が追加なのでポート情報ＤＢ２０６へポート情報追加通知２２０１のポート番号１０２５を追加する。追加された情報は、図２３に示すようにポート情報ＤＢ２３０１の行２３０３として追加される。この時点では、プロキシサーバとの接続・切断を行っていないため、行２３０３の切断後経過時間は−（未使用）である。
【０１１９】
次に、通信を終えたクライアントアプリケーション１５０３がサーバアプリケーション１５０８のポート番号１０２４宛てに切断要求を行ったとする。
【０１２０】
プロキシクライアント１５０１は、図９のフローチャートに従い、処理を行う。
【０１２１】
クライアントアプリケーション１５０３の切断要求は、プロキシクライアント１５０１の要求受付部２０１が検知し、要求発行部２０３はプロキシサーバ１５０６に切断要求を通知する。
【０１２２】
なお、接続が切断された時点で、ポート情報ＤＢ２０６の切断後経過時間のカウントがスタートする。切断後１０秒が経過した時のポート情報ＤＢ２０６は図２４のポート情報ＤＢ２４０１の行２４０２のようになる。
【０１２３】
次に、切断要求の通知を受けるプロキシサーバ１５０６は、図８のフローチャートに従い、処理を行う。
【０１２４】
要求受付部３０３は、プロキシクライアント１５０１からの要求を受け付ける。受け付けた要求は切断要求でポート番号１０２４で受け付けるので、ポート情報ＤＢ２１０２の現在接続受付数をデクリメントする。
【０１２５】
要求発行部３０８はサーバアプリケーション１５０８に切断要求を行う。切断された時点で、ポート番号１０２４で受け付けている最後の接続を切断したので、ポート情報ＤＢ２１０１の行２１０２の全接続切断後経過時間のカウンタをスタートする。切断後３０秒が経過した時点では、図２５に示すようにポート情報ＤＢ２５０１の行２５０２に更新されている。行２５０２が示すように現在接続受付数は０となり、全接続切断後経過時間は３０秒が経過している。
【０１２６】
次に、クライアントアプリケーション１５０３がサーバアプリケーション１５０８宛てに接続要求を行ったとする。
【０１２７】
要求受付部２０１は、クライアントアプリケーション１５０３の接続要求を検知し、通信情報ＤＢ１６０１を参照する。通信情報ＤＢ１６０１の行１６０２にクライアントアプリケーション１５０３からサーバアプリケーション１５０８宛てへの通信情報が登録されているため、プロキシ通信適用対象であると判断する。
【０１２８】
ポート情報管理部２０５は、ポート情報ＤＢ２４０１を参照し行２４０３のポート番号１０２５が使用可能であることを接続先変更部２０２に通知する。ここで、行２４０２が示すように、ポート番号１０２４の切断後経過時間は１０秒でＴＩＭＥ＿ＷＡＩＴ状態にあるため１０２４を再利用することはできない。
【０１２９】
接続先変更部２０２は、接続先をプロキシサーバ１５０６のＩＰアドレス１０．２０８．１００．２５４、ポート番号１０２５宛てに変更する。
【０１３０】
要求発行部２０３は、サーバアプリケーション１５０８へ接続要求を行う。
【０１３１】
次に、図８のフローチャートに従い、プロキシサーバ１５０６は処理を行う。
【０１３２】
要求受付部３０３は、プロキシクライアント１５０１からの要求を受け付ける。受け付けた要求は接続要求でポート番号１０２５で受け付けるので、接続が確立された時点で、ポート情報ＤＢ２１０１の行２１０３の現在接続受付数をインクリメントし、図２５に示すポート情報ＤＢ２５０１の行２５０３に更新される。行２５０３が示すように、現在接続受付数は１となり、全接続切断後経過時間は０のままである。
【０１３３】
要求発行部３０８はサーバアプリケーション１５０８に接続要求を行う。
【０１３４】
続いて、プロキシサーバ１５０６は新たに接続受け付け用のポートを動的に割り当てるために、図４のフローチャートに従い処理を行う。
【０１３５】
プロキシサーバ１５０６の動的ポート割当部３０１は、新たに動的にポート番号を割り当てる。本説明では、ポート番号１０２６が割り当てられたとする。割り当てられたポート番号１０２６は、図２５に示すようにプロキシサーバ１５０６のポート情報ＤＢ２５０１に行２５０４として追加される。この時点では、プロキシクライアントからの接続はまだ受け付けていないため、行２５０４の現在接続数は０であり全接続切断後経過時間も０である。
【０１３６】
プロキシサーバ１５０６のポート情報通知部３０５は割り当てられたポート番号１０２６をプロキシクライアント１５０１、１５０２へ図２６に示すポート情報追加通知２６０１をブロードキャストで送信する。図２６に示すように更新要求種別は追加であり、ポート番号は１０２６である。
【０１３７】
次に、ポート情報追加通知２６０１を受けるプロキシクライアント１５０１、１５０２は、図５のフローチャートに従い、処理を行う。
【０１３８】
プロキシクライアント１５０１、１５０２はポート情報受信部２０４でプロキシサーバ１５０６のポート情報追加通知２６０１を受信する。
【０１３９】
プロキシクライアント１５０１、１５０２のポート情報管理部２０５はポート情報追加通知２６０１の要求種別が追加なのでポート情報ＤＢ２０６へポート情報追加通知２６０１のポート番号１０２６を追加する。プロキシクライアント１５０１で追加された情報は、図２７に示すようにポート情報ＤＢ２７０１の行２７０４として追加される。プロキシクライアント１５０２で追加された情報は、図２８に示すようにポート情報ＤＢ２８０１の行２８０４として追加される。この時点では、プロキシサーバとの接続・切断を行っていないため、行２８０４の切断後経過時間は−（未使用）である。
【０１４０】
次に、ポート番号１０２４で受け付けている最後の接続を切断してから、６１秒が経過した時のプロキシサーバ１５０６のポート情報ＤＢ３０６は、図２９の行２９０２の状態になる。図２９において、ポート情報ＤＢ２９０１の行２９０２の全接続切断後経過時間は６１秒に更新されている。
【０１４１】
プロキシサーバ１５０６のポート監視部３０２は、常に動的に割り当てた全てのポートを図７のフローチャートに従い監視している。
【０１４２】
今、ポート情報ＤＢ２９０１が示すように動的に割り当てられているポート番号は１０２４、１０２５、１０２６であり、現在接続受付数が０のポート番号は、１０２４と１０２６である。そのうちポート番号１０２４の全接続切断後経過時間は６１秒を経過しており、プロキシサーバ１５０６の経過時間設定部３０７で設定した６０秒を設定したので、ポート番号１０２４の全接続切断後経過時間６１秒は設定値６０秒を超えている。よって、設定値を超えているポート番号１０２４を閉じる。
【０１４３】
ポート情報管理部３０４は、ポート番号１０２４に関する情報を削除する。具体的には、ポート情報ＤＢ２９０１から行２９０２を削除する。削除後のポート情報ＤＢ３０６は、図３０に示すポート情報ＤＢ３００１の状態になる。
【０１４４】
ポート情報通知部３０５は、プロキシクライアント１５０１、１５０２へポート番号１０２４に関する情報を削除するように、図３１に示すポート情報削除通知３１０１をブロードキャストで送信する。
【０１４５】
次に、プロキシクライアント１５０１、１５０２は、図５に示すフローチャートに従い、処理を行う。
【０１４６】
ポート情報受信部２０４は、プロキシサーバ１５０６からのポート情報削除通知３１０１を受信する。受信したポート情報削除通知３１０１は行３１０２が示すようにポート番号が１０２４で要求種別が削除であるため、ポート情報管理部２０５はポート情報ＤＢ２０６からポート番号１０２５に関する情報を削除する。具体的には、プロキシクライアント１５０１は図２７に示すポート情報ＤＢ２７０１の行２７０２を削除し、プロキシクライアント１５０１は図２８に示すポート情報ＤＢ２８０１の行２８０２を削除する。
【０１４７】
削除後のプロキシクライアント１５０１、１５０２のポート情報ＤＢ２０６は、図３２に示すポート情報ＤＢ３２０１の状態になる。
【０１４８】
以下、プロキシクライアント１５０１、１５０２が通信要求を発行する度に、前述した一連の処理が繰り返される。
【０１４９】
前述した本発明の実施形態による各処理は、処理プログラムとして構成することができ、この処理プログラムは、ＨＤ、ＤＡＴ、ＦＤ、ＭＯ、ＤＶＤ−ＲＯＭ、ＣＤ−ＲＯＭ等の記録媒体に格納して提供することができる。
【０１５０】
以上、本発明者によってなされた発明を、前記実施形態に基づき具体的に説明したが、本発明は、前記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【図面の簡単な説明】
【０１５１】
【図１】本発明を適用するプロキシ通信システムの概念を示したものである。
【図２】プロキシクライアントのブロック図である。
【図３】プロキシサーバのブロック図である。
【図４】プロキシサーバがプロキシクライアントへポート番号の情報を通知するフローチャートである。
【図５】プロキシクライアントがプロキシサーバから通知されたポート番号の情報を処理するフローチャートである。
【図６】プロキシクライアントがクライアントアプリケーションからの要求を処理するフローチャートである。
【図７】プロキシサーバのポート監視部の処理を説明するフローチャートである。
【図８】プロキシサーバがプロキシクライアントからの要求を処理するフローチャートである。
【図９】プロキシクライアントがクライアントアプリケーションからの切断要求を処理するフローチャートである。
【図１０】プロキシクライアントの通信情報ＤＢを説明する図である。
【図１１】プロキシサーバのポート情報ＤＢを説明する図である。
【図１２】ポート情報追加通知のデータ構造を説明する図である。
【図１３】ポート情報削除通知のデータ構造を説明する図である。
【図１４】プロキシクライアントのポート情報ＤＢを説明する図である。
【図１５】本発明を適用するプロキシ通信システムの具体例を示したものである。
【図１６】本発明を適用するプロキシ通信システムの具体例において、プロキシクライアントａの通信情報ＤＢを説明する図である。
【図１７】本発明を適用するプロキシ通信システムの具体例において、プロキシクライアントｂの通信情報ＤＢを説明する図である。
【図１８】本発明を適用するプロキシ通信システムの具体例において、プロキシサーバのポート情報ＤＢを説明する図である。
【図１９】本発明を適用するプロキシ通信システムの具体例において、ポート情報追加通知のデータ構造を説明する図である。
【図２０】本発明を適用するプロキシ通信システムの具体例において、プロキシクライアントのポート情報ＤＢを説明する図である。
【図２１】本発明を適用するプロキシ通信システムの具体例において、プロキシサーバのポート情報ＤＢを説明する図である。
【図２２】本発明を適用するプロキシ通信システムの具体例において、ポート情報追加通知のデータ構造を説明する図である。
【図２３】本発明を適用するプロキシ通信システムの具体例において、プロキシクライアントのポート情報ＤＢを説明する図である。
【図２４】本発明を適用するプロキシ通信システムの具体例において、プロキシクライアントａのポート情報ＤＢを説明する図である。
【図２５】本発明を適用するプロキシ通信システムの具体例において、プロキシサーバのポート情報ＤＢを説明する図である。
【図２６】本発明を適用するプロキシ通信システムの具体例において、ポート情報追加通知のデータ構造を説明する図である。
【図２７】本発明を適用するプロキシ通信システムの具体例において、プロキシクライアントａのポート情報ＤＢを説明する図である。
【図２８】本発明を適用するプロキシ通信システムの具体例において、プロキシクライアントｂのポート情報ＤＢを説明する図である。
【図２９】本発明を適用するプロキシ通信システムの具体例において、プロキシサーバのポート情報ＤＢを説明する図である。
【図３０】本発明を適用するプロキシ通信システムの具体例において、プロキシサーバのポート情報ＤＢを説明する図である。
【図３１】本発明を適用するプロキシ通信システムの具体例において、ポート情報削除通知のデータ構造を説明する図である。
【図３２】本発明を適用するプロキシ通信システムの具体例において、プロキシクライアントのポート情報ＤＢを説明する図である。
【符号の説明】
【０１５２】
１０１  プロキシクライアントａ
１０２  プロキシクライアントｂ
１０３  プロキシクライアントｃ
１０４  クライアントアプリケーションａ
１０５  クライアントアプリケーションｂ
１０６  クライアントアプリケーションｃ
１０７  プロキシサーバ
１０８  サーバアプリケーションａ
１０９  サーバアプリケーションｂ
１１０  ローカルネットワーク
１１１  ネットワーク
【図１】
2005157639.tif 000003
【図２】
2005157639.tif 000004
【図３】
2005157639.tif 000005
【図４】
2005157639.tif 000006
【図５】
2005157639.tif 000007
【図６】
2005157639.tif 000008
【図７】
2005157639.tif 000009
【図８】
2005157639.tif 000010
【図９】
2005157639.tif 000011
【図１０】
2005157639.tif 000012
【図１１】
2005157639.tif 000013
【図１２】
2005157639.tif 000014
【図１３】
2005157639.tif 000015
【図１４】
2005157639.tif 000016
【図１５】
2005157639.tif 000017
【図１６】
2005157639.tif 000018
【図１７】
2005157639.tif 000019
【図１８】
2005157639.tif 000020
【図１９】
2005157639.tif 000021
【図２０】
2005157639.tif 000022
【図２１】
2005157639.tif 000023
【図２２】
2005157639.tif 000024
【図２３】
2005157639.tif 000025
【図２４】
2005157639.tif 000026
【図２５】
2005157639.tif 000027
【図２６】
2005157639.tif 000028
【図２７】
2005157639.tif 000029
【図２８】
2005157639.tif 000030
【図２９】
2005157639.tif 000031
【図３０】
2005157639.tif 000032
【図３１】
2005157639.tif 000033
【図３２】
2005157639.tif 000034