(57)【要約】【課題】ＮＡＴのタイプを高精度に判別する通信装置を提供する。【解決手段】送信元ＩＰアドレス・ポート番号と宛先ポート番号との組合わせが異なる複数の要求メッセージを送信する第１の送信部１０１と、サーバ１４０が返信した応答メッセージを受信する受信部１０３、１０４と、応答メッセージを記憶する応答メッセージ記憶部１０７と、ネットワーク中継装置の変換方法が、プロトコルと送信元ＩＰアドレス・ポート番号との組み合わせごとに送信元ＩＰアドレス・ポート番号とを一定の値に変換するアドレス変換方法でないことを判定する第１の変換方法判定部１０５と、応答メッセージを受信できなくなった場合に確認メッセージを送信する第２の送信部１０２と、確認メッセージに対する応答メッセージを受信できた場合に、前記変換方法は前記アドレス変換方法でないと判定する第２の変換方法判定部１０６とを備えた。【選択図】        図１
2006253824.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク中継装置を介して接続されたサーバに対し、プロトコルと送信元ＩＰアドレスと送信元ポート番号と宛先ＩＰアドレスと宛先ポート番号とを含む要求メッセージをパケットの形式で送信し、送信した前記要求メッセージに対し前記サーバが返信した前記要求メッセージの送信元ＩＰアドレスおよび送信元ポート番号を含む応答メッセージを受信する通信装置において、
プロトコルと宛先ＩＰアドレスとが同一であり、送信元ＩＰアドレスと送信元ポート番号と宛先ポート番号との組み合わせが異なる複数の前記要求メッセージを前記サーバに送信する第１の送信手段と、
前記第１の送信手段が送信した前記要求メッセージに対して前記サーバが返信した前記応答メッセージを受信する第１の受信手段と、
前記第１の受信手段が受信した前記応答メッセージを記憶する応答メッセージ記憶手段と、
前記応答メッセージ記憶手段に記憶された前記応答メッセージと、前記応答メッセージ記憶手段に記憶された前記応答メッセージに対応する前記要求メッセージと異なる前記要求メッセージに対して前記第１の受信手段が受信した前記応答メッセージとに基づき、前記ネットワーク中継装置が前記要求メッセージを中継する際の送信元ＩＰアドレスと送信元ポート番号との変換方法が、プロトコルと送信元ＩＰアドレスと送信元ポート番号との組み合わせごとに送信元ＩＰアドレスと送信元ポート番号とを一定の値に変換するアドレス変換方法でないことを判定する第１の変換方法判定手段と、
前記第１の受信手段が前記応答メッセージを受信できなくなった場合に、前記ネットワーク中継装置の前記変換方法を確認するための前記要求メッセージである確認メッセージを送信する第２の送信手段と、
前記第２の送信手段が送信した前記確認メッセージに対して前記サーバが返信した前記応答メッセージを受信する第２の受信手段と、
前記第２の受信手段が前記確認メッセージに対する前記応答メッセージを受信できない場合に、前記ネットワーク中継装置の前記変換方法は前記アドレス変換方法であると判定し、前記第２の受信手段が前記確認メッセージに対する前記応答メッセージを受信できた場合に、前記ネットワーク中継装置の前記変換方法は前記アドレス変換方法でないと判定する第２の変換方法判定手段と、
を備えたことを特徴とする通信装置。
【請求項２】
前記第２の送信手段は、受信できなくなったときに送信した前記要求メッセージの宛先ポート番号のみを変更した前記要求メッセージを前記確認メッセージとして送信することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第２の送信手段は、未だ送信したことのない組み合わせの送信元ＩＰアドレスと送信元ポート番号と宛先ポート番号とを含む前記要求メッセージを前記確認メッセージとして送信することを特徴とする請求項１に記載の通信装置。
【請求項４】
前記第１の変換方法判定手段は、前記第１の送信手段が前記要求メッセージを予め定められた回数送信した後においても、前記変換方法は前記アドレス変換方法でないことを判定しない場合に、前記変換方法は前記アドレス変換方法であると判定することを特徴とする請求項１〜３のいずれか１つに記載の通信装置。
【請求項５】
前記第１の送信手段は、１回目に送信した前記要求メッセージの宛先ポート番号のみを変更した前記要求メッセージを、２回目に送信する前記要求メッセージとして前記サーバに送信することを特徴とする請求項１〜４のいずれか１つに記載の通信装置。
【請求項６】
前記第１の変換方法判定手段は、前記応答メッセージに含まれる送信元ＩＰアドレスが、前記要求メッセージに含まれる送信元ＩＰアドレスと同一である場合に、前記ネットワーク中継装置は前記要求メッセージを中継する際に送信元ＩＰアドレスと送信元ポート番号とを変換しないと判断し、前記変換方法の判定を行わないことを特徴とする請求項１〜４のいずれか１つに記載の通信装置。
【請求項７】
ネットワーク中継装置を介して接続されたサーバに対し、プロトコルと送信元ＩＰアドレスと送信元ポート番号と宛先ＩＰアドレスと宛先ポート番号とを含む要求メッセージをパケットの形式で送信し、送信した前記要求メッセージに対し前記サーバが返信した前記要求メッセージの送信元ＩＰアドレスおよび送信元ポート番号を含む応答メッセージを受信する通信装置における通信方法であって、
プロトコルと宛先ＩＰアドレスとが同一であり、送信元ＩＰアドレスと送信元ポート番号と宛先ポート番号との組み合わせが異なる複数の前記要求メッセージを前記サーバに送信する第１の送信ステップと、
前記第１の送信ステップが送信した前記要求メッセージに対して前記サーバが返信した前記応答メッセージを受信する第１の受信ステップと、
前記第１の受信ステップが受信した前記応答メッセージを記憶手段に記憶する応答メッセージ記憶ステップと、
前記記憶手段に記憶された前記応答メッセージと、前記記憶手段に記憶された前記応答メッセージに対応する前記要求メッセージと異なる前記要求メッセージに対して前記第１の受信ステップが受信した前記応答メッセージとに基づき、前記ネットワーク中継装置が前記要求メッセージを中継する際の送信元ＩＰアドレスと送信元ポート番号との変換方法が、プロトコルと送信元ＩＰアドレスと送信元ポート番号との組み合わせごとに送信元ＩＰアドレスと送信元ポート番号とを一定の値に変換するアドレス変換方法でないことを判定する第１の変換方法判定ステップと、
前記第１の受信ステップが前記応答メッセージを受信できなくなった場合に、前記ネットワーク中継装置の前記変換方法を確認するための前記要求メッセージである確認メッセージを送信する第２の送信ステップと、
前記第２の送信ステップが送信した前記確認メッセージに対して前記サーバが返信した前記応答メッセージを受信する第２の受信ステップと、
前記第２の受信ステップが前記確認メッセージに対する前記応答メッセージを受信できない場合に、前記ネットワーク中継装置の前記変換方法は前記アドレス変換方法であると判定し、前記第２の受信ステップが前記確認メッセージに対する前記応答メッセージを受信できた場合に、前記ネットワーク中継装置の前記変換方法は前記アドレス変換方法でないと判定する第２の変換方法判定ステップと、
を備えたことを特徴とする通信方法。
【請求項８】
ネットワーク中継装置を介して接続されたサーバに対し、プロトコルと送信元ＩＰアドレスと送信元ポート番号と宛先ＩＰアドレスと宛先ポート番号とを含む要求メッセージをパケットの形式で送信し、送信した前記要求メッセージに対し前記サーバが返信した前記要求メッセージの送信元ＩＰアドレスおよび送信元ポート番号を含む応答メッセージを受信する通信装置における通信プログラムであって、
プロトコルと宛先ＩＰアドレスとが同一であり、送信元ＩＰアドレスと送信元ポート番号と宛先ポート番号との組み合わせが異なる複数の前記要求メッセージを前記サーバに送信する第１の送信手順と、
前記第１の送信手順が送信した前記要求メッセージに対して前記サーバが返信した前記応答メッセージを受信する第１の受信手順と、
前記第１の受信手順が受信した前記応答メッセージを記憶手段に記憶する応答メッセージ記憶手順と、
前記記憶手段に記憶された前記応答メッセージと、前記記憶手段に記憶された前記応答メッセージに対応する前記要求メッセージと異なる前記要求メッセージに対して前記第１の受信手順が受信した前記応答メッセージとに基づき、前記ネットワーク中継装置が前記要求メッセージを中継する際の送信元ＩＰアドレスと送信元ポート番号との変換方法が、プロトコルと送信元ＩＰアドレスと送信元ポート番号との組み合わせごとに送信元ＩＰアドレスと送信元ポート番号とを一定の値に変換するアドレス変換方法でないことを判定する第１の変換方法判定手順と、
前記第１の受信手順が前記応答メッセージを受信できなくなった場合に、前記ネットワーク中継装置の前記変換方法を確認するための前記要求メッセージである確認メッセージを送信する第２の送信手順と、
前記第２の送信手順が送信した前記確認メッセージに対して前記サーバが返信した前記応答メッセージを受信する第２の受信手順と、
前記第２の受信手順が前記確認メッセージに対する前記応答メッセージを受信できない場合に、前記ネットワーク中継装置の前記変換方法は前記アドレス変換方法であると判定し、前記第２の受信手順が前記確認メッセージに対する前記応答メッセージを受信できた場合に、前記ネットワーク中継装置の前記変換方法は前記アドレス変換方法でないと判定する第２の変換方法判定手順と、
をコンピュータに実行させる通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）機能を有するネットワーク中継装置におけるアドレス変換方法の種別を判別する通信装置、通信方法および通信プログラムに関するものである。
【背景技術】
【０００２】
インターネット技術を用いた一般的な通信においては、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ  ４）等のネットワークプロトコルと、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｏｒｏｌ  Ｐｒｏｔｏｃｏｌ）やＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）といったトランスポートプロトコルが利用される。
【０００３】
ネットワークプロトコルは、通信を行う装置を識別するために、アドレスと呼ばれる識別子を利用する。特に、インターネットで使用される識別子はＩＰアドレスと呼ばれている。また、ＴＣＰやＵＤＰ等のトランスポートプロトコルは、通信装置内で動作するアプリケーションを識別するためにポート番号と呼ばれる識別子を利用する。
【０００４】
従来のインターネット技術を用いた通信方法においては、インターネットに直接接続された装置に対し、当該装置ごとに一意に定められたアドレスであるグローバルＩＰアドレスが割り当てられる。しかし、グローバルＩＰアドレスの数は限られており、特に家庭向けのインターネット接続サービスにおいては、サービス一契約につき一つのグローバルアドレスしか割り当てられないことが多い。すなわち、一台の装置しかインターネットに直接接続することができない。
【０００５】
そこで、使用できるグローバルアドレスの数を越える複数の装置が同時にインターネット上の装置と通信できるようにするため、プライベートＩＰアドレスとＮＡＴ  ｂｏｘと呼ばれる装置を利用したネットワーク構成が広く利用されている。なお、プライベートＩＰアドレスとは、インターネットに直接送信するメッセージの送信元ＩＰアドレスまたは宛先ＩＰアドレスとして使用することができないが、ネットワーク装置のデバッグや企業内などの閉じられた（プライベートな）ネットワークにおける使用を目的としたＩＰアドレスである。また、ＮＡＴ  ｂｏｘとは、グローバルＩＰアドレスとプライベートＩＰアドレスとの相互変換等を実行するネットワークアドレス変換（ＮＡＴ）機能を搭載したルータ（ネットワーク中継装置）である。
【０００６】
プライベートＩＰアドレスとＮＡＴ  ｂｏｘを用いたネットワーク構成では、ＮＡＴ  ｂｏｘ配下の装置から通信を開始する限り、当該装置はインターネット上の他の装置と直接通信可能である。インターネット上の装置から通信を開始してＮＡＴ  ｂｏｘ配下の装置と直接通信する場合は、ＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ）対応のＮＡＴ  ｂｏｘを利用する方法や、非特許文献１で示されているＳＴＵＮ（Ｓｉｍｐｌｅ  Ｔｒａｖｅｒｓａｌ  ｏｆ  ＵＤＰ  ｔｈｒｏｕｇｈ  ＮＡＴｓ）を利用した方法を用いることができる。
【０００７】
また、ＮＡＴ機能は、アドレス変換アルゴリズムの種類や外部からの通信要求に対する制限の有無によりいくつかのタイプが存在し、直接通信を行う装置が、それぞれどのようなタイプのＮＡＴ機能を有するルータに接続されているかにより通信の可否が決まる。非特許文献１によれば、ＮＡＴ機能は、Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴ、Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴ、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴ、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴの４タイプに類型化されている。
【０００８】
一方のルータのＮＡＴ機能がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴかＲｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴである場合、および両方のルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴである場合は、数メッセージの情報を交換することによりそれぞれのルータ配下の装置同士が直接通信を開始できる。
【０００９】
また、一方のルータのＮＡＴ機能がＳｙｍｍｅｔｒｉｃ  ＮＡＴでかつもう一方のルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴである場合、および両方のルータのＮＡＴ機能がＳｙｍｍｅｔｒｉｃ  ＮＡＴである場合は、特許文献１または非特許文献２において示されている通信方法を適用することができる。しかし、これらの方法においては、それぞれのルータがどのポート番号を変換先のポート番号として割り当てるかを逐一探索することにより通信を開始するため、通信開始までに長時間を要する場合があり、現実的な通信方法ではない。
【００１０】
このように、通信を行う各装置が接続されたルータのＮＡＴ機能のタイプにより通信の可否が異なるため、事前にルータのＮＡＴ機能のタイプを特定する必要がある。例えば、非特許文献１には、ルータ配下の装置が、そのルータのＮＡＴ機能が上述した４タイプのいずれであるかを判別する方法の例が示されている。
【００１１】
【特許文献１】特開２００４−１８０００３号公報
【非特許文献１】J. Rosenberg et al.、 "RFC 3489、 STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)"、 [online]、 March 2003、 retrieved from the Internet: <URL: http://www.ietf.org/rfc/rfc3489.txt>
【非特許文献２】Y.Takeda、 "Symmetric NAT Traversal using STUN"、 [online]、 retrieved from the Internet: <URL: http://www.potaroo.net/ietf/old-ids/draft-takeda-symmetric-nat-traversal-00.txt>
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、現在普及しているルータの中には、上述した４タイプのＮＡＴ機能のいずれとも異なるアドレス変換アルゴリズムを有し、非特許文献１に示されている判別方法を用いた場合に、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴと判定されることも、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴと判定されることもあるルータが存在する。このため、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであると誤って判定し、通信ができないにもかかわらず通信を開始してしまう場合があるという問題があった。
【００１３】
本発明は、上記に鑑みてなされたものであって、ルータのアドレス変換アルゴリズムの判定を高精度に実行することにより、当該ルータを介した通信の可否を適切に判断することができる通信装置、通信方法および通信プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明は、ネットワーク中継装置を介して接続されたサーバに対し、プロトコルと送信元ＩＰアドレスと送信元ポート番号と宛先ＩＰアドレスと宛先ポート番号とを含む要求メッセージをパケットの形式で送信し、送信した前記要求メッセージに対し前記サーバが返信した前記要求メッセージの送信元ＩＰアドレスおよび送信元ポート番号を含む応答メッセージを受信する通信装置において、プロトコルと宛先ＩＰアドレスとが同一であり、送信元ＩＰアドレスと送信元ポート番号と宛先ポート番号との組み合わせが異なる複数の前記要求メッセージを前記サーバに送信する第１の送信手段と、前記第１の送信手段が送信した前記要求メッセージに対して前記サーバが返信した前記応答メッセージを受信する第１の受信手段と、前記第１の受信手段が受信した前記応答メッセージを記憶する応答メッセージ記憶手段と、前記応答メッセージ記憶手段に記憶された前記応答メッセージと、前記応答メッセージ記憶手段に記憶された前記応答メッセージに対応する前記要求メッセージと異なる前記要求メッセージに対して前記第１の受信手段が受信した前記応答メッセージとに基づき、前記ネットワーク中継装置が前記要求メッセージを中継する際の送信元ＩＰアドレスと送信元ポート番号との変換方法が、プロトコルと送信元ＩＰアドレスと送信元ポート番号との組み合わせごとに送信元ＩＰアドレスと送信元ポート番号とを一定の値に変換するアドレス変換方法でないことを判定する第１の変換方法判定手段と、前記第１の受信手段が前記応答メッセージを受信できなくなった場合に、前記ネットワーク中継装置の前記変換方法を確認するための前記要求メッセージである確認メッセージを送信する第２の送信手段と、前記第２の送信手段が送信した前記確認メッセージに対して前記サーバが返信した前記応答メッセージを受信する第２の受信手段と、前記第２の受信手段が前記確認メッセージに対する前記応答メッセージを受信できない場合に、前記ネットワーク中継装置の前記変換方法は前記アドレス変換方法であると判定し、前記第２の受信手段が前記確認メッセージに対する前記応答メッセージを受信できた場合に、前記ネットワーク中継装置の前記変換方法は前記アドレス変換方法でないと判定する第２の変換方法判定手段と、を備えたことを特徴とする。
【００１５】
また、本発明は、上記装置を実行することができる通信方法および通信プログラムである。
【発明の効果】
【００１６】
本発明によれば、ルータのアドレス変換アルゴリズムの検査を要求するメッセージの送受信を繰り返し行うとともに、それに対する応答のメッセージが受信できなくなった場合に、さらに判別を行うための検査を要求するメッセージを送信して、それに対する応答のメッセージの受信可否によりルータのアドレス変換アルゴリズムを高精度に判別することができる。このため、通信対象となる装置との間に存在するルータのアドレス変換アルゴリズムの種類によって変わる通信可否の判定を適切に実行することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、この発明にかかる通信装置、通信方法および通信プログラムの最良な実施の形態を詳細に説明する。
【００１８】
（本実施の形態）
本実施の形態にかかる通信装置は、ルータのＮＡＴ機能のタイプの検査を、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴタイプではないことを判定できるまで、または、検査するためのメッセージに対する応答のメッセージが受信できなくなるまで繰り返し行い、応答のメッセージが受信できなくなった場合には、さらに判別を行うためのメッセージを送信して、それに対する応答のメッセージの受信可否によりルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴタイプであるか否かを判別するものである。
【００１９】
図１は、本実施の形態にかかる通信装置１００の構成を示すブロック図である。同図に示すように、通信装置１００は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１２０内に設置され、ルータ１１０を介してインターネット１３０に接続され、インターネット１３０に接続された通信相手であるサーバ１４０と通信を行う装置である。ルータ１１０は、本発明におけるネットワーク中継装置に相当する。
【００２０】
ルータ１１０は、送信が要求されたパケットに含まれる宛先のＩＰアドレスを参照して送信経路を選択する機能を有し、当該パケットを他のネットワークに中継する装置であり、プライベートＩＰアドレスをグローバルＩＰアドレスに変換するネットワークアドレス変換（ＮＡＴ）機能を有するものも、有さないものも含まれる。ルータ１１０のインターネット１３０に接続する側のネットワークインタフェースには、１つまたは複数のグローバルＩＰアドレスが割り当てられている。なお、本実施の形態においては、ルータがＮＡＴ機能を有するか否かを判定することもできる。ルータがＮＡＴ機能を有するか否かを判定する処理については後述する。
【００２１】
サーバ１４０は、ルータがどのタイプのＮＡＴ機能を有するルータであるかの検査を要求するためのメッセージ（以下、ＮＡＴ検査要求メッセージという）を含むパケットに対して、そのパケットの送信元ＩＰアドレスおよび送信元ポート番号を記述したメッセージ（以下、ＮＡＴ検査応答メッセージという）を、返信するパケットのデータ部に書き込んで送信する機能を有する通信装置である。本発明は、ＮＡＴ機能のタイプを判定することが目的であるため、通信相手であるサーバはこのような機能を有することを前提としている。このような機能の実現方法の一例は、例えば非特許文献１に示されている。なお、ＮＡＴ検査応答メッセージには、送信元ＩＰアドレスおよび送信元ポート番号を記述するが、これ以外の情報を含むように構成してもよい。
【００２２】
通信装置１００は、図１に示すように、第１の送信部１０１と、第２の送信部１０２と、第１の受信部１０３と、第２の受信部１０４と、第１の変換方法判定部１０５と、第２の変換方法判定部１０６と、応答メッセージ記憶部１０７とを備えている。
【００２３】
第１の送信部１０１は、変換方法判定処理の第１段階の処理および第２段階の処理におけるＮＡＴ検査要求メッセージを、ルータ１１０を介してサーバ１４０に送信するものである。第１段階の処理および第２段階の処理については後述する。第２の送信部１０２は、変換方法判定処理の第３段階の処理において、ルータ１１０がどのタイプのＮＡＴ機能を有するかを確認するためのＮＡＴ検査要求メッセージを、ルータ１１０を介してサーバ１４０に送信するものである。
【００２４】
第１の受信部１０３は、変換方法判定処理の第１段階の処理および第２段階の処理において、インターネット１３０およびルータ１１０を介して返信されるサーバ１４０からのＮＡＴ検査応答メッセージを受信するものである。第２の受信部１０４は、変換方法判定処理の第３段階の処理において、インターネット１３０およびルータ１１０を介して返信されるサーバ１４０からのＮＡＴ検査応答メッセージを受信するものである。
【００２５】
なお、ルータ１１０がＮＡＴの処理に利用できるＩＰアドレス・ポート番号のすべての組を使用した場合や、ネットワーク障害の場合には、ＮＡＴ検査応答メッセージを受信することができないため、第１の受信部１０３および第２の受信部１０４は、予め定められた時間待機したあと受信処理を中断するタイムアウト処理を行う。
【００２６】
第１の変換方法判定部１０５は、第１の送信部１０１から送信するＮＡＴ検査要求メッセージの作成、および、第１の受信部１０３が受信した複数のＮＡＴ検査応答メッセージを比較することにより、ルータがＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないことの判定を行うものである。
【００２７】
第２の変換方法判定部１０６は、第１の変換方法判定部１０５により判定を繰り返すうちにＮＡＴ検査応答メッセージが受信できなくなった場合に、再度確認のためのＮＡＴ検査要求メッセージを作成し、それに対するＮＡＴ検査応答メッセージの受信可否を判断することにより、ルータがＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであるか否かの判定を行うものである。
【００２８】
応答メッセージ記憶部１０７は、第１の送信部１０１が最初に送信したＮＡＴ検査要求メッセージに対するＮＡＴ検査応答メッセージを、そのときのＮＡＴ検査要求メッセージとともに記憶するものである。応答メッセージ記憶部１０７に記憶された情報は、第１の送信部１０１が２回目以降に送信したＮＡＴ検査要求メッセージに対するＮＡＴ検査応答メッセージの内容と比較して、ルータがＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないことの判定を行うために使用される。
【００２９】
図２は、応答メッセージ記憶部１０７のデータ構造の一例を示す説明図である。同図に示すように、応答メッセージ記憶部１０７は、トランスポートプロトコルの種別と、送信元ＩＰアドレスと、送信元ポート番号と、宛先ＩＰアドレスと、宛先ポート番号と、ＮＡＴ検査応答メッセージに記述された送信元ＩＰアドレスと、ＮＡＴ検査応答メッセージに記述された送信元ポート番号とを対応付けて格納している。
【００３０】
同図に示す例では、通信装置１００が、送信元ＩＰアドレスをＡ、送信元ＩＰアドレスをａ、宛先ＩＰアドレス・ポート番号として、それぞれサーバ１４０のＩＰアドレスＳ、ポート番号ｘを指定してＮＡＴ検査要求メッセージを含むパケットを送信し、ルータ１１０が、送信元ＩＰアドレスＡ、送信元ポート番号をそれぞれＮ、ｍに変換した場合に応答メッセージ記憶部１０７に格納されるデータが示されている。
【００３１】
次に、一般的に使用されているルータのＮＡＴ機能とそのタイプ、および従来の技術によるルータのＮＡＴ機能のタイプの判定方法について説明する。
【００３２】
まず、ＮＡＴ機能を有するルータの一般的な機能について説明する。図３は、プライベートＩＰアドレスとＮＡＴ機能を有するルータを利用したネットワーク構成および通信方法の一例を示した説明図である。
【００３３】
同図の上部に示すように、プライベートＩＰアドレスＡが割り当てられている通信装置３００が、ルータ３１０を介してインターネット１３０に接続されている。ルータ３１０におけるインターネット１３０側のネットワークインタフェースには、ＮというグローバルＩＰアドレスが割り当てられている。なお、ルータ３１０には、通信装置３００以外の複数の装置を接続することができる。この場合、各装置にはそれぞれ異なるプライベートＩＰアドレスが割り当てられる。また、サーバ１４０は、インターネット１３０に接続され、グローバルＩＰアドレスＳが割り当てられている。
【００３４】
同図の下部は、ルータ３１０配下に存在する通信装置３００が、サーバ１４０にデータ要求メッセージを送信し、サーバ１４０が応答メッセージを通信装置３００へ送信するシーケンスの一例を示している。ここで、データ要求メッセージとは、通信装置３００とサーバ１４０との間の通信処理において必要となるデータを要求するためのメッセージ一般をいい、上述のＮＡＴ検査要求メッセージとは異なる概念である。また、応答メッセージとは、このデータ要求メッセージ対してサーバ１４０が返信した応答のメッセージ一般をいい、上述のＮＡＴ検査応答メッセージとは異なる概念である。以下、通信装置３００とサーバ１４０との間のメッセージ送受信のシーケンスについて説明する。
【００３５】
以下では、「ヘッダ（ＴＣＰ、Ａ、ａ、Ｓ、ｘ）」という表記は、トランスポートプロトコル、送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレス、宛先ポート番号がそれぞれＴＣＰ、Ａ、ａ、Ｓ、ｘであるパケットのヘッダ部分を表すものとする。また、横向きの矢印はパケットの送信方向を表し、縦向きの矢印は時間経過の方向を表す。
【００３６】
まず、通信装置３００は、ネットワークプロトコルとしてＩＰｖ４、トランスポートプロトコルとしてＴＣＰを用いて、データ要求メッセージを含むパケット３５１を送信する。パケット３５１のヘッダはヘッダ（ＴＣＰ、Ａ、ａ、Ｓ、ｘ）である。
【００３７】
次に、パケット３５１を受信したルータ３１０は、パケット３５１のヘッダの送信元ＩＰアドレスと、送信元ポート番号を予め定められたアドレス変換アルゴリズムに従って変換し、ヘッダ（ＴＣＰ、Ｎ、ｎ、Ｓ、ｘ）に変換する。Ｎはルータ３１０に割り当てられたグローバルＩＰアドレスであるため、パケット３５２はインターネット１３０へ転送可能となる。ポート番号ｎの選び方は、ルータ３１０に実装されているアドレス変換アルゴリズムに依存し、ポート番号ｎはポート番号ａと同一である可能性もある。
【００３８】
パケット３５２は、インターネット１３０を経由して、サーバ１４０に送信される。パケット３５２の送信元ＩＰアドレスがＮであることから、サーバ１４０は、通信装置３００ではなくルータ３１０からデータ要求メッセージが送信されたと認識する。次に、サーバ１４０はパケット内部のデータ要求メッセージを解析して応答メッセージを作成し、パケット３５３としてインターネット１３０に送信する。
【００３９】
なお、サーバ１４０はパケット３５２がルータ３１０のポート番号ｎから来たと認識しているため、パケット３５３の宛先ポート番号をｎにする。すなわち、パケット３５３のヘッダは、ヘッダ（ＴＣＰ、Ｓ、ｘ、Ｎ、ｎ）となる。パケット３５３は、インターネット１３０を経由し、ルータ３１０に送信される。
【００４０】
ルータ３１０は、送信時に実行したアドレス変換の対応に従い、パケット３５３の宛先ＩＰアドレスがＡ、宛先ポート番号がａであると判定し、パケット３５３のヘッダをヘッダ（ＴＣＰ、Ｓ、ｘ、Ａ、ａ）に変換したパケット３５４を通信装置３００に転送する。
【００４１】
このようにして、通信装置３００にプライベートＩＰアドレスが割り当てられている場合であっても、通信装置３００はインターネット１３０上のサーバ１４０と通信が可能となる。また、通信装置３００以外のルータ３１０配下に存在する装置が、ほぼ同時にインターネット１３０上の装置へＴＣＰでパケットを送信した場合、ルータ３１０は、ポート番号ｎとは別のポート番号を用いてそのパケットの送信元ポート番号を変換する。このようなＮＡＴ機能により、ローカルエリアネットワーク内の複数の装置が同時にインターネット１３０上の装置と通信可能となる。
【００４２】
次に、ＮＡＴ機能のタイプについて説明する。非特許文献１によれば、ルータのＮＡＴ機能には、（１）Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴ、（２）Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴ、（３）Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴ、（４）Ｓｙｍｍｅｔｒｉｃ  ＮＡＴの４タイプが存在する。以下に、これら４タイプのＮＡＴ機能におけるアドレス変換アルゴリズムおよび外部からのアクセスに対する制限処理について説明する。
【００４３】
図４は、Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴを利用したネットワーク構成および通信方法の一例を示した説明図である。
【００４４】
同図に示すように、ローカルエリアネットワーク４２０に属する通信装置４００がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴタイプのルータ４１０に接続され、プライベートＩＰアドレスＡが割り当てられている。また、ルータ４１０はインターネット１３０に直接接続され、グローバルＩＰアドレスＮが割り当てられている。また、サーバ４４１およびサーバ４４２はインターネット１３０に直接接続され、それぞれグローバルＩＰアドレスＢ、Ｃが割り当てられている。
【００４５】
Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴにおいては、以下のようなアルゴリズムによりアドレス変換が実行され、通信装置４００とサーバ４４１およびサーバ４４２間の通信が行われる。
【００４６】
まず、通信装置４００がサーバ４４１にヘッダ（ＴＣＰ、Ａ、ａ、Ｂ、ｂ１）を有するパケット４５１を送信する。ルータ４１０は、パケット４５１の送信元ＩＰアドレス、送信元ポート番号をそれぞれＮ、ｎに変換し、インターネット１３０へ転送する。そしてパケット４５１はサーバ４４１により受信される。
【００４７】
次に、通信装置４００は、ヘッダ（ＴＣＰ、Ａ、ａ、Ｂ、ｂ２）を有するパケット４５２をサーバ４４１に送信する。すなわち、通信装置４００は送信元ポート番号をパケット４５１の送信元ポート番号と同一に設定し、宛先ポート番号をｂ２に変更する。
【００４８】
パケット４５２を受信したルータ４１０は、パケット４５２の送信元ＩＰアドレス、送信元ポート番号をそれぞれＮ、ｎに変換し、インターネット１３０に転送する。すなわち、パケット４５１とパケット４５２の送信元ＩＰアドレス、送信元ポート番号はそれぞれ同一の値に変換される。
【００４９】
次に通信装置４００は、ヘッダ（ＴＣＰ、Ａ、ａ、Ｃ、ｃ）を有するパケット４５３をサーバ４４２に送信するが、この場合もルータ４１０はパケット４５３の送信元ＩＰアドレス、送信元ポート番号をそれぞれＮ、ｎに変換し、インターネット１３０に転送する。
【００５０】
しかし、次に通信装置４００がヘッダ（ＴＣＰ、Ａ、ｆ、Ｂ、ｂ１）を有するパケット４５４をサーバ４４１に送信すると、ルータ４１０は、パケット４５４の送信元ポート番号をｎとは異なるポート番号ｍに変換する。
【００５１】
このように、Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴは、一組のトランスポートプロトコル、送信元ＩＰアドレス、送信元ポート番号の組に対して、一組の変換先の送信元ＩＰアドレス、変換先の送信元ポート番号の組を割り当てるようなアドレス変換アルゴリズムを利用する。
【００５２】
次に、Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴにおける外部からのアクセスに対する制限処理について説明する。まず、サーバ４４２が、ヘッダ（ＴＣＰ、Ｃ、ｄ、Ｎ、ｎ）を有するパケット４５５を送信したとする。ただし、通信装置４００は、この時点までにヘッダ（ＴＣＰ、Ａ、ａ、Ｃ、ｄ）を有するパケット一度も送信していないものとする。
【００５３】
パケット４５５は、通信装置４００が送信した何らかのパケットに対する応答ではなく、サーバ４４２から直接送信されたパケットであるが、ルータ４１０内でパケット４５５の宛先であるＩＰアドレスＮ、ポート番号ｎが通信装置４００のＩＰアドレスＡ、ポート番号ａと既に対応づけられているため、ルータ４１０はパケット４５５の宛先ＩＰアドレス、宛先ポート番号をそれぞれＡ、ａに変換し、通信装置４００に転送する。
【００５４】
このように、Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴは、転送実績のないＩＰアドレスおよびポート番号の組を送信元とするパケットであっても、そのパケットの宛先ＩＰアドレスおよび宛先ポート番号の組が、過去に転送実績があるためプライベートアドレスとの対応を有する組である場合には、そのときの対応に従い、受信した宛先ＩＰアドレスおよび宛先ポート番号を変換して通信装置４００に送信する。
【００５５】
次に、Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴについて説明する。図５は、Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴを利用したネットワーク構成および通信方法の一例を示した説明図である。
【００５６】
Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴは、ローカルエリアネットワークからのパケットに対して、Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴと同じアドレス変換アルゴリズムに従いアドレスの変換を行う。すなわち、一組のトランスポートプロトコル、送信元ＩＰアドレス、送信元ポート番号の組に対して、一組の変換先の送信元ＩＰアドレス、変換先の送信元ポート番号の組を割り当てる。
【００５７】
しかし、Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴは、インターネット１３０から受信したパケットの転送に対し以下に説明する制限を設けている点で、Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴと異なっている。
【００５８】
図５に示すように、ローカルエリアネットワーク５２０に属する通信装置５００がＲｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴタイプのルータ５１０に接続され、プライベートＩＰアドレスＡが割り当てられている。また、ルータ５１０はインターネット１３０に直接接続され、グローバルＩＰアドレスＮが割り当てられている。また、サーバ５４１およびサーバ５４２はインターネット１３０に直接接続され、それぞれグローバルＩＰアドレスＢ、Ｃが割り当てられている。
【００５９】
まず、通信装置５００がサーバ５４１にヘッダ（ＴＣＰ、Ａ、ａ、Ｂ、ｂ１）を有するパケット５５１を送信する。ルータ５１０は、パケット５５１の送信元ＩＰアドレス、送信元ポート番号をそれぞれＮ、ｎに変換し、インターネット１３０へ転送する。そしてパケット５５１はサーバ５４１により受信される。
【００６０】
次に、サーバ５４１は、ヘッダ（ＴＣＰ、Ｂ、ｂ２、Ｎ、ｎ）を有するパケット５５２をルータ５１０に送信する。ただし、通信装置５００は、この時点までにヘッダ（ＴＣＰ、Ａ、ａ、Ｂ、ｂ２）を有するパケットを送信したことがないものとする。この場合、ルータ５１０は、パケット５５２の宛先ＩＰアドレス、宛先ポート番号をそれぞれＡ、ａに変換し通信装置５００に転送する。
【００６１】
一方、サーバ５４２がヘッダ（ＴＣＰ、Ｃ、ｃ、Ｎ、ｎ）を有するパケット５５３をルータ５１０に送信すると、ルータ５１０はパケット５５３を転送せずに破棄する。ただし、通信装置５００は、この時点までにヘッダ（ＴＣＰ、Ａ、ａ、Ｃ、ｃ）を有するパケットを送信したことがないものとする。
【００６２】
このように、Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴは、過去にローカルエリアネットワーク５２０からインターネット１３０へ転送したパケットの変換先として用いたＩＰアドレスおよびポート番号宛てのパケットをインターネット１３０から受信した場合、送信元ＩＰアドレスが当該の過去に転送したパケットの宛先ＩＰアドレスと一致する場合のみ、そのパケットの転送を許可しそれ以外のパケットは転送せずに破棄するという制限を設けている。
【００６３】
次に、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴについて説明する。Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴは、インターネット１３０から送信されてきたパケットに対して、Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴよりもさらに厳しい制限を設けている。
【００６４】
図６は、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴを利用したネットワーク構成および通信方法の一例を示した説明図である。
【００６５】
同図に示すように、ローカルエリアネットワーク６２０に属する通信装置６００がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴタイプのルータ６１０に接続され、プライベートＩＰアドレスＡが割り当てられている。また、ルータ６１０はインターネット１３０に直接接続され、グローバルＩＰアドレスＮが割り当てられている。また、サーバ６４１およびサーバ６４２はインターネット１３０に直接接続され、それぞれグローバルＩＰアドレスＢ、Ｃが割り当てられている。
【００６６】
まず、通信装置６００がサーバ６４１にヘッダ（ＴＣＰ、Ａ、ａ、Ｂ、ｂ１）を有するパケット６５１を送信する。ルータ６１０は、パケット６５１の送信元ＩＰアドレス、送信元ポート番号をそれぞれＮ、ｎに変換し、インターネット１３０へ転送する。そしてパケット６５１はサーバ６４１により受信される。
【００６７】
次に、サーバ６４１が、ヘッダ（ＴＣＰ、Ｂ、ｂ２、Ｎ、ｎ）を有するパケット６５２をルータ６１０に送信する。ただし、通信装置６００は、この時点までにヘッダ（ＴＣＰ、Ａ、ａ、Ｂ、ｂ２）を有するパケットを送信したことがないものとする。この場合、ルータ６１０は、パケット６５２を転送せずに破棄する。
【００６８】
また、サーバ６４２がヘッダ（ＴＣＰ、Ｃ、ｃ、Ｎ、ｎ）を有するパケット６５３をルータ６１０に送信した場合も、ルータ６１０はパケット６５３を転送せずに破棄する。ただし、通信装置６００は、この時点までにヘッダ（ＴＣＰ、Ａ、ａ、Ｃ、ｃ）を有するパケットを送信したことがないものとする。
【００６９】
このように、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴは、過去にローカルエリアネットワーク６２０からインターネット１３０へ転送したパケットの変換先として用いたＩＰアドレスおよびポート番号宛てのパケットをインターネット１３０から受信した場合、送信元ＩＰアドレスおよび送信元ポート番号の組が当該の過去に転送したパケットの宛先ＩＰアドレスおよび宛先ポート番号の組と一致する場合のみ、そのパケットの転送を許可しそれ以外のパケットは転送せずに破棄するという制限を設けている。
【００７０】
次に、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴについて説明する。Ｓｙｍｍｅｔｒｉｃ  ＮＡＴは、上述の３つのタイプのＮＡＴ機能とは異なるアドレス変換アルゴリズムを有する。図７は、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴを利用したネットワーク構成および通信方法の一例を示した説明図である。
【００７１】
同図に示すように、ローカルエリアネットワーク７２０に属する通信装置７００がＳｙｍｍｅｔｒｉｃ  ＮＡＴタイプのルータ７１０に接続され、プライベートＩＰアドレスＡが割り当てられている。また、ルータ７１０はインターネット１３０に直接接続され、グローバルＩＰアドレスＮが割り当てられている。また、サーバ７４１およびサーバ７４２はインターネット１３０に直接接続され、それぞれグローバルＩＰアドレスＢ、Ｃが割り当てられている。
【００７２】
まず、通信装置７００がサーバ７４１にヘッダ（ＴＣＰ、Ａ、ａ、Ｂ、ｂ１）を有するパケット７５１を送信する。ルータ７１０は、パケット７５１の送信元ＩＰアドレス、送信元ポート番号をそれぞれＮ、ｎに変換し、インターネット１３０へ転送する。そしてパケット７５１はサーバ７４１により受信される。
【００７３】
次に、通信装置７００はサーバ７４１にヘッダ（ＴＣＰ、Ａ、ａ、Ｂ、ｂ２）を有するパケット７５２を送信する。ルータ７１０は、パケット７５２の送信元ＩＰアドレスをＮに変換するが、送信元ポート番号をｎとは異なるポート番号ｍに変換する。
【００７４】
次に、通信装置７００がサーバ７４２にヘッダ（ＴＣＰ、Ａ、ａ、Ｃ、ｃ）を有するパケット７５３を送信する。この場合も、ルータ７１０は、パケット７５３の送信元ＩＰアドレスをＮに変換するが、送信元ポート番号はｍ、ｎとは異なるポート番号ｐに変換する。
【００７５】
このように、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴは、一組のトランスポートプロトコル、送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレス、宛先ポート番号の組に対して、一組の変換先の送信元ＩＰアドレス、変換先の送信元ポート番号を割り当てるようなアドレス変換アルゴリズムを適用する。
【００７６】
ところで、インターネットから転送されてきた応答のパケットを、ルータがローカルエリアネットワークへ転送するためには、応答のパケットの転送先が唯一に決まる必要がある。
【００７７】
例えば、同図において、通信装置７００がヘッダ（ＴＣＰ、Ａ、ａ、Ｂ、ｂ２）を有するパケット７５２、ヘッダ（ＴＣＰ、Ａ、ｂ、Ｂ、ｂ２）を有するパケット７５４を送信する。ここで、仮に、ルータ７１０がパケット７５２とパケット７５４とに対して同じ変換先の送信元ポート番号ｍを割り当てるとすると、どちらのパケットもパケット（ＴＣＰ、Ｎ、ｍ、Ｂ、ｂ２）に変換されることになる（同図には図示せず）。
【００７８】
この後、ルータ７１０がサーバ７４１からヘッダ（ＴＣＰ、Ｂ、ｂ２、Ｎ、ｍ）を有するパケットを受信したとすると、ルータ７１０は通信装置７００のポート番号ａとポート番号ｂのどちらに転送すればよいのか判断できなくなる。
【００７９】
そこで、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴは、パケットのトランスポートプロトコル、宛先ＩＰアドレス、宛先ポート番号、変換先の送信元ＩＰアドレス、変換先の送信元ポート番号の組が、一意に定まるように対応を決定する。
【００８０】
なお、以上のＳｙｍｍｅｔｒｉｃ  ＮＡＴの性質から、複数のパケットにおいて、宛先ＩＰアドレスまたは宛先ポート番号が異なるならば、同じ変換先の送信元ＩＰアドレス、変換先の送信元ポート番号を割り当てることも可能である。
【００８１】
例えば、図７において、通信装置７００がヘッダ（ＴＣＰ、Ａ、ａ、Ｃ、ｃ）を有するパケット７５３、ヘッダ（ＴＣＰ、Ａ、ｂ、Ｂ、ｂ２）を有するパケット７５４を送信した場合、ルータ７１０は、パケット７５３、パケット７５４共に送信元ＩＰアドレス、送信元ポート番号をそれぞれＮ、ｐに変換する。
【００８２】
次に、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴにおける外部からのアクセスに対する制限処理について説明する。Ｓｙｍｍｅｔｒｉｃ  ＮＡＴは、インターネットから転送されてきたパケットに対して、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴと同様の制限を設けている。
【００８３】
すなわち、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴは、過去にローカルエリアネットワーク７２０からインターネット１３０へ転送したパケットの変換先として用いたＩＰアドレスおよびポート番号宛てのパケットをインターネット１３０から受信した場合、送信元ＩＰアドレスおよび送信元ポート番号が当該の過去に転送したパケットの宛先ＩＰアドレスおよび宛先ポート番号と一致する場合のみ、そのパケットの転送を許可しそれ以外のパケットは転送せずに破棄するという制限を設けている。
【００８４】
以上、非特許文献１に記載された４タイプのＮＡＴ機能におけるアドレス変換アルゴリズムおよび外部からのアクセスに対する制限処理について示した。しかし、現在普及しているルータの中には、これら４タイプのＮＡＴ機能のいずれとも異なる動作を行うルータが存在する。以下にこのようなＮＡＴ機能を有するルータの一例について説明する。
【００８５】
図８は、非特許文献１に記載された４タイプのＮＡＴ機能のいずれとも異なる動作を行うルータを利用したネットワーク構成および通信方法の一例を示した説明図である。
【００８６】
同図に示すように、ローカルエリアネットワーク８２０に属する通信装置８００が、４タイプのＮＡＴ機能のいずれとも異なる動作を行うルータ８１０に接続され、プライベートＩＰアドレスＡが割り当てられている。また、ルータ８１０はインターネット１３０に直接接続され、グローバルＩＰアドレスＮが割り当てられている。また、サーバ８４１およびサーバ８４２はインターネット１３０に直接接続され、それぞれグローバルＩＰアドレスＢ、Ｃが割り当てられている。
【００８７】
同図に示すように、通信装置８００がサーバ８４１に送信したヘッダ（ＴＣＰ、Ａ、ａ、Ｂ、ｂ１）を有するパケット８５１、ヘッダ（ＴＣＰ、Ａ、ａ、Ｂ、ｂ２）を有するパケット８５２、ヘッダ（ＴＣＰ、Ａ、ａ、Ｃ、ｃ）を有するパケット８５３、ヘッダ（ＴＣＰ、Ａ、ｂ、Ｃ、ｃ）を有するパケット８５４を、ルータ８１０が、それぞれヘッダ（ＴＣＰ、Ｎ、ｎ、Ｂ、ｂ１）、ヘッダ（ＴＣＰ、Ｎ、ｍ、Ｂ、ｂ２）、ヘッダ（ＴＣＰ、Ｎ、ｎ、Ｃ、ｃ）、ヘッダ（ＴＣＰ、Ｎ、ｍ、Ｃ、ｃ）を有するパケットに変換する。なお、ｎ≠ｍである。
【００８８】
このように、ルータ８１０は、ローカルエリアネットワーク８２０から送信された複数のパケットの送信元ＩＰアドレス、送信元ポート番号が同一であっても、送信元ＩＰアドレス、送信元ポート番号を、異なる値に変換する場合がある（例えば、パケット８５１とパケット８５２）。また、パケットの送信元ＩＰアドレス、送信元ポート番号が異なっていても、宛先ＩＰアドレスまたは宛先ポート番号も異なるならば、送信元ＩＰアドレス、送信元ポート番号を、同一の値に変換する場合がある（例えば、パケット８５２とパケット８５４）。
【００８９】
このため、ルータ８１０は、従来のＮＡＴタイプの判定方法によると、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴと判定される場合と、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴであると判定される場合がある。従来のＮＡＴタイプの判定方法については後述する。
【００９０】
次に、ＮＡＴのタイプによる２つの通信装置の接続可否について説明する。図９は、直接通信を行う２つの通信装置が接続されているルータのＮＡＴ機能のタイプの組み合わせと接続可否の関係を示した説明図である。同図に示すように、一方のルータのＮＡＴ機能がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴかＲｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴである場合、および両方のルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴである場合は、２つの通信装置は直接通信を行うことができる。
【００９１】
また、一方のルータのＮＡＴ機能がＳｙｍｍｅｔｒｉｃ  ＮＡＴでかつもう一方のルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴである場合、および両方のルータのＮＡＴ機能がＳｙｍｍｅｔｒｉｃ  ＮＡＴである場合は、２つの通信装置は直接通信を行うことができない。なお、特許文献１または非特許文献２によれば、このような組み合わせにおいても通信を行うことができることが示されているが、通信開始まで長時間を要する場合があり現実的な方法ではないため、ここでは通信ができないものとして記載している。
【００９２】
このように、互いに通信を行う通信装置がそれぞれどのタイプのルータの配下に存在するかによって、当該通信装置間の通信の可否が決定されるため、事前にルータのＮＡＴ機能のタイプを判定する必要がある。特に、上述の４タイプのＮＡＴ機能のいずれとも異なる動作を行うルータのように、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴと判定される場合もあれば、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴと判定される場合もあるルータが存在するため、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであるか、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴ（または４タイプ以外のＮＡＴ機能を有するルータ）であるかを正確に判定する必要がある。
【００９３】
次に、従来の技術によりＮＡＴ機能のタイプを判定する方法について説明する。図１０は、非特許文献１の方法により、ルータ配下の通信装置が、自装置が接続されているルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであるか、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴであるかを判別する方法の一例を説明した説明図である。
【００９４】
同図に示すように、通信装置１０００がルータ１０１０に接続され、プライベートＩＰアドレスＡが割り当てられている。また、ルータ１０１０はインターネット１３０に直接接続され、グローバルＩＰアドレスＮが割り当てられている。また、サーバ１０４０はインターネット１３０に直接接続され、それぞれグローバルＩＰアドレスＳが割り当てられている。ここで、サーバ１０４０は、ＮＡＴ検査要求メッセージに対して、そのパケットの送信元ＩＰアドレス、送信元ポート番号をパケットのデータ部に書き込み、ＮＡＴ検査応答メッセージとして返信する機能を有しているものとする。
【００９５】
まず、通信装置１０００は、ヘッダ（ＵＤＰ、Ａ、ａ、Ｓ、ｘ）を有し、ＮＡＴ検査要求メッセージを含んだパケット１０５１をサーバ１０４０へ送信する。ルータ１０１０は、パケット１０５１を、ヘッダ（ＵＤＰ、Ｎ、ｎ、Ｓ、ｘ）を有するパケット１０５２に変換し、インターネット１３０に転送する。
【００９６】
次に、サーバ１０４０がパケット１０５２を受信すると、サーバ１０４０は、ＮＡＴ検査応答メッセージを、ヘッダ（ＵＤＰ、Ｓ、ｘ、Ｎ、ｎ）を有するパケット１０５３として送信する。パケット１０５３のＮＡＴ検査応答メッセージには、パケット１０５２の送信元ＩＰアドレスＮ、送信元ポート番号ｎが記述される。ルータ１０１０がパケット１０５３を受信すると、パケット１０５３を、ヘッダ（ＵＤＰ、Ｓ、ｘ、Ａ、ａ）を有するパケット１０５４に変換し、通信装置１０００に転送する。
【００９７】
次に、通信装置１０００は、パケット１０５４を受信した後、宛先ポート番号を変更して、ヘッダ（ＵＤＰ、Ａ、ａ、Ｓ、ｙ）を有し、ＮＡＴ検査要求メッセージを含んだパケット１０５５をサーバ１０４０へ送信する。ルータ１０１０は、パケット１０５５を、ヘッダ（ＵＤＰ、Ｎ、ｍ、Ｓ、ｙ）を有するパケット１０５６に変換し、インターネット１３０に転送する。
【００９８】
パケット１０５５の送信元ＩＰアドレス、送信元ポート番号は、パケット１０５１の送信元ＩＰアドレス、送信元ポート番号と同一であるため、もしルータ１０１０がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであるならば、ｍ＝ｎとなる。Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴにおいては、トランスポートプロトコル、送信元ＩＰアドレス、送信元ポート番号が同一であれば、同一の変換先の送信元ＩＰアドレス、変換先の送信元ポート番号の組を割り当てるからである。
【００９９】
一方、もしルータ１０１０がＳｙｍｍｅｔｒｉｃ  ＮＡＴであるならば、ｍ≠ｎとなる。Ｓｙｍｍｅｔｒｉｃ  ＮＡＴにおいては、一組のトランスポートプロトコル、送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレス、宛先ポート番号の組に対して、一組の変換先の送信元ＩＰアドレス、変換先の送信元ポート番号を割り当てるからである。
【０１００】
次に、サーバ１０４０がパケット１０５６を受信すると、サーバ１０４０は、ＮＡＴ検査応答メッセージを、ヘッダ（ＵＤＰ、Ｓ、ｙ、Ｎ、ｍ）を有するパケット１０５７として送信する。パケット１０５７のＮＡＴ検査応答メッセージには、パケット１０５６の送信元ＩＰアドレスＮ、送信元ポート番号ｍが記述される。ルータ１０１０がパケット１０５７を受信すると、パケット１０５７を、ヘッダ（ＵＤＰ、Ｓ、ｙ、Ａ、ａ）を有するパケット１０５８に変換し、通信装置１０００に転送する。
【０１０１】
次に、通信装置１０００は、パケット１０５４、パケット１０５８のＮＡＴ検査応答メッセージに記述されたポート番号、ｎとｍを比較する。もし、ｎ＝ｍならば、ルータ１０１０はＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであると判定する。一方、もしｎ≠ｍならば、ルータ１０１０はＳｙｍｍｅｔｒｉｃ  ＮＡＴであると判定する。
【０１０２】
このように、従来の方法においては、ＮＡＴ検査要求メッセージを２回送信し、受信した２つのＮＡＴ検査応答メッセージを比較してＮＡＴのタイプを判定する。しかし、４タイプのＮＡＴ機能のいずれとも異なる動作を行うルータにおいては、送信する２つのＮＡＴ検査要求メッセージの取り方によって、返信されるＮＡＴ検査応答メッセージに記述されたポート番号が同一（ｎ＝ｍ）になる場合があり、誤ってＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴと判定されてしまうことがあった。
【０１０３】
本発明においては、ＮＡＴ検査要求メッセージの送信を繰り返し行うことにより、検査しているルータがＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないことを正確に判定すること、および、ＮＡＴ検査応答メッセージが受信できなくなった場合に、確認のためのＮＡＴ検査要求メッセージを送信し、それに対するＮＡＴ検査応答メッセージの受信可否により、検査しているルータがＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであるか否かを正確に判定することができる。
【０１０４】
次に、このように構成された本実施の形態にかかる通信装置１００による通信処理について説明する。図１１は、本実施の形態にかかる通信装置１００おける変換方法判定処理の全体の流れを示すフローチャートである。
【０１０５】
まず、第１の変換方法判定部１０５は、通信装置１００において送信元ＩＰアドレス・ポート番号として利用可能なＩＰアドレス・ポート番号の組み合わせ（以下、Ｓｒｃという）の中から、一組の組み合わせとしてＩＰアドレスＡ、ポート番号ａを選択する（ステップＳ１１０１）。
【０１０６】
次に、第１の変換方法判定部１０５は、変換方法判定処理の第１段階の処理を実行する（ステップＳ１１０２）。第１段階の処理は、後述する第２段階の処理において比較対象となる最初のＮＡＴ検査応答メッセージを保存しておく処理を行うものである。第１段階の処理の詳細については後述する。
【０１０７】
第１の変換方法判定部１０５は、第１段階の処理を実行した後、ルータ１１０を介してサーバ１４０から応答があったか否かを判断する（ステップＳ１１０３）。応答がなかった場合は（ステップＳ１１０３：ＮＯ）、第１の変換方法判定部１０５は、ネットワークエラーであることを出力し、変換方法判定処理を終了する（ステップＳ１１０４）。
【０１０８】
応答があった場合は（ステップＳ１１０３：ＹＥＳ）、第１の変換方法判定部１０５は、ルータがＮＡＴ機能を有するか否かを判断する（ステップＳ１１０５）。実際の判断は、後述する第１段階の処理において、送信元ＩＰアドレスが変換されずにインターネットに送信されたか否かを判定することにより行い、本ステップでは、その結果によりルータがＮＡＴ機能を有するか否かを判断する。
【０１０９】
ＮＡＴ機能を有さない場合は（ステップＳ１１０５：ＮＯ）、第１の変換方法判定部１０５は、ルータがＮＡＴ機能を有さないことを出力して変換方法判定処理を終了する（ステップＳ１１０６）。
【０１１０】
ＮＡＴ機能を有する場合は（ステップＳ１１０５：ＹＥＳ）、第１の変換方法判定部１０５は、Ｓｒｃから新たな送信元ＩＰアドレス・ポート番号の組み合わせ（Ｂ１、ｂ１）を選択する（ステップＳ１１０７）。なお、このときの組み合わせは、第１段階の処理で使用した組み合わせ（Ａ、ａ）と同一でもよい。第２段階の処理では、宛先ポート番号は、第１段階の処理で使用したポート番号と異なるものを使用するので、ＮＡＴ検査要求メッセージそのものは第１段階の処理と異なる値になるからである。
【０１１１】
次に、第１の変換方法判定部１０５は、変換方法判定処理の第２段階の処理を実行する（ステップＳ１１０８）。第２段階の処理は、第１段階の処理において返信されたＮＡＴ検査応答メッセージと、新たに送信したＮＡＴ検査要求メッセージに対するＮＡＴ検査応答メッセージとを比較し、ルータのＮＡＴ機能のタイプを判定するものである。第２段階の処理の詳細については後述する。
【０１１２】
第１の変換方法判定部１０５は、第２段階の処理を実行した後、ルータ１１０を介してサーバ１４０から応答があったか否かを判断する（ステップＳ１１０９）。応答があった場合は（ステップＳ１１０９：ＮＯ）、第１の変換方法判定部１０５は、第２段階の処理においてルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないと判定されたか否かを判断する（ステップＳ１１１０）。
【０１１３】
ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないと判定された場合は（ステップＳ１１１０：ＹＥＳ）、第１の変換方法判定部１０５は、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないことを出力して、変換方法判定処理を終了する（ステップＳ１１１１）。
【０１１４】
ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないと判定されていない場合は（ステップＳ１１１０：ＮＯ）、さらに判定処理を継続するために、ステップＳ１１０７のＩＰアドレス・ポート番号の選択処理を実行する。この場合、既に選択したＩＰアドレス・ポート番号の組み合わせを除いて、Ｓｒｃから新たなＩＰアドレス・ポート番号の組み合わせを選択する。
【０１１５】
ステップＳ１１０９において、応答なしと判断された場合は（ステップＳ１１０９：ＹＥＳ）、第２の変換方法判定部１０４が、変換方法判定処理の第３段階の処理を実行する（ステップＳ１１１２）。
【０１１６】
ステップＳ１１１２における第３段階の処理は、ＮＡＴ検査応答メッセージが受信できなくなった場合に、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであるか否かを最終的に確認するためのＮＡＴ検査要求メッセージを送信し、それに対するＮＡＴ検査応答メッセージの受信可否により、ルータのＮＡＴ機能のタイプを判定するものである。第３段階の処理の詳細については後述する。
【０１１７】
第２の変換方法判定部１０４は、第３段階の処理を実行した後、第３段階の処理の結果を出力して変換方法判定処理を終了する（ステップＳ１１１３）。
【０１１８】
このように、本実施の形態にかかる通信装置１００においては、第２段階の処理により、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないこと（Ｓｙｍｍｅｔｒｉｃ  ＮＡＴまたは４タイプ以外のＮＡＴ機能を有するルータであること）を、第３段階の処理により、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであること、または、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないことを正確に判定することができる。
【０１１９】
次に、ステップＳ１１０２における第１段階の処理の詳細について説明する。図１２は、本実施の形態にかかる通信装置１００おける変換方法判定処理の第１段階の処理の全体の流れを示すフローチャートである。
【０１２０】
まず、第１の変換方法判定部１０５は、トランスポートプロトコルであるＵＤＰと、ステップＳ１１０１で選択した送信元ＩＰアドレスＡ、送信元ポート番号ａと、宛先ＩＰアドレスＳ、宛先ポート番号ｘとを含むＮＡＴ検査要求メッセージを作成する（ステップＳ１２０１）。以下では、ＮＡＴ検査要求メッセージを（ＵＤＰ、Ａ、ａ、Ｓ、ｘ）のように表す。なお、トランスポートプロトコルはＵＤＰに限られるものではなく、サーバ１４０とメッセージの送受信を行うことができるものであれば、ＴＣＰなどのあらゆるトランスポートプロトコルを適用することができる。
【０１２１】
次に、第１の変換方法判定部１０５は、第１の送信部１０１、第１の受信部１０３と協働してＮＡＴ検査要求メッセージ送受信処理を実行する（ステップＳ１２０２）。ＮＡＴ検査要求メッセージ送受信処理では、ステップＳ１２０１において作成したＮＡＴ検査要求メッセージの送信、それに対するＮＡＴ検査応答メッセージの受信処理が実行される。ＮＡＴ検査要求メッセージ送受信処理の詳細については後述する。
【０１２２】
第１の変換方法判定部１０５は、ＮＡＴ検査要求メッセージ送受信処理の結果、応答があったか否かを判断する（ステップＳ１２０３）。応答がなかった場合は（ステップＳ１２０３：ＮＯ）、第１の変換方法判定部１０５は、応答なしを出力して第１段階の処理を終了する（ステップＳ１２０４）。
【０１２３】
応答があった場合は（ステップＳ１２０３：ＹＥＳ）、第１の変換方法判定部１０５は、ＮＡＴ検査応答メッセージに記述された送信元ＩＰアドレス（Ｎとする）と、ＮＡＴ検査要求メッセージに含まれる送信元ＩＰアドレス（Ａ）を比較し、両者が不一致（Ｎ≠Ａ）であるかを判断する（ステップＳ１２０５）。
【０１２４】
両者が一致（Ｎ＝Ａ）する場合は（ステップＳ１２０５：ＮＯ）、第１の変換方法判定部１０５は、ルータ１１０がＮＡＴ機能を有さないことを出力して、第１段階の処理を終了する（ステップＳ１２０６）。両者が一致するということは、送信元ＩＰアドレスが変換されずにインターネットに送信されたこと、すなわち、通信装置１００はグローバルＩＰアドレスを有し、ＮＡＴ機能によりＩＰアドレスを変換する必要がないことを意味するからである。なお、ルータ１１０がＮＡＴ機能を有さないことが事前に明らかな場合は、上述の判定処理（ステップＳ１２０５）を省略してもよい。
【０１２５】
両者が不一致（Ｎ≠Ａ）である場合は（ステップＳ１２０５：ＹＥＳ）、第１の変換方法判定部１０５は、ＮＡＴ変換結果としてトランスポートプロトコル（ＵＤＰ）、変換前の送信元ＩＰアドレス（Ａ）、変換前の送信元ポート番号（ａ）、宛先ＩＰアドレス（Ｓ）、宛先ポート番号（ｘ）、変換後の送信元ＩＰアドレス（Ｎ）、変換後の送信元ポート番号（ｍ）を、応答メッセージ記憶部１０７に保存し、第１段階の処理を終了する（ステップＳ１２０７）。以下では、ＮＡＴ変換結果を（ＵＤＰ、Ａ、ａ、Ｓ、ｘ、Ｎ、ｍ）のように表す。
【０１２６】
次に、ステップＳ１２０２におけるＮＡＴ検査要求メッセージ送受信処理の詳細について説明する。図１３は、本実施の形態にかかる通信装置１００おけるＮＡＴ検査要求メッセージ送受信処理の全体の流れを示すフローチャートである。
【０１２７】
ＮＡＴ検査要求メッセージ送受信処理は、第１段階の処理におけるステップＳ１２０２、第２段階の処理におけるステップＳ１４０２、第３段階の処理におけるステップＳ１６０３において実行される処理であるが、処理内容が共通するため、以下においてはステップＳ１２０２に示された第１段階の処理を例にとって説明する。なお、第３段階の処理においては、第１の送信部１０１、第１の受信部１０３、第１の変換方法判定部１０５の代わりに、それぞれ第２の送信部１０２、第２の受信部１０４、第２の変換方法判定部１０６がＮＡＴ検査要求メッセージ送受信処理を実行する。
【０１２８】
まず、第１の送信部１０１が、ＮＡＴ検査要求メッセージをサーバ１４０に対して送信する（ステップＳ１３０１）。次に、第１の受信部１０３が、第１の送信部１０１により送信されたＮＡＴ検査要求メッセージに対するＮＡＴ検査応答メッセージを受信するか、タイムアウトになるまで待機する（ステップＳ１３０２）。
【０１２９】
次に、第１の変換方法判定部１０５は、第１の受信部１０３がＮＡＴ検査応答メッセージを受信したか否かを判断し（ステップＳ１３０３）、受信していない場合は（ステップＳ１３０３：ＮＯ）、送信回数が予め定められた閾値を超えたか否かを判断する（ステップＳ１３０４）。ここで、ＮＡＴ検査応答メッセージを受信しないとは、原則として、ルータ１１０が利用可能なすべての変換先のＩＰアドレス、変換先のポート番号の組を使いきったため、通信装置１００からのＮＡＴ検査要求メッセージを転送できなくなったことを意味する。しかし、なんらかの一時的なネットワークの障害等によりメッセージが受信できない場合もあるため、再送処理を行うことにより判断の精度向上を図っている。
【０１３０】
送信回数が予め定められた閾値を超えていない場合は（ステップＳ１３０４：ＮＯ）、第１の変換方法判定部１０５は送信回数をカウントアップし、第１の送信部１０１によるＮＡＴ検査要求メッセージの送信処理（ステップＳ１３０１）を繰り返し実行する。
【０１３１】
送信回数が予め定められた閾値を超えた場合は（ステップＳ１３０４：ＹＥＳ）、第１の変換方法判定部１０５は、応答なしを出力してＮＡＴ検査要求メッセージ送受信処理を終了する（ステップＳ１３０５）。
【０１３２】
ステップＳ１３０３において、第１の受信部１０３がＮＡＴ検査応答メッセージを受信したと判断した場合は（ステップＳ１３０３：ＹＥＳ）、第１の変換方法判定部１０５は、受信したＮＡＴ検査応答メッセージを出力してＮＡＴ検査要求メッセージ送受信処理を終了する（ステップＳ１３０６）。
【０１３３】
このように、一時的にネットワークの障害等によりパケットが損失しても、複数回ＮＡＴ検査要求メッセージを送信することにより、ＮＡＴ検査応答メッセージを受信できる可能性を高めることができる。なお、パケットの損失は発生しないと想定し、送信回数の閾値を０に設定して、１度しかＮＡＴ検査応答メッセージを送信しないように構成してもよい。
【０１３４】
次に、ステップＳ１１０８における第２段階の処理の詳細について説明する。図１４は、本実施の形態にかかる通信装置１００おける変換方法判定処理の第２段階の処理の全体の流れを示すフローチャートである。
【０１３５】
まず、第１の変換方法判定部１０５は、ＮＡＴ検査要求メッセージ（ＵＤＰ、Ｂ１、ｂ１、Ｓ、ｙ）を作成する（ステップＳ１４０１）。ここで、Ｂ１、ｂ１の組は、第２段階の処理を繰り返すたびにステップＳ１１０７において新たな組が選択されるが、宛先ＩＰアドレスＳおよび宛先ポート番号ｙは常に同一の値を使用する。また、宛先ポート番号ｙは第１段階における宛先ポート番号ｘとは異なる値にする。なお、ＩＰアドレスＢ１を変更せず、送信元ポート番号のみを変更するように構成してもよい。このように構成すると、通信装置１００が、自装置に割り当てられたＩＰアドレスを頻繁に変更する必要がなくなるという利点がある。
【０１３６】
次に、第１の変換方法判定部１０５は、第１の送信部１０１、第１の受信部１０３と協働し、上述したＮＡＴ検査要求メッセージ送受信処理を実行する（ステップＳ１４０２）。
【０１３７】
次に、第１の変換方法判定部１０５は、ＮＡＴ検査要求メッセージ送受信処理の結果、応答があったか否かを判断する（ステップＳ１４０３）。応答がなかった場合は（ステップＳ１４０３：ＮＯ）、第１の変換方法判定部１０５は、応答なしを出力して第２段階の処理を終了する（ステップＳ１４０４）。
【０１３８】
応答があった場合は（ステップＳ１４０３：ＹＥＳ）、第１の変換方法判定部１０５は、ＮＡＴ変換結果（ＵＤＰ、Ｂ１、ｂ１、Ｓ、ｙ、Ｎ１、ｎ１）を判定処理に出力する（ステップＳ１４０５）。ここで、Ｎ１、ｎ１は、それぞれ第２段階の処理においてルータ１１０を介してサーバ１４０から返信されたＮＡＴ検査応答メッセージに含まれる変換後の送信元ＩＰアドレス、変換後の送信元ポート番号を表す。
【０１３９】
次に、第１の変換方法判定部１０５は、判定処理を実行する（ステップＳ１４０６）。判定処理は、第１段階の処理におけるＮＡＴ変換結果と、第２の処理におけるＮＡＴ変換結果とを比較して、ルータのＮＡＴ機能のタイプを判定するものである。判定処理の詳細については後述する。判定処理の後、第１の変換方法判定部１０５は、判定処理の結果を出力して第２段階の処理を終了する（ステップＳ１４０７）。
【０１４０】
次に、ステップＳ１４０６の判定処理の詳細について説明する。図１５は、本実施の形態にかかる通信装置１００おける判定処理の全体の流れを示すフローチャートである。
【０１４１】
まず、第１の変換方法判定部１０５は、第１段階の処理におけるＮＡＴ変換結果（ＵＤＰ、Ａ、ａ、Ｓ、ｘ、Ｎ、ｍ）を応答メッセージ記憶部１０７から取得する（ステップＳ１５０１）。次に、第１の変換方法判定部１０５は、第１段階の処理におけるＮＡＴ変換結果（ＵＤＰ、Ａ、ａ、Ｓ、ｘ、Ｎ、ｍ）と、第２段階の処理におけるＮＡＴ変換結果（ＵＤＰ、Ｂ１、ｂ１、Ｓ、ｙ、Ｎ１、ｎ１）とを比較する（ステップＳ１５０２）。
【０１４２】
まず、第１の変換方法判定部１０５は、Ａ＝Ｂ１かつａ＝ｂ１であるか否かを判断する（ステップＳ１５０３）。そして、Ａ＝Ｂ１でないか、ａ＝ｂ１でない場合は（ステップＳ１５０３：ＮＯ）、Ｎ＝Ｎ１かつｍ＝ｎ１であるか否かの判断を行う（ステップＳ１５０４）。
【０１４３】
Ｎ＝Ｎ１かつｍ＝ｎ１である場合（ステップＳ１５０４：ＹＥＳ）、第１の変換方法判定部１０５は、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないことを出力して判定処理を終了する（ステップＳ１５０６）。Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴは、送信元ＩＰアドレスまたは送信元ポート番号が異なれば（Ａ＝Ｂ１でないか、ａ＝ｂ１でない）、必ず異なるＩＰアドレス、ポート番号を変換先の送信元ＩＰアドレス、変換先の送信元ポート番号として設定するが、「Ｎ＝Ｎ１かつｍ＝ｎ１である」という比較結果はこの条件に反するからである。
【０１４４】
ステップＳ１５０４において、Ｎ＝Ｎ１でないか、ｍ＝ｎ１でない場合（ステップＳ１５０４：ＮＯ）、第１の変換方法判定部１０５は、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴの可能性があることを出力して判定処理を終了する（ステップＳ１５０８）。まだルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないと断定できないため、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴの可能性があることを出力し、第２段階の処理を繰り返すためである。
【０１４５】
ステップＳ１５０３において、Ａ＝Ｂ１かつａ＝ｂ１であると判断された場合は（ステップＳ１５０３：ＹＥＳ）、さらにＮ＝Ｎ１かつｍ＝ｎ１であるか否かの判断を行う（ステップＳ１５０５）。
【０１４６】
Ｎ＝Ｎ１でないか、ｍ＝ｎ１でない場合（ステップＳ１５０５：ＮＯ）、第１の変換方法判定部１０５は、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないことを出力して判定処理を終了する（ステップＳ１５０６）。Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴは、送信元ＩＰアドレスまたは送信元ポート番号が同一であれば（Ａ＝Ｂ１かつａ＝ｂ１）、必ず同一のＩＰアドレス、ポート番号を変換先の送信元ＩＰアドレス、変換先の送信元ポート番号として設定するが、「Ｎ＝Ｎ１でないか、ｍ＝ｎ１でない」という比較結果はこの条件に反するからである。
【０１４７】
ステップＳ１５０５において、Ｎ＝Ｎ１かつｍ＝ｎ１であると判断した場合（ステップＳ１５０５：ＹＥＳ）、第１の変換方法判定部１０５は、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴの可能性があることを出力して判定処理を終了する（ステップＳ１５０７）。
【０１４８】
次に、ステップＳ１１１２における第３段階の処理の詳細について説明する。図１６は、本実施の形態にかかる通信装置１００おける変換方法判定処理の第３段階の処理の全体の流れを示すフローチャートである。
【０１４９】
まず、第２の変換方法判定部１０６は、Ｓｒｃの中から未だ使用したことのない組み合わせのＩＰアドレス、ポート番号の組か、第２段階の処理において応答なしが出力された場合（ステップＳ１４０４）に使用していたＩＰアドレス、ポート番号の組を、第３段階の処理における判定用のＩＰアドレスＢ、ポート番号ｂの組として選択する（ステップＳ１６０１）。
【０１５０】
次に、第２の変換方法判定部１０６は、ＮＡＴ検査要求メッセージ（ＵＤＰ、Ｂ、ｂ、Ｓ、ｚ）を作成する（ステップＳ１６０２）。ここで、Ｓは第１段階および第２段階の処理で使用したＩＰアドレスと同一の値であり、ｚは第１段階および第２段階の処理でそれぞれ使用したポート番号ｘ、ｙとは異なる値である。
【０１５１】
次に、第２の変換方法判定部１０６は、第２の送信部１０２、第２の受信部１０４と協働し、上述したＮＡＴ検査要求メッセージ送受信処理を実行し（ステップＳ１６０３）、その結果、応答が合ったか否かを判断する（ステップＳ１６０４）。
【０１５２】
第２の変換方法判定部１０６は、応答があった場合は（ステップＳ１６０４：ＹＥＳ）、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないことを出力し（ステップＳ１６０５）、応答がなかった場合は（ステップＳ１６０４：ＮＯ）、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであることを出力して（ステップＳ１６０６）第３段階の処理を終了する。
【０１５３】
ステップＳ１６０５において、応答があるか否かによりルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴかどうかを判定できる理由について以下に説明する。
【０１５４】
上述のように、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴは、一組のトランスポートプロトコル、送信元ＩＰアドレス、送信元ポート番号の組に対して、一組の変換先の送信元ＩＰアドレス、変換先の送信元ポート番号の組を割り当てる。また、第３段階の処理においては、第２段階の処理で、ルータ１１０が使用できるすべての変換先のＩＰアドレス・ポート番号の組が使い果たされていることが前提となっている。
【０１５５】
したがって、ステップＳ１６０１で未使用のＩＰアドレス・ポート番号の組を使用した場合、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであれば、当該未使用のＩＰアドレス・ポート番号の組に対して、今まで割り当てていない変換先のＩＰアドレス・ポート番号を設定しなければならないが、割り当てられるすべての組み合わせを使いきっているため、設定することができない。すなわち、サーバ１４０に対しパケットを送信できず、ＮＡＴ検査要求メッセージに対する応答も受信できないことになる。
【０１５６】
同様に、ステップＳ１６０１で応答受信不可時のＩＰアドレス・ポート番号の組を使用した場合、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであれば、宛先ポート番号をｚに変更したとしても、第２段階の処理で割り当てができず受信不可だった変換先ＩＰアドレス・ポート番号を再度割り当てようとするため、設定することができない。このため、サーバ１４０に対しパケットを送信できず、ＮＡＴ検査要求メッセージに対する応答も受信できないことになる。
【０１５７】
このように、第３段階の処理において、未使用のＩＰアドレス・ポート番号の組か、第２段階の処理において応答なしが出力された場合に使用していたＩＰアドレス・ポート番号の組を用いてＮＡＴ検査要求メッセージを送信し、それに対するＮＡＴ検査応答メッセージの受信可否により、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであるか否かを判定することができる。
【０１５８】
次に、本実施の形態にかかる通信装置１００における変換方法判定処理の具体例について説明する。図１７は、第１段階の処理から第３段階の処理までに送受信されるパケットの一例を示す模式図である。
【０１５９】
通信装置１００は、第１段階の処理において、ＩＰアドレスＡ、ポート番号ａからＮＡＴ検査要求メッセージを送信していることを前提とする。この状態で、第２段階の処理の最初のＮＡＴ検査要求メッセージ送信処理で（最初のステップＳ１１０７の処理）、ＩＰアドレスＢ１、ポート番号ｂ１からＮＡＴ検査要求メッセージを含むパケット１７０１を送信し、これに対するＮＡＴ検査応答メッセージを含むパケット１７０２を受信する。
【０１６０】
第１の変換方法判定部１０５が、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないと判定しなかった場合は（ステップＳ１１１０：ＮＯ）、新たなＩＰアドレスＢ２、ポート番号ｂ２を選択し（ステップＳ１１０７）、同じ処理を繰り返す。なお、第２段階の処理では、宛先ＩＰアドレスＳおよび宛先ポート番号ｙを固定にして送信を行う。
【０１６１】
同図においては、上記処理を繰り返してもルータ１１０がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないと判定できなかった場合の例を示している。すなわち、繰り返しの処理において、ルータ１１０は、すべて異なる変換先のＩＰアドレス、変換先のポート番号の組を割り当てている。例えば、ルータ１１０は、パケット１７０１とパケット１７０３に対して、異なる変換先のＩＰアドレス、ポート番号の組（Ｎ１、ｎ１）、（Ｎ２、ｎ２）を割り当てている。
【０１６２】
その結果、ルータ１１０は、使用できるすべてのＩＰアドレス、ポート番号の組を使い果たし、通信装置１００がＩＰアドレスＢｍ、ポート番号ｂｍからＮＡＴ検査要求メッセージを送信したときには、そのＮＡＴ検査要求メッセージを含むパケット１７０４を転送できなくなる。このため、通信装置１００は、ＮＡＴ検査応答メッセージを受信できなくなり（ステップＳ１１０９：ＹＥＳ）、第３段階の処理（ステップＳ１１１２）を行うことになる。
【０１６３】
ここで、通信装置１００が、第３段階の処理として、第２段階の処理で未使用であるＩＰアドレスＢ、ポート番号ｂから第２段階の処理と同じ宛先ＩＰアドレスＳ、第２段階の処理と異なる宛先ポート番号ｚを指定してＮＡＴ検査要求メッセージを含むパケット１７０５を送信したとする。
【０１６４】
ルータ１１０がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴではない場合、ルータ１１０は、以前に使用したＩＰアドレス、ポート番号の組を用いて、パケット１７０５の送信元ＩＰアドレス、送信元ポート番号を変更し、サーバ１４０に転送することができる。例えば、同図に示す例では、パケット１７０５の送信元ＩＰアドレス、送信元ポート番号として、以前使用したパケット１７０３の送信元ＩＰアドレス、送信元ポート番号の変換先と同一のＮ２、ｎ２を割り当ててパケット１７０５を転送している。
【０１６５】
このように、ルータ１１０がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴではない場合は、ルータ１１０はサーバ１４０へパケット１７０５を送信し、ＮＡＴ検査応答メッセージを含むパケット１７０６を受信することができる。
【０１６６】
一方、ルータ１１０がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴである場合、ルータ１１０は新たな送信元ＩＰアドレス・ポート番号である（Ｂ、ｂ）の組に対し、新たな変換先ＩＰアドレス・ポート番号の組を割り当てることができず、サーバ１４０にパケット１７０５を転送することができない（同図には図示せず）。このため、サーバ１４０からのＮＡＴ検査応答メッセージを含むパケット１７０６を受信することができない。
【０１６７】
したがって、第２の変換方法判定部１０６は、ＮＡＴ検査応答メッセージを含むパケット１７０６を受信できたか否かによって、ルータ１１０がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであるか否かを判定することができる（ステップＳ１６０４）。図１７においては、パケット１７０６が受信できたため、ルータ１１０はＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないと判定される場合の例が示されている。
【０１６８】
次に、本実施の形態にかかる通信装置１００における変換方法判定処理のより具体な例について説明する。図１８は、第２段階の処理において、ルータがＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないと判定される例を示した説明図である。
【０１６９】
同図においては、ローカルエリアネットワーク１２０に属する通信装置１００が、非特許文献１における４タイプのＮＡＴ機能のいずれとも異なる動作を行うルータ１１０に接続され、プライベートＩＰアドレスＡが割り当てられていることを前提とする。また、ルータ１１０はインターネット１３０に直接接続され、グローバルＩＰアドレスＮのみが割り当てられている。また、サーバ１４０はインターネット１３０に直接接続され、それぞれグローバルＩＰアドレスＳが割り当てられている。
【０１７０】
まず、通信装置１００は、第１段階の処理として、ヘッダ（ＵＤＰ、Ａ、１１１１、Ｓ、１２３）を有し、ＮＡＴ検査要求メッセージを含むパケット１８０１を送信する。ルータ１１０はパケット１８０１の送信元ＩＰアドレス、送信元ポート番号をそれぞれ変換し、ヘッダ（ＵＤＰ、Ｎ、１０００、Ｓ、１２３）を有するパケット１８０２をサーバに転送する。
【０１７１】
パケット１８０２を受信したサーバ１４０は、ＮＡＴ検査応答メッセージにＮ、１０００を記述したパケット１８０３を通信装置１００に返信する。通信装置１００は受信したパケット１８０４から、ＮＡＴ変換結果（ＵＤＰ、Ａ、１１１１、Ｓ、１２３、Ｎ、１０００）を得る。
【０１７２】
次に、通信装置１００は、第２段階の処理として、ヘッダ（ＵＤＰ、Ａ、２２２２、Ｓ、４５６）を有し、ＮＡＴ検査要求メッセージを含むパケット１８０５を送信する。ルータ１１０はパケット１８０５の送信元ＩＰアドレス、送信元ポート番号をそれぞれ変換し、ヘッダ（ＵＤＰ、Ｎ、３０００、Ｓ、４５６）を有するパケット１８０６を転送する。パケット１８０６を受信したサーバ１４０は、ＮＡＴ検査応答メッセージにＮ、３０００を記述したパケット１８０７を、通信装置１００に返信する。通信装置１００は受信したパケット１８０８から、ＮＡＴ変換結果（ＵＤＰ、Ａ、２２２２、Ｓ、４５６、Ｎ、３０００）を得る。
【０１７３】
次に通信装置１００は、２つのＮＡＴ変換結果（ＵＤＰ、Ａ、１１１１、Ｓ、１２３、Ｎ、１０００）、（ＵＤＰ、Ａ、２２２２、Ｓ、４５６、Ｎ、３０００）を比較する。この結果、ルータ１１０は、パケット１８０１、パケット１８０５の送信元ポート番号を、それぞれ異なる値に変換することが分かる。すなわち、通信装置１００が異なる送信元から異なる宛先へ２つのパケットを送信した結果、ルータ１１０はそれぞれ異なるポート番号を用いてＮＡＴ変換を行ったことになる。この変換結果は、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴによる変換結果と同一である。しかし、この時点ではルータ１１０が本当にＰｏｒｔ  ＲｅｓｔｒｉｃｔｅｄＣｏｎｅ  ＮＡＴであると断定することができない。
【０１７４】
そこで、通信装置１００は、さらに送信元を変更して、第２段階の処理を繰り返す。図１８においては、この繰り返しの最後に、通信装置１００がＮＡＴ検査要求メッセージを含むパケット１８０９を送信し、ルータ１１０がパケット１８０９を、ヘッダ（ＵＤＰ、Ｎ、１０００、Ｓ、４５６）を有するパケット１８１０に変換する。すなわち、パケット１８０１とパケット１８０９の送信元ポート番号が異なるにも関わらず、ルータ１１０は同じＩＰアドレスＮ、ポート番号１０００に変換する。
【０１７５】
これはＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴのアドレス変換アルゴリズムに反しており、通信装置１００は、サーバ１４０から受信したＮＡＴ検査応答メッセージを含むパケット１８１１を第１段階の処理におけるＮＡＴ変換結果と比較することによりこれを検知する（ステップＳ１５０３、ステップＳ１５０４）。そして、ステップＳ１５０６において、ルータ１１０がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないことを出力し処理を終了する（ステップＳ１１１１）。
【０１７６】
図１９は、第３段階の処理において、ルータがＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであると判定される例を示した説明図である。
【０１７７】
同図においては、ローカルエリアネットワーク１２０に属する通信装置１００が、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴタイプであるルータ１１０に接続され、プライベートＩＰアドレスＡが割り当てられていることを前提とする。また、ルータ１１０はインターネット１３０に直接接続され、グローバルＩＰアドレスＮのみが割り当てられている。また、サーバ１４０はインターネット１３０に直接接続され、それぞれグローバルＩＰアドレスＳが割り当てられている。
【０１７８】
まず、通信装置１００は、第１段階の処理として、ヘッダ（ＵＤＰ、Ａ、１１１１、Ｓ、１２３）を有し、ＮＡＴ検査要求メッセージを含むパケット１９０１を送信する。ルータ１１０はパケット１９０１の送信元ＩＰアドレス、送信元ポート番号をそれぞれ変換し、ヘッダ（ＵＤＰ、Ｎ、１０００、Ｓ、１２３）を有するパケット１９０２をサーバに転送する。
【０１７９】
パケット１９０２を受信したサーバ１４０は、ＮＡＴ検査応答メッセージにＮ、１０００を記述したパケット１９０３を通信装置１００に返信する。通信装置１００は受信したパケット１９０４から、ＮＡＴ変換結果（ＵＤＰ、Ａ、１１１１、Ｓ、１２３、Ｎ、１０００）を得る。
【０１８０】
次に、通信装置１００は、第２段階の処理として、ヘッダ（ＵＤＰ、Ａ、２２２２、Ｓ、４５６）を有し、ＮＡＴ検査要求メッセージを含むパケット１９０５を送信する。ルータ１１０はパケット１９０５の送信元ＩＰアドレス、送信元ポート番号をそれぞれ変換し、ヘッダ（ＵＤＰ、Ｎ、３０００、Ｓ、４５６）を有するパケット１９０６を転送する。パケット１９０６を受信したサーバ１４０は、ＮＡＴ検査応答メッセージにＮ、３０００を記述したパケット１９０７を、通信装置１００に返信する。通信装置１００は受信したパケット１９０８から、ＮＡＴ変換結果（ＵＤＰ、Ａ、２２２２、Ｓ、４５６、Ｎ、３０００）を得る。
【０１８１】
次に通信装置１００は、２つのＮＡＴ変換結果（ＵＤＰ、Ａ、１１１１、Ｓ、１２３、Ｎ、１０００）、（ＵＤＰ、Ａ、２２２２、Ｓ、４５６、Ｎ、３０００）を比較する。この結果、ルータ１１０は、パケット１９０１、パケット１９０５の送信元ポート番号を、それぞれ異なる値に変換することが分かる。すなわち、通信装置１００が異なる送信元から異なる宛先へ２つのパケットを送信した結果、ルータ１１０はそれぞれ異なるポート番号を用いてＮＡＴ変換を行ったことになる。この変換結果は、Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴによる変換結果と同一である。しかし、この時点ではルータ１１０が本当にＰｏｒｔ  ＲｅｓｔｒｉｃｔｅｄＣｏｎｅ  ＮＡＴであると断定することができない。
【０１８２】
そこで、通信装置１００は、さらに送信元を変更して、第２段階の処理を繰り返す。ルータ１１０はＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであるので、通信装置１００が送信した送信元ＩＰアドレス・ポート番号が異なるパケットに対して、異なるポート番号を変換先の送信元ポート番号として割り当てる。図１９においては、パケット１９０５とパケット１９０９の送信元ポート番号が、それぞれポート番号３０００、２０００に変換されている。
【０１８３】
ところで、図１９に示す例においては、ルータ１１０に割り当てられているグローバルＩＰアドレスは１つだけ（Ｎ）である。また、ＮＡＴ変換に利用できるポート番号は１から６５５３５までである。ルータ１１０はＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴなので、ルータ１１０がＮＡＴ変換に利用できるＩＰアドレス、ポート番号の組は、全部で６５５３５組である。すなわち、通信装置１００が、送信元ポート番号の異なる６５５３５個のＮＡＴ検査要求パケットを送信したとき（パケット１９０９を送信したとき）、ルータ１１０はＮＡＴ変換に利用可能な全てのＩＰアドレス、ポート番号の組を使い果たすことになる。
【０１８４】
図１９に示す例では、ルータ１１０がＮＡＴ変換に利用可能な全てのＩＰアドレス、ポート番号の組を使い果たした状態において、通信装置１００が、ＮＡＴ検査要求メッセージを含むパケット１９１０を送信する。しかし、ルータ１１０は利用可能なＩＰアドレス、ポート番号の組を全て使い果たしているので、パケット１９１０の送信元ＩＰアドレス、送信元ポート番号を変換できず、転送することができない。
【０１８５】
この場合、通信装置１００は、第３段階の処理を実行する（ステップＳ１１１２）。例えば、通信装置１００はＩＰアドレスＢ、ポート番号２０００という、これまで使用していない組を送信元ＩＰアドレス・ポート番号として、ＮＡＴ検査要求メッセージを含むパケット１９１１を送信する（ステップＳ１６０１）。ただし、宛先ＩＰアドレスはこれまでと同じＩＰアドレスＳを、宛先ポート番号は、これまでとは異なるポート番号７８９を設定している。
【０１８６】
ルータ１１０は既にＮＡＴ変換に利用可能なＩＰアドレス、ポート番号の組を全て使い果たしているので、パケット１９１１もインターネット１３０に転送することができない。その結果、通信装置１００はＮＡＴ検査応答メッセージを受信できない。
【０１８７】
そこで、通信装置１００はルータ１１０がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであると判断し（ステップＳ１６０４）、その旨を出力して変換方法判定処理を終了する（ステップＳ１６０６、ステップＳ１１１３）。
【０１８８】
なお、第２段階の処理を繰り返すとルータ１１０にかかる負荷が大きくなるため、繰り返しの回数に制限をかけるように構成してもよい。例えば、予め定められた繰り返し回数の閾値を越えた場合、ルータ１１０はＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴである可能性が高いと判定して変換方法判定処理を終了するように構成してもよい。
【０１８９】
また、ステップＳ１１０７において、第２段階の処理の最初に選択する送信元ＩＰアドレスＢ１および送信元ポート番号ｂ１を、第１段階の処理のときに使用した送信元ＩＰアドレスＡおよび送信元ポート番号ａと同一の値に設定するように構成してもよい。ルータ１１０がＳｙｍｍｅｔｒｉｃ  ＮＡＴである場合に変換方法の判定が早く完了するからである。
【０１９０】
すなわち、このように構成した場合の第１段階の処理におけるＮＡＴ変換結果を（ＵＤＰ、Ａ、ａ、Ｓ、ｘ、Ｎ１、ｍ１）と、第２段階の処理におけるＮＡＴ変換結果を（ＵＤＰ、Ａ、ａ、Ｓ、ｙ、Ｎ２、ｍ２）とすると、ルータ１１０がＳｙｍｍｅｔｒｉｃ  ＮＡＴであれば、Ｎ１≠Ｎ２またはｍ１≠ｍ２となる。このため、ステップＳ１５０５の判定の結果が偽（ＮＯ）となり、第２段階の処理の最初の判定処理において、ルータ１１０はＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴタイプではないと判定され、処理を終了することができるためである（ステップＳ１５０６、ステップＳ１１１１）。
【０１９１】
このように、本実施の形態にかかる通信装置１００では、ルータのＮＡＴ機能のタイプの検査を、ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴタイプではないことを判定できるまで、または、検査するためのメッセージに対する応答のメッセージが受信できなくなるまで繰り返し行い、応答のメッセージが受信できなくなった場合には、さらに判別を行うためのメッセージを送信して、それに対する応答のメッセージの受信可否によりルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴタイプであるか否かを正確に判別することができる。
【０１９２】
本実施の形態にかかる通信装置は、ＣＰＵなどの制御装置と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭなどの記憶装置と、ＨＤＤ、ＣＤドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０１９３】
本実施の形態にかかる通信装置で実行される通信プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１９４】
また、本実施の形態にかかる通信装置で実行される通信プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態にかかる通信装置で実行される通信プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１９５】
また、本実施の形態の通信プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１９６】
本実施の形態にかかる通信装置で実行される通信プログラムは、上述した各部（第１の送信部、第２の送信部、第１の受信部、第２の受信部、第１の変換方法判定部、第２の変換方法判定部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体から通信プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【産業上の利用可能性】
【０１９７】
以上のように、本発明にかかる通信装置、通信方法および通信プログラムは、ＮＡＴ機能を有するルータに接続されたコンピュータなどの通信装置に適しており、特に、直接接続して相互に情報を送受信するＰ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）通信を行うコンピュータなどの通信装置に適している。
【図面の簡単な説明】
【０１９８】
【図１】本実施の形態にかかる通信装置の構成を示すブロック図である。
【図２】応答メッセージ記憶部のデータ構造の一例を示す説明図である。
【図３】プライベートＩＰアドレスとＮＡＴ機能を有するルータを利用したネットワーク構成および通信方法の一例を示した説明図である。
【図４】Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴを利用したネットワーク構成および通信方法の一例を示した説明図である。
【図５】Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴを利用したネットワーク構成および通信方法の一例を示した説明図である。
【図６】Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴを利用したネットワーク構成および通信方法の一例を示した説明図である。
【図７】Ｓｙｍｍｅｔｒｉｃ  ＮＡＴを利用したネットワーク構成および通信方法の一例を示した説明図である。
【図８】４タイプのＮＡＴ機能のいずれとも異なる動作を行うルータを利用したネットワーク構成および通信方法の一例を示した説明図である。
【図９】直接通信を行う２つの通信装置が接続されているＮＡＴのタイプの組み合わせと接続可否の関係を示した説明図である。
【図１０】ルータのＮＡＴ機能がＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであるか、Ｓｙｍｍｅｔｒｉｃ  ＮＡＴであるかを判別する方法の一例を説明した説明図である。
【図１１】本実施の形態にかかる通信装置おける変換方法判定処理の全体の流れを示すフローチャートである。
【図１２】本実施の形態にかかる通信装置おける変換方法判定処理の第１段階の処理の全体の流れを示すフローチャートである。
【図１３】本実施の形態にかかる通信装置おけるＮＡＴ検査要求メッセージ送受信処理の全体の流れを示すフローチャートである。
【図１４】本実施の形態にかかる通信装置おける変換方法判定処理の第２段階の処理の全体の流れを示すフローチャートである。
【図１５】本実施の形態にかかる通信装置おける判定処理の全体の流れを示すフローチャートである。
【図１６】本実施の形態にかかる通信装置おける変換方法判定処理の第３段階の処理の全体の流れを示すフローチャートである。
【図１７】第１段階の処理から第３段階の処理までに送受信されるパケットの一例を示す模式図である。
【図１８】第２段階の処理において、ルータがＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴでないと判定される例を示した説明図である。
【図１９】第３段階の処理において、ルータがＰｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴであると判定される例を示した説明図である。
【符号の説明】
【０１９９】
１００、３００、４００、５００、６００、７００、８００  通信装置
１０１  第１の送信部
１０２  第２の送信部
１０３  第１の受信部
１０４  第２の受信部
１０５  第１の変換方法判定部
１０６  第２の変換方法判定部
１０７  応答メッセージ記憶部
１１０  ルータ
１２０  ローカルエリアネットワーク
１３０  インターネット
１４０  サーバ
３１０  ルータ
４１０  ルータ
４２０  ローカルエリアネットワーク
４４１、４４２  サーバ
４５１〜４５５  パケット
５１０  ルータ
５２０  ローカルエリアネットワーク
５４１、５４２  サーバ
５５１〜５５３  パケット
６１０  ルータ
６２０  ローカルエリアネットワーク
６４１、６４２  サーバ
６５１〜６５３  パケット
７１０  ルータ
７２０  ローカルエリアネットワーク
７４１、７４２  サーバ
７５１〜７５４  パケット
８１０  ルータ
８２０  ローカルエリアネットワーク
８４１、８４２  サーバ
８５１〜８５４  パケット
１０１０  ルータ
１０４０  サーバ
１０５１〜１０５８  パケット
１７０１〜１７０６  パケット
１８０１〜１８１１  パケット
１９０１〜１９１１  パケット
【図１】
2006253824.tif 000003
【図２】
2006253824.tif 000004
【図３】
2006253824.tif 000005
【図４】
2006253824.tif 000006
【図５】
2006253824.tif 000007
【図６】
2006253824.tif 000008
【図７】
2006253824.tif 000009
【図８】
2006253824.tif 000010
【図９】
2006253824.tif 000011
【図１０】
2006253824.tif 000012
【図１１】
2006253824.tif 000013
【図１２】
2006253824.tif 000014
【図１３】
2006253824.tif 000015
【図１４】
2006253824.tif 000016
【図１５】
2006253824.tif 000017
【図１６】
2006253824.tif 000018
【図１７】
2006253824.tif 000019
【図１８】
2006253824.tif 000020
【図１９】
2006253824.tif 000021