(57)【要約】【課題】通信を行う端末装置が増加した場合であっても、ＮＡＴ装置に記憶されるポート番号が増加せず、且つ、短時間で通信可能なポート番号を特定できる通信方法、及び通信システムを提供する。【解決手段】端末装置６〜８は、送信順、宛先ＩＰアドレス、及び送信先ポート番号の情報を通信制御装置から受信し、宛先情報１０１〜１０３として記憶する。端末装置６は、宛先情報１０１に基づいてパンチパケットを送信する。ＮＡＴ装置４宛てに、パンチパケットが送信される。パンチパケットをＮＡＴ装置３が転送する場合に、ＮＡＴ３装置にポート番号「Ｐ３＋Ｗ３」が記憶される。ＮＡＴ装置５宛てに、パンチパケットが送信される。ＮＡＴ装置３にポート番号「Ｐ３＋（Ｗ３＊２）」が記憶される。記憶されたポート番号宛てに端末装置７、８がパケットを送信することによって、Ｐ２Ｐ通信が実行される。【選択図】図１０
2011061562.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＴ機能を備えたＮＡＴ装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に所定の変化量であるポート幅ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号を含む履歴情報として記憶するＮＡＴ装置と、前記ＮＡＴ装置の配下の前記内部ネットワークに接続する端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムにおいて、複数の異なる前記ＮＡＴ装置の配下の前記内部ネットワークに接続された前記端末装置間で通信を行うための通信方法であって、
通信を行う少なくとも二つの前記端末装置の其々が、前記ＮＡＴ装置を介して前記通信制御装置に第一パケットを送信する第一送信ステップと、
前記第一送信ステップによって送信された前記第一パケットを、前記ＮＡＴ装置を介して前記通信制御装置が受信することによって、前記第一パケットを前記ＮＡＴ装置が転送した場合に前記履歴情報として記憶された前記ポート番号を前記通信制御装置が取得する取得ステップと、
前記通信制御装置の記憶手段に記憶されている前記ＮＡＴ装置の前記ポート幅と、前記取得ステップにおいて取得された前記ポート番号とに基づいて、前記端末装置から通信相手の端末装置に直接接続するＮＡＴ装置に対して送信される第二パケットの宛先ポート番号を決定する第一ポート決定ステップと、
前記第一ポート決定ステップにおいて決定された前記宛先ポート番号と、前記記憶手段に記憶された前記ＮＡＴ装置のＩＰアドレスとを前記端末装置に対して送信する第二送信ステップと、
前記第二送信ステップにおいて送信された前記ＩＰアドレスと前記宛先ポート番号とに基づいて、前記端末装置が前記ＮＡＴ装置に対して前記第二パケットを送信する第三送信ステップと
を備えたことを特徴とする通信方法。
【請求項２】
前記通信相手の端末装置に直接接続する複数の前記ＮＡＴ装置の其々に対して一意的に割り当てられる順番であって、複数の前記ＮＡＴ装置に対して前記第二パケットを送信する場合の順番である送信順を、前記通信制御装置が決定する順番決定ステップを備え、
前記第一ポート決定ステップは、
前記ポート幅と前記送信順を示す値とを乗算した値を、前記ポート番号に加算することによって、前記宛先ポート番号を決定することを特徴とする請求項１に記載の通信方法。
【請求項３】
前記第二送信ステップは、
前記ＩＰアドレス、前記ポート幅、前記取得ステップにおいて取得された前記ポート番号、及び、前記ＮＡＴ装置毎に設定される優先順位を前記端末装置に対して送信し、
前記第二送信ステップにおいて前記通信制御装置から送信された前記ポート番号と前記ポート幅と前記優先順位とに基づいて、前記端末装置が前記第二パケットの宛先ポート番号を決定する第二ポート決定ステップをさらに備え、
前記第三送信ステップは、
前記第二ポート決定ステップにおいて決定された前記宛先ポート番号と、前記第二送信ステップにおいて前記通信制御装置から送信された前記ＩＰアドレスとに基づいて、前記端末装置が前記第二パケットを送信することを特徴とする請求項１に記載の通信方法。
【請求項４】
前記第二ポート決定ステップは、
前記第二送信ステップにおいて送信された前記ポート幅と前記優先順位とを乗算した値を、前記第二送信ステップにおいて送信された前記ポート番号に加算することによって、前記宛先ポート番号を決定することを特徴とする請求項３に記載の通信方法。
【請求項５】
前記第三送信ステップにおいて前記第二パケットが送信された後、所定時間内に、前記端末装置が前記通信相手の端末装置から何らかのパケットを受信したかが判断される判断ステップと、
前記判断ステップにおいて前記通信相手の通信端末から前記パケットを受信していないと判断された場合に、前記端末装置に対して前記第一パケットの送信を要求する要求パケットを、前記通信制御装置が前記端末装置に対して送信する第四送信ステップと
を備え、
前記第一送信ステップは、
前記第四送信ステップにおいて送信された前記要求パケットに応じ、前記第一パケットを前記通信制御装置に対して送信することを特徴とする請求項１から４のいずれかに記載の通信方法。
【請求項６】
ＮＡＴ機能を備えたＮＡＴ装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に所定の変化量であるポート幅ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号を含む履歴情報として記憶するＮＡＴ装置と、前記ＮＡＴ装置の配下の前記内部ネットワークに接続する端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムであって、複数の異なる前記ＮＡＴ装置の配下の前記内部ネットワークに接続された前記端末装置間で通信を行うための通信システムにおいて、
通信を行う少なくとも二つの前記端末装置の其々が、前記ＮＡＴ装置を介して前記通信制御装置に第一パケットを送信する第一送信手段と、
前記第一送信手段によって送信された前記第一パケットを、前記ＮＡＴ装置を介して前記通信制御装置が受信することによって、前記第一パケットを前記ＮＡＴ装置が転送した場合に前記履歴情報として記憶された前記ポート番号を前記通信制御装置が取得する取得手段と、
前記通信制御装置の記憶手段に記憶されている前記ＮＡＴ装置の前記ポート幅と、前記取得手段において取得された前記ポート番号とに基づいて、前記端末装置から通信相手の端末装置に直接接続するＮＡＴ装置に対して送信される第二パケットの宛先ポート番号を決定する第一ポート決定手段と、
前記第一ポート決定手段において決定された前記宛先ポート番号と、前記記憶手段に記憶された前記ＮＡＴ装置のＩＰアドレスとを前記端末装置に対して送信する第二送信手段と、
前記第二送信手段において送信された前記ＩＰアドレスと前記宛先ポート番号とに基づいて、前記端末装置が前記ＮＡＴ装置に対して前記第二パケットを送信する第三送信手段と
を備えたことを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信方法、及び通信システムに関する。より詳細には、ＮＡＴ配下の端末装置間で通信を行うための通信方法、及び通信システムに関する。
【背景技術】
【０００２】
ＮＡＴ（Network Address Translation）機能を備えた装置（以下「ＮＡＴ装置」という。）では、ＬＡＮ側からインターネット側に向かう方向の通信が行われた場合に、所定のポート番号が記憶される。ＮＡＴ装置は、記憶されたポート番号宛てのパケットをインターネット側から受信した場合にのみ、受信したパケットをＬＡＮ側に転送する。従って、ＮＡＴ配下にある端末装置とのセッションを確立させるためには、ＮＡＴ装置に記憶されているポート番号を検出し、このポート番号宛てにパケットが送信される必要がある。
【０００３】
ＮＡＴ装置に記憶されたポート番号を端末装置に認識させることによって、異なるＮＡＴ装置の配下にある端末装置間でセッションを確立させる技術がある。例えばＵＤＰ  Ｈｏｌｅ  Ｐｕｎｃｈｉｎｇが知られている。また例えば特許文献１に記載の通信システムでは、端末装置からバブルパケットが複数送信され、ＮＡＴ装置にポート番号が複数記憶される。別のＮＡＴ装置の配下にある端末装置は、ＮＡＴ装置に記憶されたポート番号を推測するために、予想されるポート番号を宛先に設定してパケットを送信する。通信に成功したパケットの宛先として設定されているポート番号が、ＮＡＴ装置に記憶されているポート番号として特定される。以後、このポート番号を宛先としてパケットが送信される。このようにして、異なるＮＡＴ装置の配下にある端末間でセッションを確立させることが可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１３６０３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら特許文献１に記載の通信システムでは、通信を行う端末装置が増加した場合、ＮＡＴ装置に記憶されるポート番号が多くなってしまう。このため、記憶されたポート番号を使って不特定多数のユーザがＬＡＮ内にアクセスする可能性が高くなり、セキュリティが脆弱になってしまうという問題点がある。また、ＮＡＴ装置に記憶されているポート番号を特定するまでに時間を要してしまうという問題点がある。
【０００６】
本発明は上述の問題点を解決するためになされたものであり、通信を行う端末装置が増加した場合であっても、ＮＡＴ装置に記憶されるポート番号が増加せず、且つ、短時間で通信可能なポート番号を特定できる通信方法、及び通信システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第一態様に係る通信方法では、ＮＡＴ機能を備えたＮＡＴ装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に所定の変化量であるポート幅ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号を含む履歴情報として記憶するＮＡＴ装置と、前記ＮＡＴ装置の配下の前記内部ネットワークに接続する端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムにおいて、複数の異なる前記ＮＡＴ装置の配下の前記内部ネットワークに接続された前記端末装置間で通信を行うための通信方法であって、通信を行う少なくとも二つの前記端末装置の其々が、前記ＮＡＴ装置を介して前記通信制御装置に第一パケットを送信する第一送信ステップと、前記第一送信ステップによって送信された前記第一パケットを、前記ＮＡＴ装置を介して前記通信制御装置が受信することによって、前記第一パケットを前記ＮＡＴ装置が転送した場合に前記履歴情報として記憶された前記ポート番号を前記通信制御装置が取得する取得ステップと、前記通信制御装置の記憶手段に記憶されている前記ＮＡＴ装置の前記ポート幅と、前記取得ステップにおいて取得された前記ポート番号とに基づいて、前記端末装置から通信相手の端末装置に直接接続するＮＡＴ装置に対して送信される第二パケットの宛先ポート番号を決定する第一ポート決定ステップと、前記第一ポート決定ステップにおいて決定された前記宛先ポート番号と、前記記憶手段に記憶された前記ＮＡＴ装置のＩＰアドレスとを前記端末装置に対して送信する第二送信ステップと、前記第二送信ステップにおいて送信された前記ＩＰアドレスと前記宛先ポート番号とに基づいて、前記端末装置が前記ＮＡＴ装置に対して前記第二パケットを送信する第三送信ステップとを備えている。
【０００８】
第一態様に係る通信方法では、通信制御装置はポート幅に基づいて宛先ポート番号を決定し、ＩＰアドレスとともに端末装置に通知する。端末装置では、通知されたＩＰアドレスと宛先ポート番号とに基づいてパンチパケットを送信する。端末装置間通信のために必要なポート番号のみＮＡＴ装置に記憶させることができる。このため、ＮＡＴ装置に記憶される不要なポート番号宛てに不特定多数のユーザがアクセスすることを防止できるので、ＮＡＴ装置のセキュリティ機能が弱まってしまうことを防止できる。また、通信制御装置から通知されたIPアドレス及び宛先ポート番号に対してのみパンチパケットを送信すればよいので、パンチパケット通信に要する時間を短縮できる。このため、ＮＡＴ装置に記憶されたポート番号を特定するまでの時間を短縮できる。
【０００９】
また第一態様において、前記通信相手の端末装置に直接接続する複数の前記ＮＡＴ装置の其々に対して一意的に割り当てられる順番であって、複数の前記ＮＡＴ装置に対して前記第二パケットを送信する場合の順番である送信順を、前記通信制御装置が決定する順番決定ステップを備え、前記第一ポート決定ステップは、前記ポート幅と前記送信順を示す値とを乗算した値を、前記ポート番号に加算することによって、前記宛先ポート番号を決定してもよい。このようにすることで、通信相手方の端末装置が複数ある場合であっても、相手方の端末装置毎にポート番号を効率的に割り当ててＮＡＴ装置に記憶させることができる。割り当てられたポート番号に対して相手方の端末装置から送信されたパケットは、ＮＡＴ装置によって確実に転送されるので、端末装置間で確実に通信を行うことが可能となる。
【００１０】
また第一態様において、前記第二送信ステップは、前記ＩＰアドレス、前記ポート幅、前記取得ステップにおいて取得された前記ポート番号、及び、前記ＮＡＴ装置毎に設定される優先順位を前記端末装置に対して送信し、前記第二送信ステップにおいて前記通信制御装置から送信された前記ポート番号と前記ポート幅と前記優先順位とに基づいて、前記端末装置が前記第二パケットの宛先ポート番号を決定する第二ポート決定ステップをさらに備え、前記第三送信ステップは、前記第二ポート決定ステップにおいて決定された前記宛先ポート番号と、前記第二送信ステップにおいて前記通信制御装置から送信された前記ＩＰアドレスとに基づいて、前記端末装置が前記第二パケットを送信してもよい。これによって、端末装置においてパンチパケットの宛先ポート番号を簡易に決定することができる。また宛先ポート番号は、端末装置毎に一意的に決定されるので、ＮＡＴ装置に記憶さえるポート番号を最小限に抑えつつ、端末装置間で確実に通信を行うことができる。
【００１１】
また第一態様において、前記第二ポート決定ステップは、前記第二送信ステップにおいて送信された前記ポート幅と前記優先順位とを乗算した値を、前記第二送信ステップにおいて送信された前記ポート番号に加算することによって、前記宛先ポート番号を決定してもよい。このようにすることで、通信相手方の端末装置が複数ある場合であっても、相手方の端末装置毎にポート番号を割り当ててＮＡＴ装置に記憶させることができる。従って端末装置は、簡易な算出方法によって宛先ポート番号を決定することができる。また宛先ポート番号は、端末装置毎に一意的に決定されるので、ＮＡＴ装置に記憶さえるポート番号を最小限に抑えつつ、端末装置間で確実に通信を行うことができる。
【００１２】
また第一態様において、前記第三送信ステップにおいて前記第二パケットが送信された後、所定時間内に、前記端末装置が前記通信相手の端末装置から何らかのパケットを受信したかが判断される判断ステップと、前記判断ステップにおいて前記通信相手の通信端末から前記パケットを受信していないと判断された場合に、前記端末装置に対して前記第一パケットの送信を要求する要求パケットを、前記通信制御装置が前記端末装置に対して送信する第四送信ステップとを備え、前記第一送信ステップは、前記第四送信ステップにおいて送信された前記要求パケットに応じ、前記第一パケットを前記通信制御装置に対して送信してもよい。何らかの障害が発生した結果、端末装置間で通信を行うことができない場合であっても、再度宛先ポート番号が決定される。端末装置は、決定された宛先ポート番号に基づいて通信を再開させることができる。
【００１３】
また、第二態様に係る発明の通信システムは、ＮＡＴ機能を備えたＮＡＴ装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に所定の変化量であるポート幅ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号を含む履歴情報として記憶するＮＡＴ装置と、前記ＮＡＴ装置の配下の前記内部ネットワークに接続する端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムであって、複数の異なる前記ＮＡＴ装置の配下の前記内部ネットワークに接続された前記端末装置間で通信を行うための通信システムにおいて、通信を行う少なくとも二つの前記端末装置の其々が、前記ＮＡＴ装置を介して前記通信制御装置に第一パケットを送信する第一送信手段と、前記第一送信手段によって送信された前記第一パケットを、前記ＮＡＴ装置を介して前記通信制御装置が受信することによって、前記第一パケットを前記ＮＡＴ装置が転送した場合に前記履歴情報として記憶された前記ポート番号を前記通信制御装置が取得する取得手段と、前記通信制御装置の記憶手段に記憶されている前記ＮＡＴ装置の前記ポート幅と、前記取得手段において取得された前記ポート番号とに基づいて、前記端末装置から通信相手の端末装置に直接接続するＮＡＴ装置に対して送信される第二パケットの宛先ポート番号を決定する第一ポート決定手段と、前記第一ポート決定手段において決定された前記宛先ポート番号と、前記記憶手段に記憶された前記ＮＡＴ装置のＩＰアドレスとを前記端末装置に対して送信する第二送信手段と、前記第二送信手段において送信された前記ＩＰアドレスと前記宛先ポート番号とに基づいて、前記端末装置が前記ＮＡＴ装置に対して前記第二パケットを送信する第三送信手段とを備えている。
【００１４】
第二態様に係る通信システムでは、通信制御装置はポート幅に基づいて宛先ポート番号を決定し、ＩＰアドレスとともに端末装置に通知する。端末装置では、通知されたＩＰアドレスと宛先ポート番号とに基づいてパンチパケットを送信する。端末装置間通信のために必要なポート番号のみＮＡＴ装置に記憶させることができる。このため、ＮＡＴ装置に記憶される不要なポート番号宛てに不特定多数のユーザがアクセスすることを防止できるので、ＮＡＴ装置のセキュリティ機能が弱まってしまうことを防止できる。
【図面の簡単な説明】
【００１５】
【図１】通信システム１の概要を示す模式図である。
【図２】通信制御装置２の電気的構成を示すブロック図である。
【図３】第一テーブル２４１１を示す模式図である。
【図４】第二テーブル２４２１を示す模式図である。
【図５】ＮＡＴ装置１５の電気的構成を示すブロック図である。
【図６】端末装置１６の電気的構成を示すブロック図である。
【図７】通信制御処理を示すフローチャートである。
【図８】端末装置処理を示すフローチャートである。
【図９】端末装置１６間でパンチパケットの通信が行われた状態を示す図である。
【図１０】端末装置１６間でＰ２Ｐ通信が行われた状態を示す図である。
【図１１】第一の変形例における端末装置処理を示すフローチャートである。
【図１２】第一の変形例における通信制御処理を示すフローチャートである。
【図１３】第二の変形例における通信制御処理を示すフローチャートである。
【図１４】優先順位情報２４４１を示す模式図である。
【図１５】第二の変形例における端末装置処理を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明に係る通信システム１について、図面を参照して説明する。これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている端末の構成、各種処理のフローチャートなどは、それのみに限定する趣旨ではなく、単なる説明例である。
【００１７】
図１を参照し、通信システム１の概要について説明する。通信システム１は、通信制御装置２、ＮＡＴ装置３，４，５（以下、これらを区別しない場合、「ＮＡＴ装置１５」という。）、及び端末装置６，７，８（以下、これらを区別しない場合、「端末装置１６」という。）を少なくとも備えている。通信制御装置２とＮＡＴ装置１５とは、インターネット９に接続している。ＮＡＴ装置１５は、配下のＬＡＮ（ＬＡＮ１１〜１３）に接続している。端末装置１６は、ＬＡＮに接続している。図１に示す例では、ＮＡＴ装置３の配下のＬＡＮ１１に端末装置６が接続している。ＮＡＴ装置４の配下のＬＡＮ１２に端末装置７が接続している。ＮＡＴ装置５の配下のＬＡＮ１３に端末装置８が接続している。
【００１８】
通信制御装置２は、端末装置１６間で直接通信を行うために必要な情報を、端末装置１６に提供する。通信制御装置２としては、例えば呼制御サーバやＳＴＵＮサーバが使用できる。端末装置１６は、通信制御装置２から提供される情報に基づいて、他の端末装置１６との間で直接通信を行う。端末装置１６としては、例えばＰＣ（パーソナルコンピュータ）が使用できる。
【００１９】
ＮＡＴ装置１５は、ＮＡＴ（Network Address Translation）機能を備えた装置である。ＮＡＴ装置１５は、ＬＡＮ側からインターネット側に向かう方向のパケットを端末装置１６から受信した場合に、パケットの送信元ＩＰアドレスとポート番号とを変換する。変換後のポート番号は、履歴情報としてＮＡＴ装置１５に記憶される。記憶されたポート番号は、インターネット側からＬＡＮ側に向かう方向のパケットを受信した場合において、該パケットをＬＡＮ側に転送するか否かを判断する場合に使用される。インターネット側から受信したパケットの送信先ポート番号と同じポート番号が、履歴情報として記憶されている場合、受信したパケットをＬＡＮ側に転送する。一方、インターネット側から受信したパケットの送信先ポート番号と同じポート番号が、履歴情報として記憶されていない場合、受信したパケットはＬＡＮ側に転送しない。このようにして、ＬＡＮに不特定多数の者がアクセスできないようにしている。なお本実施の形態では、ＮＡＴ装置１５によってパケットの送信元ポート番号が変換される場合の変換後のポート番号は、履歴情報に記憶されているポート番号に所定の変化量（以下「ポート幅」という。）が加算されることによって算出されるものとする。
【００２０】
ＮＡＴ装置１５としては、ＮＡＴ種別がCone NAT（Full Cone NAT、Address-Restricted Cone NAT、Port-Restricted Cone NAT）であるＮＡＴ装置が使用できる。
【００２１】
本実施の形態では、異なるＮＡＴ装置１５の配下にある端末装置１６間でＰ２Ｐ（Peer to Peer）通信が行われる。図１に示す例では、ＮＡＴ装置３の配下のＬＡＮ１１に接続された端末装置６、ＮＡＴ装置４の配下のＬＡＮ１２に接続された端末装置７、及び、ＮＡＴ装置５の配下のＬＡＮ１３に接続された端末装置８の間で、Ｐ２Ｐ通信が行われる。
【００２２】
異なるＮＡＴ装置１５の配下にある端末装置１６間でＰ２Ｐ通信を行うためには、其々の端末装置１６が、通信相手方の端末装置１６に直接接続するＮＡＴ装置１５に履歴情報として記憶されているポート番号を知る必要がある。ＮＡＴ装置１５は、履歴情報として記憶されているポート番号宛てのパケットをインターネット側から受信した場合のみ、受信したパケットをＬＡＮ側に転送するためである。本実施の形態では、端末装置１６がＮＡＴ装置１５を介してパケットを送信することによって、ＮＡＴ装置１５にポート番号を記憶させる（ＮＡＴ装置１５にポート番号を記憶させるために、端末装置１６から送信されるパケットを、以下「パンチパケット」という。）。端末装置１６間でＰ２Ｐ通信が行われる場合、通信相手方の端末装置１６に直接接続するＮＡＴ装置１５に記憶されたポート番号に対して、パケットが送信される。ここで本実施の形態では、通信制御装置２がパンチパケットの通信制御を行うことによって、端末装置１６から送信されるパンチパケットの数を極力抑えている。これによって、ＮＡＴ装置１５に記憶されるポート番号の数を抑制している。
【００２３】
なお、図１におけるインターネット９が、本発明の「外部ネットワーク」に相当し、ＬＡＮ１１〜１３が本発明の「内部ネットワーク」に相当する。なお本発明は、外部ネットワークとしてインターネット９の他に従来周知の様々なネットワーク（ＬＡＮ、ＷＡＮ、専用回線など）が使用できる。同様に、内部ネットワークとしてＬＡＮ１１，１２，１３の他に従来周知のネットワーク（インターネット、ＷＡＮ、専用回線など）が使用できる。
【００２４】
図２を参照し、通信制御装置２の電気的構成について説明する。通信制御装置２は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、ＨＤＤ２４を備えている。ＣＰＵ２１は、ＮＡＴ装置１５や端末装置１６との通信を制御する。ＲＯＭ２２には、Ｂｏｏｔプログラムや初期設定パラメータが少なくとも記憶される。ＲＡＭ２３には、ＣＰＵ２１の処理時に発生する一時的なデータが少なくとも記憶される。ＨＤＤ２４には、第一テーブル記憶領域２４１、第二テーブル記憶領域２４２、プログラム記憶領域２４３、その他の情報記憶領域２４４が少なくとも記憶される。第一テーブル記憶領域２４１には、ＮＡＴ装置１５に関する情報が格納された第一テーブルが記憶される。第二テーブル記憶領域２４２には、端末装置１６から送信されるパンチパケットの送信先の情報が格納された第二テーブルが記憶される。プログラム記憶領域２４３には、ＣＰＵ２１のプログラムが記憶される。その他の情報記憶領域２４４には、上述の情報以外の情報が記憶される。ＣＰＵ２１は、ＲＯＭ２２、ＲＡＭ２３、及びＨＤＤ２４と電気的に接続している。ＣＰＵ２１は、ＲＯＭ２２、ＲＡＭ２３、及びＨＤＤ２４の記憶領域にアクセスできる。
【００２５】
通信制御装置２は、入力ドライバ２５を備えている。入力ドライバ２５は、キーボード２５１を介して入力された情報を検出する。ＣＰＵ２１は、入力ドライバ２５と電気的に接続している。入力ドライバ２５は、キーボード２５１と電気的に接続する。ＣＰＵ２１は、キーボード２５１を介して入力された情報を認識できる。通信制御装置２は、表示ドライバ２６を備えている。表示ドライバ２６は、ディスプレイ２６１に像を表示させるための制御を行う。ＣＰＵ２１は、表示ドライバ２６と電気的に接続している。表示ドライバ２６は、ディスプレイ２６１と電気的に接続する。ＣＰＵ２１は、ディスプレイ２６１に所望の像を表示させることができる。
【００２６】
通信制御装置２は、通信モジュール２７を備えている。通信モジュール２７は、インターネット９を介した通信を可能とする。ＣＰＵ２１は、通信モジュール２７と電気的に接続している。ＣＰＵ２１は、インターネット９を介して通信を行うことができる。通信制御装置２は、ディスクドライブ２８を備えている。ディスクドライブ２８は、記憶媒体２８１に記憶された情報にアクセスする為の駆動装置である。ＣＰＵ２１は、ディスクドライブ２８と電気的に接続している。ＣＰＵ２１は、ディスクドライブ２８に記憶媒体２８１が挿入された状態で、記憶媒体２８１に記憶された情報にアクセスできる。記憶媒体２８１には、例えば、ＣＰＵ２１が実行するプログラムが記憶される。記憶媒体２８１の導入時には、プログラムが記憶媒体２８１からＨＤＤ２４のプログラム記憶領域２４３にセットアップされる。
【００２７】
図３を参照し、第一テーブルの一例である第一テーブル２４１１について説明する。第一テーブル２４１１には、ＮＡＴ装置１５を特定するＩＤ情報（「ＮＡＴ  ＩＤ」という。）、ＮＡＴ装置１５のＩＰアドレス、ポート幅、及び基準ポート番号が格納される。基準ポート番号は、パンチパケットが送信される場合に基準となるポート番号を示す（詳細は後述する。）。
【００２８】
図３に示す例では、ＮＡＴ  ＩＤとして「３」「４」「５」が格納されている。なおこれらのＮＡＴ  ＩＤにて特定されるＮＡＴ装置１５は、図１におけるＮＡＴ装置３，４，５にそれぞれ相当する。ＮＡＴ装置３（ＮＡＴ  ＩＤ：３）のＩＰアドレスは「Ｇ３」である。ポート幅は「Ｗ３」である。基準ポート番号は「Ｐ３」である。
【００２９】
図４を参照し、第二テーブルの一例である第二テーブル２４２１について説明する。第二テーブル２４２１には、ＮＡＴ  ＩＤ、パンチパケットの送信先として指定するＮＡＴ装置１５のＮＡＴ  ＩＤ（第一送信先ＩＤ、第二送信先ＩＤ）、各送信先ＩＤにて特定されるＮＡＴ装置１５に対してパンチパケットを送信する場合の送信先ＩＰアドレス及び送信先ポート番号が格納される。なお、第一送信先ＩＤ及び第二送信先ＩＤは、パンチパケットの送信順を示している。はじめに第一送信先ＩＤのＮＡＴ装置１５に対してパンチパケットが送信され、次いで第二送信先ＩＤのＮＡＴ装置１５に対してパンチパケットが送信される（後述）ので、第一送信先ＩＤが「送信順：１」に相当し、第二送信先ＩＤが「送信順：２」に相当する。
【００３０】
図４に示す例では、ＮＡＴ  ＩＤとして「３」「４」「５」が格納されている。ＮＡＴ  ＩＤが「３」に対応するＮＡＴ装置３の第一送信先ＩＤとして「４」（ＮＡＴ装置４）が記憶されている。ＮＡＴ装置４宛てにパンチパケットを送信する場合の送信先ＩＰアドレスは「Ｇ４」であり、送信先ポート番号は「Ｐ４＋Ｗ４」である。また、ＮＡＴ装置３の第二送信先ＩＤとして「５」（ＮＡＴ装置５）が記憶されている。ＮＡＴ装置５宛てにパンチパケットを送信する場合の送信先ＩＰアドレスは「Ｇ５」であり、送信先ポート番号は「Ｐ５＋Ｗ５」である。
【００３１】
なお図４には、第一送信先ＩＤ及び第二送信先ＩＤが格納された第二テーブル２４２１が示されているが、本発明はこの構成に限定されない。Ｐ２Ｐ通信を行う他の端末装置の台数に応じて、格納される送信先ＩＤの数は変化する。
【００３２】
通信制御装置２では、第一テーブルの情報に基づいて第二テーブルが作成される。作成された第二テーブルの情報は、端末装置１６に対して送信される。この情報を受信した端末装置１６では、第一送信先ＩＤ及び第二送信先ＩＤにて特定されるＮＡＴ装置１５に対し、パンチパケットを送信する。また端末装置１６は、送信先ＩＰアドレス及び送信先ポート番号の情報に基づいてＰ２Ｐ通信を行うことが可能になる。詳細は後述する。
【００３３】
図５を参照し、ＮＡＴ装置１５の電気的構成について説明する。ＮＡＴ装置１５は、ＣＰＵ５１、ＲＯＭ５２、ＲＡＭ５３、フラッシュメモリ５７を備えている。ＣＰＵ５１は、通信制御装置２や端末装置１６との通信を制御する。ＲＯＭ５２には、ＣＰＵ５１のプログラムが少なくとも記憶される。ＲＡＭ５３には、ＣＰＵ５１の処理時に発生する一時的なデータが少なくとも記憶される。フラッシュメモリ５７には、ポート番号が履歴情報として記憶される。ＣＰＵ５１は、ＲＯＭ５２、ＲＡＭ５３、及びフラッシュメモリ５７と電気的に接続している。ＣＰＵ５１は、ＲＯＭ５２、ＲＡＭ５３、及びフラッシュメモリ５７の記憶領域にアクセスできる。
【００３４】
ＮＡＴ装置１５は、表示部５４を備えている。表示部５４は、ＮＡＴ装置１５の状態等を表示することができる。ＣＰＵ５１は、表示部５４と電気的に接続している。ＣＰＵ５１は、表示部５４に所望の情報を表示させることができる。表示部５４としては、例えばＬＥＤが使用できる。ＮＡＴ装置１５は、入力部５５を備えている。入力部５５は、ユーザによるＮＡＴ装置１５への入力操作を受け付ける。ＣＰＵ５１は、入力部５５と電気的に接続している。ＣＰＵ５１は、入力部５５を介して入力された情報を認識できる。入力部５５としては、例えばスイッチやタッチセンサが使用できる。
【００３５】
ＮＡＴ装置５は、通信モジュール５８を備えている。通信モジュール５８は、インターネット９を介した通信を可能とする。ＣＰＵ５１は、通信モジュール５８と電気的に接続している。ＣＰＵ５１は、インターネット９を介して通信を行うことができる。ＮＡＴ装置５は、通信モジュール５９を備えている。通信モジュール５９は、ＬＡＮを介した通信を可能とする。ＣＰＵ５１は、通信モジュール５９と電気的に接続している。ＣＰＵ５１は、ＬＡＮを介して通信を行うことができる。
【００３６】
図６を参照し、端末装置１６の電気的構成について説明する。端末装置１６は、ＣＰＵ８１、ＲＯＭ８２、ＲＡＭ８３、ＨＤＤ８４を備えている。ＣＰＵ８１は、ＮＡＴ装置１５や通信制御装置２との通信を制御する。ＲＯＭ８２には、Ｂｏｏｔプログラムや初期パラメータが少なくとも記憶される。ＲＡＭ８３は、ＣＰＵ８１の処理時に発生する一時的なデータが少なくとも記憶される。ＨＤＤ８４は、ＣＰＵ８１のプログラムが少なくとも記憶される。ＣＰＵ８１は、ＲＯＭ８２、ＲＡＭ８３、及びＨＤＤ８４と電気的に接続している。ＣＰＵ８１は、ＲＯＭ８２、ＲＡＭ８３、及びＨＤＤ８４の記憶領域にアクセスできる。
【００３７】
端末装置１６は、入力ドライバ８５を備えている。入力ドライバ８５は、キーボード８５１を介して入力された情報を検出する。ＣＰＵ８１は、入力ドライバ８５と電気的に接続している。入力ドライバ８５は、キーボード８５１と電気的に接続する。ＣＰＵ８１は、キーボード８５１を介して入力された情報を認識できる。端末装置１６は、表示ドライバ８６を備えている。表示ドライバ８６は、ディスプレイ８６１に像を表示させるための制御を行う。ＣＰＵ８１は、表示ドライバ８６と電気的に接続している。表示ドライバ８６は、ディスプレイ８６１と電気的に接続する。ＣＰＵ８１は、ディスプレイ８６１に所望の像を表示させることができる。
【００３８】
端末装置１６は、通信モジュール８７を備えている。通信モジュール８７は、ＬＡＮを介した通信を可能とする。ＣＰＵ８１は、通信モジュール８７と電気的に接続している。ＣＰＵ８１は、ＬＡＮを介して通信を行うことができる。端末装置１６は、ディスクドライブ８８を備えている。ディスクドライブ８８は、記憶媒体８８１に記憶された情報にアクセスする為の駆動装置である。ＣＰＵ８１は、ディスクドライブ８８と電気的に接続している。ＣＰＵ８１は、ディスクドライブ８８に記憶媒体８８１が挿入された状態で、記憶媒体８８１に記憶された情報にアクセスできる。記憶媒体８８１には、例えば、ＣＰＵ８１が実行するプログラムが記憶される。記憶媒体８８１の導入時には、プログラムが記憶媒体８８１からＨＤＤ８４にセットアップされる。
【００３９】
図７を参照し、通信制御装置２のＣＰＵ２１において実行される通信制御処理について説明する。通信制御処理は、通信制御装置２の電源が投入された状態で、ＣＰＵ２１によって所定の周期で繰り返し起動され実行される。以下では、端末装置６〜８間でＰ２Ｐ通信が行われる場合に、通信制御装置２のＣＰＵ２１において実行される通信制御処理について説明する。
【００４０】
なおＮＡＴ装置１５には、通信制御装置２と端末装置１６とが通信を行うためのポート番号が履歴情報として予め記憶されているものとする。通信制御装置２は、ＮＡＴ装置１５に履歴情報として記憶されているポート番号を認識しているものとする。また通信制御装置２は、通信制御処理が実行されるに際し、事前にＮＡＴ装置１５のＩＰアドレスとポート幅とを認識しているものとする。ＮＡＴ装置１５のＩＰアドレスとポート幅とは、第一テーブルに格納され、第一テーブル記憶領域２４１に記憶されている。
【００４１】
例えば通信制御装置２には、図３に示す第一テーブル２４１１のうち基準ポート番号以外の情報が第一テーブル記憶領域２４１に予め記憶される。
【００４２】
通信制御処理が起動されると、はじめに、Ｐ２Ｐ通信が行われる端末装置６〜８に対して、基準ポート番号の通知を要求する基準ポート要求パケットが送信される（Ｓ２１）。送信された基準ポート要求パケットは、ＮＡＴ装置３〜５を介し、端末装置６〜８に到達する。次いで、基準ポート要求パケットに応じて端末装置６〜８から送信される基準ポート通知パケットを、ＮＡＴ装置３〜５を介して受信したかが判断される（Ｓ２２）。基準ポート通知パケットを受信した場合（Ｓ２２：ＹＥＳ）、受信した基準ポート通知パケットの送信元ポート番号が、基準ポート番号として抽出される。抽出された基準ポート番号は、第一テーブルのうち基準ポート通知パケットを転送したＮＡＴ装置（ＮＡＴ装置３〜５のいずれか）のＮＡＴ  ＩＤに対応付けられて記憶される（Ｓ２３）。そしてＳ２２の処理に戻り、繰り返し基準ポート通知パケットの受信が監視される。
【００４３】
例えば、図３のうち基準ポート番号以外の情報が格納された状態の第一テーブル２４１１を通信制御装置２が有している場合であって、ＮＡＴ装置３を介して、端末装置６から基準ポート通知パケットを受信した場合を想定する。受信した基準ポート通知パケットの送信元ポート番号「Ｐ３」が、第一テーブル２４１１のうちＮＡＴ  ＩＤ「３」に対応付けられて記憶される。同様の処理が、端末装置７，８から基準ポート通知パケットを受信した場合にも実行される。
【００４４】
基準ポート通知パケットを受信していない場合（Ｓ２２：ＮＯ）、端末装置６〜８の全てから基準ポート通知パケットを受信したかが判断される（Ｓ２５）。基準ポート通知パケットを受信していない端末装置が存在する場合（Ｓ２５：ＮＯ）、Ｓ２２の処理に戻り、継続して基準ポート通知パケットの受信が監視される。
【００４５】
端末装置６〜８の全てから基準ポート通知パケットを受信した場合（Ｓ２５：ＹＥＳ）、第一テーブル記憶領域２４１に記憶されている第一テーブルに基づいて第二テーブルが作成される（Ｓ２７〜Ｓ３３）。はじめに、送信順が決定されることによって、第二テーブルのうち第一送信先ＩＤと第二送信先ＩＤとが決定される（Ｓ２７）。送信順は、例えばＮＡＴ  ＩＤが降順となるように決定される。なお、本発明はこの方法に限定されず、例えばＮＡＴ  ＩＤが昇順となるように決定してもよいし、ＮＡＴ装置１５のＭＡＣアドレスやＩＰアドレスに基づいて送信順を決定してもよい。また、端末装置の通信履歴に基づき、直近に通信した端末装置同士が優先されるように送信順を決定してもよい。
【００４６】
図３に示す第一テーブル２４１１に基づいて送信順が決定され、第一送信先ＩＤ及び第二送信先ＩＤが特定される場合を例示して説明する。ＮＡＴ装置３の通信相手先のＮＡＴ装置は、ＮＡＴ装置４（ＮＡＴ  ＩＤ：４）とＮＡＴ装置５（ＮＡＴ  ＩＤ：５）ということになる。送信先ＩＤはＮＡＴ  ＩＤの降順に決定されるので、送信順は、ＮＡＴ装置４：送信順１、ＮＡＴ装置５：送信順２のように決定される。この送信順に基づき、第一送信先ＩＤが「４」とされ、第二送信先ＩＤが「５」とされる。同様に、ＮＡＴ装置４の通信相手先のＮＡＴ装置は、ＮＡＴ装置３（ＮＡＴ  ＩＤ：３）とＮＡＴ装置５（ＮＡＴ  ＩＤ：５）であるので、送信順は、ＮＡＴ装置３：送信順１、ＮＡＴ装置５：送信順２のように決定される。この送信順に基づき、第一送信先ＩＤが「３」とされ、第二送信先ＩＤが「５」とされる。以上のようにして、送信順、及び、第一送信先ＩＤと第二送信先ＩＤとが決定される。
【００４７】
次いで、第二テーブルのうち送信先ＩＰアドレス及び送信先ポート番号が決定される（Ｓ３１）。送信先ＩＰアドレスは、第一テーブルに記憶されているＩＰアドレスとされる。送信先ポート番号の決定方法について、図３に示す第一テーブル２４１１、及び図４に示す第二テーブル２４２１を参照して以下に説明する。
【００４８】
一のＮＡＴ装置（ＮＡＴ装置３とする。）が、第一送信先ＩＤにて特定されるＮＡＴ装置（ＮＡＴ装置４とする。）との間でパケットの送受信を行うために、ＮＡＴ装置３に記憶させるポート番号が決定される。ポート番号は、ＮＡＴ装置３のポート幅「Ｗ３」に送信順「１」を乗算した値を、基準ポート「Ｐ３」に加算した値「Ｐ３＋Ｗ３（＊１）」とされる。算出されたポート番号「Ｐ３＋Ｗ３」は、ＮＡＴ装置４がＮＡＴ装置３に対してパケットを送信する場合の送信先ポート番号とされる。このポート番号は、第二テーブルのうち、ＮＡＴ装置４に対応付けられている第一送信先ＩＤ「３」の宛先ポート番号として記憶される。
【００４９】
次いで、ＮＡＴ装置３が、第二送信先ＩＤにて特定されるＮＡＴ装置（ＮＡＴ装置５とする。）との間でパケットの送受信を行うために、ＮＡＴ装置３に記憶させるポート番号が決定される。ポート番号は、ＮＡＴ装置３のポート幅「Ｗ３」に送信順「２」を乗算した値を、基準ポート「Ｐ３」に加算した値「Ｐ３＋Ｗ３＊２」とされる。算出されたポート番号「Ｐ３＋Ｗ３＊２」は、ＮＡＴ装置５がＮＡＴ装置３に対してパケットを送信する場合の送信先ポート番号とされる。このポート番号は、第二テーブルのうち、ＮＡＴ装置５に対応付けられている第一送信先ＩＤ「３」の宛先ポート番号として記憶される。
【００５０】
例えば、第二テーブル２４２１のうちＮＡＴ  ＩＤ「４」には、第一送信先ＩＤとして「３」が記憶されており、第二送信先ＩＤとして「５」が記憶されている。ＮＡＴ装置４がＮＡＴ装置３との通信を行うために記憶するポート番号は、ＮＡＴ装置４のポート幅「Ｗ４」に送信順「１」を乗算した値を、基準ポート「Ｐ４」に加算した値「Ｐ４＋Ｗ４」となる。算出されたポート番号「Ｐ４＋Ｗ４」は、送信先ポート番号（ＮＡＴ  ＩＤ：３、第一送信先ＩＤ：４に対応付けられている送信先ポート番号）に格納される。ＮＡＴ装置４がＮＡＴ装置５との通信を行うために記憶するポート番号は、ＮＡＴ装置４のポート幅「Ｗ４」に送信順「２」を乗算した値を、基準ポート「Ｐ４」に加算した値「Ｐ４＋（Ｗ４＊２）」となる。算出されたポート番号「Ｐ４＋（Ｗ４＊２）」は、送信先ポート番号（ＮＡＴ  ＩＤ：５、第一送信先ＩＤ：４に対応付けられている送信先ポート番号）に格納される。
【００５１】
Ｓ２７の処理によって決定された第一送信元ＩＤ及び第二送信元ＩＤと、Ｓ３１の処理によって決定された送信先ＩＰアドレス及び送信先ポート番号とは、第二テーブル記憶領域２４２の第二テーブルに記憶される（Ｓ３３）。そしてＳ３５の処理に進む。
【００５２】
Ｓ３５の処理では、端末装置６〜８に対してパンチパケットの送信を指示する送信指示パケットが、端末装置６〜８に対して送信される（Ｓ３５）。送信指示パケットには、Ｓ３３において作成された第二テーブルの情報が付加される。例えば端末装置６に対して送信指示パケットが送信される場合には、第二テーブルのうち、端末装置６に直接接続するＮＡＴ装置３に関する情報（ＮＡＴ  ＩＤ：３に対応付けられている各送信先ＩＤ、送信先ＩＰアドレス、送信先ポート番号）が送信指示パケットに付加される。そして通信制御処理は終了する。
【００５３】
図８を参照し、端末装置１６のＣＰＵ８１において実行される端末装置処理について説明する。端末装置処理は、端末装置１６の電源が投入された状態で、ＣＰＵ８１によって所定の周期で繰り返し起動され実行される。以下、端末装置６が端末装置７及び８とＰ２Ｐ通信を行うに際し、端末装置６のＣＰＵ８１において端末装置処理が実行される場合を想定して説明する。端末装置７、８のＣＰＵ８１においても同様の処理が実行される。
【００５４】
なお端末装置６は、予め通信制御装置２のＩＰアドレスを認識しているものとする。また、端末装置６と直接接続するＮＡＴ装置３には、端末装置６と通信制御装置２とが通信を行うためのポート番号が履歴情報として予め記憶されているものとする。通信制御装置２は、ＮＡＴ装置３に履歴情報として記憶されているポート番号を認識しているものとする。また通信制御装置２は、ＮＡＴ装置３のＩＰアドレスとポート幅とを認識しているものとする。
【００５５】
端末装置処理が起動されると、はじめに、通信制御装置２から送信される基準ポート要求パケットを、ＮＡＴ装置３を介して受信したかが判断される（Ｓ１１）。基準ポート要求パケットを受信した場合（Ｓ１１：ＹＥＳ）、基準ポートを通知するために基準ポート通知パケットが通信制御装置２に対して送信される（Ｓ１３）。そしてＳ１１に戻り、上述の処理が繰り返し実行される。
【００５６】
端末装置６から送信された基準ポート通知パケットは、ＮＡＴ装置３を経由して通信制御装置２に到達する。ＮＡＴ装置３が基準ポート通知パケットを転送する際、基準ポート通知パケットの送信元ポート番号が所定の値に変換される。変換されたポート番号は、ＮＡＴ装置３に履歴情報として記憶される。通信制御装置２では、受信した基準ポート通知パケットの送信元ポート番号を基準ポートとして認識している。従って通信制御装置２では、この時点でＮＡＴ装置３に記憶されているポート番号のうち最も新しいポート番号が基準ポート番号として認識されたことになる。
【００５７】
一方、通信制御装置２から基準ポート要求パケットを受信していない場合（Ｓ１１：ＮＯ）、通信制御装置２から送信指示パケットを受信しているかが判断される（Ｓ１５）。送信指示パケットを受信していない場合（Ｓ１５：ＮＯ）、Ｓ１１の処理に戻り、上述の処理が繰り返し実行される。
【００５８】
通信制御装置２から送信指示パケットを受信している場合（Ｓ１５：ＹＥＳ）、送信指示パケットに付加されている第二テーブルの情報が、端末装置６のＲＡＭ５３に記憶される（記憶された情報を「宛先情報」という。）。記憶された宛先情報に基づいて、パンチパケットが送信される（Ｓ１７）。パンチパケットは、第一送信先ＩＤ→第二送信先ＩＤの順で、其々の送信先ＩＰアドレス及び送信先ポート番号に対して送信される。そして端末装置処理を終了する。
【００５９】
送信されたパンチパケットは、ＮＡＴ装置３を経由してインターネット９側に転送される。なお、端末装置６がパンチパケットを送信する場合、パンチパケットのＴＴＬ（Ｔｉｍｅ  ｔｏ  Ｌｉｖe）には小さい値が設定される。これによってパンチパケットは、インターネット９内で中継転送が繰り返される中でＴＴＬが０となり、破棄される。
【００６０】
ＮＡＴ装置３がパンチパケットをインターネット側９に転送する際、送信元ポート番号が変換される。変換後のポート番号が、履歴情報としてＮＡＴ装置３に記憶される。記憶されたポート番号は、端末装置７，８が端末装置６に対してパケットを送信する場合の送信先ポート番号として使用される。これによって、端末装置６〜８間でＰ２Ｐ通信を行うことが可能となる。
【００６１】
端末装置６〜８が、図６の第二テーブル２４２１の情報に基づいてパンチパケットを送信する場合の様子について、図９を参照して説明する。図のうち１０１は、端末装置６のＲＡＭ５３に記憶された宛先情報を示している。１０２は、端末装置７のＲＡＭ５３に記憶された宛先情報を示している。１０３は、端末装置８のＲＡＭ５３に記憶された宛先情報を示している。
【００６２】
図９に示すように、端末装置６では、宛先情報１０１に基づいて、パンチパケットが送信される。はじめに、宛先情報１０１のうち第一送信先ＩＤの情報が参照される。パンチパケットの送信先ＩＰアドレスとして「Ｇ４」が設定され、送信先ポート番号として「Ｐ４＋Ｗ４」が設定される。このようにして作成されたパンチパケットが、ＮＡＴ装置３を介して送信される（１１１）。
【００６３】
ＮＡＴ装置３では、受信したパンチパケットの送信元ポート番号を所定のポート番号に変換するとともに、変換後のポート番号を履歴情報として記憶する。ここで変換後のポート番号は、現時点でＮＡＴ装置３の履歴情報に記憶されているポート番号のうち最も新しいポート番号にポート幅「Ｗ３」だけ加算された値とされる。最も新しいポート番号は、基準ポート通知パケットを介して通信制御装置２に通知した基準ポート「Ｐ３」に相当する。従ってＮＡＴ装置３では、ポート番号「Ｐ３＋Ｗ３」が履歴情報として記憶される（１１２）。
【００６４】
続いて端末装置６では、宛先情報１０１のうち第二送信先ＩＤの情報が参照される。パンチパケットの送信先ＩＰアドレスとして「Ｇ５」が設定され、送信先ポート番号として「Ｐ５＋Ｗ５」が設定される。このようにして作成されたパンチパケットが、ＮＡＴ装置３を介して送信される（１１２）。
【００６５】
ＮＡＴ装置３は、パンチパケットの送信元ポート番号を、現時点でＮＡＴ装置３に記憶されているポート番号のうち最も新しい「Ｐ３＋Ｗ３」にさらに「Ｗ３」だけ加算したポート番号「Ｐ３＋（Ｗ３＊２）」に変換する。変換したポート番号「Ｐ３＋（Ｗ３＊２）」は、ＮＡＴ装置３に履歴情報として記憶される。結果、ＮＡＴ装置３には、履歴情報として「Ｐ３＋Ｗ３」「Ｐ３＋（Ｗ３＊２）」が少なくとも記憶された状態となる。
【００６６】
なお、送信されたパンチパケットは、インターネット９内で破棄されるので、相手先の端末装置（及びＮＡＴ装置）に到達しない。
【００６７】
同様に端末装置７では、宛先情報１０２に基づいてパンチパケットが送信される（１１３，１１４）。ＮＡＴ装置４では、基準ポート「Ｐ４」に「Ｗ４」だけ加算したポート番号「Ｐ４＋Ｗ４」と、「Ｐ４＋Ｗ４」にさらに「Ｗ４」だけ加算したポート番号「Ｐ４＋（Ｗ４＊２）」とが、履歴情報として記憶される。端末装置８では、宛先情報１０３に基づいてパンチパケットが送信される（１１５，１１６）。ＮＡＴ装置５では、「Ｐ５＋Ｗ５」と「Ｐ５＋（Ｗ５＊２）」とが履歴情報として記憶される。
【００６８】
図１０を参照して、端末装置１６間でＰ２Ｐ通信が行われる場合の様子について説明する。図９に示すパンチパケット通信を行うことによって、端末装置６〜８は、宛先情報１０１〜１０３に基づいて他の端末装置と互いにＰ２Ｐ通信を行うことが可能となる。端末装置６が端末装置７とＰ２Ｐ通信を行う場合、宛先情報１０１に基づき、パケットの送信先ＩＰアドレスを「Ｇ４」に設定し、送信先ポート番号を「Ｐ４＋Ｗ４」に設定する。このパケットは、ＮＡＴ装置３を介してＮＡＴ装置４に到達する。ＮＡＴ装置４には、上述のパンチパケット通信によって、履歴情報として「Ｐ４＋Ｗ４」が記憶されている。ＮＡＴ装置４は、端末装置６から受信したパケットを端末装置７に対して転送する（１２１）。
【００６９】
また例えば、端末装置８が端末装置６とＰ２Ｐ通信を行う場合、宛先情報１０３に基づき、パケットの送信先ＩＰアドレスを「Ｇ３」に設定し、送信先ポート番号を「Ｐ３＋（Ｗ３＊２）」に設定する。このパケットは、ＮＡＴ装置５を介してＮＡＴ装置３に到達する。ＮＡＴ装置３には、上述のパンチパケット通信によって、履歴情報として「Ｐ３＋（Ｗ３＊２）」が記憶されている。ＮＡＴ装置３は、端末装置８から受信したパケットを端末装置６に対して転送する（１２２）。このように端末装置６〜８は、パンチパケット通信によってＮＡＴ装置３〜５に履歴情報として記憶させたポート番号宛てにパケットを送信することができる。これによって、端末装置６〜８間でＰ２Ｐ通信を行うことが可能となる。
【００７０】
以上説明したように、通信制御装置２は、送信順と基準ポートとポート幅とに基づいて送信先ポート番号を決定し、ＩＰアドレスとともに端末装置１６に通知する。端末装置１６では、通知されたＩＰアドレスと送信先ポート番号とに基づいてパンチパケットを送信する。端末装置１６間でＰ２Ｐ通信を行うために必要なポート番号のみＮＡＴ装置１５に記憶させることができる。このため、ＮＡＴ装置１５に記憶される不要なポート番号宛てに不特定多数のユーザがアクセスすることを防止できるので、ＮＡＴ装置のセキュリティ機能が弱まってしまうことを防止できる。
【００７１】
通信制御装置２では、ポート幅に送信順を乗算した値を基準ポートに加算することによって送信先ポート番号が決定されるので、Ｐ２Ｐ通信を行う他の端末装置１６が複数存在する場合であっても、其々の端末装置１６と通信を行うためのポート番号をＮＡＴ装置１５に記憶させることができる。このため、他の複数の端末装置１６との間でＰ２Ｐ通信を行うことができる。
【００７２】
なお、図８のＳ１３の処理が本発明の「第一送信ステップ」に相当する。図７のＳ２３の処理が本発明の「取得ステップ」に相当し、Ｓ３１の処理が本発明の「第一ポート決定ステップ」に相当し、Ｓ３５の処理が本発明の「第二送信ステップ」に相当する。図８のＳ１７の処理が本発明の「第三送信ステップ」に相当する。図７のＳ２７が本発明の「順番決定ステップ」に相当する。
【００７３】
図７のＳ２３の処理を行うＣＰＵ２１が本発明の「取得手段」に相当し、Ｓ３１の処理を行うＣＰＵ２１が本発明の「第一ポート決定手段」に相当し、Ｓ３５の処理を行うＣＰＵ２１が本発明の「第二送信手段」に相当する。図８のＳ１３の処理を行うＣＰＵ８１が本発明の「第一送信手段」に相当し、Ｓ１７の処理を行うＣＰＵ２１が本発明の「第三送信手段」に相当する。
【００７４】
なお、本発明は上記実施の形態に限定されるものではなく、種々の変更が可能である。以下、本実施の形態の変形例について説明する。
＜第一の変形例＞
【００７５】
図１１及び図１２を参照し、本実施の形態の第一の変形例について説明する。第一の変形例では、パンチパケット通信が終了した後も端末装置１６間でＰ２Ｐ通信ができない場合に、通信制御装置２において再度送信先ポート番号が決定される。端末装置１６は、再度通知された送信先ポート番号に基づいてＰ２Ｐ通信を再開させることができる。
【００７６】
図１１を参照し、端末装置１６のＣＰＵ８１において実行される端末装置処理について説明する。上述の端末装置処理（図８参照）と同一処理部分については、説明を簡略化している。以下、端末装置６が端末装置７及び８とＰ２Ｐ通信を行うに際し、端末装置６のＣＰＵ８１において端末装置処理が実行される場合を想定して説明する。
【００７７】
端末装置処理が起動されると、はじめに、通信制御装置２から基準ポート要求パケットを受信したかが判断される（Ｓ４１）。受信した場合（Ｓ４１：ＹＥＳ）、基準ポート通知パケットが通信制御装置２に対して送信される（Ｓ４３）。そしてＳ４１に戻る。基準ポート要求パケットを受信していない場合（Ｓ４１：ＮＯ）、通信制御装置２から送信指示パケットを受信しているかが判断される（Ｓ４５）。受信していない場合（Ｓ４５：ＮＯ）、Ｓ４１の処理に戻る。受信している場合（Ｓ４５：ＹＥＳ）、パンチパケットが送信される（Ｓ４７）。次いで、ＲＡＭ８３に記憶されているタイマカウンタの更新を開始させる（Ｓ４９）。タイマカウンタの更新を開始させた場合、タイマカウンタは所定の周期で１ずつ加算される。
【００７８】
端末装置６から端末装置７，８に対して、Ｐ２Ｐ通信の為の通信パケットが送信される（Ｓ５１）。次いで、端末装置７，８から同様に送信される通信パケットを受信したかが判断される（Ｓ５３）。通信パケットを受信した場合（Ｓ５３：ＹＥＳ）、この通信パケットを送信した端末装置（端末装置７，８のいずれか）のＩＤをＲＡＭ８３に一時的に記憶する（Ｓ５５）。そしてＳ５３に戻り、継続して通信パケットの受信が監視される。
【００７９】
一方、通信パケットを受信していない場合（Ｓ５３：ＮＯ）、端末装置７，８の両方から通信パケットを受信したかが判断される（Ｓ５７）。端末装置７，８の両方から通信パケットを受信している場合（Ｓ５７：ＹＥＳ）、Ｐ２Ｐ通信は正常に行われているので、端末装置処理は終了する。
【００８０】
一方、未だ端末装置７，８の少なくともいずれかから通信パケットを受信していない場合（Ｓ５７：ＮＯ）、Ｓ４９の処理において更新を開始したタイマカウンタが確認される（Ｓ５９）。タイマカウンタの値が所定値未満である場合（Ｓ５９：ＮＯ）、Ｓ５３の処理に戻る。タイマカウンタの値が所定値以上となっている場合（Ｓ５９：ＹＥＳ）、通信パケットを端末装置７，８に送信してから所定時間以上経過している。パンチパケット通信によるＮＡＴ装置１５に対する履歴情報の記憶制御が失敗し、端末装置７，８との間でＰ２Ｐ通信ができない状態である可能性がある。この場合、通信制御装置２に対してＰ２Ｐ通信ができない旨を通知するエラー通知パケットが、通信制御装置２に対して送信される（Ｓ６１）。そしてＳ４１の処理に戻り、再度通信制御装置２から送信される基準ポート要求パケットの受信が監視される。
【００８１】
図１２を参照し、通信制御装置２のＣＰＵ２１において実行される通信制御処理について説明する。上述の通信制御処理（図７参照）と同一処理部分については、説明を簡略化している。以下では、端末装置６〜８間でＰ２Ｐ通信が行われる場合に、通信制御装置２のＣＰＵ２１において実行される通信制御処理について説明する。
【００８２】
通信制御処理が起動されると、はじめに基準ポート要求パケットが端末装置６〜８に対して送信される（Ｓ７１）。次いで、端末装置６〜８から返信される基準ポート通知パケットを受信したかが判断される（Ｓ７３）。受信した場合（Ｓ７３：ＹＥＳ）、受信した基準ポート通知パケットに基づいて基準ポートが特定され、第一テーブルに記憶される（Ｓ７５）。そしてＳ７１の処理に戻る。基準ポート通知パケットを受信していない場合（Ｓ７３：ＮＯ）、端末装置６〜８の全てから基準ポート通知パケットを受信したかが判断される（Ｓ７７）。受信していない端末装置が存在する場合（Ｓ７７：ＮＯ）、Ｓ７３の処理に戻る。
【００８３】
端末装置６〜８の全てから基準ポート通知パケットを受信した場合（Ｓ７７：ＹＥＳ）、第二テーブルのうち第一送信先ＩＤと第二送信先ＩＤとが送信順に基づいて決定され（Ｓ７９）、次いで送信先ＩＰアドレス及び送信先ポート番号が決定される（Ｓ８１）。決定された情報は、第二テーブルに記憶される（Ｓ８３）。
【００８４】
送信指示パケットが端末装置６〜８に対して送信される（Ｓ８５）。送信後、ＲＡＭ２３に記憶されているタイマカウンタの更新を開始させる（Ｓ８９）。次いで、端末装置６〜８のいずれかからエラー通知パケットを受信したかが判断される（Ｓ９１）。エラー通知パケットを受信した場合（Ｓ９３：ＹＥＳ）、端末装置６〜８間でＰ２Ｐ通信ができない状態である可能性がある。この場合、Ｓ８９において開始したタイマカウンタの更新を停止させる（Ｓ９３）。そしてＳ７１の処理に戻り、再度基準ポート要求パケットが送信され、上述の処理が繰り返し実行される。
【００８５】
一方、エラー通知パケットを受信していない場合（Ｓ９１：ＮＯ）、Ｓ８９の処理によって開始したタイマカウンタが確認される（Ｓ９５）。タイマカウンタの値が所定値未満である場合（Ｓ９５：ＮＯ）、Ｓ９１に戻り、継続してエラー通知パケットの受信が監視される。タイマカウンタの値が所定値以上となっている場合（Ｓ９５：ＹＥＳ）、端末装置６〜８間で既にＰ２Ｐ通信が実行されている可能性が高いので、そのまま通信制御処理は終了する。
【００８６】
以上説明したように、第一の変形例では、パンチパケットによる通信が終了した段階で、通信パケットの送受信が端末装置６〜８間で実行される。通信パケットが受信できない場合には、Ｐ２Ｐ通信が正常に行われていないと判断され、再度第二テーブルを作成する為の処理が実行される。これによって、何らかの障害が発生した結果、端末装置６〜８間でＰ２Ｐ通信を行うことができない場合であっても、再度決定された第二テーブルに基づいてＰ２Ｐ通信を再開させることができる。
【００８７】
なお、図１１のＳ５３の処理が本発明の「判断ステップ」に相当する。図１２のＳ７１の処理が本発明の「第四送信ステップ」に相当する。
＜第二の変形例＞
【００８８】
図１３〜図１５を参照し、本実施の形態の第二の変形例について説明する。第二の変形例では、宛先情報に含まれる送信先ＩＤ、送信先ＩＰアドレス、及び送信先ポート番号を端末装置６〜８が決定する。これによって、通信制御装置２の処理負荷を軽減させることができる。
【００８９】
図１３を参照し、通信制御装置２のＣＰＵ２１において実行される通信制御処理について説明する。はじめに基準ポート要求パケットが送信される（Ｓ１２１）。次いで基準ポート通知パケットを受信したかが判断される（Ｓ１２３）。受信した場合（Ｓ１２３：ＹＥＳ）、第一テーブルに基準ポート番号が記憶される（Ｓ１２５）。基準ポート通知パケットを受信していない場合（Ｓ１２３：ＮＯ）、端末装置６〜８の全てから基準ポート通知パケットを受信したかが判断される（Ｓ１２７）。受信していない端末装置１６が存在する場合（Ｓ１２７：ＮＯ）、Ｓ１２３の処理に戻る。
【００９０】
端末装置６〜８の全てから基準ポート通知パケットを受信した場合（Ｓ１２７：ＹＥＳ）、端末装置６〜８の送信順を決定する為に使用される優先順位情報が、ＨＤＤ２４のその他の情報記憶領域２４４から読み出される。優先順位情報は、端末装置６〜８の其々に直接接続されるＮＡＴ装置３〜５に優先順位が対応づけて記憶された情報である。また、第一テーブル記憶領域２４１に記憶されている第一テーブルが読み出される。読み出された優先順位情報と第一テーブルとが送信指示パケットに付加され、端末装置６〜８に対して送信される（Ｓ１２９）。そして通信制御処理は終了する。
【００９１】
その他の情報記憶領域２４４に記憶されている優先順位情報の一例である優先順位情報２４４１について、図１４を参照して説明する。優先順位情報２４４１には、ＮＡＴ  ＩＤと優先順位とが対応付けて格納されている。ＮＡＴ  ＩＤ：３に対して優先順位：１が対応付けられている。ＮＡＴ  ＩＤ：４に対して優先順位：２が対応付けられている。ＮＡＴ  ＩＤ：５に対して優先順位：３が対応付けられている。
【００９２】
図１５を参照し、端末装置６のＣＰＵ８１において実行される端末装置処理について説明する。はじめに、通信制御装置２から基準ポート要求パケットを受信したかが判断される（Ｓ１０１）。受信した場合（Ｓ１０１：ＹＥＳ）、基準ポート通知パケットが通信制御装置２に対して送信される（Ｓ１０３）。基準ポート要求パケットを受信していない場合（Ｓ１０１：ＮＯ）、送信指示パケットを通信制御装置２から受信しているかが判断される（Ｓ１０５）。受信していない場合（Ｓ１０５：ＮＯ）、Ｓ１０１の処理に戻る。
【００９３】
送信指示パケットを受信している場合（Ｓ１０５：ＹＥＳ）、受信した送信指示パケットに付加されている優先順位情報と第一テーブルとに基づいて、宛先情報（図１０参照）が作成される（Ｓ１０７、Ｓ１０９）。はじめに、第一送信先ＩＤ及び第二送信先ＩＤが決定される（Ｓ１０７）。優先順位情報における優先順位が高いＮＡＴ装置のＮＡＴ  ＩＤが、優先的に第一送信先ＩＤとされる。例えば、ＮＡＴ装置３とパケットの送受信を行うＮＡＴ装置４（優先順位：２）とＮＡＴ装置５（優先順位：３）とのうち、優先順位が高いＮＡＴ装置４のＮＡＴ  ＩＤ「４」が、第一送信先ＩＤとされる。優先順位が低いＮＡＴ装置５のＮＡＴ  ＩＤ「５」が、第二送信先ＩＤとされる。
【００９４】
次いで送信先ポート番号が決定される（Ｓ１０９）。送信先ポート番号の決定方法としては、例えばＳ２７及びＳ３１（図７参照）における方法と同一方法を使用することが可能である。
【００９５】
Ｓ１０７及びＳ１０９において決定された情報が、宛先情報に格納される。次いで、作成された宛先情報に基づいて、パンチパケットが送信される（Ｓ１１１）。そして端末装置処理を終了する。
【００９６】
以上説明したように、第二の変形例では、端末装置１６がパンチパケットを送信する場合に参照される宛先情報を、端末装置自身が作成する。宛先情報は、通信制御装置２から送信される優先順位情報と第一テーブルの情報とに基づいて作成される。これによって、通信制御装置２における第二テーブルの決定処理が不要となるので、通信制御装置２の処理負荷を軽減させることができる。
【符号の説明】
【００９７】
１      通信システム
２      通信制御装置
３，４，５，１５  ＮＡＴ装置
６，７，８，１６  端末装置
２１    ＣＰＵ
２４    ＨＤＤ
２４１  第一テーブル記憶領域
２４２  第二テーブル記憶領域
８１    ＣＰＵ
【図１】
2011061562.tif 000003
【図２】
2011061562.tif 000004
【図３】
2011061562.tif 000005
【図４】
2011061562.tif 000006
【図５】
2011061562.tif 000007
【図６】
2011061562.tif 000008
【図７】
2011061562.tif 000009
【図８】
2011061562.tif 000010
【図９】
2011061562.tif 000011
【図１０】
2011061562.tif 000012
【図１１】
2011061562.tif 000013
【図１２】
2011061562.tif 000014
【図１３】
2011061562.tif 000015
【図１４】
2011061562.tif 000016
【図１５】
2011061562.tif 000017