(57)【要約】【課題】  システムに導入した中間アプリケーションA（本発明を利用したアプリケーション）が、アプリケーションB（既にシステム内で使用されているアプリケーション）に対して割り当てるポート番号を調整し、65536以上の数値を「使用可能なポート」とアプリケーションBに認識させることで、アプリケーションBが同時に65536以上の通信を可能にすることを目的とする。【解決手段】  通信を行うアプリケーションやプロセスが動作するホスト内に、ポートのマスク技術用の中間アプリケーションを導入する。この中間アプリケーションの設定によって、「実際にTCP/IP通信を行いたいアプリケーション」に対して割り当てるポート番号の範囲を65535よりも増やし、「同一のポートの組み合わせが同時に発生しないようにする」手段を提供することで、大量のポートを利用したTCP/IP通信を行うことができるようにする。【選択図】  図４
2012217043.tif 000002
【特許請求の範囲】
【請求項１】
TCP/IP通信用ポート番号変換方法であって、
接続元アプリケーションまたはプロセスが動作している接続元ホストで、前記接続元アプリケーションまたはプロセスの通信要求を受け付ける接続元側中間アプリケーションを動作させ、
予め、前記接続元側中間アプリケーションにおいて、前記接続元アプリケーションまたはプロセスが使用可能な第１のポート番号の範囲と、その範囲に対応して前記接続元側中間アプリケーションと前記接続先側ホストとの間で実際に通信に使用する第２のポート番号の範囲との対応関係を管理しておき、
前記接続元側中間アプリケーションは、前記接続元アプリケーションまたはプロセスからの通信要求を受けたとき、前記第１のポート番号の範囲内で前記接続元アプリケーションまたはプロセスとの間の通信で使用する第１のポート番号を割り当て、前記第２のポート番号の範囲内で前記接続先ホストとの間の通信で使用する第２のポート番号を割り当て、
前記接続元アプリケーションまたはプロセスと前記接続元側中間アプリケーションとの間の通信は前記第１のポート番号を使用して行い、前記接続元側中間アプリケーションと前記接続先ホストとの間の通信は前記第２のポート番号を使用して行うことにより、前記接続元側中間アプリケーション経由で前記接続元アプリケーションまたはプロセスと前記接続先ホストとの間の通信を行う
ことを特徴とするTCP/IP通信用ポート番号変換方法。
【請求項２】
請求項１に記載のTCP/IP通信用ポート番号変換方法において、
前記接続元ホストと前記接続先ホストが同一のホストであることを特徴とするTCP/IP通信用ポート番号変換方法。
【請求項３】
請求項１に記載のTCP/IP通信用ポート番号変換方法において、
異なる接続元アプリケーションまたはプロセスに対してそれぞれ設定する前記第１のポート番号の範囲および第２のポート番号の範囲は、何れも重複を許すことを特徴とするTCP/IP通信用ポート番号変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大量のポートを利用したTCP/IP通信を可能とするTCP/IP通信用ポート番号変換方法に関する。
【背景技術】
【０００２】
IPアドレスに関しては、その枯渇問題やセキュリティ問題を考慮してマスカレードなどの対策が取られている。また、この技術を応用し、ポート番号についてもマスクをかけたり変換処理をかけることで、外部に見せるポートを特定のポートだけに制限できるようになっている。これらの技術は、例えば、下記特許文献１〜３などに記載がある。これらの特許文献に記載の技術は、通信経路上または既存の装置に外部機器をつなげることでTCPパケットを元に該外部機器内でアドレス変換を行うものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】ＷＯ２００８／１５３１９３（特願２００９−５１９３３８）
【特許文献２】特開２００９−１５９１５１（特願２００７−３３３２２３）
【特許文献３】特開２００３−１３４２５４（特願２００１−３２４１７４）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述した従来の方式は、外部装置に依存する方式であり、アプリケーションがTCP/IP通信を要求した時点で使用できるポートの数に変わりがない。TCP/IPの規定によって、使用可能なポートの範囲は1〜65535である。そのため、従来の方式では、この範囲を超えたポート番号を使用することができないという問題は解決しない（外部装置に接続する前にアプリケーションにエラーが返されてしまう）。また、アプリケーションによっては、同一マシン内でTCP/IP通信を行う場合があるが、アプリケーションを稼働させる前提システムによっては「同一マシン内のTCP/IP通信では外部装置にパケットを流さない」システムもあるため、上述の従来方式では、同一マシン内でのTCP/IP通信に対しては、ポートの変換処理自体が対応できていない。
【０００５】
本発明は、システムに導入した中間アプリケーションA（本発明を利用したアプリケーション）が、アプリケーションB（既にシステム内で使用されているアプリケーション）に対して割り当てるポート番号を調整し、65536以上の数値を「使用可能なポート」とアプリケーションBに認識させることで、アプリケーションBが同時に65536以上の通信を可能にすることを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、請求項１に係る発明は、TCP/IP通信用ポート番号変換方法であって、接続元アプリケーションまたはプロセスが動作している接続元ホストで、前記接続元アプリケーションまたはプロセスの通信要求を受け付ける接続元側中間アプリケーションを動作させ、予め、前記接続元側中間アプリケーションにおいて、前記接続元アプリケーションまたはプロセスが使用可能な第１のポート番号の範囲と、その範囲に対応して前記接続元側中間アプリケーションと前記接続先側ホストとの間で実際に通信に使用する第２のポート番号の範囲との対応関係を管理しておき、前記接続元側中間アプリケーションは、前記接続元アプリケーションまたはプロセスからの通信要求を受けたとき、前記第１のポート番号の範囲内で前記接続元アプリケーションまたはプロセスとの間の通信で使用する第１のポート番号を割り当て、前記第２のポート番号の範囲内で前記接続先ホストとの間の通信で使用する第２のポート番号を割り当て、前記接続元アプリケーションまたはプロセスと前記接続元側中間アプリケーションとの間の通信は前記第１のポート番号を使用して行い、前記接続元側中間アプリケーションと前記接続先ホストとの間の通信は前記第２のポート番号を使用して行うことにより、前記接続元側中間アプリケーション経由で前記接続元アプリケーションまたはプロセスと前記接続先ホストとの間の通信を行うことを特徴とする。
【０００７】
請求項２に係る発明は、請求項１に記載のTCP/IP通信用ポート番号変換方法において、前記接続元ホストと前記接続先ホストが同一のホストであることを特徴とする。
【０００８】
請求項３に係る発明は、請求項１に記載のTCP/IP通信用ポート番号変換方法において、異なる接続元アプリケーションまたはプロセスに対してそれぞれ設定する前記第１のポート番号の範囲および第２のポート番号の範囲は、何れも重複を許すことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、同時に1〜65535の範囲を超えたポート番号を利用してTCP/IP通信を行ことができる。また、ポートの管理を中間アプリケーションで行うため、新たな外部機器の導入が不要である。さらに、同一マシン内のTCP/IP通信でもポート管理が可能になる。すなわち、TCP/IP通信を行うアプリケーションに対して、ポートの統括と変換を中間アプリケーションが行うことで、従来のシステムに新たな機器を追加することなく、アプリケーションのインストールと各マシンで行う設定によってポート変換を対応できるようにし、大量のポートを利用したTCP/IP通信を行うことが可能となる。
【図面の簡単な説明】
【００１０】
【図１】従来のTCP/IP通信の処理方式（接続元ホストと接続先ホストが別ホストの場合）を示すブロック図
【図２】従来のTCP/IP通信の処理方式（接続元ホストと接続先ホストが同一ホストの場合）を示すブロック図
【図３】従来のTCP/IP通信の処理方式による接続元の処理フロー
【図４】本発明を採用した中間アプリケーションを適用した際の、TCP/IP通信の処理方式（接続元ホストと接続先ホストは別ホスト、接続先ホストは一つの場合）を示すブロック図
【図５】本発明を採用した中間アプリケーションを適用した際の、TCP/IP通信の処理方式（接続元ホストと接続先ホストは別ホスト、接続先ホストは複数の場合）を示すブロック図
【図６】本発明を採用した中間アプリケーションを適用した際の、TCP/IP通信の処理方式（接続元ホストと接続先ホストは同一ホストの場合）を示すブロック図
【図７】本発明を採用した中間アプリケーションを導入したホスト「ホストA」でのポート指定範囲の関連図
【図８】本発明を採用した中間アプリケーションを導入したホスト「ホストB」でのポート指定範囲の関連図
【図９】本発明を採用した中間アプリケーションを導入したホスト「ホストE」でのポート指定範囲の関連図
【図１０】本発明を採用した中間アプリケーションを適用した際の、TCP/IP通信の処理方式による接続元の処理フロー
【図１１】本発明を採用した中間アプリケーションを適用した際の、TCP/IP通信の処理方式による接続先の処理フロー
【図１２】図１および図４の環境で図７、図８、図９の設定を行ったときのポート番号とIPアドレスの組み合わせを示す図
【発明を実施するための形態】
【００１１】
以下、本発明の一実施の形態について図面を用いて説明する。なお、説明の便宜のため、まず図１〜図３を用いて従来のシステム装置におけるTCP/IP通信の処理方式について説明し、その後、図４以降で本発明の実施形態に係るTCP/IP通信の処理方式を説明する。
【００１２】
図１は、従来のシステム装置において、２台のマシン間（接続元ホストと接続先ホストは別ホスト）でTCP/IP通信を行う場合の処理方式の一例を示すブロック図である。マシン101にホスト名AとIPアドレスCが、マシン102にホスト名BとIPアドレスDが、それぞれ割り当てられているものとする。ホストAで稼働しているアプリケーションE内のプロセスFがTCP/IP通信を行う場合は、オペレーティングシステムIがアプリケーション向けに提供している処理を用いることで制御Jにより接続元ポートが割り当てられる。接続元ポートについてはプロセスFがポート番号を指定して要求することも可能であり、また他のプロセスが使用していない任意の番号を制御Jによりで割り当てさせることも可能である。ただし、いずれの場合も、使用可能なポート番号は1〜65535のいずれかとなる。
【００１３】
プロセスFは、オペレーティングシステムIの制御Jを経由して割り当てられた接続元ポート番号と接続元IPアドレスCの他に、接続先ポート番号と接続先IPアドレスDを指定する。これにより、ホストAからホストBへのTCP/IP通信が可能になる。また、ホストA-ホストB間に回線制御装置Nを配置することで、NAT等のIP変換を応用したセキュリティを高めたシステムを構築することも可能である。プロセスG、プロセスH、プロセスP、プロセスR、プロセスTがそれぞれTCP/IP通信を行う場合の処理は、上述したプロセスFの処理と同じになる。
【００１４】
以降、TCP/IP通信で使用される接続元ポート番号、接続元IPアドレス、接続先ポート番号、接続先IPアドレスの組み合わせを順に［接続元ポート番号：接続元IPアドレス：接続先ポート番号：接続先IPアドレス］と記載する。例えば、接続元ポート番号＝2000、接続元IPアドレス＝C、接続先ポート番号＝3000、接続先IPアドレス＝Dとした場合は［2000：C：3000：D］と表す。
【００１５】
ホストA-ホストB間でプロセスF〜Hが、同時にTCP/IP通信を行うことも可能である。ただし、接続元ポート番号、接続元IPアドレス、接続先ポート番号、接続先IPアドレスのすべてが同じ組み合わせで同時に複数のTCP/IP通信を行うことはできない。例えば、プロセスFが使用しているポートの組み合わせが［2000：C：3000：D］だった場合、プロセスGが［2000：C：3000：D］という組み合わせでTCP/IP通信を行うことはできず、制御JがプロセスGに「通信経路重複エラー」として異常を通知する。そのため、回線制御装置Nまでデータも送信されない。プロセスGがホストBにTCP/IP通信を行うためには［2001：C：3000：D］や［2000：C：3001：D］など、どれか1項目を異なる値にする必要がある。
【００１６】
図２は、従来のシステム装置において、同一マシン内（接続元ホストと接続先ホストは同一ホスト）でTCP/IP通信を行う場合の処理方式の一例を示すブロック図である。図１と同様に、101にホスト名AとIPアドレスCが割り当てられているものとする。
【００１７】
アプリケーションE内のプロセスFがTCP/IP通信を行う方式は、図１のケースと同じである。ただし、接続元IPアドレスと接続先IPアドレスが同じ場合は、データがマシンの外に流れないことが多い。そのため、ホストA-ホストB間に配置された回線制御装置Nは、データが回線制御装置Nを経由しないため、ポート変換処理やセキュリティを目的とした処理を実行できない。また、同一マシン内でも、接続元ポート番号、接続元IPアドレス、接続先ポート番号、接続先IPアドレス（＝接続元IPアドレス）のすべてが同じ組み合わせで同時に複数のTCP/IP通信を行うことはできない。
【００１８】
プロセスFがホストA内のプロセスMにTCP/IP通信を行ったときに使用しているポートの組み合わせが［2000：C：3000：C］だった場合、プロセスGがホストA内のプロセスMにTCP/IP通信を行うためには［2001：C：3000：C］や［2000：C：3001：C］など、どれか１項目（接続元ポート番号か接続先ポート番号）を違う値にする必要がある。アプリケーションによる通信は、通常は接続元IPアドレス、接続先ポート番号、および接続先IPアドレスは固定された所定値であるため、あるアプリケーションが同時にTCP/IP通信を行うことのできる上限は「使用可能な接続元ポート番号の数」になり、65535が上限となる。
【００１９】
図３は、図１や図２の従来の方式による接続元のTCP/IP通信の処理フローを表す。ステップ３０１で、図１や図２のプロセスFがオペレーティングシステムIの制御Jに、接続元ポート番号と接続元IPアドレスを要求する。ステップ３０２で、制御Jは、プロセスFからの要求時に接続元ポート番号（０以外の数字）が明示的に指定されたか判定する。明示的な指定が無い場合、ステップ３０３で、制御Jはマシン１０１で未使用の番号を接続元ポートとして確保する。そのポート番号が確保できなかったらステップ３０４からステップ３１３に進み、確保できたらステップ３０４からステップ３０５に進む。
【００２０】
ステップ３０５では、プロセスFが、接続元ポート番号（制御Jが取得した番号）、接続元IPアドレス、接続先ポート番号、および接続先IPアドレスを指定して、接続要求を発行する。ステップ３０６で、制御JがプロセスFの要求に基づいて接続を実行する。ステップ３０７で、指定した組み合わせが他の通信で使用中である場合はステップ３１３に進み、使用中でなければステップ３０８に進む。ステップ３０８で接続先が別マシンか判定し、別マシンでなければ、ステップ３０９で回線制御装置Nにデータを流さずに同一ホスト内でTCP/IP通信を続行する。接続先が別マシンのときは、ステップ３１０で回線制御装置Nにデータを流してTCP/IP通信を続行する。
【００２１】
ステップ３０２でプロセスFから接続元ポート番号が明示的に指定されていた場合は、ステップ３１１で、制御JはプロセスFが要求した番号で接続元ポートを確保する。そのポート番号が確保できなかったらステップ３１２からステップ３１３に進み、確保できたらステップ３１２からステップ３０５に進む。
【００２２】
ステップ３０４で使用可能なポートがない場合、ステップ３１２で指定ポート番号が他で使用中の場合、ステップ３０７で指定した組み合わせが他で使用中の場合は、ステップ３１３で、プロセスFに通信失敗を返す。
【００２３】
以上のような従来方式に対し、本発明を採用した通信方式では、TCP/IP通信を要求するアプリケーションとオペレーティングシステムとの間に中間アプリケーションを配置し、該中間アプリケーションによりポート番号の変換を行うようにしている。
【００２４】
図４は、システム装置内に本発明に係る中間アプリケーションを適用した際の、２台のマシン間でTCP/IP通信を行う処理方式を表した図である。図４中の201〜220が示す各ブロックは、それぞれ、図１および図２中の101〜120の番号が示す各ブロックに対応する（下２桁の数値が同じもの同士が対応する）。221，223は、本発明を採用した中間アプリケーションUを示す。すなわち、図４の構成は、図１の従来のマシン101，102の環境に、本発明に係る中間アプリケーションUを適用したものである。
【００２５】
図５は、システム装置内に本発明に係る中間アプリケーションを適用した際の、３台のマシン間でTCP/IP通信を行う処理方式を表した図である。図５中の301〜316が示す各ブロックは、それぞれ、図１および図２中の101〜116の番号が示す各ブロックに対応する（下２桁の数値が同じもの同士が対応する）。また、図５中のマシン325は、マシン302と同様の構成を持つ別ホストのマシンである。321，323，327は、、本発明を採用した中間アプリケーションUを示す。
【００２６】
図６は、システム装置内に本発明に係る中間アプリケーションを適用し、同一マシン内でTCP/IP通信を行う処理方式を表した図である。図６中の401〜416が示す各ブロックは、それぞれ、図１および図２中の101〜116の番号が示す各ブロックに対応する（下２桁の数値が同じもの同士が対応する）。421は、本発明を採用した中間アプリケーションUを示す。
【００２７】
図７〜図９は、図４〜図６のケースにおいて、本発明に係る中間アプリケーションUと、接続元アプリケーションとのポート指定範囲の関連図を表す。中間アプリケーションUは、本発明による通信方式を使用するかどうかの選択をアプリケーションごとに設定できるインターフェースを保持している。例えば、図４のケースでは、アプリケーションE、アプリケーションOは中間アプリケーションU経由で本発明による通信方式を使用し、アプリケーションQ、アプリケーションSは従来のTCP/IP通信による通信方式を使用するようにマシン201（301，401も同様）の通信方式を設定している。
【００２８】
中間アプリケーションUは、アプリケーションEからの接続要求に対し、「接続元ポート番号」として65536以上の値を返すことが可能である。この値は、アプリケーションごとに指定できる。例えば、図７の例では、アプリケーションEのプロセスFは70000〜170000、プロセスGは166000〜266000、プロセスHは268000〜368000、アプリケーションOは471000〜571000の範囲がそれぞれ設定されている。ここで指定できる値の最大値は、プロセッサのビット数に依存する。例えば、32ビットであれば4294967295、64bitなら18446744073709551615が最大値である。また、この指定範囲は、アプリケーション単位やプロセス単位での指定が可能であり、指定範囲が重複していても問題はない。ただし、あるプロセスの接続要求時に、その値が他のプロセスが使用している値と重複していた場合にはエラーとなる。
【００２９】
アプリケーションEからの接続要求は、アプリケーションUが代行する構成となり、その際に中間アプリケーションUが使用する接続元ポートは1〜65535の範囲であれば特定の値、範囲を指定できる。例えば、図７では、アプリケーションEのプロセスFが使用するポート番号の範囲70000〜170000に対応して、中間アプリケーションUが使用する接続元ポートの範囲として1030〜1100が設定されている。
【００３０】
アプリケーションQ、アプリケーションSは、従来のTCP/IP通信による通信方式を使用する設定になっているため、接続要求時には制御Jによって1〜65535のいずれかのポートが割り当てられる。この設定は、当該通信を行う各ホストでアプリケーションごとに統一する必要がある。また、図５の環境を例にすると、ホストBではアプリケーションOに関係するTCP/IP通信を行わないため、アプリケーションUに登録する情報はアプリケーションEの情報だけで良い（図８）。逆に、ホストEではアプリケーションEに関係するTCP/IP通信を行わないため、アプリケーションUに登録する情報はアプリケーションOの情報だけでいい（図９）。
【００３１】
図１０は、図４のように中間アプリケーションUを導入し、図７の設定を行った後の接続元の処理フローを表す。ステップ１００１で、接続元プロセスが中間アプリケーションUに、接続元ポート番号と接続元IPアドレスを要求する。ステップ１００２で、その接続元プロセスが中間アプリケーションUの管理対象であるか判定する。管理対象でない場合、例えば図４のプロセスRからの要求である場合は、図３で説明した従来方式と同様の処理を行えば良いから、ステップ１００２から１００３に進む。以降のステップ１００３〜１０１４の処理は、図３のステップ３０２〜３１３の処理と同様の処理を中間アプリケーションUと制御Jが協働して実行するものである。
【００３２】
ステップ１００２で接続元プロセスが中間アプリケーションUの管理対象である場合、例えば図４のプロセスFからの要求である場合は、ステップ１０１５で、中間アプリケーションUは、プロセスFからの要求時に接続元ポート番号（０以外の数字）が明示的に指定されたか判定する。明示的な指定がある場合は、ステップ１０１１に進む。明示的な指定が無い場合、ステップ１０１６で、中間アプリケーションUのプロセスVは、予め設定されている図７の範囲に従い70000〜170000の範囲の番号を確保する。その番号が確保できなかったらステップ１０１７からステップ１０１３に進み、確保できたらステップ１０１７からステップ１０１８に進む。ステップ１０１８では、図７の設定に従い、1030〜1100の範囲で接続元ポート番号を確保し、ステップ１００９に進む。
【００３３】
図１１は、図４のように中間アプリケーションUを導入し、図７の設定を行った後の接続先の処理フローを表す。ステップ１１０１で、中間アプリケーションUのプロセスWが、予め設定されている図７の情報を参照して、通信を要求してきた接続元の「接続元ポート番号は管理対象の番号」であるか否か判定する。管理対象であれば、ステップ１１０２で、プロセスWが「管理対象番号を使用していたのはプロセスWの管理対象プロセス」であるか否か判定する。管理対象であれば、ステップ１１０３で、プロセスWが、実際に使用された接続元ポート番号と「接続元のプロセスVがプロセスFに割り当てた番号」を管理する（ここではプロセスFからの要求であるとする）。ステップ１１０４では、そのような管理の元で、プロセスMにデータを流す。ステップ１１０１で管理対象でない場合、ステップ１１０２で管理対象でない場合は、ステップ１１０５で、プロセスWは何も処理しないでプロセスMにデータを流す。
【００３４】
図１２は、図１および図４の環境で図７、図８、図９の設定を行ったときのポート番号とIPアドレスの組み合わせを表す。中間アプリケーションUの導入により、同時通信可能数が大きく増加していることが分かる。
【符号の説明】
【００３５】
201，202…ネットワークに接続されたマシン、203…TCP/IP通信を行うアプリケーション（接続元）、204，205，206…TCP/IP通信を行うアプリケーションのプロセス（接続元）、207…マシンにインストールされたオペレーティングシステム（接続元）、208…オペレーティングシステム内のTCP/IP通信に関する処理（接続元）、209…マシンにインストールされたオペレーティングシステム（接続先）、212…TCP/IP通信を行うアプリケーション（接続先）、213…TCP/IP通信を行うアプリケーションのプロセス（接続先）、214…2台のマシン間に設置されたネットワーク機器、215…TCP/IP通信を行うアプリケーション（接続元）、216…TCP/IP通信を行うアプリケーションのプロセス（接続元）、217…TCP/IP通信を行うアプリケーション（接続元）、218…TCP/IP通信を行うアプリケーションのプロセス（接続元）、219…TCP/IP通信を行うアプリケーション（接続元）、220…TCP/IP通信を行うアプリケーションのプロセス（接続元）、221…本発明を採用したアプリケーション、222…本発明を採用したアプリケーションのプロセス（接続元）
223…本発明を採用したアプリケーション、224…本発明を採用したアプリケーションのプロセス（接続先）。
【図１】
2012217043.tif 000003
【図２】
2012217043.tif 000004
【図３】
2012217043.tif 000005
【図４】
2012217043.tif 000006
【図５】
2012217043.tif 000007
【図６】
2012217043.tif 000008
【図７】
2012217043.tif 000009
【図８】
2012217043.tif 000010
【図９】
2012217043.tif 000011
【図１０】
2012217043.tif 000012
【図１１】
2012217043.tif 000013
【図１２】
2012217043.tif 000014