(57)【特許請求の範囲】
【請求項１】
ＮＡＴ機能を有する第１のネットワーク機器に接続された第１のコンピュータと、ＮＡＴ機能を有する第２のネットワーク機器に接続された第２のコンピュータとの間でＰ２Ｐ型通信を行うための通信方法において、
第１のプライベートアドレスとは別に割り当てられた論理的なＩＰアドレスである第１の仮想ＩＰアドレスを割り当てられた第１の通信装置が、前記第１のネットワーク機器と前記第１のコンピュータとの間に接続されており、第２のプライベートアドレスとは別に割り当てられた論理的なＩＰアドレスである第２の仮想ＩＰアドレスを割り当てられた第２の通信装置が、前記第２のネットワーク機器と前記第２のコンピュータとの間に接続されており、
前記第１の通信装置が、ヘッダに前記第２の仮想ＩＰアドレスを含むパケットを前記第１のコンピュータから受信する第１の受信ステップと、
前記第１の通信装置が、前記第１の受信ステップにおいて受信したパケットに前記第１の仮想ＩＰアドレスを設定し、該パケットをＮＡＴ越え機能を使用して前記第１のネットワーク機器を介し前記第２のコンピュータに向けて送信する第１の送信ステップと、
前記第１の通信装置が、前記第１の送信ステップの後に、前記第１の仮想ＩＰアドレス及び前記第２の仮想ＩＰアドレスを含むパケットを前記第１のネットワーク機器から受信する第２の受信ステップと、
前記第１の通信装置が、前記第２の受信ステップにおいて受信したパケットのヘッダに前記第２の仮想ＩＰアドレスを設定し、該パケットを前記第１のコンピュータに向けて送信する第２の送信ステップと
を備えることを特徴とする通信方法。
【請求項２】
前記第１の受信ステップにおいて受信されるパケットは、ヘッダの宛先アドレスに前記第２の仮想ＩＰアドレスを含み、
前記第１の送信ステップにおいて送信されるパケットは、ペイロードに前記第１の仮想ＩＰアドレスと前記第２の仮想ＩＰアドレスとを含み、
前記第２の受信ステップにおいて受信されるパケットは、ペイロードに前記第１の仮想ＩＰアドレスと前記第２の仮想ＩＰアドレスとを含み、
前記第２の送信ステップにおいて送信されるパケットは、ヘッダの送信元アドレスに前記第２の仮想ＩＰアドレスを含む
ことを特徴とする請求項１に記載の通信方法。
【請求項３】
前記第１の通信装置、前記第１のネットワーク機器、及び前記第１のコンピュータを含むネットワーク内に、ファイアウォール機能を有する第３のネットワーク機器が接続されており、
前記第１の送信ステップにおいて、前記第１の通信装置が、前記第１の仮想ＩＰアドレスを設定したパケットをファイアウォール越え機能をさらに使用して送信する
ことを特徴とする請求項１又は２に記載の通信方法。
【請求項４】
前記第１の通信装置が、ヘッダに前記第２の仮想ＩＰアドレスを含まないパケットを前記第１のコンピュータから受信した場合、該パケットを前記第１のネットワーク機器に向けて送信し、前記第１の仮想ＩＰアドレス及び前記第２の仮想ＩＰアドレスを含まないパケットを前記第１のネットワーク機器から受信した場合、該パケットを前記第１のコンピュータに向けて送信する第３の送信ステップ
をさらに備えることを特徴とする請求項１乃至３のいずれかに記載の通信方法。
【請求項５】
請求項１乃至４のいずれかに記載の通信方法の各ステップをコンピュータに実行させることを特徴とするプログラム。
【請求項６】
ＮＡＴ機能を有する第１のネットワーク機器に接続された第１のコンピュータと、ＮＡＴ機能を有する第２のネットワーク機器に接続された第２のコンピュータとの間でＰ２Ｐ型通信を行うための通信システムの通信装置であって、
前記通信装置は、第１のプライベートアドレスとは別に割り当てられた論理的なＩＰアドレスである第１の仮想ＩＰアドレスを割り当てられ、前記第１のネットワーク機器と前記第１のコンピュータとの間に接続されており、
前記通信システムは、第２のプライベートアドレスとは別に割り当てられた論理的なＩＰアドレスである第２の仮想ＩＰアドレスを割り当てられ、前記第２のネットワーク機器と前記第２のコンピュータとの間に接続された他の通信装置を含み、
前記通信装置は、
ヘッダに前記第２の仮想ＩＰアドレスを含むパケットを前記第１のコンピュータから受信する第１の受信手段と、
前記第１の受信手段によって受信したパケットに前記第１の仮想ＩＰアドレスを設定し、該パケットをＮＡＴ越え機能を使用して前記第１のネットワーク機器を介し前記第２のコンピュータに向けて送信する第１の送信手段と、
前記第１の送信手段による送信の後に、前記第１の仮想ＩＰアドレス及び前記第２の仮想ＩＰアドレスを含むパケットを前記第１のネットワーク機器から受信する第２の受信手段と、
前記第２の受信手段によって受信したパケットのヘッダに前記第２の仮想ＩＰアドレスを設定し、該パケットを前記第１のコンピュータに向けて送信する第２の送信手段とを備えた
ことを特徴とする通信装置。
【請求項７】
前記第１の受信手段によって受信されるパケットは、ヘッダの宛先アドレスに前記第２の仮想ＩＰアドレスを含み、
前記第１の送信手段によって送信されるパケットは、ペイロードに前記第１の仮想ＩＰアドレスと前記第２の仮想ＩＰアドレスとを含み、
前記第２の受信手段によって受信されるパケットは、ペイロードに前記第１の仮想ＩＰアドレスと前記第２の仮想ＩＰアドレスとを含み、
前記第２の送信手段によって送信されるパケットは、ヘッダの送信元アドレスに前記第２の仮想ＩＰアドレスを含む
ことを特徴とする請求項６に記載の通信装置。
【請求項８】
前記通信装置、前記第１のネットワーク機器、及び前記第１のコンピュータを含むネットワーク内に、ファイアウォール機能を有する第３のネットワーク機器が接続されており、
前記第１の送信手段は、前記通信装置が、前記第１の仮想ＩＰアドレスを設定したパケットをファイアウォール越え機能をさらに使用して送信する
ことを特徴とする請求項６又は７に記載の通信装置。
【請求項９】
ヘッダに前記第２の仮想ＩＰアドレスを含まないパケットを前記第１のコンピュータから受信した場合、該パケットを前記第１のネットワーク機器に向けて送信し、前記第１の仮想ＩＰアドレス及び前記第２の仮想ＩＰアドレスを含まないパケットを前記第１のネットワーク機器から受信した場合、該パケットを前記第１のコンピュータに向けて送信する第３の送信手段
をさらに備えたことを特徴とする請求項６乃至８のいずれかに記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信方法及び通信装置に関し、より詳細には、ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータからＰ２Ｐ型通信を行うための通信方法及びプログラム並びに通信装置に関する。
【背景技術】
【０００２】
近年、インターネットに接続するホストコンピュータの増大により、ＩＰ（Internet Protocol）アドレスの不足という問題が顕著化している。そこで、ＩＰアドレスの不足を解消するための一つの方法として、ＮＡＴ（Network Address Translator）機能が利用されている。ＮＡＴ機能は、閉域網であるＬＡＮ（local area network）内のプライベートアドレス（プライベートＩＰアドレス）を有するホストコンピュータと、インターネット内のグローバルアドレス（グローバルＩＰアドレス）を有するホストコンピュータとの間で通信を行うために、アドレス変換を行う。また、ＮＡＴの拡張された機能として、ＮＡＰＴ（network address port translation）機能も周知であり利用されている。ＮＡＰＴ機能は、別にＩＰマスカレードとも呼ばれ、プライベートＩＰアドレスとポート番号を変更することで、一つのグローバルＩＰアドレスを使って、複数のホストコンピュータを共有できるようにする技術である。本明細書においては、以下、ＮＡＴとＮＡＰＴとをまとめて広義にＮＡＴと呼ぶこととする。
【０００３】
図９に、ＮＡＴ機能を説明するためのネットワーク接続図を示す。ルータ１３、１４には、ＮＡＴ（ＮＡＰＴ）機能が実装されており、プライベートアドレス／ポート番号のペアとグローバルアドレスとの対応・変換の関係を規定した変換テーブルが格納されている。端末１１、１２等は、ＰＣ（personal computer）やプリンター等であり、搭載されたプロセッサがプログラムに従って動作することに鑑み、広義のコンピュータシステムである。
【０００４】
端末１１には、ルータ１３によってプライベートアドレス「Ａ」とポート「１００」とが割り当てられている。ここで端末１１からインターネットを介し別なＬＡＮ内の端末１２（グローバルアドレスＮのルータ１４に接続されている）へ、ルータ１３、１４を介してパケットを送信する。端末１１から送信されるＩＰヘッダには、宛先アドレス２１として「Ｎ」、送信元アドレス２２として「Ａ」が書き込まれ、ＴＣＰヘッダまたはＵＤＰヘッダには、宛先ポート番号２３として「２００」、送信元ポート番号２４として「１００」が書き込まれている。ルータ１３は、変換テーブルを参照して、送信元アドレス２２のプライベートアドレス「Ａ」をルータ１３のグローバルアドレス「Ｍ」に変換し、ルータ１４に向けてパケットを送信する。
【０００５】
次に、端末１２から端末１１へ、ルータ１４、１３を介してＩＰパケットを送信する。端末１２から送信されるパケットのヘッダには、宛先アドレス３１として「Ｍ」、送信元アドレス３２として「Ｂ」が書き込まれ、ＴＣＰヘッダまたはＵＤＰヘッダには、宛先ポート番号３３として「１００」、送信元ポート番号３４として「２００」が書き込まれている。ルータ１３は、変換テーブルを参照して、宛先アドレス３１のグローバルアドレス「Ｍ」をプライベートアドレス「Ａ」に変換し、ＬＡＮ内の端末１１に向けてパケットを送信する。
【０００６】
一方、オンラインゲームやビデオチャットなどのＰ２Ｐ（peer to peer）型通信を利用したアプリケーション（以下、Ｐ２Ｐアプリケーションという）の利用が増えている。Ｐ２Ｐ型通信は、サーバを介さずに、端末間で直接通信をおこなう。ＮＡＴ機能を利用した接続環境において、Ｐ２Ｐアプリケーションを利用するために、ＩＥＴＦ（Internet Engineering Task Force）の規格であるＳＴＵＮ（例えば、非特許文献１参照）技術が知られている。
【０００７】
また、ＮＡＴ機能を有するネットワーク機器を使用した通信方法を開示した文献がある（例えば、特許文献１参照）。
【０００８】
【非特許文献１】REC3489 “STUN-Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)” March 2003
【特許文献１】特開２００５−１１７５８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、ＳＴＵＮ技術によっても端末間で通信ができない場合がある。これは、規格が詳細な部分まで規定されていなかったり、ルータによって実装する部分が異なるためである。また、通信経路の途中に、ＵＤＰ（User Datagram Protocol）による通信が行えないファイアウォールが接続されていると、端末間で通信することができない。即ち、通信を行う２つ以上の端末がある場合に、それらの端末の間に、ＮＡＴ機能が存在するネットワーク機器（ルータ等）が接続されている場合、通信を行うことができなかった（所謂、ＮＡＴ越え問題）。又は端末の間に、ファイアウォール機能が存在するネットワーク機器（ＷＥＢプロキシサーバ等）が接続されている場合、通信を行うことができなかった（所謂、ファイアウォール越え問題）。
【００１０】
従来、これらのＮＡＴ越え問題及びファイアウォール越え問題に対処するために、図９の端末１１に実装されているアプリケーションを、ＮＡＴ越え及びファイアウォール越え用の市販のＳＤＫ（Software Development Kit）等を使用して変更する必要があった。さらに、ＮＡＴ越え問題及びファイアウォール越え問題に対処するためには、図９のルータ１３等の設定を変更する必要があった。従って、ＮＡＴ越え及びファイアウォール越えの通信は、ネットワーク環境にインパクトを与えなければ行えないという点において、上記従来技術には未だ改善の余地があった。
【００１１】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、ネットワーク環境において、簡易な構成で確実にＰ２Ｐアプリケーションを実行可能とする通信方法及び通信装置を提供することにある。
【課題を解決するための手段】
【００１２】
このような目的を達成するために、本発明の通信方法（図１、３）は、ＮＡＴ機能を有する第１のネットワーク機器（１３）に接続された第１のコンピュータ（１１）と、ＮＡＴ機能を有する第２のネットワーク機器（１４）に接続された第２のコンピュータ（１２）との間でＰ２Ｐ型通信を行うための通信方法であって、第１のプライベートアドレスとは別に割り当てられた論理的なＩＰアドレスである第１の仮想ＩＰアドレスを割り当てられた第１の通信装置（１７）が、前記第１のネットワーク機器と前記第１のコンピュータとの間に接続されており、第２のプライベートアドレスとは別に割り当てられた論理的なＩＰアドレスである第２の仮想ＩＰアドレスを割り当てられた第２の通信装置（１８）が、前記第２のネットワーク機器と前記第２のコンピュータとの間に接続されており、前記第１の通信装置が、ヘッダに前記第２の仮想ＩＰアドレスを含むパケットを前記第１のコンピュータから受信する第１の受信ステップ（Ｓ３０６→Ｓ３１６）と、前記第１の通信装置が、前記第１の受信ステップにおいて受信したパケットに前記第１の仮想ＩＰアドレスを設定し、該パケットをＮＡＴ越え機能（図４、５）を使用して前記第１のネットワーク機器を介し前記第２のコンピュータに向けて送信する第１の送信ステップ（Ｓ３１６〜Ｓ３２２）と、前記第１の通信装置が、前記第１の送信ステップの後に、前記第１の仮想ＩＰアドレス及び前記第２の仮想ＩＰアドレスを含むパケットを前記第１のネットワーク機器から受信する第２の受信ステップ（Ｓ３０６→Ｓ３０８）と、前記第１の通信装置が、前記第２の受信ステップにおいて受信したパケットのヘッダに前記第２の仮想ＩＰアドレスを設定し、該パケットを前記第１のコンピュータに向けて送信する第２の送信ステップ（Ｓ３０８〜Ｓ３１４）とを備えることを特徴とする。
【００１３】
また、上記目的を達成するために、本発明のプログラムは、上記に記載の通信方法の各ステップをコンピュータに実行させることを特徴とする。
【００１４】
また、上記目的を達成するために、本発明の通信装置（１７）は、ＮＡＴ機能を有する第１のネットワーク機器に接続された第１のコンピュータと、ＮＡＴ機能を有する第２のネットワーク機器に接続された第２のコンピュータとの間でＰ２Ｐ型通信を行うための通信システム（図１）の通信装置であって、前記通信装置は、第１のプライベートアドレスとは別に割り当てられた論理的なＩＰアドレスである第１の仮想ＩＰアドレスを割り当てられ、前記第１のネットワーク機器と前記第１のコンピュータとの間に接続されており、前記通信システムは、第２のプライベートアドレスとは別に割り当てられた論理的なＩＰアドレスである第２の仮想ＩＰアドレスを割り当てられ、前記第２のネットワーク機器と前記第２のコンピュータとの間に接続された他の通信装置（１８）を含み、前記通信装置は、ヘッダに前記第２の仮想ＩＰアドレスを含むパケットを前記第１のコンピュータから受信する第１の受信手段と、前記第１の受信手段によって受信したパケットに前記第１の仮想ＩＰアドレスを設定し、該パケットをＮＡＴ越え機能を使用して前記第１のネットワーク機器を介し前記第２のコンピュータに向けて送信する第１の送信手段と、前記第１の送信手段による送信の後に、前記第１の仮想ＩＰアドレス及び前記第２の仮想ＩＰアドレスを含むパケットを前記第１のネットワーク機器から受信する第２の受信手段と、前記第２の受信手段によって受信したパケットのヘッダに前記第２の仮想ＩＰアドレスを設定し、該パケットを前記第１のコンピュータに向けて送信する第２の送信手段とを備えたことを特徴とする。
【００１５】
なお、特許請求の範囲の構成要素と対応する実施形態中の図中符号等を（）で示した。ただし、特許請求の範囲に記載した構成要素は上記（）部の実施形態の構成要素に限定されるものではない。
【００１６】
以上の構成により、本発明の通信機器は、設置先のネットワーク環境にインパクトを与えずに導入できる。また、端末（上記第１のコンピュータ）に割り当てられるＩＰアドレスは従来どおり既に設置されていた上記第１のネットワーク機器（ルータ）がＮＡＴ機能の変換テーブルで割り当てたものを利用でき、端末は同ネットワークに設置されている既存の端末（他のＰＣやプリンター等）と設定変更なく通信することが可能になる。
【発明の効果】
【００１７】
本発明によれば、ネットワーク環境において、簡易な構成で確実にＰ２Ｐアプリケーションを実行可能にするという効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して本発明の実施形態を詳細に説明する。なお、各図面において同じ機能を有する箇所には同一の符号を付す。
【００１９】
［装置構成］  
図１は、本実施形態のＰ２Ｐ通信方法の説明図である。図１を参照し、端末１１、１２間のパケット通信について説明する。端末１１、１２等は、ＰＣやプリンター等であり、搭載されたプロセッサがプログラムに従って動作することに鑑み、広義のコンピュータシステムである。
【００２０】
ルータ１３、１４には、ＮＡＴ（ＮＡＰＴ）機能が実装されており、プライベートアドレス／ポート番号のペアとグローバルアドレスとの対応・変換の関係を規定した変換テーブルが格納されている。ルータ１３、１４は、各々グローバルアドレス「Ｍ」、「Ｎ」を有する。端末１１には、ルータ１３によってプライベートアドレス「Ａ」とポート「１００」とが割り当てられている。端末１２には、ルータ１４によってプライベートアドレス「Ｂ」とポート「２００」とが割り当てられている。
【００２１】
図中符号１７、１８は本実施形態に特徴的な通信装置であって、本実施形態ではＮＮＭ（Nomadic Node Module）と呼ぶ。ＮＮＭ１７には、ルータ１３によってプライベートアドレス「Ｐ」とポート「１００」とが割り当てられており、さらにプライベートアドレス「Ｐ」とは別に論理的なＩＰアドレス「Ｘ」が割り当てられている。このプライベートアドレスとは別に割り当てられる論理的なＩＰアドレスを、本実施形態においては「仮想ＩＰアドレス」と呼び、ＮＮＭ１７には、仮想ＩＰアドレス「Ｘ」が割り当てられている。仮想ＩＰアドレスの取得方法については、後述する。
【００２２】
ＮＮＭ１８には、ルータ１４によってプライベートアドレス「Ｑ」とポート「２００」とが割り当てられており、さらに仮想ＩＰアドレス「Ｙ」が割り当てられている。各ＮＮＭは、ＮＡＴ越え及びファイアウォール越え用の市販のＳＤＫ等を組み込み作成したＮＮＭプログラムを実装している。ＮＮＭプログラムの処理内容については、後述する。
【００２３】
セッション管理サーバ２５は、ソケット（ポート番号＋仮想ＩＰアドレス＋グローバルアドレス）のデータを格納している。セッション管理サーバ２５のソケットの格納については後述する。
【００２４】
また、端末１１、ＮＮＭ１７、及びルータ１３を含むＬＡＮ内には、ファイアウォール機能が存在するＷＥＢプロキシサーバ（不図示）が接続されている。同様に、端末１２、ＮＮＭ１８、及びルータ１４を含むＬＡＮ内にも、ファイアウォール機能が存在する別のＷＥＢプロキシサーバ（不図示）が接続されている。
【００２５】
ここで端末１１からインターネットを介し別なＬＡＮ内の端末１２（グローバルアドレスＮのルータ１４に接続されている）へ、ＮＮＭ１７、ルータ１３、１４、及びＮＮＭ１８を介してパケットを送信する。端末１１から送信されるパケット３０のＩＰヘッダには、宛先アドレス２１として仮想ＩＰアドレス「Ｙ」、送信元アドレス２２として「Ａ」が書き込まれ、ＴＣＰヘッダまたはＵＤＰヘッダには、宛先ポート番号２３として「２００」、送信元ポート番号２４として「１００」が書き込まれている。宛先アドレス２１としての仮想ＩＰアドレス「Ｙ」は、端末１１によってセッション管理サーバ２５から宛先ポート番号「２００」をキーとして取得される。
【００２６】
ＮＮＭ１７は、宛先グローバルアドレス（仮想ＩＰアドレス）「Ｙ」をペイロードに設定し、不図示のＲＡＭ（random access memory）に格納されている送信元仮想ＩＰアドレス「Ｘ」を取得し、ペイロードに設定する。送信元仮想ＩＰアドレス「Ｘ」のＲＡＭへの格納については後述する。ＮＮＭ１７は、宛先グローバルアドレス「Ｎ」、送信元アドレスとしてプライベートアドレス「Ｐ」を取得し、ヘッダに設定する。宛先グローバルアドレス「Ｎ」は、ＮＮＭ１７によってセッション管理サーバ２５から宛先ポート番号「２００」をキーとして取得される。プライベートアドレス「Ｐ」は、予めルータ１３によって割り当てられている。そしてＮＮＭ１７は、ＮＡＴ越え及びファイアウォール越え用のＳＤＫ等の機能を用いて、ＮＮＭ１８へ向けパケットを転送する。
【００２７】
ルータ１３は、変換テーブルを参照して、送信元アドレスのプライベートアドレス「Ｐ」をルータ１３のグローバルアドレス「Ｍ」に変換し、ルータ１４に向けてパケットを送信する。
【００２８】
次に、端末１２から端末１１へ、ＮＮＭ１８、ルータ１４、１３、及びＮＮＭ１７を介してパケットを送信する。端末１２から送信されるパケットのヘッダには、宛先アドレス３１として仮想ＩＰアドレス「Ｘ」、送信元アドレス３２として「Ｂ」が書き込まれ、ＴＣＰヘッダまたはＵＤＰヘッダには、宛先ポート番号３３として「１００」、送信元ポート番号３４として「２００」が書き込まれている。これに次ぐＮＮＭ１８の処理は、上述したＮＮＭ１７と同様である。
【００２９】
ルータ１４は、変換テーブルを参照して、送信元アドレスのプライベートアドレス「Ｑ」をルータ１４のグローバルアドレス「Ｎ」に変換し、ルータ１３に向けてパケットを送信する。
【００３０】
ルータ１３は、変換テーブルを参照して、宛先アドレス３１のグローバルアドレス「Ｍ」をプライベートアドレス「Ｐ」に変換し、ＬＡＮ内のＮＮＭ１７に向けてパケット４０を送信する。
【００３１】
ＮＮＭ１７は、ペイロードから宛先仮想ＩＰアドレス「Ｘ」を削除し、ペイロードの送信元仮想ＩＰアドレス「Ｙ」を送信元アドレスとしてヘッダに設定する。そしてＮＮＭ１７は、宛先プライベートアドレス「Ａ」を取得し、宛先アドレスとしてヘッダに設定し、そのパケットを端末１１へ送信する。接続されている端末１１のプライベートアドレス「Ａ」の取得については、後述する。
【００３２】
通常の通信ではＮＮＭ１７は、ルータ１３からＤＨＣＰ（dynamic host configuration protocol）によるＩＰ取得を行うブリッジとして動作する。ＮＮＭ１７にはルータ１３が割り当てる実ＩＰアドレス（プライベートアドレス「Ｐ」）とは別に論理的なＩＰアドレス（仮想ＩＰアドレス「Ｘ」）を新たに割り当てる。ＮＮＭ同士がお互いに通信する際は仮想ＩＰアドレスを指定して行う。仮想ＩＰアドレス間の通信は市販のＳＤＫ等によるＮＡＴ越え及びファイアウォール越えのセッションを張り、そのセッション上でパケットをトンネリングさせることで通信が行われる。
【００３３】
端末１１は、ＮＮＭ１７を接続することで、ＮＮＭ１７に割り当てられている仮想ＩＰアドレス「Ｘ」で他のネットワーク上の端末からアクセス可能である。ＮＮＭ１７は、この仮想ＩＰアドレス「Ｘ」を設けることで、端末１１上で動作する既存のアプリケーションに影響（改変等）を与えずにＮＡＴ越え及びファイアウォール越えの通信が行えることに特徴がある。
【００３４】
［動作説明］  
次に、図１を参照し上述した端末１１、１２間のパケット通信における、ＮＮＭ１７の不図示のＣＰＵ（central processing unit）が実行する通信制御処理の主な手順を説明する。
【００３５】
本実施形態のＮＮＭ１７の上述した動作に関わる処理は、図２〜８のフローチャートや通信方法の説明図に示す処理手順により行われる。これらの処理手順は、ＮＮＭ１７のＣＰＵが、ＲＯＭ（read only memory）に記憶されているＮＮＭプログラムを読み出して実行することにより行われる処理である。
【００３６】
図２は、ルータ１３、セッション管理サーバ２５等が既に立ち上がっている状況において、端末１１及びＮＮＭ１７の電源をＯＮとした場合の、ＮＮＭ１７のＮＮＭパワーＯＮ処理を示すフローチャートである。
【００３７】
ＮＮＭ１７は電源がＯＮとなると、接続されている端末１１からのネゴシエーションのパケットを受信する（ステップＳ２００）。端末１１からのネゴシエーションとしては、ＤＨＣＰによるルータ１３からのプライベートアドレス「Ａ」取得、ＡＲＰ（Address Resolution Protocol）リクエスト等がある。次いで、ＮＮＭ１７は、受信パケットから、接続されている端末１１のプライベートアドレス「Ａ」を認識し、ＲＡＭに格納する（ステップＳ２０２）。尚、この段階で、ＮＮＭ１７は、ルータ１３から自身のプライベートアドレス「Ｐ」を取得し、ＲＡＭに格納する
次にステップＳ２０４において、ＮＮＭ１７は、仮想ＩＰアドレスの取得方法によって処理を分岐する。例えば、仮想ＩＰアドレスの取得方法設定は、ＮＮＭに実装されたＤＩＰスイッチ等で切り替え選択可能とする等、周知の設定手段を適用すればよい。
【００３８】
ＮＮＭ内の設定ファイルによって仮想ＩＰアドレスを取得する場合、ＮＮＭ１７は、ＮＮＭ内の設定ファイルから、それに予め設定されている仮想ＩＰアドレス「Ｘ」を取得し、ＲＡＭに格納する（ステップＳ２０６）。ＮＮＭ１７は、ルータ１３に問い合わせルータの変換テーブルに設定されている自身のポート番号「１００」、グローバルアドレス「Ｍ」を取得し、ＲＡＭに格納する（ステップＳ２０８）。そしてＮＮＭ１７は、ソケット（ポート番号「１００」＋仮想ＩＰアドレス「Ｘ」＋グローバルアドレス「Ｍ」）をセッション管理サーバ２５へ送信し格納する。
【００３９】
セッション管理サーバ２５から仮想ＩＰアドレスを取得する場合、ＮＮＭ１７は、ルータ１３に問い合わせルータの変換テーブルに設定されている自身のポート番号「１００」を取得し、ＲＡＭに格納する（ステップＳ２１２）。ＮＮＭ１７は、セッション管理サーバ２５へポート番号「１００」に対する仮想ＩＰアドレス割り当てをリクエストする（ステップＳ２１４）。そしてＮＮＭ１７は、予めセッション管理サーバ２５に格納されているソケット（ポート番号「１００」＋仮想ＩＰアドレス「Ｘ」＋グローバルアドレス「Ｍ」）を取得する（ステップＳ２１６）。ＮＮＭ１７は、取得したソケットから仮想ＩＰアドレス「Ｘ」、グローバルアドレス「Ｍ」を取得し、ＲＡＭに格納する（ステップＳ２１８）。
【００４０】
ＮＮＭ同士の通信によって仮想ＩＰアドレスを取得する場合、ＮＮＭ１７は、自ＬＡＮ内のＮＮＭ同士のネゴシエーションにより、所定の仮想ＩＰアドレス空間における空き仮想ＩＰアドレス認識をする（ステップＳ２２０）。ＮＮＭ１７は、空き仮想ＩＰアドレスのうちの最若番の仮想ＩＰアドレス（この例では「Ｘ」）を取得し、ＲＡＭに格納する（ステップＳ２２２）。そしてＮＮＭ１７は、ルータ１３に問い合わせルータの変換テーブルに設定されている自身のポート番号「１００」、グローバルアドレス「Ｍ」を取得し、ＲＡＭに格納する（ステップＳ２２４）。ＮＮＭ１７は、ソケット（ポート番号「１００」＋仮想ＩＰアドレス「Ｘ」＋グローバルアドレス「Ｍ」）をセッション管理サーバ２５へ送信し格納する（ステップＳ２２６）。
【００４１】
図３は、ＮＮＭ１７の電源をＯＮとした後の通常状態における、ＮＮＭ１７のＮＮＭ通常処理を示すフローチャートである。
【００４２】
ＮＮＭ１７は、パケットの受信を検知すると受信パケットが仮想ＩＰアドレス宛のパケットか否かを判定する（ステップＳ３００→Ｓ３０２）。即ち、ステップＳ３０２において、ＮＮＭ１７は、仮想ＩＰアドレスに固有のネットワークセグメント（例：10.0.0.0/8）内のＩＰアドレスが受信パケットに設定されている場合、そのＩＰアドレスを仮想ＩＰアドレスと判定し、受信パケットは仮想ＩＰアドレス宛のパケットであると判定する。例えば、ＮＮＭ１７は、図１に示したパケット３０又は４０のようにＩＰアドレス「Ｙ」又は「Ｘ、Ｙ」が受信パケットに設定されている場合、それらのＩＰアドレスを仮想ＩＰアドレス「Ｙ」又は「Ｘ、Ｙ」と判定し、パケット３０又は４０は仮想ＩＰアドレス宛のパケットであると判定する。
【００４３】
ＮＮＭ１７は、ステップＳ３０２において受信パケットが仮想ＩＰアドレス宛のパケットでないと判定した場合、受信パケットをそのまま受信側と反対側のネットワークに転送する（ステップＳ３０４）。
【００４４】
ＮＮＭ１７は、ステップＳ３０２において受信パケットが仮想ＩＰアドレス宛のパケットであると判定した場合、図２のステップＳ２０２の処理で取得した接続されている端末１１のプライベートアドレス「Ａ」に基づいて、受信パケットが端末１１宛のパケットか否かを判定する（ステップＳ３０６）。例えば、ＮＮＭ１７は、図１に示したパケット３０のように、送信元アドレス２２として端末１１のプライベートアドレス「Ａ」が受信パケットに設定されている場合、受信パケットは端末１１から他のＮＮＭ宛のパケットであると判定する。また例えば、ＮＮＭ１７は、図１に示したパケット４０のように、端末１１のプライベートアドレス「Ａ」が受信パケットに設定されていない場合、受信パケットは端末１１宛のパケットであると判定する。
【００４５】
ステップＳ３０６において受信パケットが端末１１から他のＮＮＭ宛のパケットである場合、図１の例を参照しながら説明する。端末１１から送信されるパケット３０のＩＰヘッダには、宛先アドレス２１として仮想ＩＰアドレス「Ｙ」、送信元アドレス２２として「Ａ」が書き込まれ、ＴＣＰヘッダまたはＵＤＰヘッダには、宛先ポート番号２３として「２００」、送信元ポート番号２４として「１００」が書き込まれている。ＮＮＭ１７は、宛先グローバルアドレス（仮想ＩＰアドレス）「Ｙ」をペイロードに設定する（ステップＳ３１６）。次いでＮＮＭ１７は、ＲＡＭに格納されている送信元仮想ＩＰアドレス「Ｘ」を取得し、ペイロードに設定する（ステップＳ３１８）。送信元仮想ＩＰアドレス「Ｘ」のＲＡＭへの格納は、図２を参照し前述した処理によって行われる。
【００４６】
そしてＮＮＭ１７は、宛先グローバルアドレス「Ｎ」、送信元アドレスとしてプライベートアドレス「Ｐ」を取得し、ヘッダに設定する（ステップＳ３２０）。宛先グローバルアドレス「Ｎ」は、ＮＮＭ１７によってセッション管理サーバ２５から宛先ポート番号「２００」をキーとして取得される。プライベートアドレス「Ｐ」は、予めルータ１３によって割り当てられている。そしてＮＮＭ１７は、ＮＡＴ越え及びファイアウォール越え用のＳＤＫ等の機能を用いて、ＮＮＭ１８へ向けパケットを転送する（ステップＳ３２２）。ステップＳ３２２の処理の詳細については後述する。
【００４７】
ステップＳ３０６において受信パケットが端末１１宛のパケットである場合、図１の例を参照しながら説明する。ルータ１３から送信されるパケット４０のヘッダには、宛先アドレスとしてプライベートアドレス「Ｐ」、送信元アドレスとしてグローバルアドレス「Ｎ」が書き込まれ、ＴＣＰヘッダまたはＵＤＰヘッダには、宛先ポート番号として「１００」、送信元ポート番号として「２００」が書き込まれている。さらに宛先グローバルアドレス（仮想ＩＰアドレス）「Ｘ」がペイロードに設定され、送信元仮想ＩＰアドレス「Ｙ」がペイロードに設定されている。ＮＮＭ１７は、ペイロードから宛先仮想ＩＰアドレス「Ｘ」を削除する（ステップＳ３０８）。次いでＮＮＭ１７は、ペイロードの送信元仮想ＩＰアドレス「Ｙ」を送信元アドレスとしてヘッダに設定する（ステップＳ３１０）。
【００４８】
そしてＮＮＭ１７は、図２のステップＳ２０２の処理で取得した接続されている端末１１のプライベートアドレス「Ａ」を、宛先アドレスとしてヘッダに設定する（ステップＳ３１２）。ＮＮＭ１７は、このように編集されたパケットを端末１１へ転送する（ステップＳ３１４）。
【００４９】
以下では、図３におけるステップＳ３２２の処理（ＮＡＴ越え及びファイアウォール越え用のＳＤＫ等の機能を用いて、ＮＮＭ１８へ向けパケットを転送する処理）について説明する。ＮＡＴ越え及びファイアウォール越え用の市販のＳＤＫ等を使用する方法は、当業者にあっては種々の方法が周知であるため、本実施形態に好適な例についてそれらの概要を説明する。
【００５０】
ステップＳ３２２の処理の冒頭で、ＮＮＭ１７は、ＮＡＴ及びファイアウォールの設置状況を検知する。この検知には当業者に周知な種々の方法を適用すればよい。ＮＡＴ越えが必要な場合、ＮＮＭ１７は、後述の図４及び５に示す処理を行う。ファイアウォール越えが必要な場合、ＮＮＭ１７は、後述の図６〜８に示す処理を行う。
【００５１】
図４及び５は、ＮＡＴ越え処理の本実施形態に好適な一例を示した、ＮＮＭのＮＡＴ越え処理の説明図で、特許文献１に開示された技術を適用した例である。ＮＡＴ機能を利用した接続環境において、Ｐ２Ｐアプリケーションを実現するためには、通信の開始から終了まで、ルータにおける所定のポートを常に開いておく必要がある。そこで、図４を参照し通信の最初にポートを開いておく方法、図５を参照し一旦開いたポートを維持する方法を順次説明する。
【００５２】
図４を参照すると、端末間でＰ２Ｐ通信を行う場合には、ＩＣＭＰ（Internet Control Message Protocol）パケット（宛先到達不能メッセージ）によるブロックを避けて、最初に、セッションで使用するルータのポートを開いておく必要がある。そこで、ルータ１３までのホップ数を調べ、ポートを開けるためのＵＤＰパケットを送信する。
【００５３】
具体的には、ＮＮＭ１７でＩＣＭＰのエコーパケットを生成し、ＴＴＬ（Time To Live）＝１で送信する。順次、ＴＴＬ＝２．３…と増やして、複数のエコーパケットを送信する。ＴＴＬの数値がルータ１３のホップ数と等しいエコーパケット５１を送信すると、ルータ１３よりエコーパケット５２がＮＮＭ１７に返送される。ＮＮＭ１７は、返送されたエコーパケット５２により、ルータ１３までのホップ数を知ることができる。
【００５４】
次に、ＮＮＭ１７は、ルータ１３のホップ数に１を加えた値αをＴＴＬに設定し、送信元ポート番号「１００」のポート設定パケット５３を送信する。これによって、ルータ１３の送信元ポート番号「１００」のポートが開かれる。ポート設定パケット５３は、ルータ１３の次のホップで削除されるので、他の通信に影響を与えることはない。
【００５５】
このような構成により、ルータ１３の送信元ポート番号「１００」のポートを開けておくことにより、パケット５４、５５によるＮＮＭ間の通信を行うことができる。このとき、ルータ１４もＩＣＭＰパケットによりブロックを行う機能を有している場合には、ＮＮＭ１８においても、同様の処理を行う。
【００５６】
次に図５を参照すると、同一のセッションにおいて、パケットの送受信が途絶えている間は、ルータが変換テーブルをクリアしないように、いったん開いたポートを維持しておく必要がある。そこで、パケットの送受信が途絶えている間は、キープアライブパケットを一定時間間隔で送信する。例えば、上述したＩＣＭＰエコーパケットを利用して、ルータ１３までのホップ数を予め調べておく。ＮＮＭ１７は、ルータ１３のホップ数に１を加えた値αをＴＴＬに設定し、送信元ポート番号「１００」のＵＤＰパケット６１を送信する。これによって、ルータ１３に格納されている変換テーブルの内容は削除されず、以後、同一のポート番号を設定したパケットを送信することができる。
【００５７】
尚、図４及び図５の実施形態においては、ＩＣＭＰパケットによりブロックを行う機能を有しているルータにのみ送信するようにしてもよい。ルータによっては、ＴＴＬの設定値がαの場合に、パケットを破棄してポートを閉じてしまう機能を有する場合があるからである。
【００５８】
ポート設定パケットおよびキープアライブパケットが他のＮＮＭに到達した場合に、通信の混乱が起こらないようにする。例えば、図５に示したように、全てのパケットの先頭に、フラグ６３、６４を付加し、キープアライブパケットの場合は「１」を、通常のパケットの場合は「０」を設定する。このようにして、ＮＮＭがキープアライブパケットを受信した場合でも、これを識別して破棄することができる。
【００５９】
図６〜８は、ファイアウォール越え処理の本実施形態に好適な一例を示した、ＮＮＭファイアウォール越え処理のフローチャートである。
【００６０】
図６において、ＮＮＭ１７は、使用可能な通信方法のサーチを行う（ステップＳ６００）。ステップＳ６００のリターン値がｆｆｆｆＨ以外、即ちＵＤＰが利用可能なネットワークである場合（ステップＳ６０２）、ＮＮＭ１７は、使用可能な通信方法を用いた通信経路の生成を行う（ステップＳ６０４）。
【００６１】
図７は、前述したステップＳ６００の通信方法サーチ処理のフローチャートである。ＮＮＭ１７は、ＵＤＰを用いてサーバ（不図示のＷＥＢプロキシ）のポート番号ｎに対して（ＨＴＴＰやＰＯＰ３等のwellknownポート番号以外を利用する）パケットを送信する（ステップＳ７００）。ＮＮＭ１７は、サーバ側の待ち受けポート番号にパケットが届いたか否かを判定する（ステップＳ７０２）。サーバ側の待ち受けポート番号にパケットが届いた場合、ＮＮＭ１７は、リターン値＝０（ＵＤＰ通信が利用可能）をＲＡＭに設定し（ステップＳ７０４）、呼び出し元の処理へ戻る（リターン）。
【００６２】
サーバ側の待ち受けポート番号にパケットが届かない場合、ＮＮＭ１７は、ＵＤＰを用いてサーバの（ＨＴＴＰＳ通信が利用する）４４３番ポートに対してパケットを送信する（ステップＳ７０６）。ＮＮＭ１７は、サーバ側の待ち受けポート番号にパケットが届いたか否かを判定する（ステップＳ７０８）。サーバ側の待ち受けポート番号にパケットが届いた場合、ＮＮＭ１７は、リターン値＝１（４４３番ポート宛のＵＤＰ通信が可能）をＲＡＭに設定し（ステップＳ７１０）、呼び出し元の処理へ戻る（リターン）。
【００６３】
サーバ側の待ち受けポート番号にパケットが届かない場合、ＮＮＭ１７は、ＵＤＰを用いてサーバの（ＨＴＴＰ通信が利用する）８０番ポートに対してパケットを送信する（ステップＳ７１２）。ＮＮＭ１７は、サーバ側の待ち受けポート番号にパケットが届いたか否かを判定する（ステップＳ７１４）。サーバ側の待ち受けポート番号にパケットが届いた場合、ＮＮＭ１７は、リターン値＝２（８０番ポート宛のＵＤＰ通信が可能）をＲＡＭに設定し（ステップＳ７１６）、呼び出し元の処理へ戻る（リターン）。
【００６４】
サーバ側の待ち受けポート番号にパケットが届かない場合、ＮＮＭ１７は、ＴＣＰを用いてサーバのポート番号ｎに対して（ＨＴＴＰやＰＯＰ３等のwellknownポート番号以外を利用する）パケットを送信する（ステップＳ７１８）。ＮＮＭ１７は、サーバ側の待ち受けポート番号にパケットが届いたか否かを判定する（ステップＳ７２０）。サーバ側の待ち受けポート番号にパケットが届いた場合、ＮＮＭ１７は、リターン値＝３（ＴＣＰ通信が利用可能）をＲＡＭに設定し（ステップＳ７２２）、呼び出し元の処理へ戻る（リターン）。
【００６５】
サーバ側の待ち受けポート番号にパケットが届かない場合、ＮＮＭ１７は、ＴＣＰを用いてサーバの（ＨＴＴＰＳ通信が利用する）４４３番ポートに対してパケットを送信する（ステップＳ７２４）。ＮＮＭ１７は、サーバ側の待ち受けポート番号にパケットが届いたか否かを判定する（ステップＳ７２６）。サーバ側の待ち受けポート番号にパケットが届いた場合、ＮＮＭ１７は、リターン値＝４（４４３番ポート宛のＴＣＰ通信が可能）をＲＡＭに設定し（ステップＳ７２８）、呼び出し元の処理へ戻る（リターン）。
【００６６】
サーバ側の待ち受けポート番号にパケットが届かない場合、ＮＮＭ１７は、ＴＣＰを用いてサーバの（ＨＴＴＰ通信が利用する）８０番ポートに対してパケットを送信する（ステップＳ７３０）。ＮＮＭ１７は、サーバ側の待ち受けポート番号にパケットが届いたか否かを判定する（ステップＳ７３２）。サーバ側の待ち受けポート番号にパケットが届いた場合、ＮＮＭ１７は、リターン値＝５（８０番ポート宛のＴＣＰ通信が可能）をＲＡＭに設定し（ステップＳ７３４）、呼び出し元の処理へ戻る（リターン）。
【００６７】
サーバ側の待ち受けポート番号にパケットが届かない場合、ＮＮＭ１７は、リターン値＝ｆｆｆｆＨ（ＵＤＰ利用不可能）をＲＡＭに設定し（ステップＳ７３６）、呼び出し元の処理へ戻る（リターン）。
【００６８】
図８は、前述したステップＳ６０４の通信経路生成処理のフローチャートである。ＮＮＭ１７は、前述のステップＳ６００のリターン値が３、４又は５のいずれかである場合、ＵＤＰが利用できない環境においてＵＤＰ通信を行うために、ＵＤＰのデータをＴＣＰにくるむ（ステップＳ８００→Ｓ８０２）。
【００６９】
次いでＮＮＭ１７は、前述のステップＳ６００のリターン値が１又は４のいずれかである場合、通信先の端末を４４３番ポートで待ち受けさせ（ステップＳ８０６）、４４３番ポートに対して接続を行う（ステップＳ８０４→Ｓ８０８）。
【００７０】
或いはＮＮＭ１７は、前述のステップＳ６００のリターン値が２又は５のいずれかである場合（ステップＳ８０４→Ｓ８１０）、通信先の端末を８０番ポートで待ち受けさせ（ステップＳ８１２）、８０番ポートに対して接続を行う（ステップＳ８１４）。
【００７１】
ここでは一例として、ネットワーク上にＷＥＢプロキシが設置されている環境でCONNECTメソッドによるＳＳＬ（Secure Sockets Layer）通信が許可されている場合を想定する。ＮＮＭ１７は、以降のステップで、「ＨＴＴＰＳ  ＣＯＮＮＥＣＴメソッドによるファイアウォール越え」の処理を行う。
【００７２】
ＮＮＭ１７は、送信するペイロードをＨＴＴＰで扱えるデータ列に変換する（ステップＳ８１６）。次いでＮＮＭ１７は、ＴＣＰパケットにＨＴＴＰヘッダを書き加え、変換したデータ列を添付する（書き加えるヘッダはＨＴＴＰで定義されたCONNECTヘッダを利用）（ステップＳ８１８）。そしてＮＮＭ１７は、CONNECTヘッダに通信先端末のアドレスを入れ、そのパケットをＷＥＢプロキシに送信し（ステップＳ８２０）、呼び出し元の処理へ戻る（リターン）。これにより、ＷＥＢプロキシはＳＳＬ通信と誤認し、通信を許可し、通信先端末までパケットが転送される。
【００７３】
［実施形態の効果］  
以上説明したように本実施形態によれば、第１の態様として、通信方法（図１、３）は、ＮＡＴ機能を有する第１のネットワーク機器（１３）に接続された第１のコンピュータ（１１）と、ＮＡＴ機能を有する第２のネットワーク機器（１４）に接続された第２のコンピュータ（１２）との間でＰ２Ｐ型通信を行うための通信方法であって、第１のプライベートアドレスとは別に割り当てられた論理的なＩＰアドレスである第１の仮想ＩＰアドレスを割り当てられた第１の通信装置（１７）が、上記第１のネットワーク機器と上記第１のコンピュータとの間に接続されており、第２のプライベートアドレスとは別に割り当てられた論理的なＩＰアドレスである第２の仮想ＩＰアドレスを割り当てられた第２の通信装置（１８）が、上記第２のネットワーク機器と上記第２のコンピュータとの間に接続されており、上記第１の通信装置が、ヘッダに上記第２の仮想ＩＰアドレスを含むパケットを上記第１のコンピュータから受信する第１の受信ステップ（Ｓ３０６→Ｓ３１６）と、上記第１の通信装置が、上記第１の受信ステップにおいて受信したパケットに上記第１の仮想ＩＰアドレスを設定し、該パケットをＮＡＴ越え機能（図４、５）を使用して上記第１のネットワーク機器を介し上記第２のコンピュータに向けて送信する第１の送信ステップ（Ｓ３１６〜Ｓ３２２）と、上記第１の通信装置が、上記第１の送信ステップの後に、上記第１の仮想ＩＰアドレス及び上記第２の仮想ＩＰアドレスを含むパケットを上記第１のネットワーク機器から受信する第２の受信ステップ（Ｓ３０６→Ｓ３０８）と、上記第１の通信装置が、上記第２の受信ステップにおいて受信したパケットのヘッダに上記第２の仮想ＩＰアドレスを設定し、該パケットを上記第１のコンピュータに向けて送信する第２の送信ステップ（Ｓ３０８〜Ｓ３１４）とを備えることを特徴とする。
【００７４】
ここで、第２の態様として、第１の態様において、上記第１の受信ステップにおいて受信されるパケットは、ヘッダの宛先アドレスに上記第２の仮想ＩＰアドレスを含み、上記第１の送信ステップにおいて送信されるパケットは、ペイロードに上記第１の仮想ＩＰアドレスと上記第２の仮想ＩＰアドレスとを含み、上記第２の受信ステップにおいて受信されるパケットは、ペイロードに上記第１の仮想ＩＰアドレスと上記第２の仮想ＩＰアドレスとを含み、上記第２の送信ステップにおいて送信されるパケットは、ヘッダの送信元アドレスに上記第２の仮想ＩＰアドレスを含むことを特徴とするとすることができる。
【００７５】
また、第３の態様として、第１又は２の態様において、上記第１の通信装置、上記第１のネットワーク機器、及び上記第１のコンピュータを含むネットワーク内に、ファイアウォール機能を有する第３のネットワーク機器（不図示のＷＥＢプロキシサーバ）が接続されており、上記第１の送信ステップにおいて、上記第１の通信装置が、上記第１の仮想ＩＰアドレスを設定したパケットをファイアウォール越え機能（図６〜８）をさらに使用して送信することを特徴とすることができる。
【００７６】
また、第４の態様として、第１乃至３のいずれかに記載の態様において、上記第１の通信装置が、ヘッダに上記第２の仮想ＩＰアドレスを含まないパケットを上記第１のコンピュータから受信した場合、該パケットを上記第１のネットワーク機器に向けて送信し、上記第１の仮想ＩＰアドレス及び上記第２の仮想ＩＰアドレスを含まないパケットを上記第１のネットワーク機器から受信した場合、該パケットを上記第１のコンピュータに向けて送信する第３の送信ステップ（Ｓ３０２→Ｓ３０４）をさらに備えることを特徴とすることができる。
【００７７】
以上の構成により、本実施形態の通信装置（ＮＮＭ１７）を使用する通信方法は、以下の効果を奏する。
・端末１１上のアプリケーションのＳＤＫ等による変更を行う必要がない。
・ネットワーク機器（ルータ１３）の設定を変更することなく、ＮＮＭ１７を端末１１とルータ１３との間の端末１１の前にワンタッチで接続すればよい。
・端末１１、１２同士の直接通信が可能である（端末１１、１２間のパケット通信において、１つの論理的なＬＡＮとなる）。
【００７８】
［他の実施形態］  
以上述べた実施形態の他に次の形態を実施できる。  
１）ネットワークカメラのリモート参照
ＮＮＭとネットワークポートを持つカメラデバイスを接続することで、カメラ・ＮＮＭ・ルータから成るネットワーク内に設置するだけで、外部のネットワークからのリモート監視を可能にする。
２）情報家電機器のリモート参照
ＮＮＭとネットワークポートを持つ家電機器を接続することで、外部のネットワークからの家電参照を可能にする（家電参照：エアコンの遠隔制御、オーディオのメディアファイル参照、ビデオレコーダーの映像コンテンツのストリーミング再生）。
３）機器のリモート電源ＯＮ
ＮＮＭ内に他の機器の電源を操作できるアプリケーションを搭載、あるいは電源を操作で切るデバイスを接続することで、外部の離れたネットワークから機器の電源を操作することが可能になる。
４）パソコンのリモート操作
ＮＮＭとパソコン端末を接続し、パソコン内に既存の遠隔操作ソフトウェアをインストールすることで、外部のネットワークからパソコンのリモート操作を実現する。
５）リモート印刷
ＮＮＭとプリンター機器を接続、インターネットを介して印刷を行う。外出先で利用しているデジタルカメラから直接ネットワークを経由して自宅等遠隔地にあるプリンター、印刷サービス事業者へのプリンターに出力することが可能となる。
６）ＩＰ電話の実現
ＮＮＭを端末・ＮＮＭ・ルータから成るネットワーク内に設置するだけで、インターネットを介してＳＩＰ（session initiation protocol）、Ｈ．３２３等のＩＰを使う電話システム（ＴＶ会議システム、ＴＶ電話システムを含む）を実現する。
７）機器のリモートメンテナンス
ＮＮＭをネットワーク端子を持つ機器に接続することで、外部のネットワークから機器の状態を監視することが可能になる。消耗品の状況や故障状況をリモートで監視することでスピーディーに効率よく機器のメンテナンスが行える。
８）上述の実施形態は例示であって制限的なものではない。したがって、上述の実施形態の他にも変形が可能である。その変形が特許請求の範囲で述べられている本発明の技術思想に基づく限り、その変形は本発明の技術的範囲内となる。
【図面の簡単な説明】
【００７９】
【図１】本発明を適用できる実施形態のＰ２Ｐ通信方法の説明図である。
【図２】本発明を適用できる実施形態のＮＮＭパワーＯＮ処理を示すフローチャートである。
【図３】本発明を適用できる実施形態のＮＮＭ通常処理を示すフローチャートである。
【図４】本発明を適用できる実施形態のＮＮＭのＮＡＴ越え処理の説明図である。
【図５】本発明を適用できる実施形態のＮＮＭのＮＡＴ越え処理の説明図である。
【図６】本発明を適用できる実施形態のＮＮＭファイアウォール越え処理のフローチャートである。
【図７】本発明を適用できる実施形態のＮＮＭファイアウォール越え処理のフローチャートである。
【図８】本発明を適用できる実施形態のＮＮＭファイアウォール越え処理のフローチャートである。
【図９】従来のＮＡＴ機能を説明するためのネットワーク接続図である。
【符号の説明】
【００８０】
１１、１２、１５、１６  端末
１３、１４  ルータ
１７、１８、１９、２０  ＮＮＭ
２１、３１  宛先グローバルアドレス
２２、３２  送信元プライベートアドレス
２３、３３  宛先ポート番号
２４、３４  送信元ポート番号
２５  セッション管理サーバ
３０、４０  パケット
【図１】
0004722615.tif 000002
【図２】
0004722615.tif 000003
【図３】
0004722615.tif 000004
【図４】
0004722615.tif 000005
【図５】
0004722615.tif 000006
【図６】
0004722615.tif 000007
【図７】
0004722615.tif 000008
【図８】
0004722615.tif 000009
【図９】
0004722615.tif 000010