(57)【要約】【課題】異なるプライベートアドレスネットワーク間におけるＰ２Ｐ接続を可能にする通信ネットワークシステム、および通信の接続方法を提供する。【解決手段】この通信ネットワークシステムはプライベートアドレスを有するクライアント１２Ａと他の異なるプライベートアドレスを有するクライアント１２Ｂとの間のＰ２Ｐ接続を行う。クライアント１２Ｂが送信先ポート番号を予測して作りかつこの送信先ポート番号を含む１つのパケットを相手に送り、クライアント１２Ａが上記送信先ポート番号を予測して複数の送信元ポート番号を作りかつこれらの送信元ポート番号のそれぞれを含む複数のパケット２０−１〜２０−ｎを作って相手に送信する。複数のパケットのいずれかの送信元ポート番号と１つのパケットの送信先ポート番号とが一致したときに１対１の相互接続が確立する。【選択図】      図３Ｃ
2004180003.tif 000002
【特許請求の範囲】
【請求項１】
プライベートアドレスを有する第１端末装置と他の異なるプライベートアドレスを有する第２端末装置との間の１対１の相互接続のための通信ネットワークシステムであり、一方の前記端末装置が送信先ポート番号を予測して作りかつこの送信先ポート番号を含む１つの相互接続用パケットを相手に送信する手段を有し、他方の前記端末装置が前記送信先ポート番号を予測して複数の送信元ポート番号を作りかつこれらの送信元ポート番号のそれぞれを含む複数の相互接続用パケットを作って相手に送信する手段を有し、前記複数の相互接続用パケットのいずれかの送信元ポート番号と前記１つの相互接続用パケットの送信先ポート番号とが一致したときに前記１対１の相互接続を確立することを特徴とする通信ネットワークシステム。
【請求項２】
第１ルータの内側にあってプライベートアドレスが割り振られた第１端末装置と、第２ルータの内側にあってプライベートアドレスが割り振られた第２端末装置との間の１対１の相互接続のための通信ネットワークシステムであり、
前記相互接続を開始する第１段階で、前記第１端末装置による前記相互接続の要求に基づき前記第１ルータから送信された前記第１端末装置のグローバルアドレスとポート番号を前記第２端末装置に向けて送信すると共に、前記第２ルータから送信された前記第２端末装置のグローバルアドレスとポート番号を前記第１端末装置に向けて送信するサーバを備え、
前記第２端末装置は、そのグローバルアドレスとポート番号を送信した直後に、受信した前記第１端末装置のポート番号の値に任意の数ｎを加えて送信先ポート番号を設定し、これを含む相互接続開始要求に係るパケットを前記第１ルータに対して送信する手段を有し、
前記第１端末装置は、前記第２端末装置に対して相互接続開始要求に係るパケットを送信する時、送信元ポート番号を１つずつ増して成るｎ個のパケットを作って送信する手段を有し、
前記第１ルータによって変換された前記ｎ個のパケットのいずれかの送信元ポート番号と、前記第２端末装置から送信された前記パケットの前記送信先ポート番号が一致したときに、前記１対１の相互接続を確立することを特徴とする通信ネットワークシステム。
【請求項３】
プライベートアドレスを有する第１端末装置と他の異なるプライベートアドレスを有する第２端末装置との間を１対１に接続する方法であり、一方の前記端末装置が送信先ポート番号を予測して作りかつこの送信先ポート番号を含む１つの相互接続用パケットを相手に送信し、他方の前記端末装置が前記送信先ポート番号を予測して複数の送信元ポート番号を作りかつこれらの送信元ポート番号のそれぞれを含む複数の相互接続用パケットを作って相手に送信し、前記複数の相互接続用パケットのいずれかの送信元ポート番号と前記１つの相互接続用パケットの送信先ポート番号とが一致したときに前記１対１の相互接続を確立することを特徴とする通信の接続方法。
【請求項４】
第１ルータの内側にあってプライベートアドレスが割り振られた第１端末装置と、第２ルータの内側にあってプライベートアドレスが割り振られた第２端末装置との間を１対１で相互に接続する方法であり、
相互接続を開始する第１段階で、前記第１端末装置による前記相互接続の要求に基づき前記第１ルータから送信された前記第１端末装置のグローバルアドレスとポート番号を前記第２端末装置に向けて送信すると共に、前記第２ルータから送信された前記第２端末装置のグローバルアドレスとポート番号を前記第１端末装置に向けて送信し、
前記第２端末装置は、そのグローバルアドレスとポート番号を送信した直後に、受信した前記第１端末装置のポート番号の値に任意の数ｎを加えて送信先ポート番号を設定し、これを含む相互接続開始要求に係るパケットを前記第１ルータに対して送信し、
前記第１端末装置は、前記第２端末装置に対して相互接続開始要求に係るパケットを送信する時、送信元ポート番号を１つずつ増して成るｎ個のパケットを作って送信し、
前記第１ルータによって変換された前記ｎ個のパケットのいずれかの送信元ポート番号と、前記第２端末装置から送信された前記パケットの前記送信先ポート番号が一致したときに、前記１対１の相互接続を確立することを特徴とする通信の接続方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、異なるプライベートアドレスネットワーク間における１対１の相互接続（Ｐ２Ｐ接続）を可能とする通信ネットワークシステム、および通信の接続方法に関する。
【０００２】
【従来の技術】
従来のインターネット接続による通信について説明する。図４を参照して、最初に、現在、インターネットにおいて標準的に使われているネットワーク形式であるクライアント・サーバを例に説明をする。図４は、インターネット１０１を介して、クライアント１０２がサーバ１０３と通信を行い、ホームページを閲覧するための簡略化した流れ図である。図４において実際のプロトコル上の詳細な手順の図示は省かれている。
【０００３】
なおインターネット１０１を介して通信を行うためには、ＴＣＰやＵＤＰという下位のプロトコルを用いる。これらの下位のプロトコルでは、その際に、ＩＰアドレスとＰｏｒｔ番号のセットから成るインターネット上の住所情報が必要となる。ＩＰアドレスは、３２ビット（ｂｉｔ）の整数値から成るのもので、一般的に８ビットごとに１０進数化して、例えば“２０３．１３８．２０９．１３０”と表される。またＰｏｒｔ番号は１６ビットの正の整数値である。
【０００４】
図４では、一例として、クライアント１０２は、グローバルＩＰアドレス（世界に一意の住所）が“Ｇ：例えば「２０２．２１６．２３２．２１０」”であり、サーバ１０３は、グローバルＩＰアドレスが“Ｗ：例えば「２０３．１３８．２０９．１３０」”であるとする。クライアント１０２のＰｏｒｔ番号は任意である。またサーバ１０３はｈｔｔｐサーバであり、そのＰｏｒｔ番号は“８０”と決められている。
【０００５】
クライアント１０２とサーバ１０３の間でインターネット１０１を経由して送信されるデータは「パケット」と呼ばれる形式になっている。このパケットには、送信したいデータに加えて、送信元のＩＰアドレス（Ｓｏｕｒｃｅ  ＩＰ：簡略して「ＳｒｃＩＰ」）とＰｏｒｔ番号（Ｓｏｕｒｃｅ  Ｐｏｒｔ：簡略して「ＳｒｃＰｏｒｔ」）のデータ（住所情報）、送信先のＩＰアドレス（Ｄｉｓｔｉｎａｔｉｏｎ  ＩＰ：簡略して「ＤｓｔＩＰ」）とＰｏｒｔ番号（Ｄｉｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ：簡略して「ＤｓｔＰｏｒｔ」）のデータ（住所情報）が含まれている。
【０００６】
図４に示した動作の流れを説明する。まず、クライアント１０２は「ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｗ）／ＤｓｔＰｏｒｔ（８０）」という差出人（送信元）および宛先（送信先）を含めたパケット１０４をインターネット１０１を経由してサーバ１０３側へ送信する（流れＰ５０１）。「ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｘ）」は差出人の「ＩＰアドレス／Ｐｏｒｔ番号」に係るデータであり、「ＤｓｔＩＰ（Ｗ）／ＤｓｔＰｏｒｔ（８０）」は宛先の「ＩＰアドレス／Ｐｏｒｔ番号」に係るデータである。このパケット１０４は「ホームページ閲覧要求」に係る通信内容を有するパケットである。クライアント１０２の「ＳｒｃＰｏｒｔ」は決まった値ではなく任意の数値である。その理由は、同時にメールの送受信を行ったり、ホームページ内の画像を平行してダウンロードするなど、同時進行で様々なサーバと通信を行えるように、各タスクごとにＰｏｒｔを開く（新たなＰｏｒｔ番号に随時変える）ことにある。
【０００７】
サーバ１０３にクライアント１０２からのパケット１０４が届くと、サーバ１０３は当該パケット１０４に含まれる閲覧要求を受信することになる（ステップＳ６０１）。サーバ１０３は、受信したパケット１０４の要求を解読する。そしてその後、送信元（差出人）すなわちクライアント１０２を返信先にして、クライアント１０２へ、「ＳｒｃＩＰ（Ｗ）／ＳｒｃＰｏｒｔ（８０）／ＤｓｔＩＰ（Ｇ）／ＤｓｔＰｏｒｔ（Ｘ）」を有するパケットを送信する（ステップＳ６０２、流れＰ５０２）。クライアント１０２では、サーバ１０３から送信されたパケットを受信する（ステップＳ６０３）。以上のような通信動作の流れに基づいて、クライアント１０２はサーバ１０３からホームページデータを得ることができ、他方、サーバ１０３はクライアント１０２へデータを送信できるのである。
【０００８】
ところが、前述した図４のようなシステム構成に基づくインターネット接続は大変稀である。現実には、図５に示すように、クライアント１０２Ａでは、上記のクライアント１０２とは異なり、「ルータ」と呼ばれる装置１０５を介してインターネット１０１に接続される。ルータ１０５の役割は、１つはグローバルＩＰアドレスを複数の端末機器で共有することであり、他の１つは外部からの侵入を防ぐファイアウォールという機能を有することである。前者の役割に基づいて、ルータ１０５では、これの内側に属する複数の端末機器のそれぞれに異なるプライベートＩＰアドレスが割り振られている。
【０００９】
図５に示されたシステム構成における動作の流れを説明する。図５に示された要素に関し、図４で説明された要素と同一の要素には同一の符合を付している。まず、クライアント１０２Ａは、プライベートＩＰアドレスＡ（ＳｒｃＩＰ（Ａ））というルータ１０５の内側だけで通用する住所が予め割り振られている。この例では、クライアント１０２Ａは、「ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｗ）／ＤｓｔＰｏｒｔ（８０）」として、ルータ１０５へパケット１０４を送信する（流れＰ５１１）。ルータ１０５では、「ＳｒｃＩＰ（Ａ）」をインターネット１０１の世界で通用するグローバルＩＰアドレス（ＳｒｃＩＰ（Ｇ））に変換することにより、パケット１０４の一部を書き換える。これは、ルータ１０５によるＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）という機能に基づいている。さらに、ルータ１０５の内側に接続されている端末機器は前述の通り複数存在し、しかも同一のＰｏｒｔ番号が同時に使用される危険性があるため、「ＳｒｃＰｏｒｔ（Ｘ）」についてもルータ１０５が「ＳｒｃＰｏｒｔ（Ｐ）」に変換する。これは、ルータ１０５によるＩＰマスカレードという機能に基づいている。
【００１０】
上記のごとくクライアント１０２Ａからルータ１０５にパケット１０４が届くと、ルータ１０５においてパケット１０４の含む住所情報「ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｗ）／ＤｓｔＰｏｒｔ（８０）」は「ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｐ）／ＤｓｔＩＰ（Ｗ）／ＤｓｔＰｏｒｔ（８０）」に変換される。この後、パケットはルータ１０５からインターネット１０１を介してサーバ１０３へ送信される（流れＰ５１２）。サーバ１０３でパケットが届くと、前述と同様に、サーバ１０３はパケットの要求を受信する（ステップＳ６０１）。その後、サーバ１０３は、パケットに含まれる住所情報「ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｐ）／ＤｓｔＩＰ（Ｗ）／ＤｓｔＰｏｒｔ（８０）」に基づいて、前述と同様に、送信元を返信先にし、「ＳｒｃＩＰ（Ｗ）／ＳｒｃＰｏｒｔ（８０）／ＤｓｔＩＰ（Ｇ）／ＤｓｔＰｏｒｔ（Ｐ）」としてパケットをインターネット１０１を経由してルータ１０５に対して送信する（ステップＳ６０２、流れＰ５１３）する。
【００１１】
サーバ１０３からルータ１０５に届いたパケットは、ルータ１０５が「ＳｒｃＩＰ」と「ＳｒｃＰｏｒｔ」はそのままにしかつ「ＤｓｔＩＰ」と「ＤｓｔＰｏｒｔ」の変換を行うことによって、「ＳｒｃＩＰ（Ｗ）／ＳｒｃＰｏｒｔ（８０）／ＤｓｔＩＰ（Ｇ）／ＤｓｔＰｏｒｔ（Ｐ）」を「ＳｒｃＩＰ（Ｗ）／ＳｒｃＰｏｒｔ（８０）／ＤｓｔＩＰ（Ａ）／ＤｓｔＰｏｒｔ（Ｘ）」として、クライアント１０２Ａに送られる（流れＰ５１４）。こうしてクライアント１０２Ａは、サーバ１０３から送られてくるホームページデータを受信する（ステップＳ６０３）。このようにサーバ１０３は、本来的にはクライアント１０２Ａと通信しているのであるが、実際には、間にルータ１０５が介在するため、クライアント１０２ＡのプライベートＩＰアドレス（Ａ）やＰｏｒｔ番号（Ｘ）を知らない状態で返信を行っている。
【００１２】
上記で述べたようなクライアント・サーバ形式は、ホームページの公開などのように、不特定多数のユーザに対して、固定のデータを一方向に提供するようなネットワークサービスに適している。しかしながら、インターネットの利用はこのような形態だけでなく、様々な用途があり、さらに日々新しい利用形態のシステムが考案され続けられている。例えば、チャットと呼ばれる文字、音声、ビデオ画像などのやり取りや、対戦型のネットワークゲームのように、個人間、あるいは複数の限られた人数でのデータ送受信（データ交換）などが挙げられる。
【００１３】
上記のような少人数内のデータ交換型サービスには、クライアント・サーバ形式は相応しくない。何故なら、ただでさえ、クライアント・サーバ形式は、サービスの拡大に伴いサーバの処理能力とサーバの回線容量が常に増強しなくてはならない上に、個々間内のデータ交換するために、全てのデータ転送がサーバを中継されるというは完全な無駄だからである。よってサーバを介さず、クライアント機器間で直接通信できるような形式が相応しいということになる。このようなネットワーク形式はＰ２Ｐ（ピァ・トゥ・ピァ）と呼ばれる。つまり、このＰ２Ｐ形式のネットワークを活用することで、クライアント・サーバ形式ではできなかった新しいインターネットビジネスが可能になるだけでなく、サーバ構築および維持などのコストを大きく削減することも可能になるのである。
【００１４】
次にＰ２Ｐ接続による通信の現状と問題点を説明する。Ｐ２Ｐの利点は上述した通りである。しかしながら、現状ではなかなか普及していない。理由の１つは必ずしも接続できるわけでないという欠点があるからである。以下に、現状のＰ２Ｐによる接続システムを説明し、Ｐ２Ｐによる接続の困難さを説明する。
【００１５】
前述したように、インターネット１０１を介した接続には住所情報である「ＳｒｃＩＰ／ＳｒｃＰｏｒｔ／ＤｓｔＩＰ／ＤｓｔＰｏｒｔ」のデータが必要になる。特に、宛先に係る住所情報である「ＤｓｔＩＰ」と「ＤｓｔＰｏｒｔ」が分からなければ、送信を行うことは不可能である。クライアントがサーバと通信したい場合は、例えば一般に公開されているＵＲＬからＤＮＳサーバに使って「ＤｓｔＩＰ」を得ることができる。「ＤｓｔＰｏｒｔ」に関しては、サーバのサービスごとに規定されている（つまり固定値である）ため、必要な情報は簡単に揃えることができる。
【００１６】
一方、Ｐ２Ｐ接続による通信の場合には、最初の状態ではお互いの宛先（「ＤｓｔＩＰ」と「ＤｓｔＰｏｒｔ」）が分からないため、一般的にロビーサーバと呼ばれるマッチング（待ち合わせ）のためのサーバを一時的に利用する。
【００１７】
図６では、上記のクライアント１０２Ａと、新たなクライアント１０６とがロビーサーバ１０７を介してＰ２Ｐ接続による通信を行う簡略化した手順を示している。
【００１８】
ここで、クライアント１０２Ａは、前述と同様にルータ１０５の管理内にあってそのプライベートＩＰアドレスがＡ、クライアント１０６はグローバルＩＰアドレスがＢ、ロビーサーバ１０７はグローバルＩＰアドレスがＬでＰｏｒｔ番号がＸであるとする。
【００１９】
まずクライアント１０２Ａがロビーサーバ１０７にアクセス（ログイン）する場合（ステップＳ６１１）を見る。クライアント１０２Ａのパケットは、ルータ１０５を介するため、ルータ１０５において「ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｘ）」が「ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｐ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｘ）」に変換され、ロビーサーバ１０７に届けられる（流れＰ５１５）。ロビーサーバ１０７は、クライアント１０２Ａのログイン要求を受信する（ステップＳ６１２）と、クライアント１０２Ａの住所情報として「ＩＰ（Ｇ）」と「Ｐｏｒｔ（Ｐ）」をそのデータベースに記憶する（ステップＳ６１３）。
【００２０】
同様にクライアント１０６がロビーサーバ１０７にアクセスする（ステップＳ６１４）と、ロビーサーバ１０７は、クライアント１０６のログイン要求を受信し（ステップＳ６１５）、クライアント１０６の住所情報として「ＩＰ（Ｂ）」と「Ｐｏｒｔ（Ｘ）」をデータサービスに記憶する（ステップＳ６１６）。
【００２１】
この後において、クライアント１０２Ａから「クライアント１０６と通信したい」という要求（ステップＳ６１７）が出されるとする。この要求に係るパケットがルータ１０５を経由してロビーサーバ１０７に送信され、ロビーサーバ１０７が当該パケットを受信する（ステップＳ６１８）と、ロビーサーバ１０７は、クライアント１０６にクライアント１０２Ａの住所情報である「ＩＰ（Ｇ）／Ｐｏｒｔ（Ｐ）」を送信する（ステップＳ６１９）と共に、クライアント１０２Ａにはクライアント１０６の住所情報である「ＩＰ（Ｂ）／  Ｐｏｒｔ（Ｘ）」を送信する（ステップＳ６２０）。こうして、クライアント１０６はクライアント１０２Ａの住所情報を受信し（ステップＳ６２１）、クライアント１０２Ａはクライアント１０６の住所情報を受信する（ステップＳ６２２）。その後のクライアント１０２Ａ，１０６の間の通信プロセスでは、ロビーサーバ１０７の機能は不要となる（ステップＳ６２３）。
【００２２】
上記のようにしてクライアント１０２Ａ，１０６はお互いの住所情報を入手できたので、その後、クライアント１０２Ａは、「ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｂ）／ＤｓｔＰｏｒｔ（Ｘ）」というデータを含むパケットをクライアント１０６へ送信し（ステップＳ６２４）、クライアント１０６は、「ＳｒｃＩＰ（Ｂ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｇ）／ＤｓｔＰｏｒｔ（Ｐ）」というでデータを含むパケットをクライアント１０２Ａに送信する（ステップＳ６２６）。両者が送信したパケットが通信回線上でうまく出会えば、それぞれ直接に受信を行うことが可能である（ステップＳ６２５，Ｓ６２７）。しかし、通信が必ず行えるわけではない。
【００２３】
前述したＰ２Ｐ通信に関連する従来技術として、グローバルアドレスによる管理端末とプライベートアドレスによる管理端末間の１対１の相互通信を可能にする通信ネットワークシステムが提案されている（例えば特許文献１）。
【００２４】
【特許文献１】
特開２００１−３４５８４１号公報
【００２５】
【発明が解決しようとする課題】
図６で説明したＰ２Ｐ接続による通信システムの問題は、クライアント１０２Ａからクライアント１０６へ送信されるパケットが、ルータ１０５において、その住所情報である「ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）」が「ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｐ）」へと変換されることが原因になっている。ルータ１０５を介在させる限り、「ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）」から「ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｐ）」への変換は前提であるので、Ｐ２Ｐ通信における上記問題の発生は必須となる。
【００２６】
実際のルータ１０５におけるポート変換の方式については、「ＳｒｃＰｏｒｔ」と「ＤｓｔＰｏｒｔ」が同一であり、「ＤｓｔＩＰ」が異なるパケットに対して、同一のＤｓｔＰｏｒｔに変換される場合と、「ＳｒｃＰｏｒｔ」と「ＤｓｔＰｏｒｔ」が同一でも、ＤｓｔＩＰが異なるパケットに対しては、異なるＤｓｔＰｏｒｔに変換される場合とがある。
【００２７】
上記の前者のポート変換としては、例えば、ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｘ）が、ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｐ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｘ）となった場合、ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｂ）／ＤｓｔＰｏｒｔ（Ｘ）が、ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｐ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｘ）となる。
【００２８】
上記の後者のポート変換としては、例えば、ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｘ）が、ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｐ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｘ）となった場合、ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｂ）／ＤｓｔＰｏｒｔ（Ｘ）が、ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｑ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｘ）となる。
【００２９】
後者の例では「ＳｒｃＰｏｒｔ」は、ＸからＰではなく、ＸからＱに変換されてしまう。このため、図７に示したＰ６３１およびＰ６３２のように、ルータ１０５からクラアント１０６へ送信した「ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｑ）／ＤｓｔＩＰ（Ｂ）／ＤｓｔＰｏｒｔ（Ｘ）」には対応しない「ＳｒｃＩＰ（Ｂ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｇ）／ＤｓｔＰｏｒｔ（Ｐ）」というパケットが、クライアント１０６からルータ１０５に届くことになる。この場合、ルータ１０５は、内側のクライアント１０２Ａへパケットを渡すことができない。何故なら、ルータ１０５は内側から外部へパケットを送信する時に行ったＩＰアドレスおよびＰｏｒｔ番号の変換を元に、返信パケットのＩＰアドレスおよびＰｏｒｔ番号の逆変換を行い、内側へパケットを渡しているからである。
【００３０】
ルータ１０５では、実際上、上記の変換機能を有していることから、前述の通りファイアウォールとして外部からの未知のパケットの侵入を防ぐことに貢献することが可能となる。しかしながら、Ｐ２Ｐ通信の観点では、上記変換機能によって当該通信が制限され、接続が困難となる状況を作ることになる。
【００３１】
本発明の目的は、上記の問題を解決することにあり、異なるプライベートアドレスネットワーク間における１対１の相互接続すなわちＰ２Ｐ接続を可能にする通信ネットワークシステム、および通信の接続方法を提供することにある。
【００３２】
【課題を解決するための手段および作用】
本発明に係る通信ネットワークシステムおよび通信の接続方法は、上記の目的を達成するため、次のように構成される。
【００３３】
本発明に係る第１の通信ネットワークシステム（請求項１に対応）：  プライベートアドレスを有する第１端末装置（クライアント等）と他の異なるプライベートアドレスを有する第２端末装置（クライアント等）との間の１対１の相互接続のための通信ネットワークシステムである。このシステムで、第１および第２端末装置のうち、一方の端末装置が送信先ポート番号を予測して作りかつこの送信先ポート番号を含む１つの相互接続用パケットを相手に送信する手段を有し、他方の端末装置が上記の送信先ポート番号を予測して複数の送信元ポート番号を作りかつこれらの送信元ポート番号のそれぞれを含む複数の相互接続用パケットを作って相手に送信する手段を有するように構成される。複数の相互接続用パケットのいずれかの送信元ポート番号と１つの相互接続用パケットの送信先ポート番号とが一致したときに１対１の相互接続すなわちＰ２Ｐ接続が確立される。
【００３４】
本発明に係る第２の通信ネットワークシステム（請求項２に対応）：  第１ルータの内側にあってプライベートアドレスが割り振られた第１端末装置と、第２ルータの内側にあってプライベートアドレスが割り振られた第２端末装置との間の１対１の相互接続のための通信ネットワークシステムである。相互接続を開始する第１段階において、第１端末装置による相互接続の要求に基づき第１ルータから送信された第１端末装置のグローバルアドレスとポート番号を第２端末装置に向けて送信すると共に、第２ルータから送信された第２端末装置のグローバルアドレスとポート番号を第１端末装置に向けて送信するサーバを備える。第２端末装置は、そのグローバルアドレスとポート番号を送信した直後に、受信した第１端末装置のポート番号の値に任意の数ｎ（整数）を加えて送信先ポート番号を設定し、これを含む相互接続開始要求に係るパケットを第１ルータに対して送信する手段を有する。第１端末装置は、第２端末装置に対して相互接続開始要求に係るパケットを送信する時、送信元ポート番号を１つずつ増して成るｎ個のパケットを作って送信する手段を有する。第１ルータによって変換されたｎ個のパケットのいずれかの送信元ポート番号と、第２端末装置から送信されたパケットの送信先ポート番号が一致したときに、１対１の相互接続が確立される。
【００３５】
本発明に係る第１の通信の接続方法（請求項３に対応）：  プライベートアドレスを有する第１端末装置と他の異なるプライベートアドレスを有する第２端末装置との間を１対１に接続する方法であって、一方の端末装置が送信先ポート番号を予測して作りかつこの送信先ポート番号を含む１つの相互接続用パケットを相手に送信し、他方の端末装置が送信先ポート番号を予測して複数の送信元ポート番号を作りかつこれらの送信元ポート番号のそれぞれを含む複数の相互接続用パケットを作って相手に送信し、複数の相互接続用パケットのいずれかの送信元ポート番号と１つの相互接続用パケットの送信先ポート番号とが一致したときに１対１の相互接続を確立される接続方法である。
【００３６】
本発明に係る第２の通信の接続方法（請求項４に対応）：  第１ルータの内側にあってプライベートアドレスが割り振られた第１端末装置と、第２ルータの内側にあってプライベートアドレスが割り振られた第２端末装置との間を１対１で相互に接続する方法である。相互接続を開始する第１段階で、第１端末装置による相互接続の要求に基づき第１ルータから送信された第１端末装置のグローバルアドレスとポート番号を第２端末装置に向けて送信すると共に、第２ルータから送信された第２端末装置のグローバルアドレスとポート番号を第１端末装置に向けて送信する。第２端末装置は、そのグローバルアドレスとポート番号を送信した直後に、受信した第１端末装置のポート番号の値に任意の数ｎを加えて送信先ポート番号を設定し、これを含む相互接続開始要求に係るパケットを第１ルータに対して送信する。第１端末装置は、第２端末装置に対して相互接続開始要求に係るパケットを送信する時、送信元ポート番号を１つずつ増して成るｎ個のパケットを作って送信する。上記において、第１ルータによって変換されたｎ個のパケットのいずれかの送信元ポート番号と、第２端末装置から送信されたパケットの送信先ポート番号が一致したときに、１対１の相互接続が確立される。
【００３７】
【発明の実施の形態】
以下に、本発明の好適な実施形態を添付図面に基づいて説明する。
【００３８】
図１は、本発明に係るＰ２Ｐ接続による通信システムの構成を概念的に示す。ルータ１１Ａの内側にあるクライアント１２Ａとルータ１１Ｂの内側にあるクライアント１２Ｂとがインターネット１３を介してＰ２Ｐ接続による通信を行う構成を示している。クライアント１２Ａはルータ１１ＡにおいてプライベートＩＰアドレスが割り振られ、クライアント１２Ｂはルータ１１ＢにおいてプライベートＩＰアドレスを割り振られている。この実施形態によるネットワークでは、これらの２つのクライアント１２Ａ，１２Ｂの間でインターネット１３を介して１対１の相互接続１４が行われ、通信ネットワークが形成され、クライアント間の通信が行われる。すなわち、各ルータ１１Ａ，１１Ｂに基づく異なるプライベートアドレスネットワーク間におけるＰ２Ｐ接続を行い、Ｐ２Ｐ通信が行われる。なお、ルータ１１Ａ，１１Ｂのそれぞれの内側にあるクライアント（端末装置）は、実際には、クライアント１２Ａ、クライアント１２Ｂに限られず、複数のクライアントが接続されている。
【００３９】
図２を参照して本発明に係るＰ２Ｐ接続を可能にするポート（Ｐｏｒｔ）変換予測について説明する。図２は一例として前述したルータ１１Ａの内側を簡略して示している。ルータ１１Ａの内側には、例えば、上記のクライアント１２Ａの他に、クライアント１２Ａ−１、クライアント１２Ａ−２が接続されているものとする。
【００４０】
クライアント１２Ａ，１２Ａ−１，１２Ａ−２のそれぞれは、ほぼ同時刻に、外部にあるサーバのホームページを閲覧したり（ステップＳ１１，Ｓ１３，Ｓ１４，Ｓ１５）、外部のクライアントに対してメール送信（ステップＳ１２）を行ったりしている。ルータ１１Ａは、前述したように、外向きのパケットに対しては住所情報のうちの送信元（差出人）の「ＳｒｃＩＰ」と「ＳｒｃＰｏｒｔ」を随時変換し、内向きのパケットに対しては送信先（宛先）の「ＤｓｔＩＰ」と「ＤｓｔＰｏｒｔ」を随時変換する機能を有している。
【００４１】
図２に示すように、ルータ１１Ａにより差出人（各クライアント）のポート番号「ＳｒｃＰｏｒｔ」を変換した際に使われる変換後のＰｏｒｔ番号（ポート番号）は、時間経過と共に１つずつ加算した値が用いられる。具体的に図示された例を追ってみると、最初にクライアント１２ＡのステップＳ１１に係るパケットではその住所情報で「ＳｒｃＰｏｒｔ（Ｘ１）」から「ＳｒｃＰｏｒｔ（Ｐ）」へ変換されておリ、その後のステップＳ１２〜Ｓ１５に係るパケットでは「ＳｒｃＰｏｒｔ」が、Ｐ＋１、Ｐ＋２、Ｐ＋３、Ｐ＋４と１つずつ増えていることが分かる。さらにクライアント１２Ａの「ＳｒｃＰｏｒｔ」については、Ｐに変換された後は、Ｐ＋４となり、連続した値にならないことも分かる。これは、その後の時間経過の中で、他のクライアント１２Ａ−１，１２Ａ−２が新たなパケットを送信したためである。
【００４２】
図２に示された例から分かることは、各クライアント１２Ａ，１２Ａ−１，１２Ａ−２が新しい「ＳｒｃＩＰ／ＳｒｃＰｏｒｔ／ＤｓｔＩＰ／ＤｓｔＰｒｏｔ」の組み合わせでパケットを送信すると、ルータ１１Ａにより変換されるＰｏｒｔ番号の値は前回変換された値より、１以上のいくつか増えた値になるということである。このことは、上記クライアント１２Ｂが接続されるルータ１１ＢでのＰｏｒｔ番号の変換でも同じことである。従って、例えばルータ１１Ａの内側のクライアント１２Ａと、外部のクライアント１２Ｂとの間でＰ２Ｐ接続を行って通信を可能にするためには、ルータ１１Ａまたはルータ１１ＢにおけるＰｏｒｔ番号の変換、すなわちポート変換を予測して接続を試みることが必須となる。
【００４３】
なお、上記のパケットに関して、ＴＣＰパケットの中には、６つのコントロールフラグが含まれており、接続する際に最初に送信するパケットではＳＹＮ（シンクロナイズ）フラグがセットされる。ルータ（ファイアウォール）は、このＳＹＮフラグがセットされているパケットが外側から届くと、外部からの侵入とみなしてパケットを遮断してしまう場合があるため、Ｐ２Ｐ接続ではコントロールフラグのないＵＤＰパケットを用いる。本実施形態の説明で使用される「パケット」はＵＤＰパケットを意味する。
【００４４】
次に、図３Ａ，３Ｂ，３Ｃを参照して、本実施形態に係るＰｏｒｔ番号予測アルゴリズムを使用してクライアント１２Ａ，１２Ｂの間のＰ２Ｐ接続を説明する。図３Ａ〜３Ｃは一連のフローチャートを３つの部分に分けて示したものであり、横方向にクライアント１２Ａ、ロビーサーバ１５、クライアント１２Ｂの間のデータの送受関係が示され、縦方向に時間の経過に伴う各装置の処理の流れが示されている。
【００４５】
まずクライアント１２Ａは「ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｚ）」という住所情報を含むパケットを送信し（ステップＳ２１）、ルータ（ファイアウォール）１１Ａを介してロビーサーバ１５へログインする（ステップＳ２２）。上記パケットに含まれる住所情報の「ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｚ）」は、ルータ１１ＡでそのＮＡＴ機能およびＩＰマスカレード機能に基づいて「ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｐ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｚ）」に変換される。ロビーサーバ１５では、クライアント１２Ａからのログイン要求が正常であるか否かを判定する（ステップＳ２３）。判定ステップＳ２３で、ＹＥＳであるときにはクライアント１２Ａの住所情報をデータベースに登録し（ステップＳ２４）、ＮＯであるときにはクライアント１２Ａに不許可を送信する（ステップＳ２５）。ステップＳ２４を実行した後には、ロビーサーバ１５は、クライアント１２Ａに対してログイン許可を送信する（ステップＳ２６）。ステップＳ２５による送信またはステップＳ２６による送信はルータ１１Ａを経由してクライアント１２Ａにより受信される（ステップＳ２７）。
【００４６】
同様に、クライアント１２Ｂもロビーサーバ１５に対して「ＳｒｃＩＰ（Ｂ）／ＳｒｃＰｏｒｔ（Ｙ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｚ）」という住所情報を含むパケットを送信し（ステップＳ２８）、ルータ１１Ｂを介して、ロビーサーバ１５へログインする。ロビーサーバ１５は当該パケットによるログイン要求を受信する（ステップＳ２９）。パケットに含まれる「ＳｒｃＩＰ（Ｂ）／ＳｒｃＰｏｒｔ（Ｙ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｚ）」は、同様に、ルータ１１Ｂで「ＳｒｃＩＰ（Ｈ）／ＳｒｃＰｏｒｔ（Ｑ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｚ）」に変換される。ロビーサーバ１５では、クライアント１２Ｂからのログイン要求が正常であるか否かを判定する（ステップＳ３０）。判定ステップＳ３０で、ＹＥＳであるときにはクライアント１２Ｂの住所情報をデータベースに登録し（ステップＳ３１）、ＮＯであるときにはクライアント１２Ｂに不許可を送信する（ステップＳ３２）。ステップＳ３１を実行した後には、ロビーサーバ１５は、クライアント１２Ａに対してログイン許可を送信する（ステップＳ３３）。ステップＳ３２による送信またはステップＳ３３による送信はルータ１１Ｂを経由してクライアント１２Ｂにより受信される（ステップＳ３４）。
【００４７】
クライアント１２Ａ，１２Ｂのそれぞれでは、受信したログイン結果によってログインが成功したか否かを判断する（ステップＳ３５，Ｓ３６）。ここでは、ログインが成功したものとする。
【００４８】
上記の状態の下で、次に、クラアイント１２Ａが「ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ＋ａ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｚ）」の住所情報を含むでパケットで、ロビーサーバ１５に対して、クライアント１２ＢとのＰ２Ｐ接続の要求を送信する（ステップＳ３７）。ここで、上記のログイン時に使用した「ＳｒｃＰｏｒｔ（Ｘ）」から「ＳｒｃＰｏｒｔ（Ｘ＋ａ）」へとＰｏｒｔ番号を変更して送信している。このことは重要である。ａは任意の整数で、このＸ＋ａという新しいポート（Ｐｏｒｔ）を使うことで、ルータ１１Ａにおいても新しいＰｏｒｔ番号（Ｐ＋ｂ）への変換を行わせる。ｂはポートマッピングで生成された不確定な増分値である。Ｐ２Ｐの要求は、ロビーサーバ１５にログインしてから暫く時間が経過していることも考えられるため、クライアント１２Ａのルータ１１Ａに最新のＰｏｒｔ番号を発行させる。
【００４９】
クライアント１２Ａの要求をロビーサーバ１５が受信する（ステップＳ３８）と、ロビーサーバ１５は直ちにクライアント１２Ｂに対してクライアント１２Ａの要求を送信する（ステップＳ３９）。この際に、以前の「ＳｒｃＰｏｒｔ（Ｘ）」が変換された「Ｐｏｒｔ（Ｐ）」ではなく、「ＳｒｃＰｏｒｔ（Ｘ＋ａ）」が変換された「Ｐｏｒｔ（Ｐ＋ｂ）」というＰｏｒｔ番号と、クライアント１２ＡのグローバルＩＰアドレス（Ｇ）をクライアント１２Ｂへ送る。
【００５０】
クライアント１２Ｂは、ロビーサーバ１５からクライアント１２Ａの情報と要求を受信する（ステップＳ４０）と、Ｐ２Ｐ接続を許可するか否かを判定する（ステップＳ４１）。判定ステップＳ４１で、ＹＥＳのときにはロビーサーバ１５へＰ２Ｐ許可を送信し（ステップＳ４２）、ＮＯのときにはロビーサーバ１５にＰ２Ｐ不許可を送信する（ステップＳ４３）。その結果、ロビーサーバ１５は、クライアント１２Ｂから要求の結果を受信する（ステップＳ４４）。クライアント１２Ｂからロビーサーバ１５へのＰ２Ｐ要求の可否に関するデータの送信は、「ＳｒｃＩＰ（Ｂ）／ＳｒｃＰｏｒｔ（Ｙ＋ｃ）／ＤｓｔＩＰ（Ｌ）／ＤｓｔＰｏｒｔ（Ｚ）」という住所情報を含むパケットで行われる。クライアント１２Ａの場合と同様に、クライアント１２Ｂも、ログイン時に使用した「ＳｒｃＰｏｒｔ（Ｙ）」から「ＳｒｃＰｏｒｔ（Ｙ＋ｃ）」へとＰｏｒｔ番号を変更している。ｃは任意の整数である。さらにクライアント１２Ｂは、ステップＳ４２の直後に「ＳｒｃＩＰ（Ｂ）／ＳｒｃＰｏｒｔ（Ｙ＋ｃ＋１）／ＤｓｔＩＰ（Ｇ）／ＤｓｔＰｏｒｔ（Ｐ＋ｂ＋ｎ）」という住所情報を含むパケットをクライアント１２Ａに対して直接に送信する（ステップＳ４５）。このとき、クライアント１２ＡのＰｏｒｔ番号については、先にロビーサーバ１５から「ＩＰ（Ｇ）」と「Ｐｏｒｔ（Ｐ＋ｂ）」という情報を受けたが、「ＤｓｔＰｏｒｔ」は「ｐ＋ｂ＋ｎ」とする。ｎは任意の整数であり、このｎを加算した理由は後で述べる。
【００５１】
なおクライアント１２Ｂから送信される上記の２つのパケットは短時間内に順に送信を行われることから、ルータ１１ＢでのＰｏｒｔ番号の変換で、最初のパケットに関して「ＳｒｃＰｏｒｔ（Ｙ＋ｃ）」が「ＳｒｃＰｏｒｔ（Ｑ＋ｄ）」となった場合、２番目の「ＳｒｃＰｏｒｔ（Ｙ＋ｃ＋１）」は「ＳｒｃＰｏｒｔ（Ｑ＋ｄ＋１）」に変換される。なお上記のｄはポートマッピングで生成された不確定な増分である。
【００５２】
ロビーサーバ１５は、クライアント１２ＢからのＰ２Ｐ接続の可否を受信すると、送信内容を判定し（ステップＳ４６）、ロビーサーバ１５はクライアント１２Ａに結果を送信する（ステップＳ４７）。この際に、「ＳｒｃＰｏｒｔ（Ｙ＋ｃ）」が変換された「Ｐｏｒｔ（Ｑ＋ｄ）」と、クライアント１２ＢのグローバルＩＰアドレス（Ｈ）をクライアント１２Ａに送信する。クライアント１２Ａでは、ルータ１１Ａを介してロビーサーバ１５から送信されたクライアント１２Ｂに関する情報と結果を受信する（ステップＳ４８）。クライアント１２Ａは、クライアント１２Ｂに関する情報と結果に基づいてＰ２Ｐ接続が許可されたか否かを判定する（ステップＳ４９）。この実施形態では、クライアント１２ＢがＰ２Ｐ接続を許可したという前提の下で、次のステップＳ５０に移行する。
【００５３】
クライアント１２Ａは、ロビーサーバ１５からクライアント１２Ｂの情報と結果を受信した後、ステップＳ５０において、直ちにクライアント１２Ｂへの直接送信を試みる。ステップＳ５０によりクライアント１２ＢとのＰ２Ｐ開始要求を送信する。ステップＳ５０によるＰ２Ｐ開始要求では、以下のごとく、設定された期間の間、クライアント１２Ｂから送信されるパケットに含まれるＰｏｒｔ番号を予測し、上記ｎに対応するｎ個のパケットをクライアント１２Ｂに対して送信することによりＰ２Ｐ接続を行う。
【００５４】
ステップＳ５０で送信される最初のパケットに含まれる住所情報は「ＳｒｃＩＰ（Ａ）／ＳｒｃＰｏｒｔ（Ｘ＋ａ＋１）／ＤｓｔＩＰ（Ｈ）／ＤｓｔＰｏｒｔ（Ｑ＋ｄ＋１）」である。「ＳｒｃＩＰ（Ａ）」はクライアント１２ａのプライベートＩＰアドレス、「ＳｒｃＰｏｒｔ（Ｘ＋ａ＋１）」は使用されるＰｏｒｔ番号、「ＤｓｔＩＰ（Ｈ）」はクライアント１２Ｂから送られたグローバルＩＰアドレス、「ＤｓｔＰｏｒｔ（Ｑ＋ｄ＋１）」はクライアント１２Ｂで用いられると予測されるＰｏｒｔ番号である。上記パケットの住所情報はルータ１１Ａによって「ＳｒｃＩＰ（Ｇ）／ＳｒｃＰｏｒｔ（Ｐ＋ｂ＋ｍ）／ＤｓｔＩＰ（Ｈ）／ＤｓｔＰｏｒｔ（Ｑ＋ｄ＋１）」に変換される。
【００５５】
ここで、クライアント１２Ａがロビーサーバ１５へＰ２Ｐ接続による通信の要求を出して、その結果がクライアント１２Ｂからロビーサーバ１５を経由して戻ってくるまでに若干の時間がかかっている。この時間内に、他のクライアントやクライアント１２Ａ内の他の通信ソフトなどが新しいパケットを送信している可能性がある。つまり、ステップＳ３７での前回の「ＳｒｃＰｏｒｔ（Ｘ＋ａ）」はルータ１１Ａにより「Ｐｏｒｔ（Ｐ＋ｂ）」に変換されたが、ステップＳ５０によって次に送信する新しいパケットがルータ１１Ａにより変換されるＰｏｒｔ番号は「Ｐ＋ｂ＋１」ではなく、「Ｐ＋ｂ＋ｍ」となるように変換される。
【００５６】
ここで、上記の時間差に応じて増えるであろうと考えられるＰｏｒｔ番号の増分値（ｍ）の最大値として、前述した「ｎ」を考えることにする。一般的にｎは１０以下の小さな値で十分であるが、システムによっては最適値をカスタマイズしてもよいと予測される。ステップＳ４５に基づきクライアント１２Ｂがクライアント１２Ａに送信したパケットにおいて使用された「ＤｓｔＰｏｒｔ（Ｐ＋ｂ＋ｎ）」の「ｎ」がこの値である。
【００５７】
なお簡単な証明であるが、１≦ｍ≦ｎという定義によりｍ≦ｎかつ１≦ｍである。よって、ｍ≦ｎかつ（ｎ−ｍ）≦（ｎ−１）、すなわち、ｍ≦ｎかつｎ≦（ｍ＋ｎ−１）となる。よって、（Ｐ＋ｂ＋ｍ）≦（Ｐ＋ｂ＋ｎ）≦（Ｐ＋ｂ＋ｍ＋ｎ−１）の関係が成立する。
【００５８】
以上により、図３Ｃのフローチャートに示されるように、クライアント１２Ａはクライアント１２Ｂに対して、以下に示すｎ個のパケットを送信する。
【００５９】
2004180003.tif 000003
【００６０】
図３Ｃに示される通り、Ｐ２Ｐ開始要求の送信ステップＳ５０では、上記のｎに対応する時間範囲２１においてパケット送信に関してｎ個の幅で送信が行われる。つまり、クライアント１２Ａからクライアント１２Ｂへ送信されるｎ個の複数のパケット内の「ＳｒｃＰｏｒｔ（Ｐ＋ｂ＋ｍ）」から「ＳｒｃＰｏｒｔ（Ｐ＋ｂ＋ｍ＋ｎ−１）」の間に、ステップＳ４５に基づきクライアント１２Ｂからクライアント１２Ａに直接に送られるパケット内の「ＤｓｔＰｏｒｔ（Ｐ＋ｂ＋ｎ）」が存在することで、Ｐ２Ｐ接続が可能になる。時間範囲２１で送信されるｎ個のパケットのうち、ステップＳ４５によってクライアント１２Ｂの側からクライアント１２Ａに対して直接に送信されてくるパケット２２との間でＰｏｒｔ番号が一致したときには、Ｐ２Ｐ接続が行われ、Ｐ２Ｐ通信を行うことができる。
【００６１】
クライアント１２Ａ，１２Ｂのそれぞれでは、判断ステップＳ５１，Ｓ５２でＰ２Ｐ接続が成功したか否かが判断され、ＮＯであるときにはステップＳ５０およびステップＳ４５に戻って、前述したパケットの送信が繰り返される。上記のパケットの送信によるＰ２Ｐ接続の試みは定期的に行われる。判断ステップＳ５１，Ｓ５２でＹＥＳと判断されたときには、Ｐｏｒｔ番号が一致してＰ２Ｐ接続が形成され、それぞれステップＳ５３，Ｓ５４によりＰ２Ｐ通信が開始される。
【００６２】
前述した実施形態では、クライアント・サーバシステムの変形例としてＰ２Ｐ接続による通信を説明したが、ハードウェア構成はこれに限定されない。本発明の要旨は、プライベートアドレスを有する２つの端末装置の間でインターネットを介してＰ２Ｐ通信を行う目的で相互接続を容易にかつ確実に確立させるため、ポート番号の予測手法を用いて相互接続のために送信されるパケットにおける出会いを確実にすることにある。ポート番号の予測手法としては、１対１の相互接続における一方の端末装置から送信される１つのパケットに関して予め所望の大きさの整数ｎを設定して送信先ポート番号を定め、他方の端末装置から送信されるパケットはそれぞれ送信元ポート番号が１ずつ異なるｎ個のパケットとする。これによりパケットの出会いに基づく接続の可能性を高め、Ｐ２Ｐ接続の迅速性と確実性を実現している。本発明の技術的思想を逸脱しない限り、本発明の構成は任意に変更することができる。
【００６３】
【発明の効果】
以上の説明で明らかなように本発明によれば、プライベートアドレスを有する２つの端末装置の間で迅速にかつ確実にＰ２Ｐ接続を形成し、Ｐ２Ｐ通信を行うことができる。
【図面の簡単な説明】
【図１】本発明に係る通信ネットワークシステムを概念的に示した構成図である。
【図２】ルータに接続される複数のクライアントと、アドレス情報とポート番号の変換特性を説明するブロック図である。
【図３Ａ】本発明に係るポート番号予測アルゴリズムを利用して構成されるＰ２Ｐ接続の動作の一例を示すフローチャートの前部を示す図である。
【図３Ｂ】本発明に係るポート番号予測アルゴリズムを利用して構成されるＰ２Ｐ接続の動作の一例を示すフローチャートの中間部を示す図である。
【図３Ｃ】本発明に係るポート番号予測アルゴリズムを利用して構成されるＰ２Ｐ接続の動作の一例を示すフローチャートの後部を示す図である。
【図４】従来のクライアント・サーバシステムの接続法を説明する関係および処理フロー図である。
【図５】従来のクライアント・サーバシステムでルータが介在する場合の接続法を説明する関係および処理フロー図である。
【図６】従来のＰ２Ｐ接続での問題点を説明する関係および処理フロー図である。
【図７】従来のＰ２Ｐ接続での本質的問題を示した関係および処理フロー図である。
【符合の説明】
１１Ａ，１１Ｂ    ルータ
１２Ａ，１２Ｂ    クライアント
１３              インターネット
１４              １対１の相互接続
１５              ロビーサーバ
【図１】
2004180003.tif 000004
【図２】
2004180003.tif 000005
【図３Ａ】
2004180003.tif 000006
【図３Ｂ】
2004180003.tif 000007
【図３Ｃ】
2004180003.tif 000008
【図４】
2004180003.tif 000009
【図５】
2004180003.tif 000010
【図６】
2004180003.tif 000011
【図７】
2004180003.tif 000012