(57)【要約】【課題】  ＮＡＴ機能を利用した接続環境においても、確実にＰ２Ｐアプリケーションを実現する。【解決手段】  ホストコンピュータ１１からルータ１３へ、ＴＴＬの設定値を１から１ずつ増やした複数のエコーパケット５１を送信する第１ステップと、複数のエコーパケットのうちの１つに応答して、ルータ１３から返送されたエコーパケット５２を受信し、ホスト１１が返送されたエコーパケット５１のＴＴＬの設定値を抽出する第２ステップと、ホスト１１からルータ１３へ、ＴＴＬの設定値を抽出された設定値に１を加えた値αとしたポート設定パケット５３を送信する第３ステップとを備えた。【選択図】  図３
2005117587.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータからＰ２Ｐ型通信を行うための通信方法において、
前記コンピュータから前記ネットワーク機器へ、ＴＴＬの設定値を１から１ずつ増やした複数のエコーパケットを送信する第１ステップと、
前記複数のエコーパケットのうちの１つに応答して、前記ネットワーク機器から返送されたエコーパケットを受信し、前記コンピュータが前記返送されたエコーパケットのＴＴＬの設定値を抽出する第２ステップと、
前記コンピュータから前記ネットワーク機器へ、ＴＴＬの設定値を前記抽出された設定値に１を加えた値としたポート設定パケットを送信する第３ステップと
を備えたことを特徴とする通信方法。
【請求項２】
前記コンピュータから前記ネットワーク機器へ、ＴＴＬの設定値を前記抽出された設定値に１を加えた値としたキープアライブパケットを、通信が中断している間、一定時間間隔で送信する第４ステップをさらに備えたことを特徴とする請求項１に記載の通信方法。
【請求項３】
ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータからＰ２Ｐ型通信を行うための通信方法において、
前記コンピュータから前記ネットワーク機器へエコーパケットを送信して、前記コンピュータから前記ネットワーク機器までのホップ数を取得する第１ステップと、
前記コンピュータから前記ネットワーク機器へ、前記取得されたホップ数に１を加えた値をＴＴＬの設定値としたキープアライブパケットを、通信が中断している間、一定時間間隔で送信する第２ステップと
を備えたことを特徴とする通信方法。
【請求項４】
前記パケットは、パケットの種別を示すフラグを有し、前記コンピュータおよび前記ネットワーク機器は、前記ポート設定パケットおよび前記キープアライブパケットとその他のパケットとを、前記フラグにより識別することを特徴とする請求項１、２または３に記載の通信方法。
【請求項５】
ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータからＰ２Ｐ型通信を行うための通信方法において、
前記コンピュータから前記ネットワーク機器を介してセッション管理サーバへ、異なるソケットペアの複数のパケットを送信する第１ステップと、
前記セッション管理サーバが前記パケットから抽出した送信元ポート番号を含む応答パケットを、前記セッション管理サーバから受信し、前記コンピュータが前記応答パケットの前記送信元ポート番号を抽出する第２ステップと、
前記コンピュータが、抽出された複数の前記送信元ポート番号から、インクリメント数を算出する第３ステップと
を備えたことを特徴とする通信方法。
【請求項６】
前記コンピュータから前記ネットワーク機器を介して前記セッション管理サーバへパケットを送信し、該パケットの応答パケットから、前記ネットワーク機器のポート番号を取得する第４ステップと、
前記コンピュータから前記セッション管理サーバへ、前記第４ステップで取得した前記ポート番号に前記インクリメント数を加えた値を送信元ポート番号に設定したパケットを送信し、該パケットの応答パケットから、前記Ｐ２Ｐ型通信の相手先のネットワーク機器のポート番号を取得する第５ステップと、
前記インクリメント数を加えた値を送信元ポート番号として設定し、前記第５ステップで取得した前記ポート番号を宛先ポート番号として設定したパケットを送信する第６ステップと
をさらに備えたことを特徴とする請求項５に記載の通信方法。
【請求項７】
Ｐ２Ｐ型通信を行うために、ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータに、請求項１ないし６のいずれかに記載の各ステップを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項８】
Ｐ２Ｐ型通信を行うために、ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータに、請求項１ないし６のいずれかに記載の各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信方法に関し、より詳細には、ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータからＰ２Ｐ型通信を行うための通信方法に関する。
【背景技術】
【０００２】
近年、インターネットに接続するホストコンピュータの増大により、ＩＰアドレスの不足という問題が顕著化している。そこで、ＩＰアドレスの不足を解消するための一つの方法として、ＮＡＴ（Network Address Translator）機能が利用されている。ＮＡＴ機能は、閉域網であるＬＡＮ内のプライベートアドレスを有するホストコンピュータと、インターネット内のグローバルアドレスを有するホストコンピュータとの間で通信を行うために、アドレス変換を行う。
【０００３】
図１に、ＮＡＴ機能を説明するためのネットワーク接続図を示す。ホスト１１には、プライベートアドレスＡとグローバルアドレスＭとが割り当てられている。ルータ１３には、ＮＡＴ機能が実装されており、プライベートアドレスをグローバルアドレスに変換するための変換テーブルが格納されている。ここでホスト１１からインターネット内のホスト１２（グローバルアドレスＮ）へ、ルータ１３，１４を介してＩＰパケットを送信する。ホスト１１から送信されるＩＰパケットのヘッダには、宛先アドレス２１として「Ｎ」、送信元アドレス２２として「Ａ」が書き込まれ、ＴＣＰヘッダまたはＵＤＰヘッダには、宛先ポート番号２３として「２００」、送信元ポート番号２４として「１００」が書き込まれている。ルータ１３は、変換テーブルを参照して、送信元アドレス２２のプライベートアドレスＡをグローバルアドレスＭに変換し、ルータ１４に向けてパケットを送信する。
【０００４】
次に、ホスト１２からホスト１１へ、ルータ１４，１３を介してＩＰパケットを送信する。ホスト１２から送信されるＩＰパケットのヘッダには、宛先アドレス３１として「Ｍ」、送信元アドレス３２として「Ｎ」が書き込まれ、ＴＣＰヘッダまたはＵＤＰヘッダには、宛先ポート番号３３として「１００」、送信元ポート番号３４として「２００」が書き込まれている。ルータ１３は、変換テーブルを参照して、宛先アドレス３１のグローバルアドレスＭをプライベートアドレスＡに変換し、ＬＡＮ内のホスト１１に向けてパケットを送信する。
【０００５】
一方、オンラインゲームやビデオチャットなどのＰ２Ｐ（peer to peer）型通信を利用したアプリケーション（以下、Ｐ２Ｐアプリケーションという）の利用が増えている。Ｐ２Ｐ型通信は、サーバを介さずに、端末間で直接通信をおこなう。ＮＡＴ機能を利用した接続環境において、Ｐ２Ｐアプリケーションを利用するために、ＩＥＴＦ（Internet Engineering Task Force）の規格であるＳＴＵＮ（例えば、非特許文献１参照）技術が知られている。
【０００６】
【非特許文献１】REC3489 “STUN-Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)” March 2003
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、ＳＴＵＮ技術によっても端末間で通信ができない場合があるという問題があった。規格が詳細な部分まで規定されていなかったり、ルータによって実装する部分が異なるためである。具体的な例を以下に説明する。
【０００８】
図２に、ＩＣＭＰパケットによりブロックを行う場合を示す。ホスト１１が、ホスト１２に向け、ルータ１４のポート番号「２００」を宛先ポート番号としてパケット４１を送信する。このとき、ルータ１４が、ポート番号「２００」を使用していない場合には、ＩＣＭＰパケット（宛先到達不能メッセージ）４２をルータ１３に返送する。ルータ１３は、ＩＣＭＰパケット４２を受信すると、送信元ポート番号「１００」のポートを閉じるようになっている。従って、以後ホスト１１が、ホスト１２に向けてパケット４３を送信しても、ルータ１３はパケット４３を受け付けない。
【０００９】
また、ルータ内に格納されている変換テーブルの内容は、通信が中断してから一定時間が経過すると、削除されてしまう。すなわち、宛先アドレス、送信元アドレス、宛先ポート番号、および送信元ポート番号の関係がクリアされてしまい、ルータ１３は、同一のアドレス、同一のポート番号を設定したパケットを受け付けない。
【００１０】
さらに、シンメトリックルータと呼ばれるルータは、宛先ポート番号、宛先アドレスが変わるごとに、自身のポート番号、すなわち送信元ポート番号を変えてしまう。従って、同一のセッションで異なる宛先ポート番号にパケットを送信すると、以後同一の送信元ポート番号を使用してパケットを送信することができない。
【００１１】
本発明は、このような問題に鑑みてなされたもので、その目的とするところは、ＮＡＴ機能を利用した接続環境においても、確実にＰ２Ｐアプリケーションを実現するための通信方法を提供することにある。
【課題を解決するための手段】
【００１２】
本発明は、このような目的を達成するために、請求項１に記載の発明は、ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータからＰ２Ｐ型通信を行うための通信方法において、前記コンピュータから前記ネットワーク機器へ、ＴＴＬの設定値を１から１ずつ増やした複数のエコーパケットを送信する第１ステップと、前記複数のエコーパケットのうちの１つに応答して、前記ネットワーク機器から返送されたエコーパケットを受信し、前記コンピュータが前記返送されたエコーパケットのＴＴＬの設定値を抽出する第２ステップと、前記コンピュータから前記ネットワーク機器へ、ＴＴＬの設定値を前記抽出された設定値に１を加えた値としたポート設定パケットを送信する第３ステップとを備えたことを特徴とする。
【００１３】
請求項２に記載の発明は、請求項１に記載の通信方法において、前記コンピュータから前記ネットワーク機器へ、ＴＴＬの設定値を前記抽出された設定値に１を加えた値としたキープアライブパケットを、通信が中断している間、一定時間間隔で送信する第４ステップをさらに備えたことを特徴とする。
【００１４】
請求項３に記載の発明は、ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータからＰ２Ｐ型通信を行うための通信方法において、前記コンピュータから前記ネットワーク機器へエコーパケットを送信して、前記コンピュータから前記ネットワーク機器までのホップ数を取得する第１ステップと、前記コンピュータから前記ネットワーク機器へ、前記取得されたホップ数に１を加えた値をＴＴＬの設定値としたキープアライブパケットを、通信が中断している間、一定時間間隔で送信する第２ステップとを備えたことを特徴とする。
【００１５】
請求項４に記載の発明は、請求項１、２または３に記載の前記パケットは、パケットの種別を示すフラグを有し、前記コンピュータおよび前記ネットワーク機器は、前記ポート設定パケットおよび前記キープアライブパケットとその他のパケットとを、前記フラグにより識別することを特徴とする。
【００１６】
請求項５に記載の発明は、ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータからＰ２Ｐ型通信を行うための通信方法において、前記コンピュータから前記ネットワーク機器を介してセッション管理サーバへ、異なるソケットペアの複数のパケットを送信する第１ステップと、前記セッション管理サーバが前記パケットから抽出した送信元ポート番号を含む応答パケットを、前記セッション管理サーバから受信し、前記コンピュータが前記応答パケットの前記送信元ポート番号を抽出する第２ステップと、前記コンピュータが、抽出された複数の前記送信元ポート番号から、インクリメント数を算出する第３ステップとを備えたことを特徴とする。
【００１７】
請求項６に記載の発明は、請求項５に記載の通信方法において、前記コンピュータから前記ネットワーク機器を介して前記セッション管理サーバへパケットを送信し、該パケットの応答パケットから、前記ネットワーク機器のポート番号を取得する第４ステップと、前記コンピュータから前記セッション管理サーバへ、前記第４ステップで取得した前記ポート番号に前記インクリメント数を加えた値を送信元ポート番号に設定したパケットを送信し、該パケットの応答パケットから、前記Ｐ２Ｐ型通信の相手先のネットワーク機器のポート番号を取得する第５ステップと、前記インクリメント数を加えた値を送信元ポート番号として設定し、前記第５ステップで取得した前記ポート番号を宛先ポート番号として設定したパケットを送信する第６ステップとをさらに備えたことを特徴とする。
【００１８】
請求項７に記載の発明は、Ｐ２Ｐ型通信を行うために、ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータに、請求項１ないし６のいずれかに記載の各ステップを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であることを特徴とする。
【００１９】
請求項８に記載の発明は、Ｐ２Ｐ型通信を行うために、ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータに、請求項１ないし６のいずれかに記載の各ステップを実行させるためのプログラムであることを特徴とする。
【発明の効果】
【００２０】
以上説明したように、本発明によれば、通信の開始から終了まで、ネットワーク機器における所定のポートを常に開いておくことができるので、ＮＡＴ機能を利用した接続環境においても、確実にＰ２Ｐアプリケーションを実現することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照しながら本発明の実施形態について詳細に説明する。上述したように、ＮＡＴ機能を利用した接続環境において、Ｐ２Ｐアプリケーションを実現するためには、通信の開始から終了まで、ルータにおける所定のポートを常に開いておく必要がある。そこで、通信の最初にボートを開いておく方法、いったん開いたポートを維持する方法、通信中のポート番号の変更に対応する方法を順次説明する。
【００２２】
図３に、本発明の第１の実施形態にかかるＰ２Ｐ通信方法を示す。端末間でＰ２Ｐ通信を行う場合には、ＩＣＭＰパケットによるブロックを避けて、最初に、セッションで使用するルータのポートを開いておく必要がある。そこで、ルータ１３までのホップ数を調べ、ポートを開けるためのＵＤＰパケットを送信する。
【００２３】
具体的には、ホスト１１でＩＣＭＰのエコーパケットを生成し、ＴＴＬ（Time To Live）＝１で送信する。順次、ＴＴＬ＝２．３…と増やして、複数のエコーパケットを送信する。ＴＴＬの数値がルータ１３のホップ数と等しいエコーパケット５１を送信すると、ルータ１３よりエコーパケット５２がホスト１１に返送される。ホスト１１は、返送されたエコーパケット５２により、ルータ１３までのホップ数を知ることができる。
【００２４】
次に、ホスト１１は、ルータ１３のホップ数に１を加えた値αをＴＴＬに設定し、送信元ポート番号「１００」のポート設定パケット５３を送信する。これによって、ルータ１３の送信元ポート番号「１００」のポートが開かれる。ポート設定パケット５３は、ルータ１３の次のホップで削除されるので、他の通信に影響を与えることはない。
【００２５】
このような構成により、ルータ１３の送信元ポート番号「１００」のポートを開けておくことにより、パケット５４，５５による端末間の通信を行うことができる。このとき、ルータ１４もＩＣＭＰパケットによりブロックを行う機能を有している場合には、ホスト１２においても、同様の処理を行う。
【００２６】
図４に、本発明の第２の実施形態にかかるＰ２Ｐ通信方法を示す。同一のセッションにおいて、パケットの送受信が途絶えている間は、ルータが変換テーブルをクリアしないように、いったん開いたポートを維持しておく必要がある。そこで、パケットの送受信が途絶えている間は、キープアライブパケットを一定時間間隔で送信する。例えば、上述したＩＣＭＰエコーパケットを利用して、ルータ１３までのホップ数を予め調べておく。ホスト１１は、ルータ１３のホップ数に１を加えた値αをＴＴＬに設定し、送信元ポート番号「１００」のＵＤＰパケット６１を送信する。これによって、ルータ１３に格納されている変換テーブルの内容は削除されず、以後、同一のポート番号を設定したパケットを送信することができる。
【００２７】
なお、第１および第２の実施形態においては、ＩＣＭＰパケットによりブロックを行う機能を有しているルータにのみ送信するようにしてもよい。ルータによっては、ＴＴＬの設定値がαの場合に、パケットを破棄してポートを閉じてしまう機能を有する場合があるからである。
【００２８】
ポート設定パケットおよびキープアライブパケットが他のホストに到達した場合に、通信の混乱が起こらないようにする。例えば、図４に示したように、全てのパケットの先頭に、フラグ６３，６４を付加し、キープアライブパケットの場合は「１」を、通常のパケットの場合は「０」を設定する。このようにして、ホストがキープアライブパケットを受信した場合でも、これを識別して破棄することができる。
【００２９】
図５に、本発明の第３の実施形態にかかるＰ２Ｐ通信方法を示す。シンメトリックルータなど通信中のポート番号の変更に対応する方法を説明する。ルータ１３は、シンメトリックルータであり、宛先ポート番号、宛先アドレスが変わるごとに、自身のポート番号を２ずつインクリメントする。ルータ１４も、シンメトリックルータであり、自身のポート番号を５ずつインクリメントする。このような場合に、ホスト１１，１２は、セッション管理サーバ１５を介して、ポート番号を予測しながら通信を行う。
【００３０】
図６に、本発明の一実施形態にかかるポート番号の予測方法を示す。ホスト１１，１２における予測方法の処理の流れを示している。最初に、ホスト１１，１２は、セッション管理サーバ１５からポートチェック１パケットを受信する（Ｓ１０２）。ポートチェック１パケットは、ホスト１１，１２において、ルータ１３，１４のポート番号のインクリメント数を調べさせるための指示パケットである。ポートチェック１パケットを受信したホスト１１，１２は、新しいソケットペア、すなわち宛先ポート番号、宛先アドレスの少なくともいずれかを変えたＵＤＰパケットを、セッション管理サーバ１５に送信する（Ｓ１０４）。
【００３１】
セッション管理サーバ１５は、受信したＵＤＰパケットから送信元ポート番号、すなわち変更されたルータ１３，１４のポート番号を抽出して、ホスト１１，１２に応答パケットを送信する（Ｓ１０６）。ホスト１１，１２は、さらに、新しいソケットペアでｎ回繰り返してＵＤＰパケットを、セッション管理サーバ１５に送信する（Ｓ１０８）。
【００３２】
ホスト１１，１２は、ＵＤＰパケットをｎ回送信した後、受信した応答パケットから、ルータ１３，１４のｎ個のポート番号を取得する。ホスト１１，１２は、得られたポート番号からインクリメント数を算出する（Ｓ１１０）。算出の方法は、例えば、取得したポート番号の差分の平均値とする。差分の最大値と最小値を除いて、平均を算出するなどの計算方法を用いることもできる。
【００３３】
図７に、予測されたポート番号に基づいたＰ２Ｐ通信方法を示す。最初に、ホスト１１，１２は、セッション管理サーバ１５にポートチェック２パケットを送信する（Ｓ２０２）。ポートチェック２パケットは、ルータ１３，１４のポート番号を調べるための指示パケットである。ポートチェック２パケットを受信したセッション管理サーバ１５は、受信したＵＤＰパケットから送信元ポート番号を抽出して、ホスト１１，１２に送信する（Ｓ２０４）。
【００３４】
ホスト１１，１２は、受信した送信元ポート番号に、図６に示した予測方法により取得したインクリメント数を加算して、セッション管理サーバ１５にポートチェック３パケットを送信する（Ｓ２０６）。ポートチェック３パケットを受信したセッション管理サーバ１５は、通信の相手先として各々対応するルータのポート番号を抽出して、ホスト１１，１２に送信する（Ｓ２０８）。ホスト１１，１２は、ステップＳ２０６で使用した送信元ポート番号と、ステップＳ２０８で受信したポート番号を宛先ポート番号として設定して、通常のパケットの送受信を行う。
【００３５】
この構成によれば、通信を行うホスト１１，１２は、セッション管理サーバ１５を介して、常に正確なポート番号を予測することができるので、シンメトリックルータを介したＰ２Ｐアプリケーションを実現することができる。
【００３６】
本実施形態によれば、通信の開始から終了まで、ルータにおける所定のポートを常に開いておくために、ＩＣＭＰパケットによるブロックを避けて、通信の最初にボートを開いておくことができ、いったん開いたポートを維持して、通信中のポート番号の変更にも対応することができる。
【産業上の利用可能性】
【００３７】
本発明は、ＮＡＴ機能を利用した接続環境においても、確実にＰ２Ｐアプリケーションを実現することができるルータ、ゲートウェイなどのネットワーク機器に適用することができる。
【図面の簡単な説明】
【００３８】
【図１】ＮＡＴ機能を説明するためのネットワーク接続図である。
【図２】ＩＣＭＰパケットによりブロックを行う機能を説明するためのネットワーク接続図である。
【図３】本発明の第１の実施形態にかかるＰ２Ｐ通信方法を示すネットワーク接続図である。
【図４】本発明の第２の実施形態にかかるＰ２Ｐ通信方法を示すネットワーク接続図である。
【図５】本発明の第３の実施形態にかかるＰ２Ｐ通信方法を示すネットワーク接続図である。
【図６】本発明の一実施形態にかかるポート番号の予測方法を示すフローチャートである。
【図７】予測されたポート番号に基づいたＰ２Ｐ通信方法を示すフローチャートである。
【符号の説明】
【００３９】
１１，１２    ホスト
１３，１４    ルータ
１５    セッション管理サーバ
【図１】
2005117587.tif 000003
【図２】
2005117587.tif 000004
【図３】
2005117587.tif 000005
【図４】
2005117587.tif 000006
【図５】
2005117587.tif 000007
【図６】
2005117587.tif 000008
【図７】
2005117587.tif 000009