(57)【特許請求の範囲】
【請求項１】
送信されるメッセージのプロトコルヘッダに含まれる送信元ポート番号を外部ネットワークと通信可能な送信元ポート番号に変換するネットワーク中継装置を介して接続されたサーバと通信する通信装置において、
前記ネットワーク中継装置で送信元ポート番号を変換可能なプロトコルである変換可能プロトコルに含まれる第１のプロトコルで送信される第１のメッセージを前記サーバに送信したときに前記ネットワーク中継装置がアドレス変換した後の送信元ポート番号である変換後ポート番号を含むポート番号情報メッセージを、前記サーバから前記ネットワーク中継装置を介して受信する受信手段と、
前記変換後ポート番号を使用して前記サーバと通信するアプリケーションが前記サーバに送信するメッセージであって、プロトコルヘッダに含まれる送信元ポート番号を、前記受信手段が受信した前記変換後ポート番号と同一の値に設定した前記第１のプロトコルで送信される第２のメッセージを作成する第１プロトコル処理手段と、
前記第１プロトコル処理手段が作成した前記第２のメッセージに、前記変換可能プロトコルに含まれない第２のプロトコルのヘッダを付与した第３のメッセージを作成する第２プロトコル処理手段と、
前記第２プロトコル処理手段が作成した前記第３のメッセージに、前記変換可能プロトコルに含まれる第３のプロトコルのヘッダを付与した第４のメッセージを作成する第３プロトコル処理手段と、
前記第３プロトコル処理手段が作成した第４のメッセージを、前記ネットワーク中継装置を介して前記サーバに送信する送信手段と、
を備えたことを特徴とする通信装置。
【請求項２】
前記送信手段は、前記第１のプロトコルで送信され、暗号化通信プロトコルによる通信を確立する際に用いる情報を含む通信確立メッセージを前記サーバにさらに送信し、
前記受信手段は、前記サーバが、前記通信確立メッセージのプロトコルヘッダに含まれる送信元ポート番号を前記変換後ポート番号として設定して送信した前記ポート番号情報メッセージを、前記ネットワーク中継装置を介して受信することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記送信手段は、前記第１のプロトコルで送信され、ＩＫＥ（Internet Key Exchange）プロトコルによる通信を確立する際に用いる情報を含む通信確立メッセージを前記サーバにさらに送信することを特徴とする請求項２に記載の通信装置。
【請求項４】
前記受信手段は、前記サーバが前記ＩＫＥプロトコルで送信されるＩＫＥメッセージに前記変換後ポート番号を格納する領域を追加し、追加した領域に前記通信確立メッセージのプロトコルヘッダに含まれる送信元ポート番号を前記変換後ポート番号として設定して送信した前記ポート番号情報メッセージを、前記ネットワーク中継装置を介して受信することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記受信手段は、前記サーバが前記ＩＫＥプロトコルで送信されるＩＫＥメッセージに含まれる未使用領域に前記通信確立メッセージのプロトコルヘッダに含まれる送信元ポート番号を前記変換後ポート番号として設定して送信した前記ポート番号情報メッセージを、前記ネットワーク中継装置を介して受信することを特徴とする請求項３に記載の通信装置。
【請求項６】
送信されるメッセージのプロトコルヘッダに含まれるプロトコルと送信元ＩＰアドレスと送信元ポート番号との組み合わせごとに送信元ＩＰアドレスと送信元ポート番号とを外部ネットワークと通信可能な一定の値に変換するネットワーク中継装置を介して接続されたサーバ、および、前記ネットワーク中継装置を介して接続され、送信元ポート番号を含むアドレスに関する情報を提供するアドレス情報提供装置と通信する通信装置において、
前記ネットワーク中継装置で送信元ポート番号を変換可能なプロトコルである変換可能プロトコルに含まれる第１のプロトコルで送信される第１のメッセージを、前記ネットワーク中継装置を介して前記アドレス情報提供装置に送信する第１の送信手段と、
前記第１の送信手段が前記第１のメッセージを前記アドレス情報提供装置に送信したときに前記ネットワーク中継装置がアドレス変換した後の送信元ポート番号である変換後ポート番号を含むアドレス情報メッセージを、前記アドレス情報提供装置から前記ネットワーク中継装置を介して受信する受信手段と、
前記変換後ポート番号を使用して前記サーバと通信するアプリケーションが前記サーバに送信するメッセージであって、プロトコルヘッダに含まれる送信元ポート番号を、前記受信手段が受信した前記変換後ポート番号と同一の値に設定した前記第１のプロトコルで送信される第２のメッセージを作成する第１プロトコル処理手段と、
前記第１プロトコル処理手段が作成した前記第２のメッセージに、前記変換可能プロトコルに含まれない第２のプロトコルのヘッダを付与した第３のメッセージを作成する第２プロトコル処理手段と、
前記第２プロトコル処理手段が作成した前記第３のメッセージに、前記変換可能プロトコルに含まれる第３のプロトコルのヘッダを付与した第４のメッセージを作成する第３プロトコル処理手段と、
前記第３プロトコル処理手段が作成した第４のメッセージを、前記ネットワーク中継装置を介して前記サーバに送信する第２の送信手段と、
を備えたことを特徴とする通信装置。
【請求項７】
前記第１の送信手段は、プロトコルヘッダに含まれる送信先ＩＰアドレスまたは送信先ポート番号を変更した前記第１のメッセージを、前記ネットワーク中継装置を介して前記アドレス情報提供装置にさらに送信し、
送信先ＩＰアドレスまたは送信先ポート番号を変更する前の前記第１のメッセージに対して前記アドレス情報提供装置が送信した前記アドレス情報メッセージに含まれる前記変換後ポート番号である第１変換後ポート番号と、送信先ＩＰアドレスまたは送信先ポート番号を変更した前記第１のメッセージに対して前記アドレス情報提供装置が送信した前記アドレス情報メッセージに含まれる前記変換後ポート番号である第２変換後ポート番号と同一であるか否かを判断し、前記第１変換後ポート番号と前記第２変換後ポート番号とが同一でないと判断した場合に通信を終了する変換方法検証手段をさらに備えたことを特徴とする請求項６に記載の通信装置。
【請求項８】
前記第１のプロトコルおよび前記第３のプロトコルは、ＵＤＰまたはＴＣＰであることを特徴とする請求項１〜７のいずれか１つに記載の通信装置。
【請求項９】
前記第２のプロトコルは、ＥＳＰ（Encapsulating Security Payload）であることを特徴とする請求項請求項１〜８のいずれか１つに記載の通信装置。
【請求項１０】
送信されるメッセージのプロトコルヘッダに含まれる送信元ポート番号を外部ネットワークと通信可能な送信元ポート番号に変換するネットワーク中継装置を介して接続されたサーバと通信する通信方法において、
前記ネットワーク中継装置で送信元ポート番号を変換可能なプロトコルである変換可能プロトコルに含まれる第１のプロトコルで送信される第１のメッセージを前記サーバに送信したときに前記ネットワーク中継装置がアドレス変換した後の送信元ポート番号である変換後ポート番号を含むポート番号情報メッセージを、前記サーバから前記ネットワーク中継装置を介して受信する受信ステップと、
前記変換後ポート番号を使用して前記サーバと通信するアプリケーションが前記サーバに送信するメッセージであって、プロトコルヘッダに含まれる送信元ポート番号を、前記受信ステップが受信した前記変換後ポート番号と同一の値に設定した前記第１のプロトコルで送信される第２のメッセージを作成する第１プロトコル処理ステップと、
前記第１プロトコル処理ステップが作成した前記第２のメッセージに、前記変換可能プロトコルに含まれない第２のプロトコルのヘッダを付与した第３のメッセージを作成する第２プロトコル処理ステップと、
前記第２プロトコル処理ステップが作成した前記第３のメッセージに、前記変換可能プロトコルに含まれる第３のプロトコルのヘッダを付与した第４のメッセージを作成する第３プロトコル処理ステップと、
前記第３プロトコル処理ステップが作成した第４のメッセージを、前記ネットワーク中継装置を介して前記サーバに送信する送信ステップと、
を備えたことを特徴とする通信方法。
【請求項１１】
送信されるメッセージのプロトコルヘッダに含まれるプロトコルと送信元ＩＰアドレスと送信元ポート番号との組み合わせごとに送信元ＩＰアドレスと送信元ポート番号とを外部ネットワークと通信可能な一定の値に変換するネットワーク中継装置を介して接続されたサーバ、および、前記ネットワーク中継装置を介して接続され、送信元ポート番号を含むアドレスに関する情報を提供するアドレス情報提供装置と通信する通信方法において、
前記ネットワーク中継装置で送信元ポート番号を変換可能なプロトコルである変換可能プロトコルに含まれる第１のプロトコルで送信される第１のメッセージを、前記ネットワーク中継装置を介して前記アドレス情報提供装置に送信する第１の送信ステップと、
前記第１の送信ステップが前記第１のメッセージを前記アドレス情報提供装置に送信したときに前記ネットワーク中継装置がアドレス変換した後の送信元ポート番号である変換後ポート番号を含むアドレス情報メッセージを、前記アドレス情報提供装置から前記ネットワーク中継装置を介して受信する受信ステップと、
前記変換後ポート番号を使用して前記サーバと通信するアプリケーションが前記サーバに送信するメッセージであって、プロトコルヘッダに含まれる送信元ポート番号を、前記受信ステップが受信した前記変換後ポート番号と同一の値に設定した前記第１のプロトコルで送信される第２のメッセージを作成する第１プロトコル処理ステップと、
前記第１プロトコル処理ステップが作成した前記第２のメッセージに、前記変換可能プロトコルに含まれない第２のプロトコルのヘッダを付与した第３のメッセージを作成する第２プロトコル処理ステップと、
前記第２プロトコル処理ステップが作成した前記第３のメッセージに、前記変換可能プロトコルに含まれる第３のプロトコルのヘッダを付与した第４のメッセージを作成する第３プロトコル処理ステップと、
前記第３プロトコル処理ステップが作成した第４のメッセージを、前記ネットワーク中継装置を介して前記サーバに送信する第２の送信ステップと、
を備えたことを特徴とする通信方法。
【請求項１２】
送信されるメッセージのプロトコルヘッダに含まれる送信元ポート番号を外部ネットワークと通信可能な送信元ポート番号に変換するネットワーク中継装置を介して接続されたサーバと通信する通信装置における通信プログラムにおいて、
前記ネットワーク中継装置で送信元ポート番号を変換可能なプロトコルである変換可能プロトコルに含まれる第１のプロトコルで送信される第１のメッセージを前記サーバに送信したときに前記ネットワーク中継装置がアドレス変換した後の送信元ポート番号である変換後ポート番号を含むポート番号情報メッセージを、前記サーバから前記ネットワーク中継装置を介して受信する受信手順と、
前記変換後ポート番号を使用して前記サーバと通信するアプリケーションが前記サーバに送信するメッセージであって、プロトコルヘッダに含まれる送信元ポート番号を、前記受信手順が受信した前記変換後ポート番号と同一の値に設定した前記第１のプロトコルで送信される第２のメッセージを作成する第１プロトコル処理手順と、
前記第１プロトコル処理手順が作成した前記第２のメッセージに、前記変換可能プロトコルに含まれない第２のプロトコルのヘッダを付与した第３のメッセージを作成する第２プロトコル処理手順と、
前記第２プロトコル処理手順が作成した前記第３のメッセージに、前記変換可能プロトコルに含まれる第３のプロトコルのヘッダを付与した第４のメッセージを作成する第３プロトコル処理手順と、
前記第３プロトコル処理手順が作成した第４のメッセージを、前記ネットワーク中継装置を介して前記サーバに送信する送信手順と、
をコンピュータに実行させる通信プログラム。
【請求項１３】
送信されるメッセージのプロトコルヘッダに含まれるプロトコルと送信元ＩＰアドレスと送信元ポート番号との組み合わせごとに送信元ＩＰアドレスと送信元ポート番号とを外部ネットワークと通信可能な一定の値に変換するネットワーク中継装置を介して接続されたサーバ、および、前記ネットワーク中継装置を介して接続され、送信元ポート番号を含むアドレスに関する情報を提供するアドレス情報提供装置と通信する通信装置における通信プログラムにおいて、
前記ネットワーク中継装置で送信元ポート番号を変換可能なプロトコルである変換可能プロトコルに含まれる第１のプロトコルで送信される第１のメッセージを、前記ネットワーク中継装置を介して前記アドレス情報提供装置に送信する第１の送信手順と、
前記第１の送信手順が前記第１のメッセージを前記アドレス情報提供装置に送信したときに前記ネットワーク中継装置がアドレス変換した後の送信元ポート番号である変換後ポート番号を含むアドレス情報メッセージを、前記アドレス情報提供装置から前記ネットワーク中継装置を介して受信する受信手順と、
前記変換後ポート番号を使用して前記サーバと通信するアプリケーションが前記サーバに送信するメッセージであって、プロトコルヘッダに含まれる送信元ポート番号を、前記受信手順が受信した前記変換後ポート番号と同一の値に設定した前記第１のプロトコルで送信される第２のメッセージを作成する第１プロトコル処理手順と、
前記第１プロトコル処理手順が作成した前記第２のメッセージに、前記変換可能プロトコルに含まれない第２のプロトコルのヘッダを付与した第３のメッセージを作成する第２プロトコル処理手順と、
前記第２プロトコル処理手順が作成した前記第３のメッセージに、前記変換可能プロトコルに含まれる第３のプロトコルのヘッダを付与した第４のメッセージを作成する第３プロトコル処理手順と、
前記第３プロトコル処理手順が作成した第４のメッセージを、前記ネットワーク中継装置を介して前記サーバに送信する第２の送信手順と、
をコンピュータに実行させる通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、アドレス変換機能を有するネットワーク中継装置を介して外部ネットワークに接続された他の通信装置と通信する通信装置、通信方法および通信プログラムに関するものである。
【背景技術】
【０００２】
近年、限られたグローバルＩＰアドレスの数を越える複数の装置が同時にインターネット上の別の装置と通信できるようにするため、ＮＡＴ  ｂｏｘを利用したネットワーク構成が広く利用されている。ＮＡＴ  ｂｏｘとは、受信したパケットのＩＰアドレスやポート番号等を書き換えてからパケットを転送する、ネットワークアドレス変換（ＮＡＴ：Network Address Translation）機能を有するルータ（ネットワーク中継装置）である。
【０００３】
ＮＡＴ  ｂｏｘは、ＮＡＴ  ｂｏｘ配下の装置から開始された新しい通信を検知するたびに、ＮＡＴマッピングと呼ばれる、パケット中の送信元アドレスおよび送信先アドレスの組に対して変換先のアドレスをマッピングするデータを作成し、保持する。そして、ＮＡＴ  ｂｏｘは、このＮＡＴマッピングを参照してパケット中のアドレスを変換する。
【０００４】
ここで、アドレスにはＩＰアドレスだけでなくＴＣＰヘッダ、ＵＤＰヘッダのポート番号などの、トランスポートプロトコルにおけるアドレスも含む場合が多い。なお、ＮＡＴ  ｂｏｘによるアドレスの変換を以下ではＮＡＴ変換と記述することとする。
【０００５】
広く普及しているＮＡＴ  ｂｏｘでは、ＮＡＴ変換して転送することが可能なパケットの種類が、ＩＰヘッダの次のヘッダがＴＣＰヘッダ、ＵＤＰヘッダ、ＩＣＭＰヘッダであるものに限られる。そこで、例えばＮＡＴ  ｂｏｘ配下の装置がＥＳＰ（Encapsulating Security Payload）のＴｒａｎｓｐｏｒｔ  Ｍｏｄｅを利用して暗号化し、かつＩＰヘッダの次にＥＳＰヘッダを付与したパケットで通信を試みても、ＮＡＴ  ｂｏｘはパケットをＮＡＴ変換できず、転送することができない。そこで、ＵＤＰヘッダをＩＰヘッダとＥＳＰヘッダの間に挿入することで、ＮＡＴ  ｂｏｘがＮＡＴ変換し転送できるようにする技術が提案されている（例えば、非特許文献１、非特許文献２）。
【０００６】
ところが、例えば同一ＮＡＴ配下に存在する複数の装置が、非特許文献１の方法を用いてインターネット上に存在する同一のサーバに通信を行う場合、サーバ内のアプリケーションがＮＡＴ配下の装置のいずれから受信したパケットかを判別できず混信するケースが存在する。
【０００７】
例えば、同一ＮＡＴ配下の複数の装置がＵＤＰヘッダの送信元ポート番号、送信先ポート番号の組を同一に設定し、非特許文献１の方法にしたがってＵＤＰデータグラムをＥＳＰヘッダと新たなＵＤＰヘッダでカプセル化してサーバに送信し、サーバが非特許文献１の手法にしたがってＥＳＰ、ＵＤＰヘッダを除去しパケットを復号化したとする。この場合、いずれの装置から受信した送信したパケットについても、送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号、トランスポートプロトコル種別の組が同一になる。したがって、サーバ内のアプリケーションはＮＡＴ  ｂｏｘ配下のいずれの装置から受信したパケットかを判別することができない。
【０００８】
これに対し、非特許文献１では、上述のような混信の発生を回避する技術が提案されている。具体的には、ＥＳＰによる通信前の鍵交換においてＳＡ（Security Association）のＩＰアドレスやポート番号を受信したサーバが、すでに同じＩＰアドレスおよびポート番号の組でＳＡ存在するかを確認し、存在する場合は鍵交換を中断し、ＥＳＰの通信を取りやめることにより、混信を回避する技術が提案されている。
【０００９】
また、サーバが、受信したパケット中のＩＰヘッダとＥＳＰヘッダの間に設定されているＵＤＰヘッダ内の送信元ポート番号で、ＥＳＰでカプセル化されたＵＤＰヘッダの送信元ポート番号を置き換えることにより、混信を回避する技術も提案されている（例えば、特許文献１）。
【００１０】
前記パケットのＩＰアドレスおよびＥＳＰヘッダの間のＵＤＰヘッダ内の送信元ポート番号は、ＮＡＴ  ｂｏｘによりＮＡＴ変換されているが、ＮＡＴ  ｂｏｘの性質上、必ず送信元ＩＰアドレス、送信元ポート番号、プロトコル種別の組が唯一になる。その結果、アプリケーションが受信するパケットの送信元ＩＰアドレス、送信先ＩＰアドレス、プロトコル種別の組も唯一になる。したがって、サーバ内のアプリケーションは、同一ＮＡＴ配下のどちらの装置から受信したパケットかを判別することができる。
【００１１】
【特許文献１】米国特許出願公開第２００４／０１４３７５８号明細書
【非特許文献１】A. Huttunen et al.、"RFC 3948、 UDP Encapsulation of IPsec ESP Packets"、［online］、 January 2005、 retrieved from the Internet: ＜URL: http://www.ietf.org/rfc/rfc3948.txt＞
【非特許文献２】T. Kivinen et al.、"RFC 3947、 Negotiation of NAT-Traversal in the IKE"、［online］、 January 2005、 retrieved from the Internet: ＜URL: http://www.ietf.org/rfc/rfc3947.txt＞
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記文献のいずれの方法によっても、サーバ側の処理負担が増大するという問題があった。すなわち、例えば、非特許文献１では、サーバ側ですでに同一のＩＰアドレスおよびポート番号によるＳＡが存在するか否かを判断する処理が必要となる。また、特許文献１では、パケットを受信するたびにサーバ側で送信元ポート番号の置換を行う処理が必要となる。
【００１３】
本発明は、上記に鑑みてなされたものであって、サーバの処理負荷を増大させずにサーバ内のアプリケーションが混乱なくネットワーク中継装置配下の複数の装置と通信することができる通信装置、通信方法および通信プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明は、送信されるメッセージのプロトコルヘッダに含まれる送信元ポート番号を外部ネットワークと通信可能な送信元ポート番号に変換するネットワーク中継装置を介して接続されたサーバと通信する通信装置において、前記ネットワーク中継装置で送信元ポート番号を変換可能なプロトコルである変換可能プロトコルに含まれる第１のプロトコルで送信される第１のメッセージを前記サーバに送信したときに前記ネットワーク中継装置がアドレス変換した後の送信元ポート番号である変換後ポート番号を含むポート番号情報メッセージを、前記サーバから前記ネットワーク中継装置を介して受信する受信手段と、前記変換後ポート番号を使用して前記サーバと通信するアプリケーションが前記サーバに送信するメッセージであって、プロトコルヘッダに含まれる送信元ポート番号を、前記受信手段が受信した前記変換後ポート番号と同一の値に設定した前記第１のプロトコルで送信される第２のメッセージを作成する第１プロトコル処理手段と、前記第１プロトコル処理手段が作成した前記第２のメッセージに、前記変換可能プロトコルに含まれない第２のプロトコルのヘッダを付与した第３のメッセージを作成する第２プロトコル処理手段と、前記第２プロトコル処理手段が作成した前記第３のメッセージに、前記変換可能プロトコルに含まれる第３のプロトコルのヘッダを付与した第４のメッセージを作成する第３プロトコル処理手段と、前記第３プロトコル処理手段が作成した第４のメッセージを、前記ネットワーク中継装置を介して前記サーバに送信する送信手段と、を備えたことを特徴とする。
【００１５】
また、本発明は、送信されるメッセージのプロトコルヘッダに含まれるプロトコルと送信元ＩＰアドレスと送信元ポート番号との組み合わせごとに送信元ＩＰアドレスと送信元ポート番号とを外部ネットワークと通信可能な一定の値に変換するネットワーク中継装置を介して接続されたサーバ、および、前記ネットワーク中継装置を介して接続され、送信元ポート番号を含むアドレスに関する情報を提供するアドレス情報提供装置と通信する通信装置において、前記ネットワーク中継装置で送信元ポート番号を変換可能なプロトコルである変換可能プロトコルに含まれる第１のプロトコルで送信される第１のメッセージを、前記ネットワーク中継装置を介して前記アドレス情報提供装置に送信する第１の送信手段と、前記第１の送信手段が前記第１のメッセージを前記アドレス情報提供装置に送信したときに前記ネットワーク中継装置がアドレス変換した後の送信元ポート番号である変換後ポート番号を含むアドレス情報メッセージを、前記アドレス情報提供装置から前記ネットワーク中継装置を介して受信する受信手段と、前記変換後ポート番号を使用して前記サーバと通信するアプリケーションが前記サーバに送信するメッセージであって、プロトコルヘッダに含まれる送信元ポート番号を、前記受信手段が受信した前記変換後ポート番号と同一の値に設定した前記第１のプロトコルで送信される第２のメッセージを作成する第１プロトコル処理手段と、前記第１プロトコル処理手段が作成した前記第２のメッセージに、前記変換可能プロトコルに含まれない第２のプロトコルのヘッダを付与した第３のメッセージを作成する第２プロトコル処理手段と、前記第２プロトコル処理手段が作成した前記第３のメッセージに、前記変換可能プロトコルに含まれる第３のプロトコルのヘッダを付与した第４のメッセージを作成する第３プロトコル処理手段と、前記第３プロトコル処理手段が作成した第４のメッセージを、前記ネットワーク中継装置を介して前記サーバに送信する第２の送信手段と、を備えたことを特徴とする。
【００１６】
また、本発明は、上記装置を実行することができる通信方法および通信プログラムである。
【発明の効果】
【００１７】
本発明によれば、混信せずに通信を行える送信元ポート番号を、事前に外部ネットワーク上の通信装置から受信し、当該送信元ポート番号を用いて通信装置側でパケットを作成することができる。このため、サーバの処理負荷を増大させずにサーバ内のアプリケーションが混乱なくネットワーク中継装置配下の複数の装置と通信することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下に添付図面を参照して、この発明にかかる通信装置、通信方法および通信プログラムの最良な実施の形態を詳細に説明する。
【００１９】
（第１の実施の形態）
第１の実施の形態にかかる通信装置は、ＵＤＰで送信するメッセージを、ＮＡＴ変換ができない暗号化通信プロトコルであるＥＳＰによりカプセル化し、さらにＮＡＴ変換可能とするためにＵＤＰヘッダでカプセル化したメッセージをインターネット上のサーバに送信するものである。
【００２０】
その際、サーバからＮＡＴ変換後の送信元ポート番号を受信し、当該送信元ポート番号を、ＥＳＰでカプセル化するＵＤＰヘッダの送信元ポート番号に設定してサーバとの通信を行うものである。
【００２１】
インターネット上で送受信されるメッセージは、通常、パケットと呼ばれるデータの単位に分割されて送信される。パケットは、送信元、送信先のアドレス情報等を格納するヘッダ部と、データ自体を格納するペイロード部から構成される。なお、ヘッダ部とペイロード部とを合わせた情報をデータグラムと呼ぶ場合もある。
【００２２】
以下では、ＩＰヘッダとＩＰペイロードから構成されるものをパケットと呼び、ＵＤＰヘッダとＵＤＰペイロードから構成されるものをＵＤＰデータグラムと呼ぶ。また、ＥＳＰにより暗号化された情報を含むパケットを特にＥＳＰパケットと呼ぶ。
【００２３】
また、カプセル化とは、既存のパケットまたはデータグラムを任意のプロトコルの新たなペイロードとし、当該プロトコルの新たなヘッダを付与することにより、既存のパケットまたはデータグラムを生成したプロトコルを隠蔽化することをいう。なお、新たなペイロードを生成する際に、暗号化等のデータの加工処理を行う場合を含む。
【００２４】
例えば、ＵＤＰプロトコルで作成されたＵＤＰデータグラムをＥＳＰプロトコルにより暗号化し、ＥＳＰヘッダを付与することにより、ＵＤＰデータグラムをＥＳＰでカプセル化することができる。
【００２５】
なお、ＮＡＴ変換可能とするためにカプセル化するプロトコルはＵＤＰに限られるものではなく、ＮＡＴ  ＢｏｘがＮＡＴ変換して転送可能なプロトコルであればあらゆるプロトコルに対して本提案の内容を適用することができる。また、ＮＡＴ変換ができないプロトコルはＥＳＰに限られるものではなく、他の暗号化通信プロトコルなど、ＮＡＴ  ＢｏｘがＮＡＴ変換して転送することができないプロトコルであればあらゆるプロトコルが対象となる。さらに、ＮＡＴ変換ができないプロトコルでカプセル化されるプロトコルはＵＤＰに限られるものではなく、ＴＣＰなどの送信元ポート番号が重複することにより混信が生じうるものであれば、あらゆるプロトコルに対して本提案の内容を適用することができる。
【００２６】
図１は、第１の実施の形態にかかる通信装置１００を含むネットワーク全体の構成を示すブロック図である。同図に示すように、第１の実施の形態にかかるネットワークは、通信装置１００が、ＮＡＴ  Ｂｏｘ１２０を介してインターネット１３０に接続され、インターネット１３０に接続された通信相手であるサーバ１４０と通信を行うように構成されている。
【００２７】
なお、同図では、異なるプライベートＩＰアドレスＣおよびＤが割り当てられた２つの通信装置１００ａ、１００ｂが記載されているが、機能や構成は同一である。通信装置１００ａ、１００ｂをまとめて通信装置１００と呼ぶ。サーバ１４０には、グローバルＩＰアドレスＳが割り当てられている。
【００２８】
ＮＡＴ  Ｂｏｘ１２０は、受信したパケットに含まれる宛先のＩＰアドレスを参照して送信経路を選択する機能を有し、当該パケットを他のネットワークに中継する装置であり、プライベートＩＰアドレスをグローバルＩＰアドレスに変換するネットワークアドレス変換（ＮＡＴ）機能を有する。ＮＡＴ  Ｂｏｘ１２０のインターネット１３０に接続する側のネットワークインタフェースには、グローバルＩＰアドレスＮが割り当てられている。
【００２９】
通信装置１００は、暗号化鍵の交換・管理を行うプロトコルであるＩＫＥ（Internet Key Exchange）を拡張することにより、サーバ１４０からＮＡＴ変換後のＵＤＰヘッダの送信元ポート番号を取得し、取得した送信元ポート番号をＵＤＰヘッダに設定したＵＤＰデータグラムをＥＳＰヘッダおよび別のＵＤＰヘッダでカプセル化したパケットを作成してサーバ１４０と通信を行うものである。
【００３０】
図２は、第１の実施の形態で送受信されるパケットの形式の一例を示した説明図である。同図に示すように、通信装置１００およびサーバ１４０間で送受信されるパケット２０１は、ＵＤＰヘッダが付与されたデータをＥＳＰプロトコルにより暗号化してＥＳＰヘッダでカプセル化し、さらにＵＤＰヘッダでカプセル化したものに、ＩＰヘッダを付与した形式となっている。
【００３１】
このような形式により、メッセージの安全性を確保しつつ、ＮＡＴ  Ｂｏｘ１２０が対応していないプロトコルをＮＡＴ  Ｂｏｘ１２０が対応しているプロトコルによりカプセル化し、ＮＡＴ  Ｂｏｘ１２０を超えた通信が可能となる。
【００３２】
図３は、第１の実施の形態にかかる通信装置１００の構成を示すブロック図である。同図に示すように、通信装置１００は、ＩＫＥ処理部１０１と、クライアントアプリケーション１０２と、ＵＤＰ処理部１０３と、ＥＳＰ処理部１０４と、カプセル化ＵＤＰ処理部１０５と、送受信部１０６と、記憶部１０７とを備えている。
【００３３】
ＩＫＥ処理部１０１は、ＩＫＥプロトコルにしたがってサーバ１４０との間で送受信するメッセージであるＩＫＥメッセージの処理を行うものである。具体的には、ＩＫＥ処理部１０１は、暗号化された通信を確立するために、ＩＳＡＫＭＰ（Internet Security Association Key Manager Protocol）  ＳＡを作成するＩＫＥメッセージや、認証を要求するＩＫＥメッセージなどを作成する。
【００３４】
また、ＩＫＥ処理部１０１は、作成したＩＫＥメッセージをＵＤＰで送信するためにＵＤＰ処理部１０３に渡す処理や、サーバ１４０から返信されたＩＫＥメッセージから暗号化および復号化に使用する鍵やＩＳＡＫＭＰ  ＳＡの作成および維持に必要なパラメータなどのパラメータを取得し、記憶部１０７に記憶する処理を行う。
【００３５】
さらに、ＩＫＥ処理部１０１は、サーバ１４０が作成して返信した、ＮＡＴ変換後の送信元ポート番号を含むように拡張されたＩＫＥメッセージから、当該ＮＡＴ変換後の送信元ポート番号を取得し、記憶部１０７に記憶する処理を行う。このようにして記憶部１０７に記憶された送信元ポート番号を利用することにより、サーバ１４０との通信時に混信が発生することが回避可能となる。
【００３６】
クライアントアプリケーション１０２は、サーバ１４０内のサーバアプリケーション１４２と通信を行うことにより所定の処理を行うアプリケーションである。具体的には、クライアントアプリケーション１０２は、サーバ１４０と通信する際に用いるデータを生成しＵＤＰ処理部１０３に渡し、サーバ１４０から返信されたデータをＵＤＰ処理部１０３から受け取って所定の処理を行う。サーバ１４０内のサーバアプリケーション１４２と通信を行う処理を含むものであれば、クライアントアプリケーション１０２の処理内容はどのようなものであってもよい。
【００３７】
ＵＤＰ処理部１０３は、ＵＤＰのプロトコルにしたがってサーバ１４０との間で送受信するＵＤＰデータグラムの処理を行うものである。具体的には、ＵＤＰ処理部１０３は、ＩＫＥ処理部１０１から渡されたＩＫＥメッセージにＵＤＰヘッダを付加し送受信部１０６に渡す処理、クライアントアプリケーション１０２から渡されたデータにＵＤＰヘッダを付加しＥＳＰ処理部１０４に渡す処理を行う。
【００３８】
また、ＵＤＰ処理部１０３は、ＥＳＰ処理部１０４から渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードをクライアントアプリケーション１０２に渡す処理を行う。
【００３９】
また、ＵＤＰ処理部１０３は、送受信部１０６から受信したＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードを取得し、ＵＤＰペイロードがＥＳＰヘッダを含む場合は、送受信部１０６から受信したＵＤＰデータグラムをカプセル化ＵＤＰ処理部１０５に渡す。すなわち、パケットがＥＳＰでカプセル化されている場合は、カプセル化されているパケットを処理するためのカプセル化ＵＤＰ処理部１０５にＵＤＰデータグラムを渡している。
【００４０】
また、ＵＤＰ処理部１０３は、ＵＤＰペイロードがＥＳＰヘッダを含まない場合は、ＩＫＥ処理部１０１にＵＤＰペイロードを渡す。
【００４１】
ＥＳＰ処理部１０４は、ＥＳＰプロトコルにしたがってサーバ１４０との間で送受信するデータの暗号化処理を行うものである。具体的には、ＥＳＰ処理部１０４は、記憶部１０７に記憶された暗号化用の鍵などのパラメータを使用してＵＤＰ処理部１０３から渡されたＵＤＰデータグラムを暗号化し、ＥＳＰヘッダを付加し、カプセル化ＵＤＰ処理部１０５に渡す処理を行う。
【００４２】
また、ＥＳＰ処理部１０４は、記憶部１０７に記憶された復号化用の鍵などのパラメータを使用してカプセル化ＵＤＰ処理部１０５から渡された、暗号化されたＵＤＰデータグラムを復号化しＵＤＰ処理部１０３に渡す処理を行う。
【００４３】
カプセル化ＵＤＰ処理部１０５は、ＵＤＰのプロトコルにしたがって、ＥＳＰ処理部１０４が暗号化したＵＤＰデータグラムに対して、さらにＵＤＰヘッダでカプセル化したＵＤＰデータグラムを作成し、サーバ１４０から受信したパケットに対しては、暗号化されたＵＤＰデータグラムをさらにカプセル化しているＵＤＰヘッダを削除する処理を行うものである。
【００４４】
具体的には、カプセル化ＵＤＰ処理部１０５は、ＥＳＰ処理部１０４から渡されたＥＳＰで暗号化されたＵＤＰデータグラムに、記憶部１０７に記憶されている送信元ポート番号を設定したＵＤＰヘッダを付加し送受信部１０６に渡す処理を行う。
【００４５】
また、カプセル化ＵＤＰ処理部１０５は、ＥＳＰで暗号化されたＵＤＰデータグラムをさらにカプセル化しているＵＤＰヘッダを削除し、ＵＤＰデータグラムをＥＳＰ処理部１０４に渡す処理を行う。
【００４６】
送受信部１０６は、ＵＤＰ処理部１０３またはカプセル化ＵＤＰ処理部１０５から渡されたＵＤＰデータグラムにＩＰヘッダを付加してサーバ１４０に送信するものである。また、送受信部１０６は、サーバ１４０から受信したパケットのＩＰヘッダを削除したＵＤＰペイロードを、ＵＤＰ処理部１０３またはカプセル化ＵＤＰ処理部１０５に渡す処理を行う。
【００４７】
記憶部１０７は、ＮＡＴ  Ｂｏｘ１２０がＮＡＴ変換した後の送信元ポート番号、暗号化および復号化に使用する鍵、ＩＳＡＫＭＰ  ＳＡの作成および維持に必要なパラメータを記憶するものであり、ＨＤＤ（Hard Disk Drive）、光ディスク、メモリカード、ＲＡＭ（Random Access Memory）などの一般的に利用されているあらゆる記憶デバイスにより構成することができる。
【００４８】
以上が、通信装置１００を構成する各部の処理内容である。次に、サーバ１４０の構成について説明する。
【００４９】
サーバ１４０は、ＩＫＥプロトコルにより通信装置１００と暗号化された通信を確立した後、通信装置１００と暗号化されたパケットの送受信をするものである。
【００５０】
図４は、第１の実施の形態にかかるサーバ１４０の構成を示すブロック図である。同図に示すように、サーバ１４０は、ＩＫＥ処理部１４１と、サーバアプリケーション１４２と、ＵＤＰ処理部１４３と、ＥＳＰ処理部１４４と、カプセル化ＵＤＰ処理部１４５と、送受信部１４６と、記憶部１４７とを備えている。
【００５１】
ＩＫＥ処理部１４１は、通信装置１００のＩＫＥ処理部１０１と同様に、ＩＫＥプロトコルにしたがって通信装置１００との間で送受信するＩＫＥメッセージの処理を行うものである。具体的には、ＩＫＥ処理部１４１は、暗号化された通信を確立するために、ＩＳＡＫＭＰ  ＳＡを作成するＩＫＥメッセージや、認証を要求するＩＫＥメッセージなどを作成する。
【００５２】
また、ＩＫＥ処理部１４１は、作成したＩＫＥメッセージをＵＤＰで送信するためにＵＤＰ処理部１４３に渡す処理や、通信装置１００から送信されたＩＫＥメッセージから暗号化および復号化に使用する鍵やＩＳＡＫＭＰ  ＳＡの作成および維持に必要なパラメータなどのパラメータを取得し、記憶部１４７に記憶する処理を行う。
【００５３】
さらに、ＩＫＥ処理部１４１は、通信装置１００から送信され、ＮＡＴ変換された後のＵＤＰデータグラムの送信元ＵＤＰポート番号を取得して記憶部１４７に記憶するとともに、記憶した送信元ポート番号を付加して拡張したＩＫＥメッセージを作成し、通信装置１００に送信する点が、ＩＫＥ処理部１０１と異なっている。拡張したＩＫＥメッセージの詳細については後述する。
【００５４】
サーバアプリケーション１４２は、通信装置１００内のクライアントアプリケーション１０２と通信を行うことにより所定の処理を行うアプリケーションである。具体的には、サーバアプリケーション１４２は、通信装置１００と通信する際に用いるデータを生成しＵＤＰ処理部１４３に渡し、通信装置１００から返信されたデータをＵＤＰ処理部１４３から受け取って所定の処理を行う。通信装置１００内のクライアントアプリケーション１０２と通信を行う処理を含むものであれば、サーバアプリケーション１４２の処理内容はどのようなものであってもよい。
【００５５】
ＵＤＰ処理部１４３は、ＵＤＰのプロトコルにしたがって通信装置１００との間で送受信するＵＤＰデータグラムの処理を行うものである。具体的には、ＵＤＰ処理部１４３は、ＩＫＥ処理部１４１から渡されたＩＫＥメッセージにＵＤＰヘッダを付加し送受信部１４６に渡す処理、サーバアプリケーション１４２から渡されたデータにＵＤＰヘッダを付加しＥＳＰ処理部１４４に渡す処理を行う。
【００５６】
また、ＵＤＰ処理部１４３は、ＥＳＰ処理部１４４から渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードをサーバアプリケーション１４２に渡す処理を行う。
【００５７】
また、ＵＤＰ処理部１４３は、送受信部１４６から受信したＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードを取得し、ＵＤＰペイロードがＥＳＰヘッダを含む場合は、送受信部１４６から受信したＵＤＰデータグラムをカプセル化ＵＤＰ処理部１４５に渡し、ＵＤＰペイロードがＥＳＰヘッダを含まない場合は、ＩＫＥ処理部１４１にＵＤＰペイロードを渡す処理を行う。
【００５８】
ＥＳＰ処理部１４４は、ＥＳＰプロトコルにしたがって通信装置１００との間で送受信するデータの暗号化処理を行うものである。具体的には、ＥＳＰ処理部１４４は、記憶部１４７に記憶された暗号化用の鍵などのパラメータを使用してＵＤＰ処理部１４３から渡されたＵＤＰデータグラムを暗号化し、ＥＳＰヘッダを付加し、カプセル化ＵＤＰ処理部１４５に渡す処理を行う。
【００５９】
また、ＥＳＰ処理部１４４は、記憶部１４７に記憶された復号化用の鍵などのパラメータを使用してカプセル化ＵＤＰ処理部１４５から渡されたパケットを復号化しＵＤＰ処理部１４３に渡す処理を行う。
【００６０】
カプセル化ＵＤＰ処理部１４５は、ＵＤＰのプロトコルにしたがって、ＥＳＰ処理部１４４が暗号化したＵＤＰデータグラムに対して、さらにＵＤＰヘッダでカプセル化したＵＤＰデータグラムを作成し、通信装置１００から受信したパケットに対しては、ＥＳＰで暗号化されたＵＤＰデータグラムをさらにカプセル化しているＵＤＰヘッダを削除する処理を行うものである。
【００６１】
具体的には、カプセル化ＵＤＰ処理部１４５は、ＥＳＰ処理部１４４から渡されたＥＳＰで暗号化されたＵＤＰデータグラムにＵＤＰヘッダを付加し送受信部１４６に渡す処理を行う。また、カプセル化ＵＤＰ処理部１４５は、ＥＳＰで暗号化されたＵＤＰデータグラムをさらにカプセル化しているＵＤＰヘッダを削除したＵＤＰデータグラムをＥＳＰ処理部１４４に渡す処理を行う。
【００６２】
送受信部１４６は、ＵＤＰ処理部１４３またはカプセル化ＵＤＰ処理部１４５から渡されたＵＤＰデータグラムにＩＰヘッダを付加して通信装置１００に送信するものである。また、送受信部１４６は、通信装置１００から受信したパケットのＩＰヘッダを削除したＵＤＰデータグラムを、ＵＤＰ処理部１４３またはカプセル化ＵＤＰ処理部１４５に渡す処理を行う。
【００６３】
記憶部１４７は、暗号化および復号化に使用する鍵、ＩＳＡＫＭＰ  ＳＡの作成および維持に必要なパラメータを記憶するものであり、ＨＤＤ（Hard Disk Drive）、光ディスク、メモリカード、ＲＡＭ（Random Access Memory）などの一般的に利用されているあらゆる記憶デバイスにより構成することができる。
【００６４】
次に、このように構成された第１の実施の形態にかかる通信装置１００およびサーバ１４０間の通信処理について説明する。図５および図６は、第１の実施の形態における通信処理の全体の流れを示すシーケンス図である。
【００６５】
なお、以下では通信装置１００とサーバ１４０はＩＫＥの電子署名による認証機能つきのＡｇｇｒｅｓｓｉｖｅモードを用いて通信を確立する処理であるＩＫＥのフェーズ１の折衝を行うものとして説明するが、ＩＫＥのＭａｉｎモードを用いてもよいし、認証方式に電子署名以外の方式を用いてもよい。
【００６６】
まず、通信装置１００がサーバ１４０にＩＳＡＫＭＰ  ＳＡの作成を提案する処理を行う（ステップＳ５０１）。具体的には、ステップＳ５０１では、以下の処理が行われる。
【００６７】
まず、ＩＫＥ処理部１０１がＳＡ作成提案メッセージであるＩＫＥメッセージ７０１を生成し、ＵＤＰ処理部１０３に渡す。ＵＤＰ処理部１０３はＩＫＥメッセージ７０１に送信元ポート番号および送信先ポート番号が５００であるＵＤＰヘッダを付加し、送受信部１０６に渡す。送受信部１０６は、さらに送信元ＩＰアドレスがＣで送信先ＩＰアドレスがＳであるＩＰヘッダを付加する。
【００６８】
ＩＫＥメッセージ７０１はＩＫＥプロトコルの標準仕様を定めた非特許文献２に準拠したフォーマットで構成される。図７は、第１の実施の形態で送受信されるＩＫＥメッセージのフォーマットの一例を示した説明図である。
【００６９】
同図に示すように、ＩＫＥメッセージ７０１は、ＩＳＡＫＭＰヘッダ（ＨＤＲ）、ＳＡペイロード（ＳＡ）、Ｋｅｙ  Ｅｘｃｈａｎｇｅペイロード（ＫＥ）、Ｎｏｎｃｅペイロード（Ｎｉ）、ＩＤペイロード（ＩＤｉｉ）、ＶｅｎｄｏｒＩＤペイロード（ＶＩＤ）を含む。
【００７０】
ステップＳ５０１でＩＰヘッダを付加されたＩＫＥメッセージ７０１は、送受信部１０６によりＮＡＴ  Ｂｏｘ１２０に送信される（ステップＳ５０２）。なお、ステップＳ５０２の下部に記載された“（５００→５００）”は、ＩＫＥメッセージ７０１のＵＤＰヘッダの送信元ポート番号が５００、送信先ポート番号が５００に設定されていることを表す。
【００７１】
次に、ＮＡＴ  Ｂｏｘ１２０がＩＫＥメッセージ７０１を受信し、ＩＫＥメッセージ７０１をＮＡＴ変換し、インターネット１３０に転送する（ステップＳ５０３）。この結果、ＩＫＥメッセージ７０１の送信元ＩＰアドレスがＮに変換される。ＵＤＰヘッダの送信元ポート番号もＮＡＴ変換により変換される。図５では、ＮＡＴ変換後のＩＫＥメッセージ７０１の送信元ポート番号をｐｎ１としている。なお、ＮＡＴ変換後の送信元ポート番号が、ＮＡＴ変換前と同じポート番号になる場合もある。
【００７２】
次に、サーバ１４０がＩＳＡＫＭＰ  ＳＡ作成提案の検証を行う（ステップＳ５０４）。具体的には、ステップＳ５０４では、以下の処理が行われる。
【００７３】
まず、送受信部１４６がＩＫＥメッセージ７０１を受信し、ＩＰヘッダを削除して得られるＵＤＰデータグラムをＵＤＰ処理部１４３に渡す。ＵＤＰ処理部１４３は、渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードを取得する。ＩＳＡＫＭＰ  ＳＡ作成提案の段階では、ＥＳＰによる暗号化は行われていない。すなわち、ＵＤＰペイロードにＥＳＰヘッダは含まれないため、ＵＤＰ処理部１４３は、ＩＫＥ処理部１４１にＵＤＰペイロードを渡す。ＩＫＥ処理部１４１は渡されたＩＫＥメッセージ７０１を検証し、ＩＫＥメッセージ７０１で示される提案を受諾するか否かを決定する。
【００７４】
提案を受諾する場合、サーバ１４０は、提案の受諾処理を行う（ステップＳ５０５）。具体的には、ステップＳ５０５では、以下の処理が行われる。
【００７５】
まず、ＩＳＡＫＭＰ  ＳＡの確立に必要なパラメータを通信装置１００に通知するために、ＩＫＥ処理部１４１がＩＫＥメッセージ７０２を作成し、ＵＤＰ処理部１４３に渡す。ＵＤＰ処理部１４３は送信元ポート番号が５００で送信先ポート番号がｐｎ１であるＵＤＰヘッダを付加し送受信部１４６に渡す。送受信部１４６は送信元ＩＰアドレスがＳで送信先ＩＰアドレスがＮであるＩＰヘッダを付加する。
【００７６】
ＩＫＥメッセージ７０２は図７に示すようにＩＳＡＫＭＰヘッダ（ＨＤＲ）、ＳＡペイロード（ＳＡ）、Ｋｅｙ  Ｅｘｃｈａｎｇｅペイロード（ＫＥ）、Ｎｏｎｃｅペイロード（Ｎｒ）、ＩＤペイロード（ＩＤｉｒ）、Ｃｅｒｔペイロード（ＣＥＲＴ）、ＶｅｎｄｏｒＩＤペイロード（ＶＩＤ）、２つのＮＡＴ−Ｄペイロード（ＮＡＴ−Ｄ）、ＳＩＧＮＡＴＵＲＥペイロード（ＳＩＧ＿Ｉ）を含む。
【００７７】
ステップＳ５０５でＩＰヘッダを付加されたＩＫＥメッセージ７０２は、送受信部１４６によりインターネット１３０を介してＮＡＴ  Ｂｏｘ１２０に送信される（ステップＳ５０６）。
【００７８】
次に、ＮＡＴ  Ｂｏｘ１２０がＩＫＥメッセージ７０２を受信し、ＩＫＥメッセージ７０２をＮＡＴ変換し、通信装置１００に転送する（ステップＳ５０７）。この結果、ＩＫＥメッセージ７０２の送信先ＩＰアドレスがＣに変換され、送信先ポート番号は５００に変換される。
【００７９】
次に、通信装置１００がサーバの認証処理を行う（ステップＳ５０８）。具体的には、ステップＳ５０８では、以下の処理が行われる。
【００８０】
まず、送受信部１０６がＩＫＥメッセージ７０２を受信し、ＩＰヘッダを削除して得られるＵＤＰデータグラムをＵＤＰ処理部１０３に渡す。ＵＤＰ処理部１０３は、渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードを取得する。ＵＤＰペイロードにＥＳＰヘッダが含まれないため、ＵＤＰ処理部１０３は、ＩＫＥ処理部１０１にＵＤＰペイロードを渡す。ＩＫＥ処理部１０１は渡されたＩＫＥメッセージ７０２のＳＩＧＮＡＴＵＲＥペイロードなどを用いてサーバ１４０から受信したメッセージであることを検証する。さらに、ＩＫＥ処理部１０１は、ＩＫＥメッセージ７０２に含まれるＩＳＡＫＭＰ  ＳＡの作成に必要なパラメータを記憶部１０７に記憶する。
【００８１】
次に、通信装置１００は、サーバ１４０に自装置の認証を要求する認証要求処理を実行する（ステップＳ５０９）。具体的には、ステップＳ５０９では、以下の処理が行われる。
【００８２】
まず、ＩＫＥ処理部１０１は、通信装置１００内の他のアプリケーションに使用されていないＵＤＰヘッダのポート番号ｐｃをＵＤＰ処理部１０３から取得してＩＫＥメッセージ７０３を生成し、生成したＩＫＥメッセージ７０３をＵＤＰ処理部１０３に渡す。ＵＤＰ処理部１０３は渡されたＩＫＥメッセージ７０３に送信元ポート番号がｐｃ、送信先ポート番号が４５００であるＵＤＰヘッダを付加し、送受信部１０６に渡す。送受信部１０６は渡されたＩＫＥメッセージ７０３に送信元ＩＰアドレスがＣ、送信先ＩＰアドレスがＳであるＩＰヘッダを付加する。
【００８３】
ＩＫＥメッセージ７０３は、図７に示すようにＩＳＡＫＭＰヘッダ（ＨＤＲ）、Ｃｅｒｔペイロード（ＣＥＲＴ）、２つのＮＡＴ−Ｄペイロード（ＮＡＴ−Ｄ）、ＳＩＧＮＡＴＵＲＥペイロード（ＳＩＧ＿Ｉ）を含むものである。
【００８４】
ステップＳ５０９でＩＰヘッダを付加されたＩＫＥメッセージ７０３は、送受信部１０６によりＮＡＴ  Ｂｏｘ１２０に送信される（ステップＳ５１０）。
【００８５】
次に、ＮＡＴ  Ｂｏｘ１２０がＩＫＥメッセージ７０３を受信し、ＩＫＥメッセージ７０３をＮＡＴ変換し、インターネット１３０に転送する（ステップＳ５１１）。この結果、ＩＫＥメッセージ７０３の送信元ＩＰアドレスがＮに変換される。ＵＤＰヘッダの送信元ポート番号もＮＡＴ変換により変換される。図５では、ＮＡＴ変換後のＩＫＥメッセージ７０３の送信元ポート番号をｐｎ２としている。なお、ＮＡＴ変換後の送信元ポート番号が、ＮＡＴ変換前と同じポート番号になる場合もある。
【００８６】
次に、サーバ１４０が通信装置１００の認証処理を行う（ステップＳ５１２）。具体的には、ステップＳ５１２では、以下の処理が行われる。
【００８７】
まず、送受信部１４６がＩＫＥメッセージ７０３を受信し、ＩＰヘッダを削除して得られるＵＤＰデータグラムをＵＤＰ処理部１４３に渡す。ＵＤＰ処理部１４３は、渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードを取得する。ＵＤＰペイロードにＥＳＰヘッダは含まれないため、ＵＤＰ処理部１４３は、ＩＫＥ処理部１４１にＵＤＰペイロードを渡す。ＩＫＥ処理部１４１は渡されたＩＫＥメッセージ７０３のＳＩＧＮＡＴＵＲＥペイロードなどを用いて通信装置１００から受信したメッセージであることを検証する。
【００８８】
正常に検証された場合は、サーバ１４０は、通信装置１００に対してＵＤＰヘッダの送信元ポート番号を通知するポート番号通知処理を実行する（ステップＳ５１３）。ポート番号通知処理の詳細については後述する。
【００８９】
ポート番号通知処理により、ＩＫＥメッセージ７０４がインターネット１３０を介してＮＡＴ  Ｂｏｘ１２０に送信される（ステップＳ５１４）。ＩＫＥメッセージ７０４のフォーマットについては後述する。
【００９０】
次に、ＮＡＴ  Ｂｏｘ１２０がＩＫＥメッセージ７０４を受信し、ＩＫＥメッセージ７０４をＮＡＴ変換し、通信装置１００に転送する（ステップＳ５１５）。この結果、ＩＫＥメッセージ７０４の送信先ＩＰアドレスがＣに変換され、送信先ポート番号はｐｃに変換される。
【００９１】
次に、通信装置１００は、ＩＳＡＫＭＰ  ＳＡの設定処理を実行する（ステップＳ５１６）。ＩＳＡＫＭＰ  ＳＡ設定処理の詳細については後述する。
【００９２】
次に、通信装置１００のクライアントアプリケーション１０２は、記憶部１０７に記憶された送信元ポート番号ｐｎ２を使用することをＵＤＰ処理部１０３に要請するポート番号予約処理を行う（ステップＳ５１７）。
【００９３】
通信装置１００内で動作しているプログラムのいずれかが既にＵＤＰヘッダのポート番号としてｐｎ２を使用していた場合、ＵＤＰ処理部１０３は送信元ポート番号ｐｎ２の使用許可の要請を拒否する。この場合、再度ステップＳ５０１のＩＳＡＫＭＰ  ＳＡ作成提案処理から処理をやり直す。再処理では、ステップＳ５０９で異なるポート番号ｐｃを取得するように構成することにより、最初に取得したｐｎ２とは異なるポート番号を取得して、再度使用許可を要請することができる。なお、要請を拒否する旨をクライアントアプリケーション１０２に通知し、シーケンスを終了するように構成してもよい。
【００９４】
一方、ポート番号ｐｎ２が使用可能な場合は、通信装置１００は、ＥＳＰで暗号化されたパケットで通信するために必要なパラメータを通知するＩＰＳｅｃ  ＳＡ作成提案処理を実行する（ステップＳ５１８）。具体的には、ステップＳ５１８では、以下の処理が行われる。
【００９５】
まず、クライアントアプリケーション１０２はＩＫＥ処理部１０１にサーバ１４０との折衝を継続することを通知する。ＩＫＥ処理部１０１はＥＳＰで暗号化されたパケットによる通信に必要なパラメータを記憶部１０７に記憶するとともに、ＩＫＥメッセージ７０５を生成し、ＵＤＰ処理部１０３にＩＫＥメッセージ７０５を渡す。ＵＤＰ処理部１０３は渡されたＩＫＥメッセージ７０５に送信元ポート番号がｐｃ、送信先ポート番号が４５００であるＵＤＰヘッダを付加し、送受信部１０６に渡す。送受信部１０６は渡されたＩＫＥメッセージ７０５に送信元ＩＰアドレスがＣで送信先ＩＰアドレスがＳであるＩＰヘッダを付加する。
【００９６】
ＩＫＥメッセージ７０５は、図７に示すようにＩＳＡＫＭＰヘッダ（ＨＤＲ）、ＨＡＳＨペイロード（ＨＡＳＨ（１））、ＳＡペイロード（ＳＡ）、Ｎｏｎｃｅペイロード（Ｎｉ）、Ｋｅｙ  Ｅｘｃｈａｎｇｅペイロード（ＫＥ）、２つのＩＤペイロード（ＩＤｃｉおよびＩＤｃｒ）、２つのＮＡＴ−ＯＡペイロード（ＮＡＴ−ＯＡｉ、ＮＡＴ−ＯＡｒ）を含む。
【００９７】
ステップＳ５１８でＩＰヘッダを付加されたＩＫＥメッセージ７０５は、送受信部１０６によりＮＡＴ  Ｂｏｘ１２０に送信される（ステップＳ５１９）。
【００９８】
次に、ＮＡＴ  Ｂｏｘ１２０がＩＫＥメッセージ７０５を受信し、ＩＫＥメッセージ７０５をＮＡＴ変換し、サーバ１４０に転送する（ステップＳ５２０）。この結果、ＩＫＥメッセージ７０５の送信元ＩＰアドレスがＮに変換され、送信元ポート番号はｐｎ２に変換される。
【００９９】
次に、サーバ１４０がＩＰＳｅｃ  ＳＡ作成提案の検証を行う（ステップＳ５２１）。具体的には、ステップＳ５２１では、以下の処理が行われる。
【０１００】
まず、送受信部１４６がＩＫＥメッセージ７０５を受信し、ＩＰヘッダを削除して得られるＵＤＰデータグラムをＵＤＰ処理部１４３に渡す。ＵＤＰ処理部１４３は、渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードを取得する。ＵＤＰペイロードにＥＳＰヘッダは含まれないため、ＵＤＰ処理部１４３は、ＩＫＥ処理部１４１にＵＤＰペイロードを渡す。ＩＫＥ処理部１４１は渡されたＩＫＥメッセージ７０５に記載された提案の内容を検証する。提案を受諾する場合、ＩＫＥ処理部１４１はＩＫＥメッセージ７０５に記載された、ＥＳＰで暗号化したパケットによる通信に必要なパラメータを記憶部１４７に記憶する。
【０１０１】
正常に検証された場合は、サーバ１４０は、通信装置１００に対してＩＰｓｅｃ  ＳＡの確立に必要なパラメータを通知するパラメータ通知処理を実行する（ステップＳ５２２）。具体的には、ステップＳ５２２では、以下の処理が行われる。
【０１０２】
まず、ＩＫＥ処理部１４１はＩＫＥメッセージ７０６を作成し、ＵＤＰ処理部１４３に渡す。ＵＤＰ処理部１４３は送信元ポート番号が４５００で送信先ポート番号がｐｎ２であるＵＤＰヘッダを付加し送受信部１４６に渡す。送受信部１４６は送信元ＩＰアドレスがＳで送信先ＩＰアドレスがＮであるＩＰヘッダを付加する。
【０１０３】
ＩＫＥメッセージ７０６は、図７に示すようにＩＳＡＫＭＰヘッダ（ＨＤＲ）、ＨＡＳＨペイロード（ＨＡＳＨ（２））、ＳＡペイロード（ＳＡ）、Ｎｏｎｃｅペイロード（Ｎｒ）、Ｋｅｙ  Ｅｘｃｈａｎｇｅペイロード（ＫＥ）、２つのＩＤペイロード（ＩＤｃｉおよびＩＤｃｒ）、２つのＮＡＴ−ＯＡペイロード（ＮＡＴ−ＯＡｉ、ＮＡＴ−ＯＡｒ）を含む。
【０１０４】
ステップＳ５２２でＩＰヘッダを付加されたＩＫＥメッセージ７０６は、送受信部１４６によりインターネット１３０を介してＮＡＴ  Ｂｏｘ１２０に送信される（ステップＳ５２３）。
【０１０５】
次に、ＮＡＴ  Ｂｏｘ１２０がＩＫＥメッセージ７０６を受信し、ＩＫＥメッセージ７０６をＮＡＴ変換し、通信装置１００に転送する（ステップＳ５２４）。この結果、ＩＫＥメッセージ７０２の送信先ＩＰアドレスがＣに変換され、送信先ポート番号はｐｃに変換される。
【０１０６】
次に、通信装置１００は、ＩＰＳｅｃ  ＳＡの設定処理を実行する（ステップＳ５２５）。具体的には、ステップＳ５２５では、以下の処理が行われる。
【０１０７】
まず、送受信部１０６がＩＫＥメッセージ７０６を受信し、ＩＰヘッダを削除して得られるＵＤＰデータグラムをＵＤＰ処理部１０３に渡す。ＵＤＰ処理部１０３は、渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードを取得する。ＵＤＰペイロードにＥＳＰヘッダが含まれないため、ＵＤＰ処理部１０３は、ＩＫＥ処理部１０１にＵＤＰペイロードを渡す。ＩＫＥ処理部１０１は渡されたＩＫＥメッセージ７０６を検証し、ＩＫＥメッセージ７０６に記載されたＩＰｓｅｃ  ＳＡの確立に必要なパラメータを記憶部１０７に記憶する。
【０１０８】
ここまでの処理によって、通信装置１００がサーバ１４０とＥＳＰで暗号化されたパケットで通信する準備が完了する。
【０１０９】
この後、通信装置１００は、サーバ１４０に対して送信するＥＳＰで暗号化されたパケット作成するＥＳＰパケット作成処理を実行する（ステップＳ５２６）。ＥＳＰパケット作成処理の詳細については後述する。
【０１１０】
ここで、ＥＳＰ作成処理で作成されるＥＳＰパケットについて説明する。図８は、第１の実施の形態で送受信されるＥＳＰパケットの一例を示した説明図である。
【０１１１】
同図の上部のＥＳＰパケット８０１は、例えば、通信装置１００ａが取得したポート番号ｐｎ２がＵＤＰヘッダの送信元ポート番号とされたパケットを表している。また、同図の下部のＥＳＰパケット８０２は、例えば、通信装置１００ａと異なる通信装置１００ｂが取得したポート番号ｐｎ３がＵＤＰの送信元ポート番号とされたパケットを表している。
【０１１２】
ＥＳＰパケット作成処理で作成されたＥＳＰパケットは、送受信部１０６によりＮＡＴ  Ｂｏｘ１２０に送信される（ステップＳ５２７）。
【０１１３】
次に、ＮＡＴ  Ｂｏｘ１２０がＥＳＰパケットを受信し、ＥＳＰパケットをＮＡＴ変換し、サーバ１４０に転送する（ステップＳ５２８）。ＥＳＰパケットのＩＰアドレス、最も外側のＵＤＰヘッダのポート番号は、ＩＫＥメッセージ７０３やＩＫＥメッセージ７０５と同じである。このため、ＩＫＥメッセージ７０３やＩＫＥメッセージ７０５をＮＡＴ変換したときと同様にＥＳＰパケットの送信先ＩＰアドレスがＮに変換され、送信先ポート番号はｐｎ２に変換される。
【０１１４】
次に、サーバ１４０がＥＳＰパケットの受信処理を行う（ステップＳ５２９）。具体的には、ステップＳ５２９では、以下の処理が行われる。
【０１１５】
まず、送受信部１４６がＥＳＰパケットを受信し、ＩＰヘッダを削除して得られるＵＤＰデータグラムをＵＤＰ処理部１４３に渡す。ＵＤＰ処理部１４３は、渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードを取得する。ここでは、ＵＤＰペイロードにＥＳＰヘッダが含まれるため、ＵＤＰ処理部１４３は、カプセル化ＵＤＰ処理部１４５にＵＤＰデータグラムを渡す。カプセル化ＵＤＰ処理部１４５は、渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードをＥＳＰ処理部１４４に渡す。ＥＳＰ処理部１４４は、暗号化されているＵＤＰデータグラムを復号化し、ＵＤＰ処理部１４３に渡す。ＵＤＰ処理部１４３は、送信元ＩＰアドレスがＮ、送信元ポート番号がｐｎ２であるデータとしてサーバアプリケーション１４２にＥＳＰパケットに含まれていたデータを渡す。
【０１１６】
以上のような処理により、通信装置１００はサーバ１４０とＥＳＰで暗号化されたパケットによる通信を行う。
【０１１７】
次に、ステップＳ５１３のポート番号通知処理の詳細について説明する。図９は、ポート番号通知処理の全体の流れを示すフローチャートである。
【０１１８】
まず、サーバ１４０のＩＫＥ処理部１４１はＮＡＴ変換後のＩＫＥメッセージ７０３の送信元ポート番号ｐｎ２を通信装置１００に通知するために、送信元ポート番号ｐｎ２を記載したＩＫＥメッセージ７０４を生成する（ステップＳ９０１）。
【０１１９】
ＩＫＥメッセージ７０４は図７に示すようにＩＳＡＫＭＰヘッダ（ＨＤＲ）を含み、さらにＵＤＰヘッダの送信元ポート番号を記載するために拡張したフィールドを有する。第１の実施の形態では、拡張したフィールドは新たなペイロードとし、ＮＡＴ−ＯＰｉと記すこととする。
【０１２０】
ステップＳ９０１では、ＩＫＥ処理部１４１は、ＩＫＥメッセージ７０４のＮＡＴ−ＯＰｉにｐｎ２を記載する。なお、新たなペイロードを定義せず、既存のペイロード中の使用されていないフィールドにポート番号を記載するように構成してもよい。
【０１２１】
次に、ＵＤＰ処理部１４３は、送信元ポート番号が４５００、送信先ポート番号がｐｎ２であるＵＤＰヘッダを付加する（ステップＳ９０２）。
【０１２２】
次に、送受信部１４６は、ＩＫＥメッセージ７０４に送信元ＩＰアドレスがＳ、送信先ＩＰアドレスがＮであるＩＰヘッダを付加し（ステップＳ９０３）、インターネット１３０を介して通信装置１００に送信する（ステップＳ９０４）。
【０１２３】
このように、ＮＡＴ変換後の送信元ポート番号ｐｎ２をサーバ１４０側から通信装置１００へ通知することにより、通信装置１００側で、ＥＳＰでカプセル化するＵＤＰデータグラムの送信元ポート番号を通知されたポート番号ｐｎ２に設定することができる。このため、ＥＳＰでカプセル化されたＵＤＰデータグラムを受信したサーバ１４０のサーバアプリケーション１４２は、送信元ポート番号の置換等の処理を行うことなく、復号化したＵＤＰデータグラムに含まれる送信元ポート番号（ｐｎ２）を用いて適切に通信を行うことが可能となる。
【０１２４】
次に、ステップＳ５１６のＩＳＡＫＭＰ  ＳＡ設定処理の詳細について説明する。図１０は、第１の実施の形態におけるＩＳＡＫＭＰ  ＳＡ設定処理の全体の流れを示すフローチャートである。
【０１２５】
まず、通信装置１００の送受信部１０６がＩＫＥメッセージ７０４を受信し、ＩＰヘッダを削除して得られるＵＤＰデータグラムをＵＤＰ処理部１０３に渡す（ステップＳ１００１）。
【０１２６】
次に、ＵＤＰ処理部１０３は、渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードをＩＫＥ処理部１０１に渡す（ステップＳ１００２）。ここでは、ＵＤＰペイロードにＥＳＰヘッダが含まれないためである。
【０１２７】
次に、ＩＫＥ処理部１０１は、ＳＩＧＮＡＴＵＲＥペイロードなどを用いてサーバ１４０から受信したメッセージであることを検証する（ステップＳ１００３）。さらに、ＩＫＥ処理部１０１は、ＩＫＥメッセージ７０４に含まれるＮＡＴ−ＯＰｉペイロードに記載されたＵＤＰヘッダの送信元ポート番号（ｐｎ２）を記憶部１０７に記憶する（ステップＳ１００４）。
【０１２８】
次に、ＩＫＥ処理部１０１は、ステップＳ５０８で記憶部１０７に記憶されたＩＳＡＫＭＰ  ＳＡの作成に必要なパラメータを読み出し、読み出したパラメータによりＩＳＡＫＭＰ  ＳＡを設定し、クライアントアプリケーション１０２にＩＳＡＫＭＰ  ＳＡの設定が完了したことを通知する（ステップＳ１００５）。
【０１２９】
このように、ＩＳＡＫＭＰ  ＳＡ設定処理では、事前に記憶されたパラメータを用いてＩＳＡＫＭＰ  ＳＡの設定を行うとともに、拡張したＩＫＥメッセージ７０４から取得した送信元ポート番号（ｐｎ２）を記憶部１０７に記憶する。これにより、後述するＥＳＰパケット作成処理で、取得した送信元ポート番号を利用可能となる。
【０１３０】
次に、ステップＳ５２６のＥＳＰパケット作成処理の詳細について説明する。図１１は、第１の実施の形態におけるＥＳＰパケット作成処理の全体の流れを示すフローチャートである。
【０１３１】
まず、通信装置１００のクライアントアプリケーション１０２がサーバ１４０のサーバアプリケーション１４２との通信に必要なデータを作成し、ＵＤＰ処理部１０３に渡す（ステップＳ１１０１）。
【０１３２】
次に、ＵＤＰ処理部１０３は、記憶部１０７からポート番号（ｐｎ２）を取得し、取得したポート番号（ｐｎ２）を送信元ポート番号、サーバアプリケーション１４２用のポート番号（ｐｓ）を送信先ポート番号とするＵＤＰヘッダをデータに付加する（ステップＳ１１０２）。
【０１３３】
次に、ＥＳＰ処理部１０４は、データにＵＤＰヘッダを付加したＵＤＰデータグラムを記憶部１０７に記憶したパラメータを用いて暗号化し、ＥＳＰヘッダを付加する（ステップＳ１１０３）。
【０１３４】
次に、カプセル化ＵＤＰ処理部１０５は、記憶部１０７に記憶されたポート番号ｐｃを送信元ポート番号、ＩＫＥ処理用のポート番号４５００を送信先ポート番号とするＵＤＰヘッダを付加する（ステップＳ１１０４）。
【０１３５】
次に、送受信部１０６は、送信元ＩＰアドレスがＣ、送信先ＩＰアドレスがＳであるＩＰヘッダを付加することにより、図８に示すようなＥＳＰパケット８０１を形成し、ＥＳＰパケット８０１をＮＡＴ  Ｂｏｘ１２０に送信する（ステップＳ１１０５）。
【０１３６】
以上のような処理を行うことにより、例えばＮＡＴ  Ｂｏｘ１２０配下の別の通信装置１００ｂがサーバ１４０のＵＤＰ用のポート番号ｐｓに対し、ＥＳＰで暗号化されたパケットで通信することを試みた場合であっても、通信装置１００ａ、１００ｂが同時にサーバ１４０と混乱なく通信を行うことができる。以下にその理由について説明する。
【０１３７】
ＮＡＴ  ｂｏｘ１２０の性質上、ＮＡＴ  ｂｏｘ１２０は配下の複数の通信装置がインターネット１３０上の同一のサーバ１４０上の同一のＵＤＰポート宛のパケットを送信した場合、ＮＡＴ  ｂｏｘ１２０がＮＡＴ変換した後の送信元ポート番号は、それぞれ異なるポート番号になる。
【０１３８】
そこで、通信装置１００ｂが図５および図６に示したシーケンスと同様の処理を行い、ＩＫＥメッセージをサーバ１４０のＵＤＰ用のポート番号（４５００）に送信すると、ＮＡＴ  Ｂｏｘ１２０は、通信装置１００ａが送信したＩＫＥメッセージに対して変換したポート番号とは異なる送信元ポート番号でＩＫＥメッセージをＮＡＴ変換する。
【０１３９】
ここで、通信装置１００ｂに対するＮＡＴ変換前のＵＤＰヘッダの送信元ポート番号をｐｄとし、ＮＡＴ変換後のＵＤＰヘッダの送信元ポート番号をｐｎ３とすると、通信装置１００ｂが送信するパケットは図８のＥＳＰパケット８０２のようになる。図８に示すように、通信装置１００ａが送信するＥＳＰパケット８０１と通信装置１００ｂが送信するＥＳＰパケット８０２のＥＳＰで暗号化されたＵＤＰデータグラムの送信元ポート番号はそれぞれｐｎ２、ｐｎ３であり、必ず異なるポート番号になる。
【０１４０】
したがって、サーバ１４０内のサーバアプリケーション１４２は、通信装置１００ａと通信装置１００ｂが送信したパケットがそれぞれ異なる通信装置から送信されたパケットであることを認識可能となり、混乱なく同時に通信装置１００ａと通信装置１００ｂに通信可能となる。
【０１４１】
なお、上述の処理では、鍵交換プロトコルとして拡張したＩＫＥを用いているが、情報交換時に送信元ポート番号を通知できるものであれば、他のプロトコルを用いてもよい。
【０１４２】
また、サーバ１４０自体が混信を避ける機能を有している場合は、ステップＳ５０５またはステップＳ５１３で、サーバ１４０から通信装置１００に対してポート番号ｐｎ２以外のポート番号をＥＳＰでカプセル化するＵＤＰヘッダの送信元ポート番号として使用してもよい旨を示すメッセージを通知するように構成してもよい。
【０１４３】
この場合は、サーバ１４０のＩＫＥ処理部１４１が、送信するＩＫＥメッセージ内に上記メッセージを記載し、ＵＤＰ処理部１４３および送受信部１４６により通信装置１００にＩＫＥメッセージを送信する。当該ＩＫＥメッセージを受信した通信装置１００は、ステップＳ５１７で予約する送信元ポート番号をｐｎ２以外にすることができる。
【０１４４】
このように、第１の実施の形態にかかる通信装置では、インターネット上のサーバからＮＡＴ変換後の送信元ポート番号を受信し、当該送信元ポート番号を、暗号化通信プロトコルによりカプセル化するプロトコルの送信元ポート番号に設定してサーバとの通信を行うことができる。このため、カプセル化を原因とする混信を生じることなく、サーバ内のアプリケーションがネットワーク中継装置配下の複数の装置と通信することができる。また、サーバ側で送信元ポート番号の置換等の処理を行う必要がないため、サーバの処理負荷を増大させずに混信を回避した通信を行うことができる。
【０１４５】
（第２の実施の形態）
第２の実施の形態にかかる通信装置は、送信元ポート番号を含むアドレスに関する情報を提供するアドレス情報提供装置であるＳＴＵＮ（Simple Traversal of UDP through NATs）サーバからＮＡＴ変換後の送信元ポート番号を受信し、当該送信元ポート番号を、ＥＳＰでカプセル化するＵＤＰヘッダの送信元ポート番号に設定してサーバとの通信を行うものである。
【０１４６】
図１２は、第２の実施の形態にかかる通信装置１２００を含むネットワーク全体の構成を示すブロック図である。同図に示すように、第２の実施の形態にかかるネットワークは、通信装置１２００が、ＮＡＴ  Ｂｏｘ１２２０を介してインターネット１３０に接続され、インターネット１３０に接続された通信相手であるサーバ１２４０およびＳＴＵＮサーバ１２５０と通信を行うように構成されている。
【０１４７】
なお、同図では、異なるプライベートＩＰアドレスＣおよびＤが割り当てられた２つの通信装置１２００ａ、１２００ｂが記載されているが、機能や構成は同一である。通信装置１２００ａ、１２００ｂをまとめて通信装置１２００と呼ぶ。サーバ１２４０には、グローバルＩＰアドレスＳが割り当てられており、ＳＴＵＮサーバ１２５０には、グローバルＩＰアドレスＴ１およびＴ２が割り当てられている。
【０１４８】
ＮＡＴ  Ｂｏｘ１２２０は、第１の実施の形態におけるＮＡＴ  Ｂｏｘ１２０と同様にＮＡＴ変換機能を有するネットワーク中継装置であり、インターネット１３０に接続する側のネットワークインタフェースには、グローバルＩＰアドレスＮが割り当てられている。
【０１４９】
第２の実施の形態では、ＮＡＴ  Ｂｏｘ１２２０は、Ｃｏｎｅ  ＮＡＴと呼ばれる種類のＮＡＴ  Ｂｏｘであることを前提とする。Ｃｏｎｅ  ＮＡＴタイプのＮＡＴ  Ｂｏｘは、転送プロトコル、送信元ＩＰアドレス、送信元ポート番号ごとに送信元ＩＰアドレス、送信元ポート番号を一定の値に変換する。
【０１５０】
このため、通信装置１２００が転送プロトコル、送信元ＩＰアドレス、送信元ポート番号を固定にしてサーバ１２４０またはＳＴＵＮサーバ１２５０と通信する限り、ＮＡＴ変換後の送信元ポート番号はサーバ１２４０およびＳＴＵＮサーバ１２５０のいずれに対しても一定の値になる。したがって、ＳＴＵＮサーバ１２５０から通知されたＮＡＴ変換後の送信元ポート番号を使用してサーバ１２４０と通信を行っても正常にパケットの送受信を行うことが可能となる。
【０１５１】
一方、送信先ＩＰアドレス等も考慮してアドレスを変換するＳｙｍｍｅｔｒｉｃ  ＮＡＴタイプなどのＮＡＴ  Ｂｏｘの場合、通信相手によってＮＡＴ変換後の送信元ポート番号が変更される可能性がある。したがって、ＳＴＵＮサーバ１２５０から通知されたＮＡＴ変換後の送信元ポート番号を使用してサーバ１２４０と通信を行った場合、正常に通信できない可能性がある。
【０１５２】
第２の実施の形態では、事前にＳＴＵＮサーバ１２５０から通知されたＮＡＴ変換後の送信元ポート番号を使用してサーバ１２４０と通信を行うため、ＮＡＴ  Ｂｏｘ１２２０は、Ｃｏｎｅ  ＮＡＴタイプのＮＡＴ  Ｂｏｘであることが必要となる。
【０１５３】
通信装置１２００は、ＩＫＥプロトコルによりサーバ１２４０と暗号化通信の確立を行うとともに、ＳＴＵＮサーバ１２５０からＮＡＴ変換後のＵＤＰヘッダの送信元ポート番号を取得し、取得した送信元ポート番号をＵＤＰヘッダに設定したＵＤＰデータグラムをＥＳＰヘッダおよび別のＵＤＰヘッダでカプセル化したパケットを作成してサーバ１４０と通信を行うものである。
【０１５４】
このように、第２の実施の形態にかかる通信装置１２００は、サーバ１２４０ではなく、アドレス情報を提供するＳＴＵＮサーバ１２５０からＮＡＴ変換後の送信元ポート番号を取得する点が、第１の実施の形態にかかる通信装置１００と異なっている。
【０１５５】
なお、第１の実施の形態では、ＩＫＥメッセージを拡張し、サーバ１４０がＮＡＴ変換後の送信元ポート番号を返信していたが、第２の実施の形態ではＩＫＥメッセージを拡張する必要はない。したがって、サーバ１２４０は非特許文献１および非特許文献２に記載されている標準的なプロトコルにしたがった動作をすれば十分であり、新たな機能を備える必要がない。
【０１５６】
図１３は、第２の実施の形態にかかる通信装置１２００の構成を示すブロック図である。同図に示すように、通信装置１２００は、ＩＫＥ処理部１２０１と、クライアントアプリケーション１０２と、ＵＤＰ処理部１２０３と、ＥＳＰ処理部１０４と、カプセル化ＵＤＰ処理部１０５と、送受信部１０６と、記憶部１０７と、ＳＴＵＮクライアント１２０８とを備えている。
【０１５７】
第２の実施の形態では、ＳＴＵＮクライアント１２０８を追加したこと、および、ＩＫＥ処理部１２０１とＵＤＰ処理部１２０３の機能が第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかる通信装置１００の構成を表すブロック図である図３と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１５８】
ＩＫＥ処理部１２０１は、第１の実施の形態におけるＩＫＥ処理部１０１と同様に、ＩＫＥプロトコルにしたがってサーバ１２４０との間で送受信するメッセージであるＩＫＥメッセージの処理を行うものである。第２の実施の形態では、ＩＫＥメッセージを拡張せず、標準のＩＫＥプロトコルにしたがって処理を行うため、ＮＡＴ変換後の送信元ポート番号を含むように拡張されたＩＫＥメッセージの処理を行わない点が、第１の実施の形態におけるＩＫＥ処理部１０１と異なっている。
【０１５９】
ＵＤＰ処理部１２０３は、第１の実施の形態におけるＵＤＰ処理部１０３と同様に、ＵＤＰのプロトコルにしたがってサーバ１２４０との間で送受信するＵＤＰデータグラムの処理を行うものである。
【０１６０】
また、ＵＤＰ処理部１２０３は、第１の実施の形態におけるＵＤＰ処理部１０３の機能に加え、ＳＴＵＮクライアント１２０８から渡されたＳＴＵＮメッセージであるＢｉｎｄｉｎｇ  ＲｅｑｕｅｓｔにＵＤＰヘッダを付加し送受信部１０６に渡す処理を行う。
【０１６１】
Ｂｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔは、ＳＴＵＮサーバ１２５０に対して送信元のアドレス情報を問い合わせる際に送信するメッセージである。
【０１６２】
また、ＵＤＰ処理部１２０３は、ＵＤＰペイロードがＥＳＰヘッダを含まない場合に、送信元の装置がサーバ１２４０である場合はＩＫＥ処理部１２０１にＵＤＰペイロードを渡し、送信元の装置がＳＴＵＮサーバ１２５０である場合はＳＴＵＮクライアント１２０８にＵＤＰペイロードを渡す点が、第１の実施の形態におけるＵＤＰ処理部１０３と異なっている。
【０１６３】
ＳＴＵＮクライアント１２０８は、ＳＴＵＮメッセージであるＢｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔを生成しＵＤＰ処理部１２０３に渡す処理や、ＵＤＰ処理部１２０３から渡されたＳＴＵＮメッセージであるＢｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅから、Ｂｉｎｄｉｎｇ  ＲｅｑｕｅｓｔをＮＡＴ変換した後の送信元ポート番号を取得し、取得した送信元ポート番号を記憶部１０７に記憶する処理を行う。
【０１６４】
Ｂｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅは、受信したＢｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔに対してＳＴＵＮサーバ１２５０が返信するアドレス情報を含むメッセージである。
【０１６５】
図１４は、第２の実施の形態にかかるサーバ１２４０の構成を示すブロック図である。同図に示すように、サーバ１２４０は、ＩＫＥ処理部１２４１と、サーバアプリケーション１４２と、ＵＤＰ処理部１４３と、ＥＳＰ処理部１４４と、カプセル化ＵＤＰ処理部１４５と、送受信部１４６と、記憶部１４７とを備えている。
【０１６６】
第２の実施の形態では、ＩＫＥ処理部１２４１の機能が第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかる通信装置１００の構成を表すブロック図である図４と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１６７】
ＩＫＥ処理部１２４１は、第１の実施の形態のＩＫＥ処理部１４１と同様に、ＩＫＥプロトコルにしたがって通信装置１２００との間で送受信するＩＫＥメッセージの処理を行うものであるが、拡張したＩＫＥメッセージを作成して送信する機能を有さない点が、第１の実施の形態におけるＩＫＥ処理部１４１と異なっている。
【０１６８】
図１５は、第２の実施の形態にかかるＳＴＵＮサーバ１２５０の構成を示すブロック図である。同図に示すように、ＳＴＵＮサーバ１２５０は、ＵＤＰ処理部１５０３と、送受信部１５０６と、ＳＴＵＮデーモン１５０９とを備えている。
【０１６９】
なお、ＳＴＵＮサーバ１２５０はＳＴＵＮプロトコルにしたがった動作を行えば十分であり、新たな機能を備える必要はない。また、ＳＴＵＮサーバ１２５０は、ＵＤＰポート番号ｐｔ１およびｐｔ２でＳＴＵＮメッセージを待ち受けるものとする。
【０１７０】
ＵＤＰ処理部１５０３は、ＵＤＰのプロトコルにしたがって通信装置１２００との間で送受信するＵＤＰデータグラムの処理を行うものである。具体的には、ＵＤＰ処理部１５０３は、ＳＴＵＮデーモン１５０９から渡されたＢｉｎｄｉｎｇ  ＲｅｓｐｏｎｓｅにＵＤＰヘッダを付加し送受信部１５０６に渡す処理、送受信部１５０６から渡されたＢｉｎｄｉｎｇ  ＲｅｑｕｅｓｔのＵＤＰヘッダを削除しＳＴＵＮデーモン１５０９に渡す処理を行うものである。
【０１７１】
ＳＴＵＮデーモン１５０９はＵＤＰ処理部１５０３から渡されたＢｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔに対してＢｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅを生成しＵＤＰ処理部１５０３に渡すものである。
【０１７２】
送受信部１５０６は、ＵＤＰ処理部１５０３から渡されたＢｉｎｄｉｎｇ  ＲｅｓｐｏｎｓｅにＩＰヘッダを付加して通信装置１２００に送信するものである。また、送受信部１５０６は、通信装置１２００から受信したＢｉｎｄｉｎｇ  ＲｅｑｕｅｓｔのＩＰヘッダを削除しＵＤＰ処理部１５０３に渡す処理を行う。
【０１７３】
次に、このように構成された第２の実施の形態にかかる通信装置１２００と、サーバ１２４０およびＳＴＵＮサーバ１２５０間の通信処理について説明する。図１６は、第２の実施の形態における通信処理の全体の流れを示すシーケンス図である。
【０１７４】
ステップＳ１６０１からステップＳ１６１２までのＩＳＡＫＭＰ  ＳＡ作成提案処理、サーバ認証処理、通信装置の認証処理は、第１の実施の形態にかかる通信装置１００におけるステップＳ５０１からステップＳ５１２までと同様の処理なので、その説明を省略する。
【０１７５】
通信装置１２００の認証処理を行ったあと、サーバ１２４０は、認証が完了したことを通知する認証完了通知処理を実行する（ステップＳ１６１３）。具体的には、ステップＳ１６１３では、以下の処理が行われる。
【０１７６】
まず、ＩＫＥ処理部１２４１がＩＫＥメッセージ７０７を作成し、ＵＤＰ処理部１４３に渡す。ＵＤＰ処理部１４３は送信元ポート番号が４５００で送信先ポート番号がｐｎ２であるＵＤＰヘッダを付加し送受信部１４６に渡す。送受信部１４６は送信元ＩＰアドレスがＳで送信先ＩＰアドレスがＮであるＩＰヘッダを付加する。
【０１７７】
ＩＫＥメッセージ７０７は、図７に示すようにＩＳＡＫＭＰヘッダ（ＨＤＲ）のみを含む。このように、第２の実施の形態では、送信元ポート番号を記載するように拡張したＮＡＴ−ＯＰｉペイロードを含まない点が、第１の実施の形態と異なっている。
【０１７８】
認証完了通知処理により、ＩＫＥメッセージ７０７がインターネット１３０を介してＮＡＴ  Ｂｏｘ１２２０に送信される（ステップＳ１６１４）。
【０１７９】
次に、ＮＡＴ  Ｂｏｘ１２２０がＩＫＥメッセージ７０７を受信し、ＩＫＥメッセージ７０７をＮＡＴ変換し、通信装置１２００に転送する（ステップＳ１６１５）。この結果、ＩＫＥメッセージ７０７の送信先ＩＰアドレスがＣに変換され、送信先ポート番号はｐｃに変換される。
【０１８０】
次に、通信装置１２００は、ＩＳＡＫＭＰ  ＳＡの設定処理を実行する（ステップＳ１６１６）。ＩＳＡＫＭＰ  ＳＡ設定処理の詳細については後述する。
【０１８１】
次に、通信装置１２００は、ＳＴＵＮサーバ１２５０にアドレス情報を問い合わせるためのＢｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ送信処理を実行する（ステップＳ１６１７）。具体的には、ステップＳ１６１７では、以下の処理が行われる。
【０１８２】
まず、クライアントアプリケーション１０２からポート番号の検知を要請されたＳＴＵＮクライアント１２０８が、Ｂｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔを生成し、ＵＤＰ処理部１２０３に渡す。ＵＤＰ処理部１２０３は送信元ポート番号がｐｃで送信先ポート番号がｐｔ１であるＵＤＰヘッダを付加し送受信部１０６に渡す。送受信部１０６は送信元ＩＰアドレスがＣで送信先ＩＰアドレスがＴ１であるＩＰヘッダを付加する。
【０１８３】
Ｂｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０１はＳＴＵＮプロトコルに準拠したフォーマットで構成される。図１７は、第２の実施の形態で送受信されるＳＴＵＮメッセージのフォーマットの一例を示した説明図である。同図に示すように、Ｂｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０１は、ＳＴＵＮヘッダを含んでいる。
【０１８４】
ステップＳ１６１７でＩＰヘッダを付加されたＢｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０１は、送受信部１０６によりＮＡＴ  Ｂｏｘ１２２０に送信される（ステップＳ１６１８）。
【０１８５】
次に、ＮＡＴ  Ｂｏｘ１２２０がＢｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０１を受信し、Ｂｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０１をＮＡＴ変換し、インターネット１３０に転送する（ステップＳ１６１９）。
【０１８６】
Ｂｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０１の送信元ＩＰアドレス、送信元ポート番号は既に送信したＩＫＥメッセージ７０７と同じである。そこで、ＮＡＴ  ｂｏｘ１２２０がＣｏｎｅ  ＮＡＴのタイプのＮＡＴ  ｂｏｘである場合、Ｂｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０１の送信元ＩアドレスがＮに変換され、送信元ポート番号がｐｎ２に変換される。
【０１８７】
次に、ＳＴＵＮサーバ１２５０がＢｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ受信処理を行う（ステップＳ１６２０）。具体的には、ステップＳ１６２０では、以下の処理が行われる。
【０１８８】
まず、送受信部１５０６がＢｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０１を受信し、ＩＰヘッダを削除して得られるＵＤＰデータグラムをＵＤＰ処理部１５０３に渡す。ＵＤＰ処理部１５０３は、渡されたＵＤＰデータグラムのＵＤＰヘッダを削除したＵＤＰペイロードをＳＴＵＮデーモン１５０９に渡す。
【０１８９】
次に、ＳＴＵＮサーバ１２５０がＢｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ送信処理を行う（ステップＳ１６２１）。具体的には、ステップＳ１６２１では、以下の処理が行われる。
【０１９０】
まず、ＳＴＵＮデーモン１５０９が、Ｂｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０１の送信元ＵＤＰポート番号ｐｎ２を記載したＢｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ１７０２を生成し、ＵＤＰ処理部１５０３に渡す。ＵＤＰ処理部１５０３は送信元ポート番号がｐｔ１で送信先ポート番号がｐｎ２であるＵＤＰヘッダを付加し送受信部１５０６に渡す。送受信部１５０６は送信元ＩＰアドレスがＴ１で送信先ＩＰアドレスがＮであるＩＰヘッダを付加する。
【０１９１】
Ｂｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ１７０２は、図１３のようにＳＴＵＮヘッダ、ＭＡＰＰＥＤ−ＡＤＤＲＥＳＳ属性、ＳＯＵＲＣＥ−ＡＤＤＲＥＳＳ属性、ＣＨＡＮＧＥＤ−ＡＤＤＲＥＳＳ属性を含む。Ｂｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０１の送信元ポート番号ｐｎ２は、ＭＡＰＰＥＤ−ＡＤＤＲＥＳＳ属性に含まれる。
【０１９２】
ステップＳ１６２１でＩＰヘッダを付加されたＢｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ１７０２は、送受信部１５０６によりＮＡＴ  Ｂｏｘ１２２０に送信される（ステップＳ１６２２）。
【０１９３】
次に、ＮＡＴ  Ｂｏｘ１２２０がＢｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ１７０２を受信し、Ｂｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ１７０２をＮＡＴ変換し、通信装置１２００に転送する（ステップＳ１６２３）。この結果、Ｂｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ１７０２の送信先ＩＰアドレスがＣに変換され、送信先ポート番号はｐｃに変換される。
【０１９４】
次に、通信装置１２００がＢｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ受信処理を行う（ステップＳ１６２４）。具体的には、ステップＳ１６２４では、以下の処理が行われる。
【０１９５】
まず、送受信部１０６がＢｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ１７０２を受信し、ＩＰヘッダを削除して得られるＵＤＰデータグラムをＵＤＰ処理部１２０３に渡す。ＵＤＰ処理部１２０３は、渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードを取得する。ＵＤＰペイロードにＥＳＰヘッダが含まれず、また、送信元がＳＴＵＮサーバ１２５０であるため、ＵＤＰ処理部１２０３は、ＳＴＵＮクライアント１２０８にＵＤＰペイロードを渡す。ＳＴＵＮクライアント１２０８は渡されたＢｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ１７０２のＭＡＰＰＥＤ−ＡＤＤＲＥＳＳ属性に記載されている送信元ポート番号ｐｎ２を記憶部１０７に記憶させ、クライアントアプリケーション１０２に送信元ポート番号ｐｎ２を取得したことを通知する。
【０１９６】
ステップＳ１６２５のポート番号予約処理は、第１の実施の形態にかかる通信装置１００におけるステップＳ５１７と同様の処理なので、その説明を省略する。
【０１９７】
また、この後に実行されるＩＰＳｅｃ  ＳＡ作成提案処理、ＩＰＳｅｃ  ＳＡ作成提案の検証処理、パラメータ通知処理、ＩＰＳｅｃ  ＳＡ設定処理、ＥＳＰパケット作成処理、ＥＳＰパケット受信処理は、第１の実施の形態の図６で示したステップＳ５１８からステップＳ５２９までの処理と同様であるのでその説明を省略する。
【０１９８】
このように、第１の実施の形態では、サーバ１４０が送信したＩＫＥメッセージからＮＡＴ変換後の送信元ポート番号を取得するのに対し（ステップＳ５１３、ステップＳ５１６）、第２の実施の形態では、アドレス情報を提供するＳＴＵＮサーバ１２５０が返信するＢｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ１７０２からＮＡＴ変換後の送信元ポート番号を取得する点が異なっている（ステップＳ１６２０、ステップＳ１６２４）。
【０１９９】
次に、ステップＳ１６１６のＩＳＡＫＭＰ  ＳＡ設定処理の詳細について説明する。図１８は、第２の実施の形態におけるＩＳＡＫＭＰ  ＳＡ設定処理の全体の流れを示すフローチャートである。
【０２００】
まず、通信装置１２００の送受信部１０６がＩＫＥメッセージ７０４を受信し、ＩＰヘッダを削除して得られるＵＤＰデータグラムをＵＤＰ処理部１２０３に渡す（ステップＳ１８０１）。
【０２０１】
次に、ＵＤＰ処理部１２０３は、渡されたＵＤＰデータグラムのＵＤＰヘッダを削除してＵＤＰペイロードをＩＫＥ処理部１２０１に渡す（ステップＳ１８０２）。ここでは、ＵＤＰペイロードにＥＳＰヘッダが含まれず、かつ、送信元がサーバ１２４０だからである。
【０２０２】
次に、ＩＫＥ処理部１２０１はＳＩＧＮＡＴＵＲＥペイロードなどを用いてサーバ１２４０から受信したメッセージであることを検証する（ステップＳ１８０３）。
【０２０３】
次に、ＩＫＥ処理部１２０１は、ステップＳ１６０８で記憶部１０７に記憶されたＩＳＡＫＭＰ  ＳＡの作成に必要なパラメータを読み出し、読み出したパラメータによりＩＳＡＫＭＰ  ＳＡを設定し、クライアントアプリケーション１０２にＩＳＡＫＭＰ  ＳＡの設定が完了したことを通知する（ステップＳ１８０４）。
【０２０４】
このように、第２の実施の形態におけるＩＳＡＫＭＰ  ＳＡ設定処理では、拡張したＩＫＥメッセージ７０４から取得した送信元ポート番号（ｐｎ２）を記憶部１０７に記憶する処理を実行しない点が、第１の実施の形態と異なっている。
【０２０５】
なお、ステップＳ１６２４の直後、ＮＡＴ  Ｂｏｘ１２２０がＣｏｎｅ  ＮＡＴタイプのＮＡＴ  Ｂｏｘであるか否かをチェックする処理を実行するように構成してもよい。図１９は、このように構成された、第２の実施の形態にかかる通信装置１９００の別の構成を示すブロック図である。同図に示すように、通信装置１９００は、ＮＡＴ  Ｂｏｘ１２２０のＮＡＴ変換方法をチェックする変換方法検証部１９１０を備えている。ＮＡＴ変換方法のチェック処理は以下のように行う。
【０２０６】
まず、ＳＴＵＮクライアント１２０８が、送信先ＩＰアドレスをＴ２に変更するか、送信先ポート番号をｐｔ２に変更した図１７のＢｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０３をＳＴＵＮサーバ１２５０に送信する。
【０２０７】
次に、送受信部１０６が、Ｂｉｎｄｉｎｇ  Ｒｅｑｕｅｓｔ１７０３に対してＳＴＵＮサーバ１２５０が返信したＢｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ１７０４を受信する。
【０２０８】
次に、変換方法検証部１９１０が、Ｂｉｎｄｉｎｇ  Ｒｅｓｐｏｎｓｅ１７０４内のＭＡＰＥＤ−ＡＤＤＲＥＳＳ属性に記載されたポート番号ｐｎ３が、ｐｎ２と等しいか否かを確認する。変換方法検証部１９１０は、ｐｎ３とｐｎ２とが等しいときに、ＮＡＴ  Ｂｏｘ１２２０がＣｏｎｅ  ＮＡＴタイプのＮＡＴ  Ｂｏｘであると判断する。
【０２０９】
ＮＡＴ  Ｂｏｘ１２２０がＣｏｎｅ  ＮＡＴタイプのＮＡＴ  Ｂｏｘである場合は、サーバ１２４０と正常にパケットの送受信を実行できるため、処理を継続する。ＮＡＴ  Ｂｏｘ１２２０がＣｏｎｅ  ＮＡＴタイプのＮＡＴ  Ｂｏｘでない場合は、サーバ１２４０と正常にパケットの送受信を実行できない可能性があるため、変換方法検証部１９１０は、通信処理を終了する。
【０２１０】
なお、サーバ１２４０にＳＴＵＮサーバ１２５０の機能を搭載し、ＳＴＵＮサーバ１２５０の代わりにアドレス情報の提供処理を行ってもよい。この場合、通信相手が変わることによって送信元ポート番号が変更されうるという問題が生じないため、ＮＡＴ  ｂｏｘ１２２０はＣｏｎｅ  ＮＡＴのタイプである必要はない。
【０２１１】
このように、第２の実施の形態にかかる通信装置では、送信元ポート番号を含むアドレスに関する情報を提供するＳＴＵＮサーバからＮＡＴ変換後の送信元ポート番号を受信し、当該送信元ポート番号を、暗号化通信プロトコルでカプセル化するプロトコルの送信元ポート番号に設定してサーバとの通信を行うことができる。このため、カプセル化を原因とする混信を生じることなく、サーバ内のアプリケーションがネットワーク中継装置配下の複数の装置と通信することができる。また、サーバ側で送信元ポート番号の置換等の処理を行う必要がないため、サーバの処理負荷を増大させずに混信を回避した通信を行うことができる。
【０２１２】
なお、第１または第２の実施の形態で、サーバが例えば非特許文献１のように混信が生じるか否かをチェックする機能を有している場合であっても、本提案の内容をさらに適用することができる。すなわち、本提案の技術によれば、通信装置側で混信を回避する処理を実行可能であるが、通信の信頼性を向上させるために、サーバ側でさらに混信に関するチェックを行うように構成してもよい。
【０２１３】
第１または第２の実施の形態にかかる通信装置は、ＣＰＵ（Central Processing Unit）などの制御装置と、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などの記憶装置と、ＨＤＤ（Hard Disk Drive）、ＣＤ（Compact Disc）ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０２１４】
第１または第２の実施の形態にかかる通信装置で実行される通信プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact Disk Recordable）、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０２１５】
また、第１または第２の実施の形態にかかる通信装置で実行される通信プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、第１または第２の実施の形態にかかる通信装置で実行される通信プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０２１６】
また、第１または第２の実施の形態の通信プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０２１７】
第１または第２の実施の形態にかかる通信装置で実行される通信プログラムは、上述した各部（ＩＫＥ処理部、クライアントアプリケーション、ＵＤＰ処理部、ＥＳＰ処理部、カプセル化ＵＤＰ処理部、送受信部、ＳＴＵＮクライアント、変換方法検証部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体から通信プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【産業上の利用可能性】
【０２１８】
以上のように、本発明にかかる通信装置、通信方法および通信プログラムは、ＮＡＴ機能を有するルータに接続されたコンピュータなどの通信装置に適している。
【図面の簡単な説明】
【０２１９】
【図１】第１の実施の形態にかかる通信装置を含むネットワーク全体の構成を示すブロック図である。
【図２】第１の実施の形態で送受信されるパケットの形式の一例を示した説明図である。
【図３】第１の実施の形態にかかる通信装置の構成を示すブロック図である。
【図４】第１の実施の形態にかかるサーバの構成を示すブロック図である。
【図５】第１の実施の形態における通信処理の全体の流れを示すシーケンス図である。
【図６】第１の実施の形態における通信処理の全体の流れを示すシーケンス図である。
【図７】第１の実施の形態で送受信されるＩＫＥメッセージのフォーマットの一例を示した説明図である。
【図８】第１の実施の形態で送受信されるＥＳＰパケットの一例を示した説明図である。
【図９】ポート番号通知処理の全体の流れを示すフローチャートである。
【図１０】第１の実施の形態におけるＩＳＡＫＭＰ  ＳＡ設定処理の全体の流れを示すフローチャートである。
【図１１】第１の実施の形態におけるＥＳＰパケット作成処理の全体の流れを示すフローチャートである。
【図１２】第２の実施の形態にかかる通信装置を含むネットワーク全体の構成を示すブロック図である。
【図１３】第２の実施の形態にかかる通信装置の構成を示すブロック図である。
【図１４】第２の実施の形態にかかるサーバの構成を示すブロック図である。
【図１５】第２の実施の形態にかかるＳＴＵＮサーバの構成を示すブロック図である。
【図１６】第２の実施の形態における通信処理の全体の流れを示すシーケンス図である。
【図１７】第２の実施の形態で送受信されるＳＴＵＮメッセージのフォーマットの一例を示した説明図である。
【図１８】第２の実施の形態におけるＩＳＡＫＭＰ  ＳＡ設定処理の全体の流れを示すフローチャートである。
【図１９】第２の実施の形態にかかる通信装置の別の構成を示すブロック図である。
【符号の説明】
【０２２０】
１００  通信装置
１０１  ＩＫＥ処理部
１０２  クライアントアプリケーション
１０３  ＵＤＰ処理部
１０４  ＥＳＰ処理部
１０５  カプセル化ＵＤＰ処理部
１０６  送受信部
１０７  記憶部
１２０  ＮＡＴ  Ｂｏｘ
１３０  インターネット
１４０  サーバ
１４１  ＩＫＥ処理部
１４２  サーバアプリケーション
１４３  ＵＤＰ処理部
１４４  ＥＳＰ処理部
１４５  カプセル化ＵＤＰ処理部
１４６  送受信部
１４７  記憶部
２０１  パケット
７０１、７０２、７０３、７０４、７０５、７０６、７０７  ＩＫＥメッセージ
８０１、８０２  ＥＳＰパケット
１２００  通信装置
１２０１  ＩＫＥ処理部
１２０３  ＵＤＰ処理部
１２０８  ＳＴＵＮクライアント
１２２０  ＮＡＴ  Ｂｏｘ
１２４０  サーバ
１２４１  ＩＫＥ処理部
１２５０  ＳＴＵＮサーバ
１５０３  ＵＤＰ処理部
１５０６  送受信部
１５０９  ＳＴＵＮデーモン
１９００  通信装置
１９１０  変換方法検証部
【図１】
0004489008.tif 000002
【図２】
0004489008.tif 000003
【図３】
0004489008.tif 000004
【図４】
0004489008.tif 000005
【図５】
0004489008.tif 000006
【図６】
0004489008.tif 000007
【図７】
0004489008.tif 000008
【図８】
0004489008.tif 000009
【図９】
0004489008.tif 000010
【図１０】
0004489008.tif 000011
【図１１】
0004489008.tif 000012
【図１２】
0004489008.tif 000013
【図１３】
0004489008.tif 000014
【図１４】
0004489008.tif 000015
【図１５】
0004489008.tif 000016
【図１６】
0004489008.tif 000017
【図１７】
0004489008.tif 000018
【図１８】
0004489008.tif 000019
【図１９】
0004489008.tif 000020