(57)【要約】【課題】ＮＡＴ越え通信を効率的に確立することができる通信接続方法及び通信接続システムを提供する。【解決手段】第１の情報処理装置と第２の情報処理装置との間でグローバルネットワークを経由した通信を確立する通信接続システムにおいて、第１の情報処理装置及び第２の情報処理装置のそれぞれは、アドレス変換装置がシンメトリックＮＡＴか否かを判定するシンメトリックＮＡＴ判定手段と、シンメトリックＮＡＴであると判定されたときに未使用ポートリストを作成する未使用ポートリスト作成手段と、未使用ポートリストをサーバへ送信する未使用ポートリスト送信手段とを有し、第１の情報処理装置と第２の情報処理装置の未使用ポートリストから通信で使用するポート番号の組を決定し、第１の情報処理装置及び第２の情報処理装置は、決定した未使用ポート番号の組を使用して相互にパケットを送受信することによって通信を確立するように構成する。【選択図】図４
2011004253.tif 000002
【特許請求の範囲】
【請求項１】
第１のローカルネットワークに接続された第１の情報処理装置と、
第２のローカルネットワークに接続された第２の情報処理装置と、
前記第１のローカルネットワークとグローバルネットワークとを接続し、グローバルネットワーク上の通信に使用される外側ポート番号と前記第１のローカルネットワーク上の通信に使用される内側ポート番号との間の変換を行う第１のアドレス変換装置と、
前記第２のローカルネットワークとグローバルネットワークとを接続し、グローバルネットワーク上の通信に使用される外側ポート番号と前記第２のローカルネットワーク上の通信に使用される内側ポート番号との間の変換を行う第２のアドレス変換装置とを有する、前記第１の情報処理装置と前記第２の情報処理装置との間でグローバルネットワークを経由した通信を確立する通信接続システムであって、
前記第１の情報処理装置及び前記第２の情報処理装置のそれぞれは、
該情報処理装置が接続された前記アドレス変換装置がシンメトリックＮＡＴか否かを判定するシンメトリックＮＡＴ判定手段と、
前記アドレス変換装置がシンメトリックＮＡＴであると判定されたときに、前記アドレス変換装置が未使用である少なくとも１つのポート番号のリストである未使用ポートリストを作成する未使用ポートリスト作成手段と、
前記未使用ポートリストをグローバルネットワークに接続されたサーバへ送信する未使用ポートリスト送信手段と、を有し、
前記通信接続システムは、前記第１の情報処理装置と前記第２の情報処理装置の未使用ポートリストから前記ポート番号をそれぞれ選択して、前記通信で使用するポート番号の組を決定し、
前記第１の情報処理装置及び前記第２の情報処理装置は、前記決定した未使用ポート番号の組を使用して相互にパケットを送受信することによって前記通信を確立する、ことを特徴とした通信接続システム。
【請求項２】
サーバは、グローバルネットワーク上の通信に使用する第１のグローバルアドレスと、第１のグローバルアドレスと異なる第２のグローバルアドレスとを有し、
前記シンメトリックＮＡＴ判定手段は、
前記情報処理装置が指定する内側ポート番号を送信元ポート番号として含む第１の判定パケットを、前記第１のグローバルアドレスを送信先として送信し、
前記第１の判定パケットに応答して前記サーバから送信された第１の外側ポート番号を送信先ポート番号として含む第１の応答パケットを受信し、
前記第１の外側ポート番号と前記内側ポート番号とが同一である場合、前記内側ポート番号を送信元ポート番号として含む第２の判定パケットを、前記第２のグローバルアドレスを送信先として送信し、
前記第２の判定パケットに応答して前記サーバから送信された第２の外側ポート番号を送信先ポート番号として含む第２の応答パケットを受信し、
前記第２の外側ポート番号と前記内側ポート番号とが異なる場合、前記アドレス変換装置がシンメトリックＮＡＴであると判定する請求項１に記載の通信接続システム。
【請求項３】
前記未使用ポートリストは、不連続かつ一定の間隔は離れた値の少なくとも２つのポート番号を含む請求項１または請求項２に記載の通信接続システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＴ（Network Address Translation：ネットワークアドレス変換）を介した複数の情報処理装置間の通信を確立する通信接続システムに関する。
【背景技術】
【０００２】
インターネットの普及により、サーバ、ＰＣ等多種多様な情報処理装置がインターネットによって繋がれ、遠隔の情報処理装置間でも容易に通信を行えるようになった。また、インターネットには、ルータ等の経路制御装置を介して多数のＬＡＮ（ローカルエリアネットワーク）が接続され、それぞれのＬＡＮにはさらに多数の情報処理装置が接続可能である。
【０００３】
インターネット上の情報処理装置又はインターネットに接続されたＬＡＮ内の情報処理装置が、インターネットに接続された他のＬＡＮの情報処理装置と通信する際、それぞれのＬＡＮに接続されたルータ等の経路制御装置は、ＮＡＴによってインターネット上のグローバルＩＰアドレスとＬＡＮ上のプライベートＩＰアドレスとの間の変換を行い、インターネットとＬＡＮとの間の通信を中継する。このように、インターネット上の情報処理装置又はＬＡＮ内の情報処理装置が、インターネットを経由しＮＡＴを通して他のＬＡＮ内の情報処理装置と通信を行うことをＮＡＴ越え通信というが、ＬＡＮ内の情報処理装置を通信先とするＮＡＴ越え通信には、ＮＡＴの種類によって様々な制約がある。このため、従来、ＲＦＣ（Request for Comments）３４８９で規定されたＳＴＵＮ（Simple Traversa1 of User Datagram Protocol (UDP) Through Network Address Translators (NATs)）（非特許文献１）によって、ＮＡＴの種類を判別し、ＮＡＴの種類に応じてＮＡＴ越え通信を行っている。
【０００４】
ＮＡＴは、グローバルＩＰアドレスとポート番号の組でインターネット上の情報処理装置の位置を特定し、プライベートＩＰアドレスとポート番号の組でＬＡＮ上の情報処理装置の位置を特定している。こうすることによって、ＮＡＴは、ＬＡＮに接続された多数の情報処理装置が少数のグローバルＩＰアドレスでインターネットに接続することを可能にしている。以下、説明を分かりやすくするため、ＮＡＴのインターネット側を外側、ＬＡＮ側を内側とし、インターネット側のポート番号を外側ポート番号、ＬＡＮ側のポート番号を内側ポート番号という。
ＮＡＴは、プライベートＩＰと内側ポート番号の組とインターネット側のグローバルＩＰと外側ポート番号の組とを対応付けて変換する。ＳＴＵＮは、内側ポート番号から外側ポート番号へ変換するときの割り当て規則や外側から内側へ送信されたパケットの扱いの違いから、ＮＡＴを、フルコーンＮＡＴ、制限付きコーンＮＡＴ（ＩＰアドレス制限、ポート番号制限）及びシンメトリックＮＡＴの４種類に分類しており、この順に通信制約は大きくなる。例えば、一方のＮＡＴがフルコーンＮＡＴ、ＩＰアドレス制限付きコーンＮＡＴ又はポート番号制限付きコーンＮＡＴのいずれかであれば、ＮＡＴ越え通信が可能である。しかしながら、双方のＮＡＴがシンメトリックＮＡＴである場合、通信制約が大きいためＮＡＴ超え通信ができない。
【０００５】
例えば、シンメトリックＮＡＴには、つぎのような制約がある。シンメトリックＮＡＴは、ＮＡＴの内側（ＬＡＮ側）から外側（インターネット側）にパケットを送信した時、送信元の外側ポート番号を｛宛先グローバルＩＰアドレス、宛先外側ポート番号、送信元プライベートＩＰアドレス、送信元内側ポート番号｝の組み合わせに対して割り当て、ＮＡＴのマッピングテーブルに登録する。そして、シンメトリックＮＡＴは、ＮＡＴの外側から内側へパケットを受信した時、内側から外側に送信したことのあるグローバルＩＰアドレス及び外側ポート番号を送信元として指定するパケットでなければ、ＮＡＴのマッピングテーブルに同じ組み合わせが存在する場合でも通さないように制限する。したがって、ＳＴＵＮでＮＡＴの種類がシンメトリックＮＡＴと判別されると、ＮＡＴ越え通信を確立させたい送信元の情報処理装置は宛先の情報処理装置のＮＡＴにおける外側ポート番号を、宛先の情報処理装置は送信元の情報処理装置のＮＡＴにおける外側ポート番号を相互に推測する必要があり、正しい組み合わせでなければＮＡＴ越え通信ができない。
シンメトリックＮＡＴの場合にピアツーピア通信を可能にする方法がいくつか提案されている（特許文献１、特許文献２）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００７−５２８６７７
【特許文献２】特開２００６−１５７９４１
【非特許文献】
【０００７】
【非特許文献１】RFC3489:STUN-Simple Traversa1 of User Datagram Protocol (UDP) Through Network Address Translators (NATs)
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１における方法は、ＮＡＴ越え通信を確立しようとする情報処理装置が、十分に広い範囲の全ポート番号を宛先外側ポート番号として通信先の情報処理装置に大量にパケットを送信することによって正しい宛先外側ポート番号を見つけようとするものであり、システムへの負荷が大きくなるという問題がある。
【０００９】
シンメトリックＮＡＴは、内側（ＬＡＮ側）と外側（インターネット側）との間のＩＰアドレス・ポート番号の変換規則における送信元外側ポート番号の割り当て方法によって、加算／減算方式、相対的加算／相対的減算方式及びランダムを含むその他の方式に分けられる。加算方式のシンメトリックＮＡＴは、インクリメント型ともいい、マッピングテーブルに既に割り当てられていて使用されている送信元外側ポート番号の中で一番大きい外側ポート番号に対して＋１ずつ（又は＋ｎずつ）増加させながら割り当てる。減算方式のシンメトリックＮＡＴは、デクリメント型ともいい、マッピングテーブルに既に割り当てられていて使用されている送信元外側ポート番号の中で一番小さい外側ポート番号に対して−１ずつ（又は−ｎずつ）減少させながら割り当てる。相対的加算／相対的減算方式のシンメトリックＮＡＴは、ワンタイムマッチの加算／減算方式のことであり、ＮＡＴのマッピングテーブルに、｛宛先グローバルＩＰアドレス、宛先外側ポート番号、送信元プライベートＩＰアドレス、送信元内側ポート番号｝の組み合わせがまだ登録されていない場合、「送信元内側ボート番号＝送信元外側ポート番号」となる送信元外側ポート番号がまだ未使用であれば、この外側ポート番号を割り当てる。一方、「送信元内側ポート番号＝送信元外側ポート番号」となる送信元外側ポート番号がマッピングテーブルに既に存在する場合、この外側ポート番号を割り当てられないので相対的加算／相対的減算方式のシンメトリックＮＡＴは、「送信元内側ポート番号≠送信元外側ポート番号」となる送信元外側ポート番号を加算／減算方式と同様に加算／減算して割り当てる。ランダム方式のシンメトリックＮＡＴは、送信元外側ポート番号にランダムな値を割り当てる。
【００１０】
特許文献２に記載された方法は、ＮＡＴ越え通信を確立しようとする情報処理装置が、最後に割り当てられた外側ポート番号とポート幅をサーバから受け取り、受け取った外側ポート番号にポート幅を加算／減算して次に割り当てられる外側ポート番号を互いに推測するものであり、シンメトリックＮＡＴが加算／減算方式である場合にしか適応できない。
したがって、複数の情報処理装置間でＮＡＴ超え通信を行う際に、シンメトリックＮＡＴであってもその方式に関わらず、効率良く通信が確立できることが望まれる。
【００１１】
本発明は、グローバルネットワークに接続された異なるローカルネットワーク内の情報処理装置間で、ＮＡＴ越え通信を効率的に確立することができる通信接続システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
かかる課題を解決するための本発明の一つの実施形態によれば、第１のローカルネットワークに接続された第１の情報処理装置と、第２のローカルネットワークに接続された第２の情報処理装置と、第１のローカルネットワークとグローバルネットワークとを接続し、グローバルネットワーク上の通信に使用される外側ポート番号と第１のローカルネットワーク上の通信に使用される内側ポート番号との間の変換を行う第１のアドレス変換装置と、第２のローカルネットワークとグローバルネットワークとを接続し、グローバルネットワーク上の通信に使用される外側ポート番号と第２のローカルネットワーク上の通信に使用される内側ポート番号との間の変換を行う第２のアドレス変換装置とを有する、第１の情報処理装置と第２の情報処理装置との間でグローバルネットワークを経由した通信を確立する通信接続システムが提供される。かかる通信接続システムにおいて、第１の情報処理装置及び第２の情報処理装置のそれぞれは、該情報処理装置が接続されたアドレス変換装置がシンメトリックＮＡＴか否かを判定するシンメトリックＮＡＴ判定手段と、アドレス変換装置がシンメトリックＮＡＴであると判定されたときに、アドレス変換装置が未使用である少なくとも１つのポート番号のリストである未使用ポートリストを作成する未使用ポートリスト作成手段と、未使用ポートリストをグローバルネットワークに接続されたサーバへ送信する未使用ポートリスト送信手段と、を有し、通信接続システムは、第１の情報処理装置と第２の情報処理装置の未使用ポートリストからポート番号をそれぞれ選択して、通信で使用するポート番号の組を決定し、第１の情報処理装置及び第２の情報処理装置は、決定した未使用ポート番号の組を使用して相互にパケットを送受信することによって通信を確立する。
【００１３】
かかる通信接続システムにおいて、サーバは、グローバルネットワーク上の通信に使用する第１のグローバルアドレスと、第１のグローバルアドレスと異なる第２のグローバルアドレスとを有し、シンメトリックＮＡＴ判定手段は、情報処理装置が指定する内側ポート番号を送信元ポート番号として含む第１の判定パケットを、第１のグローバルアドレスを送信先として送信し、第１の判定パケットに応答してサーバから送信された第１の外側ポート番号を送信先ポート番号として含む第１の応答パケットを受信し、第１の外側ポート番号と内側ポート番号とが同一である場合、内側ポート番号を送信元ポート番号として含む第２の判定パケットを、第２のグローバルアドレスを送信先として送信し、第２の判定パケットに応答してサーバから送信された第２の外側ポート番号を送信先ポート番号として含む第２の応答パケットを受信し、第２の外側ポート番号と内側ポート番号とが異なる場合、アドレス変換装置がシンメトリックＮＡＴであると判定することが好ましい。
【００１４】
また、かかる通信接続システムにおいて、未使用ポートリストは、不連続かつ一定の間隔は離れた値の少なくとも２つのポート番号を含むことが好ましい。
【発明の効果】
【００１５】
本発明は、グローバルネットワークに接続された経路制御装置の下にあるローカルネットワーク内の情報処理装置同士で通信を行う際に、情報処理装置間でＮＡＴ越え通信を効率的に確立することができる通信接続方法及び通信接続システムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態に係る通信接続システムの構成例を示す図である。
【図２】本実施例における第１サーバの構成例を示す図である。
【図３】本実施例におけるローカルネットワーク側の経路制御装置（ＮＡＴ）と情報処理装置との間の接続関係と情報処理装置の構成例を示す図である。
【図４】本実施例における通信接続システムにおいてＮＡＴ越え通信を確立するための動作の全体の流れを示す図である。
【図５】本実施例における通信元情報処理装置のシンメトリックＮＡＴ判定部の処理の流れを示すフローチャートである。
【図６】本実施例における通信元情報処理装置のシンメトリックＮＡＴ判定部の処理の流れを示すフローチャートである。
【図７】本実施例における情報処理装置の未使用ポートリスト作成部の処理の流れを示すフローチャートである。
【図８】本実施例における通信元情報処理装置の未使用ポートリスト突合せ部の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１７】
図１は、本発明の一実施形態に係る通信接続システム１の構成例を示す図である。
グローバルネットワーク４０には、第１サーバ１０、第２サーバ１１、経路制御装置Ａ２０及び経路制御装置Ｂ２１が接続されている。本実施例では、グローバルネットワーク４０としてインターネットを想定しており、第１サーバ１０、第２サーバ１１、経路制御装置Ａ２０及び経路制御装置Ｂ２１にはそれぞれグローバルＩＰが割り当てられている。経路制御装置Ａ２０及び経路制御装置Ｂ２１の内側のローカルネットワークには、それぞれ情報処理装置Ａ３０及び情報処理装置Ｂ３１が接続され、プライベートＩＰが割り当てられている。尚、グローバルネットワーク４０に接続されるローカルネットワーク５０及び５１は３つ以上でもよい。また、それぞれのローカルネットワーク５０及び５１に接続される情報処理装置Ａ３０及び情報処理装置Ｂ３１は２台以上でもよい。
【００１８】
ルータ等の経路制御装置Ａ２０及び経路制御装置Ｂ２１は、それぞれネットワークアドレス変換ＮＡＴａ及びＮＡＴｂを有し、アドレス変換装置として機能する。経路制御装置Ａ２０及び経路制御装置Ｂ２１の詳細については、後述する。
【００１９】
本実施例では、情報処理装置Ａ３０から情報処理装置Ｂ３１に対して、それぞれの経路制御装置Ａ２０及び経路制御装置Ｂ２１を介したグローバルネットワーク４０経由のピアツーピア通信の確立を要求する場合について述べる。
【００２０】
情報処理装置Ａ３０は、自身が接続している経路制御装置Ａ２０のＮＡＴａ又は通信先の情報処理装置Ｂ３１が接続している経路制御装置Ｂ２１のＮＡＴｂの種別が相対的加算／相対的減算方式のシンメトリックＮＡＴであると判別されると、自身が接続している経路制御装置における外側ポート番号として未使用のポート番号のリスト（未使用ポートリスト）を作成して第１サーバ１０へ送信する。通信確立を要求された情報処理装置Ｂ３１も、同様に、自身の未使用ポートリストを作成して第１サーバ１０へ送信する。第１サーバ１０は、情報処理装置Ａ３０及び情報処理装置Ｂ３１が作成した未使用ポートリストを、それぞれの通信相手である情報処理装置Ｂ３１及び情報処理装置Ａ３０に送信する。情報処理装置Ａ３０及び情報処理装置Ｂ３１は、第１サーバ１０から受信した通信先の未使用ポートリストと自身の未使用ポートリストとを参照し、通信に使用できるポートの組み合わせを決定することによって、効率良く通信を確立する。
【００２１】
図２は、本実施例における第１サーバ１０の構成例を示す図である。
サーバ１０は、制御部１１０と、記億部１２０と、通信Ｉ／Ｆ部１３０とを有する。
【００２２】
記憶部１２０は、各種プログラム及び各種データを記憶することができ、例えばＲＡＭ、ＲＯＭ、ＥＰＲＯＭ等の半導体メモリ、ハードディスク等の磁気記録媒体等を用いて構成することができる。
【００２３】
記憶部１２０には、情報処理装置Ａ３０及び情報処理装置Ｂ３１のそれぞれが接続する経路制御装置Ａ２０及び経路制御装置Ｂ２１のＮＡＴに関するＮＡＴ管理情報１２１が記憶されている。ＮＡＴ管理情報１２１には、情報処理装置Ａ３０及び情報処理装置Ｂ３１から受け取ったＮＡＴａ及びＮＡＴｂの種別がそれぞれ情報処理装置Ａ３０及び情報処理装置Ｂ３１の識別情報に対応付けて記憶される。また、ＮＡＴ管理情報１２１は、情報処理装置Ａ３０及び情報処理装置Ｂ３１から受け取った経路制御装置Ａ２０及び経路制御装置Ｂ２１がシンメトリックＮＡＴであれば未使用ポートリスト、その他のＮＡＴの場合はＮＡＴ超え通信が可能な外側ポート番号を記憶している。
表１にＮＡＴ管理情報１２１の例を示す。
【００２４】
【表１】
2011004253.tif 000003
【００２５】
表１に示すように、ＮＡＴ管理情報１２１は、各情報処理装置の識別情報にＮＡＴ種別及びＮＡＴアドレス情報を対応付けて記憶したものである。ＮＡＴアドレス情報は、各情報処理装置のグローバルＩＰと未使用ポートリスト又はＮＡＴ超え通信が可能な外側ポート番号の組み合わせとなる。
【００２６】
例えば、ＮＡＴ種別が４種類のＮＡＴのうちフルコーンＮＡＴ、ＩＰアドレス制限付きコーンＮＡＴ及びポート番号制限付きコーンＮＡＴの場合、ＮＡＴの内側から外側に送信されるパケットの送信元の内側のプライベートＩＰ及び内側ポート番号が他の通信と同一ならば宛先のグローバルＩＰ及び外側ポート番号が異なる場合でも、同じポート番号が送信元の外側ポート番号として割り当てられる。したがって、割り当てられた外側ポート番号は他の情報処理装置とのＮＡＴ超え通信でも再利用できるため、第１サーバ１０との通信で割り当てられた外側ポート番号のようにＮＡＴアドレス情報はこのＮＡＴ超え通信が可能な外側ポート番号を１つだけ持てばよい。
【００２７】
シンメトリックＮＡＴでは、宛先のグローバルＩＰ及び外側ポート番号が異なる初めての送信のとき、新たな送信元外側ポート番号が割り当てられるため、既に使われている送信元外側ポート番号を再利用できないので、未使用ポートリストをＮＡＴアドレス情報に記憶する。加算／減算方式のシンメトリックＮＡＴでは、第１サーバ１０に対して割り当てられた外側ポート番号を基準とし一定数を加算／減算したポート番号を未使用で割り当てられる外側ポート番号として推測できるため、ＮＡＴアドレス情報は少なくともこの基準となるポート番号を未使用ポートリストとして持つ。
【００２８】
相対的加算／相対的減算方式のシンメトリックＮＡＴでは、未使用な送信元外側ポート番号であれば、割り当てられる外側ポート番号を内側ポート番号にて指定することで制御できることから、ＮＡＴアドレス情報はＮＡＴにおいて送信元外側ポート番号として未使用のポート番号を複数個含む未使用ポートリストを持つ。この未使用ポートリストを用いて、情報処理装置Ａ３０及び情報処理装置Ｂ３１は未使用ポート番号の突き合わせを行い、ＮＡＴ超え通信を確立する。
【００２９】
制御部１１０は、プロセッサユニット及び周辺回路を有し、プロセッサユニットが記憶部１２０の半導体メモリに記憶された各種プログラムを実行することによって、サーバ１０の動作を制御する。第１サーバ１０及び第２サーバ１１の動作の詳細に関しては、後述する。
【００３０】
制御部１１０は、情報処理装置Ａ３０及び情報処理装置Ｂ３１から送信されたＮＡＴ種別、外側ポート番号等のＮＡＴ管理情報を、通信Ｉ／Ｆ部１３０を介して受信し、情報処理装置Ａ３０及び情報処理装置Ｂ３１の識別情報と関連付けて記憶部１２０に記憶する。また、情報処理装置Ａ３０及び情報処理装置Ｂ３１からの取得要求に応じて、記憶部１２０からＮＡＴ管理情報１２１を読み出し、通信Ｉ／Ｆ部１３０を介して情報処理装置Ａ３０及び情報処理装置Ｂ３１に送信する。
【００３１】
通信Ｉ／Ｆ部１３０は、グローバルネットワーク４０を経由して経路制御装置Ａ２０及び経路制御装置Ｂ２１を介して情報処理装置Ａ３０及び情報処理装置Ｂ３１と通信を行うためのインターフェース部である。本実施例では、グローバルネットワーク４０としてインターネットＷＡＮを想定している。通信回線としては、有線又は無線の公衆回線又は専用回線を利用することができる。通信Ｉ／Ｆ部１３０は、一般公衆回線、ＡＤＳＬ、ＦＴＴＨ等使用する通信回線に応じたモデム、ターミナルアダプタ、その他の通信インターフェースを有する。通信Ｉ／Ｆ部１３０は、サーバ１０の一部でなく、他の独立した装置でもよい。また、通信Ｉ／Ｆ部１３０は、他の装置とサーバ内部のモジュールとを組み合わせたものでもよい。
【００３２】
以上、第１サーバ１０の構成例について述べたが、第２サーバ１１は必ずしも上記の構成を有する必要はない。第２サーバ１１の代わりに、第１サーバ１０と異なるグローバルＩＰを有し、ＮＡＴ超え通信を行う情報処理装置Ａ３０及び情報処理装置Ｂ３１と通信可能であれば、いかなる情報処理装置を使用してもよい。また、第１サーバ１０の通信Ｉ／Ｆ部１３０が２つ以上の通信インターフェースを有し、２つ以上のグローバルＩＰを有する場合は、第２サーバ１１は必要でない。
【００３３】
図３は、本実施例におけるローカルネットワーク５０側の経路制御装置Ａ（ＮＡＴ）２０と情報処理装置Ａ３０との間の接続関係と情報処理装置Ａ３０の構成例を示す図である。
情報処理装置Ａ３０は、ローカルネットワーク５０を介して経路制御装置Ａ２０に接続され、経路制御装置Ａ２０を介してグローバルネットワーク４０を経由し、第１サーバ１０及び第２サーバ１１と通信可能である。
【００３４】
経路制御装置Ａ２０は、ルータ等のグローバルネットワーク４０とローカルネットワーク５０及び５１の間を中継する装置であり、グローバルネットワーク４０側のグローバルＩＰ及び外側ポート番号とローカルネットワーク５０及び５１側のプライベートＩＰ及び内側ポート番号との間の変換を行う。ＮＡＴは、ローカルネットワーク５０及び５１側のプライベートＩＰ及び内側ポート番号からグローバルネットワーク４０側のグローバルＩＰ及び外側ポート番号へ送信パケットを通過させる際に、ＩＰアドレス及びポート番号の変換対応を保持するマッピングテーブルを生成し、このテーブルを外側から内側へ送信された受信パケットの処理に用いる。
表２にＮＡＴが内部に保持するマッピングテーブルの例を示す。
【００３５】
【表２】
2011004253.tif 000004
【００３６】
表２に示すように、ＮＡＴのマッピングテーブルには、ローカルネットワーク側（ＮＡＴ前）の送信元ＩＰアドレス（プライベートＩＰ）及び送信元ポート番号（内側ポート番号）、グローバルネットワーク側（ＮＡＴ後）の送信元ＩＰアドレス（グローバルＩＰ）及び送信元ポート番号（外側ポート番号）、宛先のグローバルネットワーク側の宛先ＩＰアドレス（グローバルＩＰ）及び宛先ポート番号（外側ポート番号）が、対応付けて登録されている。
例えば、表２には、送信元が、ＮＡＴ前の送信元ＩＰアドレス（プライベートＩＰ）：192.168.XX及び送信元ポート番号（内側ポート番号）：35732、ＮＡＴ後の送信元ＩＰアドレス（グローバルＩＰ）：58.AAA及び送信元ポート番号（外側ポート番号）：25896と、宛先が、宛先ＩＰアドレス（グローバルＩＰ）:223.BBB及び宛先ポート番号（外側ポート番号）：80、というレコードが登録されている。
【００３７】
情報処理装置Ａ３０は、制御部３１０と、記億部３２０と、通信Ｉ／Ｆ部３３０とを有する。
制御部３１０は、プロセッサユニット及び周辺回路を有し、プロセッサユニットが記憶部３２０の半導体メモリに記憶された各種プログラムを実行することによって情報処理装置Ａ３０の動作を制御する。制御部３１０は、シンメトリックＮＡＴ判定部３１１と、ＮＡＴ越え通信確立部３１２とを有する。
【００３８】
シンメトリックＮＡＴ判定部３１１は、従来の方法を用いて情報処理装置Ａ３０が接続している経路制御装置Ａ２０が有するＮＡＴの種別がシンメトリックＮＡＴであるか否かを判定する。シンメトリックＮＡＴ判定部３１１は、ＮＡＴの種別がシンメトリックＮＡＴであると判定した場合、第１サーバ１０及び第２サーバ１１にＮＡＴの種別を判定するために使用するＮＡＴ判定パケットを送受信することによって情報処理装置Ａの内側ポート番号と外側ポート番号との間の変化を調査する。このポート番号の変化に従って、ＮＡＴの種別が加算／減算方式のシンメトリックＮＡＴ、相対的加算／相対的減算方式のシンメトリックＮＡＴ又はその他の方式のシンメトリックＮＡＴのいずれであるかを判定する。
【００３９】
ＮＡＴ越え通信確立部３１２は、シンメトリックＮＡＴ判定部３１１が判定した情報処理装置Ａ３０のＮＡＴ種別に従って、ＮＡＴ越え通信確立のために必要な処理を行う。ＮＡＴ越え通信確立部３１２は、ＮＡＴ判定情報管理部３１２１と、通信先情報管理部３１２２と、未使用ポートリスト作成部３１２３と、未使用ポートリスト突合せ部（通信ポート番号決定手段、通信確立手段）３１２４と、ＮＡＴ変更検出・報告部３１２５とを有する。
【００４０】
ＮＡＴ判定情報管理部３１２１は、シンメトリックＮＡＴ判定部３１１から、情報処理装置Ａ３０が接続している経路制御装置Ａ２０のＮＡＴａの種別と、判定で使用したポート番号とを受け取る。さらに、ＮＡＴ判定情報管理部３１２１は、ＮＡＴ越え通信を行う通信先の情報処理装置Ｂ３１が接続している経路制御装置Ｂ２１のＮＡＴｂの種別を、通信Ｉ／Ｆ部３３０を介して第１サーバ１０から受け取る。そして、ＮＡＴ判定情報管理部３１２１は、ＮＡＴａの種別とＮＡＴｂの種別の双方がシンメトリックＮＡＴで一方が相対的加算／相対的減算方式のシンメトリックＮＡＴであると判定されたとき、未使用ポートリスト作成部３１２３に自身の未使用のポートリストＬｉｓｔＡを作成するように指示を与える。また、ＮＡＴ判定情報管理部３１２１は、ＮＡＴ越え通信の通信先の情報処理装置Ｂ３１の未使用ポートリストＬｉｓｔＢを第１サーバ１０から通信Ｉ／Ｆ部３３０を介して取得し、未使用ポートリスト突合せ部３１２４に、自身の未使用ポートリストＬｉｓｔＡと通信先の未使用ポートリストＬｉｓｔＢとを突き合わせるよう指示する。
【００４１】
通信先情報管理部３１２２は、記憶部３２０に記憶された、経路制御装置Ａ２０を介して接続されている第１サーバ１０及び第２サーバ１１や情報処理装置Ａ３０のグローバルＩＰアドレス、第１サーバ１０から取得する通信相手の情報処理装置Ｂ３１のグローバルＩＰアドレス、未使用ポートリスト等、ＮＡＴ越え通信に必要な通信先に関する情報を記憶し、変更があれば更新する。
【００４２】
未使用ポートリスト作成部３１２３は、情報処理装置Ａ３０が未使用のポート番号で構成される未使用ポートリストを作成する。
未使用ポートリスト突合せ部３１２４は、第１サーバ１０から通信Ｉ／Ｆ部３３０を介して突合せ開始指示を受け取ると、ＮＡＴ判定情報管理部３１２１から受け取った自身の未使用ポートリストＬｉｓｔＡと通信先の未使用ポートリストＬｉｓｔＢとを突き合わせ、ＮＡＴ越え通信で利用するポート番号の組を決定し、ＮＡＴ越え通信を確立する。
ＮＡＴ変更検出・報告部３１２５は、接続中の経路制御装置（ＮＡＴ）の定期調査要求を受け付けると、シンメトリックＮＡＴ判定部３１１を用いて接続しているＮＡＴの種別を判定し、以後ＮＡＴの種別及び設定に変化がないか定期的に監視する。
制御部３１０の各部の処理については、後述の通信接続システムの動作の説明で詳述する。
【００４３】
記憶部３２０は、各種プログラム及び各種データを記憶し、例えばＲＡＭ、ＲＯＭ、ＥＰＲＯＭ等の半導体メモリ、ハードディスク等の磁気記録媒体等を用いて構成することができる。
記憶部３２０は、未使用ポートリストや通信情報等を記憶する。未便用ポートリストは、ＮＡＴのマッビングテーブルで未使用と推測されるポ一ト番号から構成されるリストであり、未使用ポートリスト作成部３１２３にて作成される。通信情報は、ＮＡＴ越えにより通信するサーバや情報処理装置の接続先グローバルＩＰ、自身のプライベートＩＰ等通信に使用する情報を含む。
【００４４】
通信Ｉ／Ｆ部３３０は、経路制御装置Ａ２０とＬＡＮケーブル、無線ＬＡＮ等を介して通信を行うためのＬＡＮアダプタ等のインターフェース部である。
通信Ｉ／Ｆ部３３０は、制御部３１０からパケットを受け取り、ローカルネットワーク５０を介して経路制御装置Ａ２０に送信する。また、通信Ｉ／Ｆ部３３０は、ローカルネットワーク５０を介してパケットを受け取り、制御部３１０に渡す。
尚、情報処理装置Ｂ３１は、情報処理装置Ａ３０と同様の構成を有するので、説明を省略する。
【００４５】
以下に、本実施例に係る通信接続システムにおいてＮＡＴ越え通信を確立するための動作について説明する。
図４は、本実施例に係る通信接続システムにおいてＮＡＴ越え通信を確立するための動作の全体の流れを示す図である。
【００４６】
図４に示すように、情報処理装置Ａ３０及び情報処理装置Ｂ３１のそれぞれは第１サーバ１０と、例えば起動時又は定期的に、情報処理装置Ａ３０及び情報処理装置Ｂ３１が第１サーバ１０へ通信確立要求を送る等して、事前に通信を確立する（Ｓ１１１０）。尚、情報処理装置Ａ３０と第１サーバ１０との間の通信は、次のステップＳ１１２０で、シンメトリックＮＡＴ判定において第１サーバ１０にＮＡＴ判定パケットを送信する際に確立してもよい。
【００４７】
情報処理装置Ａ３０は、情報処理装置Ｂ３１へＮＡＴ越え通信を行おうとする時、シンメトリックＮＡＴ判定部３１１によって自身に接続された経路制御装置ＡのＮＡＴａの種別を判定する（Ｓ１１２０）。シンメトリックＮＡＴ判定部３１１は、ＮＡＴａの種別がシンメトリックＮＡＴでないか、或いはシンメトリックＮＡＴであれば加算／減算方式のシンメトリックＮＡＴ、相対的加算／相対的減算方式のシンメトリックＮＡＴ又はその他の方式のシンメトリックＮＡＴのいずれの方式かを判定する。
【００４８】
情報処理装置Ａ３０のＮＡＴ判定情報管理部３１２１は、シンメトリックＮＡＴ判定部３１１からＮＡＴａの種別を受け取り、ＮＡＴａの種別がシンメトリックＮＡＴでない場合、従来の方法によって情報処理装置Ｂ３１とＮＡＴ越え通信を確立する。
【００４９】
他の場合、すなわちＮＡＴａの種別が加算／減算方式のシンメトリックＮＡＴ又は相対的加算／相対的減算方式のシンメトリックＮＡＴの場合、ＮＡＴ判定情報管理部３１２１は、情報処理装置Ａ３０の識別情報及びＮＡＴａの種別と共に、情報処理装置Ｂ３１との通信接続要求を通信Ｉ／Ｆ部３３０を介して第１サーバ１０に送信する。この接続要求を受け取った第１サーバ１０は、情報処理装置Ｂ３１に対してＮＡＴｂの種別を送信するように要求する（Ｓ１１３０）。このとき、第１サーバ１０では、情報管理部１１１が、受け取ったＮＡＴａの種別を情報処理装置Ａ３０の識別情報に対応付けてＮＡＴ管理情報１２１に登録する。
【００５０】
この要求に応答して、情報処理装置Ｂ３１は、情報処理装置Ａ３０と同様に、シンメトリックＮＡＴ判定部３１１によって自身に接続された経路制御装置ＢのＮＡＴｂの種別を判定する（Ｓ１１４０）。
【００５１】
情報処理装置Ｂ３１は、シンメトリックＮＡＴ判定部３１１が判定したＮＡＴｂの種別を通信Ｉ／Ｆ部３３０を介して第１サーバ１０に送信する。第１サーバ１０は、情報処理装置Ｂ３１から受け取ったＮＡＴｂの種別を、情報処理装置Ａ３０に送信する（Ｓ１１５０）。このとき、第１サーバ１０では、情報管理部１１１が、受け取ったＮＡＴｂの種別を情報処理装置Ｂ３１の識別情報に対応させてＮＡＴ管理情報１２１に登録する。
【００５２】
情報処理装置Ａ３０のＮＡＴ判定情報管理部３１２１は、第１サーバ１０から通信Ｉ／Ｆ部３３０を介して受け取ったＮＡＴｂの種別がシンメトリックＮＡＴでない場合、従来の方法によって情報処理装置Ｂ３１とのＮＡＴ越え通信を確立する。また、ＮＡＴ判定情報管理部３１２１は、ＮＡＴａ及びＮＡＴｂの種別が共に加算／減算方式のシンメトリックＮＡＴである場合、従来の方式によって情報処理装置Ｂ３１とのＮＡＴ越え通信を行ってもよい。
【００５３】
一方、ＮＡＴａ及びＮＡＴｂの種別のうち少なくとも一つが相対的加算／相対的減算方式のシンメトリックＮＡＴである場合、ＮＡＴ判定情報管理部３１２１は、情報処理装置Ｂ３１に対する未使用ポートリストＬｉｓｔＢの要求を通信Ｉ／Ｆ部３３０を介して第１サーバ１０に送信する。この要求に応じて、第１サーバ１０は、情報処理装置Ｂ３１に未使用ポートリストＬｉｓｔＢの要求を送信する（Ｓ１１６０）。
【００５４】
また、情報処理装置Ａ３０のＮＡＴ判定情報管理部３１２１は、自身の未使用ポートリスト作成部３１２３に未使用ポートリストＬｉｓｔＡを作成するように指示する。また、情報処理装置Ａ３０から未使用ポートリストＬｉｓｔＢの要求を受けた情報処理装置Ｂ３１では、この要求に応答して、未使用ポートリスト作成部３１２３が未使用ポートリストＬｉｓｔＢを作成する（Ｓ１１７０）。
【００５５】
また、未使用ポートリスト作成部３１２３は、未使用ポートリスト送信手段としても機能し、作成した未使用ポートリストＬｉｓｔＡを、通信Ｉ／Ｆ部３３０を介して第１サーバ１０に送信する（Ｓ１１８０）。第１サーバ１０は、情報処理装置Ａ３０から未使用ポートリストＬｉｓｔＡを受け取ると、情報処理装置Ｂ３１に未使用ポートリストＬｉｓｔＡを送信する。このとき、第１サーバ１０では、情報管理部１１１が、受け取った未使用ポートリストＬｉｓｔＡを情報処理装置Ａ３０の識別情報に対応付けＮＡＴ管理情報１２１に登録する。
【００５６】
同様に、情報処理装置Ｂ３１は、未使用ポートリスト作成部３１２３によって作成された未使用ポートリストＬｉｓｔＢを、通信Ｉ／Ｆ部３３０を介して第１サーバ１０に送信する（Ｓ１１９０）。第１サーバ１０は、情報処理装置Ｂ３１から未使用ポートリストＬｉｓｔＢを受け取ると、情報処理装置Ａ３０に未使用ポートリストＬｉｓｔＢを送信する。このとき、第１サーバ１０では、情報管理部１１１が受け取った未使用ポートリストＬｉｓｔＢを情報処理装置Ｂ３１の識別情報に対応させてＮＡＴ管理情報１２１に登録する。ステップＳ１１８０とステップＳ１１９０の順序は入れ替わってもよい。
【００５７】
第１サーバ１０は、情報処理装置Ａ３０及び情報処理装置Ｂ３１の両方に未使用ポートリストＬｉｓｔＢ及びＬｉｓｔＡをそれぞれ送信終わると、情報処理装置Ａ３０及び情報処理装置Ｂ３１に同時に未使用ポートリストの突合せを指示する（Ｓ１２００）。
【００５８】
第１サーバ１０から突合せの指示を受信した情報処理装置Ａ３０及び情報処理装置Ｂ３１は、それぞれの未使用ポートリスト突合せ部３１２４によって、未使用ポートリストＬｉｓｔＡ及びＬｉｓｔＢを使用して未使用ポートリストの突合せを行う（Ｓ１２１０）。情報処理装置Ａ３０及び情報処理装置Ｂ３１の未使用ポートリスト突合せ部３１２４によって未使用ポートリストの突合せに成功すれば、成功したポート番号の組み合わせを用いたＮＡＴ越え通信が可能になる。
【００５９】
一方、未使用ポートリストの突合せに失敗した場合、情報処理装置Ａ３０の制御部３１０は、ステップＳ１１６０に制御を戻し、情報処理装置Ａ３０及び情報処理装置Ｂ３１においてそれぞれの未使用ポートリストＬｉｓｔＡ及ＬｉｓｔＢを作成し直してもよい。この際、失敗した回数に従って必要な未使用ポート番号の個数を増やす等の調整を行ってもよい。
【００６０】
尚、第１サーバ１０は、ステップＳ１１５０において、情報処理装置ＢからＮＡＴｂの種別を受け取った後そのままＮＡＴｂの種別を情報処理装置Ａに送らずに、ＮＡＴａ及びＮＡＴｂのいずれかの種別が相対的加算／相対的減算方式のシンメトリックＮＡＴであれば、情報処理装置Ａ３０及び情報処理装置Ｂ３１間で未使用ポートリストの突き合わせが必要であると判断して、情報処理装置Ａ３０及び情報処理装置Ｂ３１にそれぞれ未使用ポートリストＬｉｓｔＡ及びＬｉｓｔＢを要求し、受信したＬｉｓｔＡ及びＬｉｓｔＢを情報処理装置Ａ３０及び情報処理装置Ｂ３１にそれぞれ送信してもよい。
【００６１】
以下、シンメトリックＮＡＴ判定部３１１、未使用ポートリスト作成部３１２３、未使用ポートリスト突合せ部３１２４の各処理について、フローチャートを参照しながら説明する。
図５及び６は、本実施例における情報処理装置Ａ３０のシンメトリックＮＡＴ判定部３１１の処理の流れを示すフローチャートである。図５及び６を参照しながら、本実施例におけるシンメトリックＮＡＴ判定処理について説明する。
【００６２】
シンメトリックＮＡＴ判定部３１１は、ＳＴＵＮ等の従来方法を用いて、情報処理装置Ａ３０に接続された経路制御装置Ａ２０のＮＡＴ種別がシンメトリックＮＡＴであるか否かを判定する（Ｓ２０１０）。シンメトリックＮＡＴでなければ、シンメトリックＮＡＴ判定部３１１は、その旨を通知して終了する（Ｓ２０７０）。
【００６３】
ＮＡＴ種別がシンメトリックＮＡＴである場合、シンメトリックＮＡＴ判定部３１１は、記憶部３２０に記憶された通信先情報から第１サーバ１０及び第２サーバ１１のグローバルＩＰ（Ｇ１、Ｇ２）及びポート番号（Ｙ）や情報処理装置Ａ３０のプライベートＩＰ（Ｐａ）等の第１サーバ１０及び第２サーバ１１との通信に使用する情報を取得する（Ｓ２０２０）。また、シンメトリックＮＡＴ判定部３１１は、シンメトリックＮＡＴ判定に使用する内側ポート番号をＮ個決定する（Ｓ２０２０）。このとき、シンメトリックＮＡＴ判定部３１１は、使用可能な範囲のポート番号をランダムにＮ個選択してもよい。
【００６４】
シンメトリックＮＡＴ判定部３１１は、ステップＳ２０２０で決定したＮ個の内側ポート番号から次にシンメトリックＮＡＴ判定に使用する内側ポート番号Ｘｎを決定する（Ｓ２０３０）。
シンメトリックＮＡＴ判定部３１１は、通信Ｉ／Ｆ部３３０を介して、情報処理装置Ａ３０のプライベートＩＰと内側ポート番号（Ｐａ、Ｘｎ）を送信元アドレスとして第１サーバ１０のグローバルＩＰとポート番号（Ｇ１、Ｙ）を送信先アドレスとしてパケットを送信する（Ｓ２０４０）。
シンメトリックＮＡＴ判定部３１１は、通信Ｉ／Ｆ部３３０を介して、第１サーバ１０から経路制御装置Ａ２０のＮＡＴａのグローバルＩＰと外側ポ一卜番号Ｘｎ’を送信先アドレスとして含んだパケットを受信する（Ｓ２０５０）。
シンメトリックＮＡＴ判定部３１１は、ステップＳ２０３０で選択したＮ個の内側ポート番号について全て判定に使用したか否かを判断する（Ｓ２０６０）。全て使用していなければ、シンメトリックＮＡＴ判定部３１１は、制御をステップＳ２０３０に戻す。全て使用した場合は、シンメトリックＮＡＴ判定部３１１は、ステップＳ２０８０に進む。
【００６５】
そして、シンメトリックＮＡＴ判定部３１１は、Ｎ個のＮＡＴａの内側ポート番号Ｘｎと外側ポート番号Ｘｎ’とを比較する（Ｓ２０８０）。
Ｎ個のＸｎとＸｎ’について全てＸｎ≠Ｘｎ’ならば、シンメトリックＮＡＴ判定部３１１は、Ｎ個のＸｎ’を比較し、その差分を調査する（Ｓ２０９０）。差分値が単純な加算／減算ならば、シンメトリックＮＡＴ判定部３１１は、加算／減算方式のシンメトリックＮＡＴであると判定し（Ｓ２１００）、そうでなければその他の方式のシンメトリックＮＡＴであると判定する（Ｓ２１５０）。
【００６６】
Ｎ個のＸｎとＸｎ’について少なくとも１つでもＸｎ＝Ｘｎ’ならば、シンメトリックＮＡＴ判定部３１１は、再度内側ポート番号Ｘｎを使って、情報処理装置Ａ３０のプライベートＩＰと内側ポート番号（Ｐａ、Ｘｎ）を送信元アドレスとして第２サーバ１１のグローバルＩＰとポート番号（Ｇ２、Ｙ）を送信先アドレスとして、通信Ｉ／Ｆ部３３０を介してパケットを送信する（Ｓ２１１０）。
次に、シンメトリックＮＡＴ判定部３１１は、通信Ｉ／Ｆ部３３０を介して、第２サーバ１１より経路制御装置Ａ２０のＮＡＴの外側ＩＰアドレスと外側ポート番号Ｘｎ”を送信先アドレスとして含んだバケットを受信する（Ｓ２１２０）。
【００６７】
シンメトリックＮＡＴ判定部３１１は、内側ポート番号Ｘｎと外側ポート番号Ｘｎ”とを比較する（Ｓ２１３０）。シンメトリックＮＡＴ判定部３１１は、Ｘｎ＝Ｘｎ”ならば、その他の方式のシンメトリックＮＡＴであると判定し（Ｓ２１５０）、Ｘｎ≠Ｘｎ”ならば相対的加算／相対的減算方式のシンメトリックＮＡＴであると判定する（Ｓ２１４０）。
【００６８】
以上、情報処理装置Ａ３０におけるシンメトリックＮＡＴ判定部３１１の処理について説明したが、情報処理装置Ｂ３１におけるシンメトリックＮＡＴ判定部３１１においても同様の処理が行われる。ただし、ステップＳ２０２０、Ｓ２０４０におけるプライベートＩＰは、情報処理装置Ｂ３１のプライベートＩＰ（Ｐｂ）であり、内側ポート番号及び外側ポート番号は、情報処理装置Ｂ３１が接続された経路制御装置Ｂ２１のＮＡＴｂの内側ポート番号及び外側ポート番号である。
【００６９】
図７は、本実施例における情報処理装置Ａ３０及び情報処理装置Ｂ３１の未使用ポートリスト作成部３１２３の処理の流れを示すフローチャートである。図７を参照しながら、本実施例における未使用ポートリスト作成処理について説明する。
【００７０】
未使用ポートリスト作成部３１２３は、ＮＡＴ判定情報管理部３１２１より未使用ポート作成指示と共に、作成する未使用ポートリスト中の未使用ポート番号の数とシンメトリックＮＡＴ判定処理で使用された使用済みポート番号とを受け取り、未使用ポートリストを初期化する（Ｓ３１０）。
未使用ポートリスト作成部３１２３は、ポート番号Ｘｎをランダムに生成する（Ｓ３２０）。ここで生成されるポート番号は、未使用ポートリスト中の他のポート番号と一定値以上離れた番号であり、且つ未使用ポートリスト中の任意のポート番号間で規則性がないことが好ましい。
【００７１】
次に、未使用ポートリスト作成部３１２３は、ステップＳ３２０で生成したポート番号Ｘｎがポート番号として使用可能な範囲内の番号か、例えば、１０２３より大きく６５５３６未満の範囲内の番号であるか否かを確認する（Ｓ３３０）。ポート番号Ｘｎが条件を満たさない揚合は、未使用ポートリスト作成部３１２３は、制御をステップＳ３２０に戻す。
【００７２】
ポート番号Ｘｎがポート番号として使用可能な範囲内の番号である場合、未使用ポートリスト作成部３１２３は、ポート番号ＸｎがシンメトリックＮＡＴ判定部３１１で使用済みのポート番号でないことを確認する（Ｓ３４０）。ポート番号ＸｎがシンメトリックＮＡＴ判定部３１１で使用済みの場合、未使用ポートリスト作成部３１２３は、制御をステップＳ３２０に戻す。
【００７３】
ポート番号ＸｎがシンメトリックＮＡＴ判定部３１１で未使用の場合、未使用ポートリスト作成部３１２３は、ポート番号Ｘｎが他のアプリケーションやシステムによる通信で使用されていないか確認する（Ｓ３５０）。ポート番号Ｘｎが他のアプリケーションやシステムによる通信で使用されている場合、未使用ポートリスト作成部３１２３は、制御をステップＳ３２０に戻す。
【００７４】
ポート番号Ｘｎが他のアプリケーションやシステムによる通信で未使用の場合、未使用ポートリスト作成部３１２３は、ポート番号Ｘｎを未使用ポートリストに加える（Ｓ３６０）。
次に、未使用ポートリスト作成部３１２３は、必要な数のポート番号が生成できたか否かを確認する（Ｓ３７０）。必要な数のポート番号が生成できていない場合、未使用ポートリスト作成部３１２３は、制御をステップＳ３２０に戻す。一方、必要な数のポート番号が生成できれば、未使用ポートリスト作成部３１２３は、処理を終了する。
【００７５】
ここでは、シンメトリックＮＡＴの方式が相対的加算／相対的減算方式のシンメトリックＮＡＴであると想定して説明しており、内側ポート番号＝外側ポート番号であるため、ポート番号は内側ポート番号と外側ポート番号の両方を表す。
【００７６】
しかし、加算／減算方式のシンメトリックＮＡＴの場合は、内側ポート番号≠外側ポート番号であり、未使用ポートリスト作成部３１２３は、外側ポート番号の割り当て規則に従って外側ポート番号を算出し、外側ポート番号の未使用ポートリストを作成してもよい。このとき、図４のステップＳ１１８０及びＳ１１９０でＮＡＴ判定情報管理部３１２１が通信先情報処理装置に送信する未使用ポートリストは、外側ポート番号の未使用ポートリストである。
【００７７】
図８は、本実施例における情報処理装置Ａ３０の未使用ポートリスト突合せ部３１２４の処理の流れを示すフローチャートである。図８を参照しながら、本実施例における未使用ポートリストの突き合わせ及びＮＡＴ越え通信確立の処理について説明する。
情報処理装置Ａ３０の制御部３１０は、通信先である情報処理装置Ｂ３１の未使用ポートリストＬｉｓｔＢを受け取ると、未使用ポートリスト突合せ部３１２４に自身の未使用ポートリストＬｉｓｔＡと併せて渡す（Ｓ４１０）。
【００７８】
未使用ポートリスト突合せ部３１２４は、第１サーバ１０より通信確立開始パケットによる突き合わせ開始指示を受信するまで待つ（Ｓ４２０）。
第１サーバ１０から通信確立開始パケットを受信したら、未使用ポートリスト突合せ部３１２４は、未使用ポートリストＬｉｓｔＡ及びＬｉｓｔＢに含まれる未使用ポート番号の数を調査する（Ｓ４３０）。
【００７９】
未使用ポート番号が残っていれば、未使用ポートリスト突合せ部３１２４は、ＬｉｓｔＡより未使用ポート番号Ｘａ、ＬｉｓｔＢより未使用ポート番号Ｘｂを１つずつ選択する（Ｓ４４０）。
未使用ポートリスト突合せ部３１２４は、選択したＸａを送信元ポート、Ｘｂを宛先ポートにしてバケットを通信先の情報処理装置Ｂ３１に送信する（Ｓ４５０）。
【００８０】
パケットの送信に失敗した場合、未使用ポートリスト突合せ部３１２４は、制御をステップＳ４３０に戻す。パケットの送信に成功した場合、未使用ポートリスト突合せ部３１２４は、通信先の情報処理装置Ｂ３１から、Ｘｂを送信元ポート、Ｘａを宛先ポートとしたパケットが受信できているか確認する（Ｓ４６０）。
尚、ステップＳ４５０においてパケットの送信に失敗した場合、未使用ポートリスト突合せ部３１２４は、所定時間の経過後、前と同じＸａを送信元ポート、Ｘｂを宛先ポートにして、バケットを通信先の情報処理装置Ｂ３１に送信し直してもよい。また、未使用ポートリスト突合せ部３１２４は、この処理を所定の回数繰り返してもよい。
【００８１】
パケットの受信に失敗した場合、未使用ポートリスト突合せ部３１２４は、ステップＳ４３０に制御を戻す。パケットの受信に成功した場合、未使用ポートリスト突合せ部３１２４は、選択したポート番号の組を使用して通信先の情報処理装置Ｂ３１と正常にパケットの送受信ができるかを確認する（Ｓ４７０）。
【００８２】
パケットの送受信が正常に出来れば、通信確立に成功しているので、未使用ポートリスト突合せ部３１２４は、通信確立が成功したポート番号の組Ｘａ、Ｘｂを通知して終了する（Ｓ４８０）。パケットを正常に送受信できない場合、通信確立に失敗しているので、未使用ポートリスト突合せ部３１２４は、制御をステップＳ４３０に戻す。
ステップＳ４３０において、未使用ポートリストに残っている未使用ポート番号が無くなった場合、未使用ポートリスト突合せ部３１２４は、未使用ポートリストの突き合わせの失敗を通知して処理を終了する（Ｓ４９０）。
【００８３】
以上、情報処理装置Ａ３０における未使用ポートリスト突合せ部３１２４の処理について説明したが、情報処理装置Ｂ３１における未使用ポートリスト突合せ部３１２４においても同様の処理が行われる。ただし、ステップＳ４１０における自身の未使用ポートリストはＬｉｓｔＢ、通信先の未使用ポートリストはＬｉｓｔＡである。また、ステップＳ４５０における送信元ポートはＸｂ、宛先ポートはＸａであり、ステップＳ４６０における送信元ポートはＸａ、宛先ポートはＸｂである。
【００８４】
上記の実施例では、図４のステップＳ１１２０において、情報処理装置Ａ３０は、情報処理装置Ｂ３１との通信を確立しようとする際に、自身に接続された経路制御装置Ａ２０のＮＡＴａの種別を判定し、その結果を第１サーバ１０に送信している。また、ステップＳ１１３０において、情報処理装置Ｂ３１は、情報処理装置Ａ３０からの接続要求を第１サーバ１０を介して受け取ってから、自身に接続された経路制御装置Ｂ２１のＮＡＴｂの種別を判定し、その結果を第１サーバ１０に送信している。しかしながら、本発明はこれに限定されない。
【００８５】
情報処理装置Ａ３０及び情報処理装置Ｂ３１は、それぞれ、起動時、定期的又はＮＡＴが入れ替わった時等に、シンメトリックＮＡＴ判定部３１１によって自身に接続された経路制御装置Ａ２０及び経路制御装置Ｂ２１のＮＡＴａ及びＮＡＴｂの種別を判定し、その結果を第１サーバ１０に送信してもよい。この場合、第１サーバ１０の情報管理部１１１は、情報処理装置Ａ３０又は情報処理装置Ｂ３１から情報処理装置の識別情報と共にＮＡＴａ又はＮＡＴｂの種別を受信すると、識別情報にさせて対応付けて記憶部１２０のＮＡＴ管理情報１２１に登録する。
【００８６】
さらに、情報処理装置Ａ３０及び情報処理装置Ｂ３１のＮＡＴ変更検出・報告部３１２５は、接続中の経路制御装置（ＮＡＴ）の定期調査要求を受け、シンメトリックＮＡＴ判定部３１１によってＮＡＴ判定処理を行い、定期的に経路制御装置（ＮＡＴ）の種別及び設定に変更が発生していないかの監視を行ってもよい。監視は一定時間毎、またはＮＡＴを介した情報処理装置間でＮＡＴ越え通信を確立する際に行い、過去に調査したＮＡＴの種別の判定結果と現時点での判定結果を比較し変化の有無を判断する。もし、判定結果が一致していなければ、ＮＡＴ変更検出・報告部３１２５は、それをＮＡＴ種別の判定結果不一致として、新たなＮＡＴの種別と共に第１サーバ１０に報告する。
【００８７】
また、上記の実施例では、第１サーバ１０は、図４のステップＳ１１８０、Ｓ１１９０において、情報処理装置Ａ３０及び情報処理装置Ｂ３１に未使用ポートリストＬｉｓｔＡ及びＬｉｓｔＢを送信した後、ステップＳ１２００において、情報処理装置Ａ３０及び情報処理装置Ｂ３１に突き合わせ開始指示を送信するが、本発明はこれに限定されない。
【００８８】
例えば、第１サーバ１０は、図４のステップＳ１１８０、Ｓ１１９０において、未使用ポートリストＬｉｓｔＡ及びＬｉｓｔＢを受け取った後、受け取った未使用ポートリストＬｉｓｔＡ及びＬｉｓｔＢからそれぞれ情報処理装置Ａ３０と情報処理装置Ｂ３１との通信で使用可能と推定される未使用ポート番号Ｘａ、Ｘｂを選択してもよい。
【００８９】
この場合、ステップＳ１２００において、第１サーバ１０は、選択した未使用ポート番号の組（Ｘａ、Ｘｂ）と共に突き合わせ開始指示を情報処理装置Ａ３０及び情報処理装置Ｂ３１に同時に送信する。未使用ポートリスト突合せ部３１２４は、図８のステップＳ４１０、Ｓ４３０及びＳ４４０の処理は行わずに、第１サーバ１０から受け取った未使用ポート番号の組（Ｘａ、Ｘｂ）を用いて、ステップＳ４５０、Ｓ４６０の処理を行う。また、ステップＳ４５０〜４７０において通信に失敗した場合、未使用ポートリスト突合せ部３１２４は、通信確立失敗を第１サーバ１０に通知する。通信確立失敗を通知された第１サーバ１０は、未使用ポートリストＬｉｓｔＡ及びＬｉｓｔＢに未使用ポート番号が残っていれば、通信確立に使用可能な未使用ポート番号の組を選択し直して上記の処理を繰り返す。第１サーバ１０は、未使用ポートリストＬｉｓｔＡ及びＬｉｓｔＢに未使用ポート番号が残っていなければ、第１サーバ１０は、制御を図４のステップＳ１１６０へ戻す。
【００９０】
尚、上記の実施例において、第１サーバ１０、情報処理装置Ａ３０及び情報処理装置Ｂ３０は、ＩＰアドレス、ＮＡＴの種別、未使用ポートリスト等の秘匿性の高い情報を送受信する際、ＶＰ（Virtual Path：仮想パス）等によって安全な通信路を使用することが望ましい。さらに、第１サーバ１０、情報処理装置Ａ３０及び情報処理装置Ｂ３０は、ＲＳＡ等による暗号化、署名、認証等のセキュリティ技術を用いて、セキュリティを高めることができる。
【００９１】
本発明では、従来方法では対応が難しかったシンメトリックＮＡＴを介したＮＡＴ超え通信にも対応しており、従来方法より更に効率良く短時間でＮＡＴ越え通信を確立できる。また、相対的加算／相対的減算方式のシンメトリックＮＡＴの場合も、ＮＡＴ越え通信を確立できる。また、本発明では、ＮＡＴ超え通信を行う各情報処理装置の未使用ポートリストを作成して突き合わせるため、より小さな負荷でＮＡＴ越え通信を確立することができる。
【符号の説明】
【００９２】
１    通信接続システム
１０    サーバ
２０    経路制御装置
３０    情報処理装置
４０    グローバルネットワーク
１１０    制御部
１２０    記憶部
１２１    ＮＡＴ管理情報
１３０    通信Ｉ／Ｆ部
３１０    制御部
３１１    シンメトリックＮＡＴ判定部
３１２    ＮＡＴ越え通信確立部
３２０    記億部
３３０    通信Ｉ／Ｆ部
３１２１    ＮＡＴ判定情報管理部
３１２２    通信先情報管理部
３１２３    未使用ポートリスト作成部
３１２４    未使用ポートリスト突合せ部
３１２５    ＮＡＴ変更検出・報告部
【図１】
2011004253.tif 000005
【図２】
2011004253.tif 000006
【図３】
2011004253.tif 000007
【図４】
2011004253.tif 000008
【図５】
2011004253.tif 000009
【図６】
2011004253.tif 000010
【図７】
2011004253.tif 000011
【図８】
2011004253.tif 000012