(57)【特許請求の範囲】
【請求項１】
ローカルアドレスを有し、前記ローカルアドレスを第１のグローバルアドレスに変換する機能を有する中継装置を介してグローバルネットワークに接続された外部通信装置、および、前記外部通信装置との通信の確立を仲介する仲介サーバと、前記グローバルネットワークを介して接続可能な通信装置であって、
あらかじめ割り当てられた第２のグローバルアドレスを記憶する記憶手段と、
前記記憶手段に記憶された前記第２のグローバルアドレスを含み、前記外部通信装置への通信の確立を要求する第１のメッセージを前記仲介サーバへ送信する第１の送信手段と、
前記仲介サーバから前記第１のメッセージに対する応答を受信し、前記外部通信装置から、前記中継装置が前記ローカルアドレスを前記第１のグローバルアドレスに変換可能なプロトコルによる通信で、前記第１のグローバルアドレスを含み前記第２のグローバルアドレスを宛先に指定した第２のメッセージを受信する第１の受信手段と、
前記外部通信装置との間の第１のプロトコルでカプセル化された第２のプロトコルによる通信で用いる第１のパラメータとを含む第３のメッセージを前記仲介サーバへ送信する第２の送信手段と、
前記仲介サーバから、前記外部通信装置との間の前記第１のプロトコルでカプセル化された前記第２のプロトコルによる通信で用いる第２のパラメータを含む第４のメッセージを受信する第２の受信手段と
を備えることを特徴とする通信装置。
【請求項２】
前記仲介サーバから、前記外部通信装置からの通信の確立を要求する第５のメッセージを受信する第３の受信手段と、
前記第２のグローバルアドレスを含む第６のメッセージを前記仲介サーバに送信する第３の送信手段と、
前記外部通信装置から、前記中継装置が前記ローカルアドレスを前記第１のグローバルアドレスに変換可能なプロトコルによる通信で、前記第１のグローバルアドレスを含む第７のメッセージを受信する第４の受信手段と、をさらに備え、
前記第２の送信手段は、前記第２のメッセージまたは前記第７のメッセージに含まれる前記第１のグローバルアドレスと、前記外部通信装置との間の第１のプロトコルでカプセル化された第２のプロトコルによる通信で用いる第１のパラメータとを含む第３のメッセージを前記仲介サーバへ送信することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第１の受信手段は、前記外部通信装置を認証する第１の認証データをさらに含む前記第２のメッセージを受信し、
前記第４の受信手段は、前記外部通信装置を認証する第２の認証データをさらに含む前記第７のメッセージを受信し
前記第１の認証データまたは前記第２の認証データに基づいて、前記第２のメッセージまたは前記第７のメッセージが前記外部通信装置から送信されたものであることを検証するメッセージ処理手段をさらに備えたことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記第１の送信手段は、認証に用いる第３の認証データをさらに含む前記第１のメッセージを送信し、
前記第３の送信手段は、認証に用いる第４の認証データをさらに含む前記第６のメッセージを送信し、
前記メッセージ処理手段は、前記第１の認証データと前記第３の認証データとに基づいて、または、前記第２の認証データと前記第４の認証データとに基づいて、前記第２のメッセージまたは前記第７のメッセージが前記外部通信装置から送信されたものであることを検証することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記記憶手段は、前記通信装置とネットワークとの接続を中継する第２の中継装置に割り当てられたグローバルアドレスを前記第２のグローバルアドレスとして記憶することを特徴とする請求項１に記載の通信装置。
【請求項６】
第１のグローバルアドレスを有する外部通信装置、および、前記外部通信装置との通信の確立を仲介する仲介サーバが接続されたグローバルネットワークに、ローカルアドレスを第２のグローバルアドレスに変換する機能を有する中継装置を介して接続された通信装置であって、
あらかじめ割り当てられた前記ローカルアドレスを記憶する記憶手段と、
前記仲介サーバから、前記第１のグローバルアドレスを含み、前記外部通信装置からの通信の確立を要求する第１のメッセージを受信する第１の受信手段と、
前記第１のメッセージに対する応答を前記外部通信装置へ前記仲介サーバを介して送信し、前記記憶手段に記憶された前記ローカルアドレスを含み、前記第１のメッセージに含まれる前記第１のグローバルアドレスを宛先に指定した第２のメッセージを前記中継装置が前記ローカルアドレスを前記第２のグローバルアドレスに変換可能なプロトコルによる通信で前記外部通信装置に送信する第１の送信手段と、
前記仲介サーバから、前記第２のグローバルアドレスと、前記外部通信装置との間の第１のプロトコルでカプセル化された第２のプロトコルによる通信で用いる第１のパラメータとを含む第３のメッセージを受信する第２の受信手段と、
前記外部通信装置との間の前記第１のプロトコルでカプセル化された前記第２のプロトコルによる通信で用いる第２のパラメータを含む第４のメッセージを前記仲介サーバに送信する第２の送信手段と、
を備えたことを特徴とする通信装置。
【請求項７】
前記外部通信装置への通信の確立を要求する第５のメッセージを前記仲介サーバに送信する第３の送信手段と、
前記仲介サーバから、前記第１のグローバルアドレスを含む第６のメッセージを受信する第３の受信手段と、
前記ローカルアドレスを含み、前記第６のメッセージに含まれる前記第１のグローバルアドレスを宛先に指定した第７のメッセージを前記中継装置が前記ローカルアドレスを前記第２のグローバルアドレスに変換可能なプロトコルによる通信で前記外部通信装置に送信する第４の送信手段と、
をさらに備えたことを特徴とする請求項６に記載の通信装置。
【請求項８】
前記第１の送信手段は、前記通信装置を認証する第１の認証データをさらに含む前記第２のメッセージを送信し、
前記第４の送信手段は、前記通信装置を認証する第２の認証データをさらに含む前記第７のメッセージを送信することを特徴とする請求項７に記載の通信装置。
【請求項９】
前記第１の受信手段は、前記外部通信装置を認証する第３の認証データをさらに含む前記第１のメッセージを受信し、
前記第１の送信手段は、前記第３の認証データに対して前記第１の認証データをさらに含む前記第２のメッセージを送信し、
前記第３の受信手段は、前記外部通信装置を認証する第４の認証データをさらに含む前記第６のメッセージを受信し、
前記第４の送信手段は、前記第４の認証データに対して前記第２の認証データをさらに含む前記第７のメッセージを送信することを特徴とする請求項８に記載の通信装置。
【請求項１０】
前記第１の受信手段は、前記第１のグローバルアドレスとして、前記外部通信装置とネットワークとの接続を中継する第２の中継装置にあらかじめ割り当てられたグローバルアドレスの情報を含む前記第１のメッセージを受信することを特徴とする請求項６に記載の通信装置。
【請求項１１】
前記第１のグローバルアドレスおよび前記第２のグローバルアドレスは、ＩＰアドレスとＵＤＰポート番号とを含む情報であることを特徴とする請求項１〜１０のいずれか１つに記載の通信装置。
【請求項１２】
前記第２のプロトコルは、ＥＳＰ（Encapsulating Security Payload）、ＴＣＰ、ＵＤＰ、ＩＣＭＰ（Internet Control Message Protocol）、ＩＰｖ４（Internet Protocol Version 4）、ＩＰｖ６（Internet Protocol Version 6）、ＩＣＭＰｖ６（Internet Control Message Protocol for the Internet Protocol Version 6）、およびＬ２ＴＰ（Layer 2 Tunneling Protocol）のうち少なくとも１つを含むことを特徴とする請求項１〜１１のいずれか１つに記載の通信装置。
【請求項１３】
前記第１のメッセージ、前記第３のメッセージ、前記第４のメッセージ、前記第５のメッセージ、および前記第６のメッセージは、ＳＩＰ（Session Initiation Protocol）プロトコルにより送受信されるＳＩＰメッセージであることを特徴とする請求項１〜１２のいずれか１つに記載の通信装置。
【請求項１４】
ローカルアドレスを有し、前記ローカルアドレスを第１のグローバルアドレスに変換する機能を有する中継装置を介してグローバルネットワークに接続された外部通信装置、および、前記外部通信装置との通信の確立を仲介する仲介サーバと、前記グローバルネットワークを介して接続可能な通信装置における通信方法であって、
あらかじめ割り当てられた第２のグローバルアドレスを記憶する記憶手段に記憶された前記第２のグローバルアドレスを含み、前記外部通信装置への通信の確立を要求する第１のメッセージを前記仲介サーバへ送信する第１の送信ステップと、
前記仲介サーバから前記第１のメッセージに対する応答を受信し、前記外部通信装置から、前記中継装置が前記ローカルアドレスを前記第１のグローバルアドレスに変換可能なプロトコルによる通信で、前記第１のグローバルアドレスを含み前記第２のグローバルアドレスを宛先に指定した第２のメッセージを受信する第１の受信ステップと、
前記外部通信装置との間の第１のプロトコルでカプセル化された第２のプロトコルによる通信で用いる第１のパラメータとを含む第３のメッセージを前記仲介サーバへ送信する第２の送信ステップと、
前記仲介サーバから、前記外部通信装置との間の前記第１のプロトコルでカプセル化された前記第２のプロトコルによる通信で用いる第２のパラメータを含む第４のメッセージを受信する第２の受信ステップと
を備えることを特徴とする通信方法。
【請求項１５】
第１のグローバルアドレスを有する外部通信装置、および、前記外部通信装置との通信の確立を仲介する仲介サーバが接続されたグローバルネットワークに、ローカルアドレスを第２のグローバルアドレスに変換する機能を有する中継装置を介して接続された通信装置における通信方法であって、
前記仲介サーバから、前記第１のグローバルアドレスを含み、前記外部通信装置からの通信の確立を要求する第１のメッセージを受信する第１の受信ステップと、
前記第１のメッセージに対する応答を前記外部通信装置へ前記仲介サーバを介して送信し、あらかじめ割り当てられた前記ローカルアドレスを記憶する記憶手段に記憶された前記ローカルアドレスを含み、前記第１のメッセージに含まれる前記第１のグローバルアドレスを宛先に指定した第２のメッセージを前記中継装置が前記ローカルアドレスを前記第２のグローバルアドレスに変換可能なプロトコルによる通信で前記外部通信装置に送信する第１の送信ステップと、
前記仲介サーバから、前記第２のグローバルアドレスと、前記外部通信装置との間の第１のプロトコルでカプセル化された第２のプロトコルによる通信で用いる第１のパラメータとを含む第３のメッセージを受信する第２の受信ステップと、
前記外部通信装置との間の前記第１のプロトコルでカプセル化された前記第２のプロトコルによる通信で用いる第２のパラメータを含む第４のメッセージを前記仲介サーバに送信する第２の送信ステップと、
を備えたことを特徴とする通信方法。
【請求項１６】
ローカルアドレスを有し、前記ローカルアドレスを第１のグローバルアドレスに変換する機能を有する中継装置を介してグローバルネットワークに接続された外部通信装置、および、前記外部通信装置との通信の確立を仲介する仲介サーバと、前記グローバルネットワークを介して接続可能な通信装置における通信プログラムであって、
あらかじめ割り当てられた第２のグローバルアドレスを記憶する記憶手段に記憶された前記第２のグローバルアドレスを含み、前記外部通信装置への通信の確立を要求する第１のメッセージを前記仲介サーバへ送信する第１の送信手順と、
前記仲介サーバから前記第１のメッセージに対する応答を受信し、前記外部通信装置から、前記中継装置が前記ローカルアドレスを前記第１のグローバルアドレスに変換可能なプロトコルによる通信で、前記第１のグローバルアドレスを含み前記第２のグローバルアドレスを宛先に指定した第２のメッセージを受信する第１の受信手順と、
前記外部通信装置との間の第１のプロトコルでカプセル化された第２のプロトコルによる通信で用いる第１のパラメータとを含む第３のメッセージを前記仲介サーバへ送信する第２の送信手順と、
前記仲介サーバから、前記外部通信装置との間の前記第１のプロトコルでカプセル化された前記第２のプロトコルによる通信で用いる第２のパラメータを含む第４のメッセージを受信する第２の受信手順と
をコンピュータに実行させる通信プログラム。
【請求項１７】
第１のグローバルアドレスを有する外部通信装置、および、前記外部通信装置との通信の確立を仲介する仲介サーバが接続されたグローバルネットワークに、ローカルアドレスを第２のグローバルアドレスに変換する機能を有する中継装置を介して接続された通信装置における通信プログラムであって、
前記仲介サーバから、前記第１のグローバルアドレスを含み、前記外部通信装置からの通信の確立を要求する第１のメッセージを受信する第１の受信手順と、
前記第１のメッセージに対する応答を前記外部通信装置へ前記仲介サーバを介して送信し、あらかじめ割り当てられた前記ローカルアドレスを記憶する記憶手段に記憶された前記ローカルアドレスを含み、前記第１のメッセージに含まれる前記第１のグローバルアドレスを宛先に指定した第２のメッセージを前記中継装置が前記ローカルアドレスを前記第２のグローバルアドレスに変換可能なプロトコルによる通信で前記外部通信装置に送信する第１の送信手順と、
前記仲介サーバから、前記第２のグローバルアドレスと、前記外部通信装置との間の第１のプロトコルでカプセル化された第２のプロトコルによる通信で用いる第１のパラメータとを含む第３のメッセージを受信する第２の受信手順と、
前記外部通信装置との間の前記第１のプロトコルでカプセル化された前記第２のプロトコルによる通信で用いる第２のパラメータを含む第４のメッセージを前記仲介サーバに送信する第２の送信手順と、
をコンピュータに実行させる通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、アドレス変換機能を有するネットワーク中継装置を介して外部ネットワークに接続された他の通信装置と通信する通信装置、通信方法および通信プログラムに関するものである。
【背景技術】
【０００２】
近年、限られたグローバルＩＰアドレスの数を越える複数の装置が同時にインターネット上の別の装置と通信できるようにするため、ＮＡＴ  ｂｏｘを利用したネットワーク構成が広く利用されている。ＮＡＴ  ｂｏｘとは、受信したパケットのＩＰアドレスやポート番号等を書き換えてからパケットを転送する、ネットワークアドレス変換（ＮＡＴ：Network Address Translation）機能を有するルータ（ネットワーク中継装置）である。
【０００３】
ＮＡＴ  ｂｏｘは、ＮＡＴ  ｂｏｘ配下の装置から開始された新しい通信を検知するたびに、パケット中の送信元アドレスおよび送信先アドレスの組に対して変換先のアドレスをマッピングするデータ（ＮＡＴマッピングと呼ばれる）を作成し、内部に保持する。そして、ＮＡＴ  ｂｏｘは、このＮＡＴマッピングを参照してパケット中のアドレスを変換する。
【０００４】
ここで、アドレスにはＩＰアドレスだけでなくＴＣＰヘッダ、ＵＤＰヘッダのポート番号などの、トランスポートプロトコルにおけるアドレスも含む場合が多い。なお、ＮＡＴ  ｂｏｘによるアドレスの変換を以下ではＮＡＴ変換と記述することとする。
【０００５】
ＮＡＴ  ｂｏｘ配下の装置から通信を開始すれば、パケットのＩＰアドレス等がＮＡＴ  ｂｏｘによって外部と通信可能なＩＰアドレス等に変換されるため、インターネット上の別の装置と通信を行うことができる。一方、インターネット上の装置から通信を開始するためには、インターネット上の装置から送信されたパケットをＮＡＴ  ｂｏｘがＮＡＴ  ｂｏｘ配下の装置に送信するために何らかの処理をあらかじめ行わなければ通信を行うことができない。
【０００６】
このように、ＮＡＴ  ｂｏｘに関連する通信技術では、ＮＡＴ  ｂｏｘの内部および外部の双方から通信可能とする技術の開発が課題の１つとなっている（第１の課題）。
【０００７】
従来から、第１の課題を解決するための技術は数多く存在するが、いずれも多くの処理ステップを必要としていた。このため、一定ステップ数で通信を開始可能とする技術が提案されている。例えば、ＮＡＴマッピングをユーザが設定可能なＮＡＴ  ｂｏｘを利用する技術、ＵＰｎＰ（Universal Plug and Play）対応のＮＡＴ  ｂｏｘを利用する技術などが知られている。
【０００８】
一方、一般的なＮＡＴ  ｂｏｘは、ＩＰヘッダの次に位置するＴＣＰヘッダやＵＤＰヘッダ内のポート番号も変換することにより、複数のＮＡＴ  ｂｏｘ配下の装置がＴＣＰやＵＤＰを用いて同時にＮＡＴ  ｂｏｘを介してインターネット上の装置と通信可能とする機能を有する。
【０００９】
ところが、このようなＮＡＴ  ｂｏｘの多くは、ＴＣＰやＵＤＰ以外のプロトコルに対応せず、ＴＣＰやＵＤＰ以外のプロトコルに対してはＩＰアドレスのみを変換する。このため、例えば暗号化を行うＥＳＰ（IP Encapsulating Security Payload）でカプセル化したパケットを転送することができないものが存在する。
【００１０】
このように、ＮＡＴ  ｂｏｘに関連する通信技術では、ＮＡＴ  ｂｏｘが限られたプロトコルのみに対応しているという課題も存在する（第２の課題）。
【００１１】
第２の課題を解決する方法として、ＥＳＰとＩＰヘッダの間にＵＤＰヘッダを挿入することにより、ＮＡＴ  ｂｏｘを介してもＥＳＰを用いた通信を可能とする技術が提案されている（例えば、非特許文献１）。
【００１２】
非特許文献１の方式では、非特許文献２に記載された拡張された鍵交換プロトコルを用いて、ＮＡＴ  ｂｏｘ配下の装置からインターネット上の装置へ通信を開始する。鍵交換プロトコルはＵＤＰを用いて行われ、かつＮＡＴ  ｂｏｘ配下の装置から通信が開始されるため、ＮＡＴ  ｂｏｘを介していても鍵交換プロトコルを実行できる。また、ＥＳＰで暗号化されたメッセージを、鍵交換プロトコルで使用したＵＤＰの通信と同じポート番号のＵＤＰでさらにカプセル化することで、ＮＡＴ  ｂｏｘ配下の装置とインターネット上の装置が通信可能となる。
【００１３】
これにより、ＥＳＰ等でカプセル化されたパケットでもＮＡＴ  ｂｏｘを介した通信が可能となる。また、鍵交換プロトコルによる折衝が完了した後は、いずれの装置からでもＥＳＰでカプセル化されたパケットで通信を開始可能である。
【００１４】
【非特許文献１】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＞
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、非特許文献１の方法では、必ずＮＡＴ  ｂｏｘ配下の装置から通信の確立を要求する必要があるという問題があった。すなわち、鍵交換プロトコルをインターネット上の装置から開始することができないという、上述の第１の課題と同様の問題があった。
【００１６】
本発明は、上記を鑑みてなされたものであって、プロトコルの制限を回避しつつ、ＮＡＴ  ｂｏｘの外部の装置から通信の確立要求を行い、ＮＡＴ  ｂｏｘ内外の双方の装置から通信を開始できる通信装置、通信方法および通信プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
上述した課題を解決し、目的を達成するために、本発明は、ローカルアドレスを有し、前記ローカルアドレスを第１のグローバルアドレスに変換する機能を有する中継装置を介してグローバルネットワークに接続された外部通信装置、および、前記外部通信装置との通信の確立を仲介する仲介サーバと、前記グローバルネットワークを介して接続可能な通信装置であって、あらかじめ割り当てられた第２のグローバルアドレスを記憶する記憶手段と、前記記憶手段に記憶された前記第２のグローバルアドレスを含み、前記外部通信装置への通信の確立を要求する第１のメッセージを前記仲介サーバへ送信する第１の送信手段と、前記仲介サーバから前記第１のメッセージに対する応答を受信し、前記外部通信装置から、前記中継装置が前記ローカルアドレスを前記第１のグローバルアドレスに変換可能なプロトコルによる通信で、前記第１のグローバルアドレスを含み前記第２のグローバルアドレスを宛先に指定した第２のメッセージを受信する第１の受信手段と、前記外部通信装置との間の第１のプロトコルでカプセル化された第２のプロトコルによる通信で用いる第１のパラメータとを含む第３のメッセージを前記仲介サーバへ送信する第２の送信手段と、前記仲介サーバから、前記外部通信装置との間の前記第１のプロトコルでカプセル化された前記第２のプロトコルによる通信で用いる第２のパラメータを含む第４のメッセージを受信する第２の受信手段とを備えることを特徴とする。
【００１８】
また、本発明は、第１のグローバルアドレスを有する外部通信装置、および、前記外部通信装置との通信の確立を仲介する仲介サーバが接続されたグローバルネットワークに、ローカルアドレスを第２のグローバルアドレスに変換する機能を有する中継装置を介して接続された通信装置であって、あらかじめ割り当てられた前記ローカルアドレスを記憶する記憶手段と、前記仲介サーバから、前記第１のグローバルアドレスを含み、前記外部通信装置からの通信の確立を要求する第１のメッセージを受信する第１の受信手段と、前記第１のメッセージに対する応答を前記外部通信装置へ前記仲介サーバを介して送信し、前記記憶手段に記憶された前記ローカルアドレスを含み、前記第１のメッセージに含まれる前記第１のグローバルアドレスを宛先に指定した第２のメッセージを前記中継装置が前記ローカルアドレスを前記第２のグローバルアドレスに変換可能なプロトコルによる通信で前記外部通信装置に送信する第１の送信手段と、前記仲介サーバから、前記第２のグローバルアドレスと、前記外部通信装置との間の第１のプロトコルでカプセル化された第２のプロトコルによる通信で用いる第１のパラメータとを含む第３のメッセージを受信する第２の受信手段と、前記外部通信装置との間の前記第１のプロトコルでカプセル化された前記第２のプロトコルによる通信で用いる第２のパラメータを含む第４のメッセージを前記仲介サーバに送信する第２の送信手段と、を備えたことを特徴とする。
【００１９】
また、本発明は、上記装置を実行することができる通信方法および通信プログラムである。
【発明の効果】
【００２０】
本発明によれば、インターネット上の通信装置からＮＡＴ  ｂｏｘ配下の通信装置へ通信の確立要求を行った場合であっても、カプセル化される任意のプロトコルによる通信の開始で必要な情報を、相互に送受信することができる。このため、プロトコルの制限を回避しつつ、ＮＡＴ  ｂｏｘの外部の装置から通信の確立要求および通信の開始ができるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、この発明にかかる通信装置、通信方法および通信プログラムの最良な実施の形態を詳細に説明する。
【００２２】
本実施の形態にかかる通信装置は、ルータまたはＮＡＴ  ｂｏｘのいずれに接続された場合であっても、通信の確立要求を行い、カプセル化される任意のプロトコルによる通信の開始で必要な情報を、相互に送受信するものである。
【００２３】
インターネット上で送受信されるメッセージは、通常、パケットと呼ばれるデータの単位に分割されて送信される。パケットは、送信元、送信先のアドレス情報等を格納するヘッダ部と、データ自体を格納するペイロード部から構成される。なお、ヘッダ部とペイロード部とを合わせた情報をデータグラムと呼ぶ場合もある。
【００２４】
以下では、ＩＰヘッダとＩＰペイロードから構成されるものをパケットと呼び、ＵＤＰヘッダとＵＤＰペイロードから構成されるものをＵＤＰデータグラム、ＴＣＰヘッダとＴＣＰペイロードから構成されるものをＴＣＰセグメントと呼ぶ。
【００２５】
また、カプセル化とは、既存のパケットやデータグラム等を任意のプロトコルの新たなペイロードとし、当該プロトコルの新たなヘッダを付与することにより、既存のパケットやデータグラム等を生成したプロトコルを隠蔽化することをいう。なお、新たなペイロードを生成する際に、暗号化等のデータの加工処理を行う場合を含む。
【００２６】
例えば、ＴＣＰで作成されたＴＣＰセグメントをＥＳＰにより暗号化し、ＥＳＰヘッダを付与することにより、ＴＣＰセグメントをＥＳＰでカプセル化することができる。
【００２７】
図１は、本実施の形態にかかる通信装置１００を含むネットワーク全体の構成を示すブロック図である。なお、同図では、２つの通信装置１００ａ、１００ｂが記載されているが、機能や構成は同一である。通信装置１００ａ、１００ｂをまとめて通信装置１００と呼ぶ。通信装置１００ａには、グローバルＩＰアドレスＡが、通信装置１００ｂにはプライベートＩＰアドレスＢが割り当てられているものとする。
【００２８】
同図に示すように、通信装置１００ａは、ＬＡＮ（Local Area Network)１１０ａに接続され、ルータ１２０ａを介してインターネット１３０に接続されている。通信装置１００ｂは、ＬＡＮ（Local Area Network)１１０ｂに接続され、ＮＡＴ  ｂｏｘ１２０ｂを介してインターネット１３０に接続されている。また、インターネット１３０には、ＳＩＰ（Session Initiation Protocol）により通信の確立を仲介する仲介サーバであるＳＩＰ  Ｐｒｏｘｙ１４０が接続されている。
【００２９】
ルータ１２０ａはＬＡＮ１１０ａとインターネット１３０に接続され、グローバルＩＰアドレスＲＡが付与されているものとする。なおルータ１２０ａはＮＡＴ  ｂｏｘであってもよい。ただしこの場合は、ＮＡＴマッピングをユーザまたは通信装置１００ａから設定できる機能をルータ１２０ａが備えることを前提とする。
【００３０】
例えば、ルータ１２０ａを、ＵＰｎＰ  ＩＧＤ（Universal Plug and Play Internet Gateway Device）におけるポートマッピング設定機能や、Ｃｏｎｅ  ＮＡＴと呼ばれる種別のＮＡＴと同様の機能を備えるように構成すればよい。
【００３１】
このような機能を備えることにより、通信装置１００ｂからアクセス可能な送信先ＩＰアドレス、送信先ＵＤＰポート番号を通信装置１００ｂに正しく通知することができる。すなわち、通信装置１００ｂが通知された送信先ＵＤＰポート番号、送信先ＩＰアドレスを設定したパケットを送信したとき、ＮＡＴ変換機能を有するルータ１２０ａは事前に設定されたＮＡＴマッピングに従い、正しく通信装置１００ａに転送することができる。
【００３２】
ＮＡＴ  ｂｏｘ１２０ｂは、インターネット１３０とＬＡＮ１１０ｂに接続され、ＮＡＴ変換機能を備え、グローバルＩＰアドレスＲＢが付与されているものとする。
【００３３】
ここで、ＮＡＴ  ｂｏｘ１２０ｂが備える、ＴＣＰまたはＵＤＰヘッダを含むパケットに対する一般的なアドレス変換アルゴリズムについて説明する。
【００３４】
ＮＡＴ  ｂｏｘ１２０ｂは、ＮＡＴ  ｂｏｘ１２０ｂ配下の装置から通信を開始する最初のパケットを検知すると、ＮＡＴマッピングを作成し、データベースに記憶する。
【００３５】
ＮＡＴマッピングとは、パケット中の送信元アドレスおよび送信先アドレスに対して変換先のアドレスをマッピングするデータであり、例えば、ローカルＩＰアドレスおよびローカルポート番号に対して、それぞれ変換先ＩＰアドレスおよび変換先ポート番号を対応づけて格納している。また、これ以外に、トランスポートプロトコル種別、リモートＩＰアドレス、リモートポート番号を含む場合が多い。
【００３６】
ＮＡＴ  ｂｏｘ１２０ｂは、作成するＮＡＴマッピングのローカルＩＰアドレスをパケットの送信元ＩＰアドレスに設定し、リモートＩＰアドレスをパケットの送信先ＩＰアドレスに設定し、ローカルポート番号をパケットの送信元ポート番号に設定し、リモートポート番号をパケットの送信先ポート番号に設定し、トランスポートプロトコル種別をパケットに含まれるトランスポートプロトコルの種別に設定し、変換先ＩＰアドレスをＮＡＴ  ｂｏｘ１２０ｂに付与されるグローバルＩＰアドレスに設定する。
【００３７】
さらに、リモートＩＰアドレス、トランスポートプロトコル種別、リモートポート番号、変換先ＩＰアドレス、変換先ポート番号の組がデータベース内の全ＮＡＴマッピングで唯一になるようなポート番号のうちの一つを選び、ＮＡＴマッピングの変換先ポート番号に設定する。
【００３８】
そして、ＮＡＴ  ｂｏｘ１２０ｂはパケットの送信元ＩＰアドレスを作成したＮＡＴマッピングの変換先ＩＰアドレスに変換し、送信元ポート番号を変換先ポート番号に変換してから転送する。これにより、パケットを受信した装置に、あたかもＮＡＴ  ｂｏｘ１２０ｂからパケットが送信されたように認識させることができる。
【００３９】
次に、上述のパケットとは送信先ＩＰアドレスと送信元ＩＰアドレスの値が逆で、かつ送信先ポート番号と送信元ポート番号が逆で、かつトランスポートプロトコル種別が等しいパケットを検知すると、ＮＡＴ  ｂｏｘ１２０ｂはデータベースから送信元ＩＰアドレスがリモートＩＰアドレスに等しく、かつ送信先ＩＰアドレスが変換先ＩＰアドレスに等しく、かつトランスポートプロトコル種別がパケット中のトランスポートプロトコルに等しく、かつ送信元ポート番号がリモートポート番号に等しく、かつ送信先ポート番号が変換先ポート番号に等しいＮＡＴマッピングを検索することで、作成したＮＡＴマッピングを取得する。
【００４０】
そして、ＮＡＴ  ｂｏｘ１２０ｂは、パケットの送信先ＩＰアドレスをＮＡＴマッピングのローカルＩＰアドレスに変換し、パケットの送信先ポート番号をローカルポート番号に変換してからパケットを転送する。
【００４１】
このようなアドレス変換プロトコルにより、ＮＡＴ  ｂｏｘ１２０ｂはアドレスを変換したパケットを転送する。
【００４２】
なお、本実施の形態では、通信装置１００ａとＳＩＰ  Ｐｒｏｘｙ１４０の間の通信、および通信装置１００ｂとＳＩＰ  Ｐｒｏｘｙ１４０との間の通信はＳＩＰで行うものとする。通信装置１００ａ、１００ｂとＳＩＰ  Ｐｒｏｘｙ１４０との間の通信プロトコルはこれに限られるものではなく、ＮＡＴ  ｂｏｘ１２０ｂを介した場合であっても通信装置１００ｂからＳＩＰ  Ｐｒｏｘｙ１４０に接続可能なものであればどのようなプロトコルを使用してもよい。
【００４３】
また、本実施の形態において確立する通信は、ＩＰ、ＵＤＰ、ＥＳＰでカプセル化されたＴＣＰセッションとして説明する。
【００４４】
ここで、通信装置１００ａがＩＰ、ＵＤＰ、ＥＳＰでカプセル化されたＴＣＰセグメントで通信装置１００ｂへデータを送信する際の送信元ＴＣＰポート番号および送信元ＵＤＰポート番号をそれぞれＴＰ、ＵＰとする。また、通信装置１００ｂがＩＰ、ＵＤＰ、ＥＳＰでカプセル化されたＴＣＰセグメントで通信装置１００ａへデータを送信する際の送信元ＴＣＰポート番号および送信元ＵＤＰポート番号をそれぞれＴＱ、ＵＱとする。
【００４５】
なお、通信に用いるパケットは、少なくともＩＰと、ＩＰの次のプロトコルである第１のプロトコル（上記例ではＵＤＰ）と、第１のプロトコルでカプセル化する第２のプロトコル（上記例ではＥＳＰ）のヘッダを含むパケットであればよい。また、第１のプロトコルは、ＵＤＰに限られるものではなく、ＮＡＴ  ｂｏｘ１２０ｂがＮＡＴ変換可能なものであれば、ＴＣＰなどのあらゆるプロトコルを適用できる。
【００４６】
また、第２のプロトコルは、ＥＳＰのようにＮＡＴ変換不可能なプロトコルだけでなく、ＮＡＴ変換可能なＵＤＰ、ＴＣＰなども含む、あらゆるプロトコルを適用できる。ただし、第１のプロトコル、第２のプロトコルをともにＴＣＰとすることは、ＴＣＰの輻輳制御を行う機能に関連してエラーが発生する場合があるため避けることが望ましい。
【００４７】
次に、通信装置１００の構成について説明する。なお、通信装置１００は、通信装置１００ａのようにＮＡＴ変換機能を有さないルータ１２０ａ配下に設置された場合と、通信装置１００ｂのようにＮＡＴ  ｂｏｘ１２０ｂに設置された場合とで実行する処理が異なる。
【００４８】
そこで、以下では説明の便宜上、通信装置１００が、ルータ１２０ａまたはＮＡＴ  ｂｏｘ１２０ｂのいずれの配下に設置されているかにより処理および機能を分けて記載する。
【００４９】
まず、ルータ１２０ａ配下に接続された通信装置１００ａから、ＮＡＴ  ｂｏｘ１２０ｂ配下に接続された通信装置１００ｂに対して、通信の確立を要求する場合について説明する。
【００５０】
通信装置１００ａ、１００ｂは、送受信部１０１と、アドレス取得部１０２と、メッセージ生成部１０３と、メッセージ処理部１０４と、変換後アドレス検出用パケット生成部１０５と、変換後アドレス検出用パケット処理部１０６と、記憶部１０７とを備えている。
【００５１】
送受信部１０１は、外部装置との間でパケットの送受信を行うものである。具体的には、メッセージ生成部１０３が生成したパケットを送信し、外部装置から送信されたパケットを受信してメッセージ処理部１０４、またはアドレス取得部１０２に受信したパケットを渡す処理を行う。
【００５２】
アドレス取得部１０２は、通信装置１００ａが備えるものであり、通信装置１００ｂから通信装置１００ａに到達可能なＵＤＰデータグラムの送信先ＩＰアドレス、送信先ＵＤＰポート番号を取得し、記憶部１０７に記憶させるものである。送信先ＩＰアドレス、送信先ＵＤＰポート番号の取得方法の詳細については後述する。
【００５３】
メッセージ生成部１０３は、外部装置との通信に用いるメッセージの生成を行うものである。なお、メッセージ生成部１０３は、通信の確立を要求する場合には（通信装置１００ａに相当）、ＳＩＰにおける接続を要求するためのメッセージを表すＩＮＶＩＴＥリクエストを生成する。また、通信を要求される場合には（通信装置１００ｂに相当）、ＳＩＰにおけるＩＮＶＩＴＥリクエストに対する応答のメッセージを表す２００ＯＫ応答を生成する。
【００５４】
具体的には、メッセージ生成部１０３は、アドレス取得部１０２により取得された送信先ＩＰアドレスと送信先ＵＤＰポート番号と、認証に用いる第１の認証データとを含むＩＮＶＩＴＥリクエストを生成する。
【００５５】
また、メッセージ生成部１０３は、ＴＣＰセッションで通信装置１００ａがデータを送信する場合の送信元ＴＣＰポート番号とＥＳＰによるカプセル化に必要な第１のパラメータ、およびメッセージ処理部１０４が取得した送信元ＩＰアドレスと送信元ＵＤＰポート番号とを含むＩＮＶＩＴＥリクエストを生成する。なお、前記のＩＮＶＩＴＥリクエストと区別するため、以下ではこのＩＮＶＩＴＥリクエストをｒｅ−ＩＮＶＩＴＥリクエストという。
【００５６】
ここで、ＥＳＰによるカプセル化に必要なパラメータとは、ＥＳＰにより暗号化鍵を生成するためのパラメータをいう。以下では、通信装置１００ａから送信するパラメータを第１のパラメータといい、通信装置１００ｂから送信するパラメータを第２のパラメータという。各装置は相互にパラメータを受信し、暗号化鍵生成用の関数にパラメータを適用して暗号化鍵を生成する。
【００５７】
また、メッセージ生成部１０３は、ＩＮＶＩＴＥリクエストを受信した場合に、当該ＩＮＶＩＴＥリクエストに対する２００ＯＫ応答を生成する。
【００５８】
さらに、メッセージ生成部１０３は、ｒｅ−ＩＮＶＩＴＥリクエストに対して、ＴＣＰセッションでデータを送信する場合の送信元ＴＣＰポート番号、ＥＳＰによるカプセル化に必要な第２のパラメータを含む２００ＯＫ応答を生成する。
【００５９】
メッセージ処理部１０４は、通信の確立を要求した場合には（通信装置１００ａに相当）、ｒｅ−ＩＮＶＩＴＥリクエストに対する２００ＯＫ応答から、通信装置１００ｂがＴＣＰセッションでデータを送信する場合の送信元ＴＣＰポート番号、ＥＳＰによるカプセル化に必要な第２のパラメータを取得し、記憶部１０７に保持させるものである。
【００６０】
一方、メッセージ処理部１０４は、通信の確立を要求された場合には（通信装置１００ｂに相当）、受信したＩＮＶＩＴＥリクエストから、第１の認証データと送信先ＩＰアドレスと送信先ＵＤＰポート番号とを取得し、記憶部１０７に保存する。
【００６１】
変換後アドレス検出用パケット生成部１０５は、ＮＡＴ  ｂｏｘ１２０ｂにＮＡＴマッピングを生成させるために、通信装置１００ｂがＵＤＰで通信装置１００ａへ送信するパケットを生成する。当該パケットを送信することにより、ＮＡＴ  ｂｏｘ１２０ｂがＮＡＴマッピングを生成し、通信装置１００ａには、送信元ＩＰアドレスおよびＵＤＰポート番号がＮＡＴ変換されたパケットが転送される。以下では、当該パケットを変換後アドレス検出用パケットと呼ぶ。
【００６２】
変換後アドレス検出用パケット処理部１０６は、通信装置１００ｂが送信した変換後アドレス検出用パケット中の送信元ＩＰアドレスと、送信元ＵＤＰポート番号と、通信装置１００ｂを認証させるための第２の認証データとを取得し、記憶部１０７に保存しておいた第１の認証データとの整合性を検証する。また、変換後アドレス検出用パケット処理部１０６は、取得した送信元ＩＰアドレスと、送信元ＵＤＰポート番号とを記憶部１０７に保存する。
【００６３】
記憶部１０７は、装置間の認証に用いる情報、メッセージの送受信に必要なアドレス情報、パラメータを格納する記憶部であり、ＨＤＤ（Hard Disk Drive）、光ディスク、メモリカードなどの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００６４】
図１に示すように、記憶部１０７は、送信先アドレステーブル１０７ａと、送信元アドレステーブル１０７ｂと、カプセル化パラメータテーブル１０７ｃとを備えている。
【００６５】
送信先アドレステーブル１０７ａは、アドレス取得部１０２が取得したＩＰアドレスおよびＵＤＰポート番号を格納するテーブルである。なお、このＩＰアドレスおよびＵＤＰポート番号は変換後アドレス検出用パケットの送信先アドレスとなる。図２は、送信先アドレステーブル１０７ａのデータ構造の一例を示す説明図である。
【００６６】
同図に示すように、送信先アドレステーブル１０７ａは、送信先アドレスの情報として、送信先ＩＰアドレスと、送信先ＵＤＰポート番号とを格納している。
【００６７】
送信元アドレステーブル１０７ｂは、通信装置１００ｂが送信した変換アドレス検出用パケットをＮＡＴ  ｂｏｘ１２０ｂがＮＡＴ変換した後の送信元ＩＰアドレスおよび送信元ポート番号を格納するテーブルである。図３は、送信元アドレステーブル１０７ｂのデータ構造の一例を示す説明図である。
【００６８】
同図に示すように、送信元アドレステーブル１０７ｂは、送信元アドレスの情報として、送信元ＩＰアドレスと、送信元ＵＤＰポート番号とを格納している。
【００６９】
カプセル化パラメータテーブル１０７ｃは、ＴＣＰなどのカプセル化されるプロトコルで使用する情報、ＥＳＰなどのプロトコルでカプセル化する際に必要なパラメータを格納するテーブルである。図４は、カプセル化パラメータテーブル１０７ｃのデータ構造の一例を示す説明図である。
【００７０】
同図に示すように、カプセル化パラメータテーブル１０７ｃは、他の通信装置がＴＣＰセッションでデータを送信する際の送信元ＴＣＰポート番号と、ＥＳＰでカプセル化する際に必要なパラメータであるＥＳＰパラメータとを対応づけて格納している。なお、ＥＳＰによるカプセル化に必要なパラメータは複数存在しうるが、同図ではＥＳＰパラメータをまとめてＥＰとして表している。
【００７１】
なお、図１には図示していないが、記憶部１０７は、上記テーブル以外に、認証に用いる認証データも格納する。
【００７２】
ここで、本実施の形態で送受信されるパケットについて説明する。図５は、本実施の形態で送受信されるパケットのヘッダの構成の一例を示した説明図である。
【００７３】
同図に示すように、パケットのヘッダは、ＩＰヘッダ、ＵＤＰヘッダ、ＥＳＰヘッダ、ＴＣＰヘッダの順に記載されている。これは、通信の確立後に開始する通信の通信プロトコルがＴＣＰであり、ＴＣＰセグメントをＥＳＰで暗号化し、さらにＮＡＴ  ｂｏｘ１２０ｂを通過できるようにＵＤＰでカプセル化して、ＩＰヘッダを付加したパケットであることを意味する。なお、上述のように、通信プロトコルはこれらに限られるものではない。
【００７４】
次に、このように構成された本実施の形態にかかる通信装置１００の通信処理について説明する。図６は、本実施の形態における通信処理の全体の流れを示すシーケンス図である。なお、同図では通信処理の概要を示し、処理の詳細については後述する図７、図８の詳細シーケンス図で説明する。
【００７５】
同図に示すように、通信装置１００ａにはグローバルＩＰアドレスＡが付与され、ルータ１２０ａにはグローバルＩＰアドレスＲＡが付与され、ＮＡＴ  ｂｏｘ１２０ｂにはグローバルＩＰアドレスＲＢが付与され、通信装置１００ｂにはプライベートＩＰアドレスＢが付与されている。
【００７６】
また、通信処理を開始する前提として、通信装置１００ａおよび通信装置１００ｂは、それぞれＳＩＰ  Ｐｒｏｘｙ１４０との間でＳＩＰセッションを確立しているものとする。ただし、ＳＩＰセッションを確立する際、ＳＩＰ  Ｐｒｏｘｙ１４０からではなく、通信装置１００ａおよび通信装置１００ｂから通信を開始するものとする。ＮＡＴ  ｂｏｘ１２０ｂ配下の装置からインターネット１３０上の装置への接続となるため、ＮＡＴ  ｂｏｘ１２０ｂを介しても通信装置１００ｂはＳＩＰセッションを確立可能である。ルータ１２０ａがＮＡＴ  ｂｏｘである場合も同じ理由によりＳＩＰセッションを確立可能である。
【００７７】
まず、通信装置１００ａのアドレス取得部１０２が、通信装置１００ｂから通信装置１００ａに到達可能なアドレスの情報を取得するアドレス取得処理を行う（ステップＳ６０１）。
【００７８】
次に、通信装置１００ａのメッセージ生成部１０３が、第１の認証データを生成して記憶部１０７に保存するとともに、ステップＳ６０１で取得したアドレス情報と第１の認証データとを含むＩＮＶＩＴＥリクエストを生成し、送受信部１０１により送信する（ステップＳ６０２）。
【００７９】
次に、ＩＮＶＩＴＥリクエストはルータ１２０ａに送信され（ステップＳ６０３）、ＳＩＰ  Ｐｒｏｘｙ１４０に転送される（ステップＳ６０４）。
【００８０】
次に、ＩＮＶＩＴＥリクエストは、ＳＩＰ  Ｐｒｏｘｙ１４０によりＮＡＴ  ｂｏｘ１２０ｂに転送され（ステップＳ６０５）、ＮＡＴ  ｂｏｘ１２０ｂから通信装置１００ｂに転送される（ステップＳ６０６）。
【００８１】
次に、通信装置１００ｂのメッセージ処理部１０４は、ＩＮＶＩＴＥリクエストに含まれるアドレス情報、第１の認証データを記憶部１０７に保存する（ステップＳ６０７）。
【００８２】
次に、通信装置１００ｂは、受信したＩＮＶＩＴＥリクエストに対する２００ＯＫ応答を送信する（ステップＳ６０８）。２００ＯＫ応答はＮＡＴ  ｂｏｘ１２０ｂに送信され（ステップＳ６０９）、ＮＡＴ  ｂｏｘ１２０ｂから、ＳＩＰ  Ｐｒｏｘｙ１４０に転送される（ステップＳ６１０）。
【００８３】
次に、２００ＯＫ応答は、ＳＩＰ  Ｐｒｏｘｙ１４０によりルータ１２０ａに転送され（ステップＳ６１１）、ルータ１２０ａから通信装置１００ａに転送される（ステップＳ６１２）。
【００８４】
次に、通信装置１００ａの送受信部１０１は２００ＯＫ応答を受信する（ステップＳ６１３）。
【００８５】
一方、通信装置１００ｂでは、２００ＯＫ応答送信後、ＮＡＴ  ｂｏｘ１２０ｂで変換された後の送信元アドレス情報を検出するために利用する変換後アドレス検出用パケットを送信する（ステップＳ６１４）。変換後アドレス検出用パケットには、通信装置１００ｂを認証するための認証データも含まれる。
【００８６】
変換後アドレス検出用パケットはＮＡＴ  ｂｏｘ１２０ｂに送信され（ステップＳ６１５）、ＮＡＴ  ｂｏｘ１２０ｂによりＮＡＴ変換された後、ＮＡＴ  ｂｏｘ１２０ｂから、ルータ１２０ａに転送される（ステップＳ６１６）。このように、変換後アドレス検出用パケットの送信にはＳＩＰ  Ｐｒｏｘｙ１４０を使用しない。
【００８７】
次に、変換後アドレス検出用パケットは、ルータ１２０ａから通信装置１００ａに転送される（ステップＳ６１７）。次に、通信装置１００ａの送受信部１０１は変換後アドレス検出用パケットを受信し、送信元アドレス情報、認証データを取得し検証する処理を行う（ステップＳ６１８）。
【００８８】
検証に成功した場合、通信装置１００ａのメッセージ処理部１０４は、送信元アドレス情報を記憶部１０７に保存する（ステップＳ６１９）。
【００８９】
次に、通信装置１００ａのメッセージ生成部１０３は、ＥＳＰでカプセル化するＴＣＰセッションでデータを送る際に必要なパラメータと、ＥＳＰでカプセル化するために必要な第１のパラメータとを含むｒｅ−ＩＮＶＩＴＥリクエストを生成して送信する（ステップＳ６２０）。
【００９０】
次に、ｒｅ−ＩＮＶＩＴＥリクエストはルータ１２０ａに送信され（ステップＳ６２１）、ＳＩＰ  Ｐｒｏｘｙ１４０に転送される（ステップＳ６２２）。
【００９１】
次に、ｒｅ−ＩＮＶＩＴＥリクエストは、ＳＩＰ  Ｐｒｏｘｙ１４０によりＮＡＴ  ｂｏｘ１２０ｂに転送され（ステップＳ６２３）、ＮＡＴ  ｂｏｘ１２０ｂから通信装置１００ｂに転送される（ステップＳ６２４）。
【００９２】
次に、通信装置１００ｂのメッセージ処理部１０４は、ｒｅ−ＩＮＶＩＴＥリクエストに含まれる各種パラメータを記憶部１０７に保存する（ステップＳ６２５）。
【００９３】
次に、通信装置１００ｂは、受信したｒｅ−ＩＮＶＩＴＥリクエストに対する２００ＯＫ応答を送信する（ステップＳ６２６）。この場合の２００ＯＫ応答には、ＥＳＰでカプセル化するＴＣＰセッションでデータを送る際に必要なパラメータと、ＥＳＰでカプセル化するために必要な第２のパラメータとが含まれる。
【００９４】
２００ＯＫ応答はＮＡＴ  ｂｏｘ１２０ｂに送信され（ステップＳ６２７）、ＮＡＴ  ｂｏｘ１２０ｂから、ＳＩＰ  Ｐｒｏｘｙ１４０に転送される（ステップＳ６２８）。
【００９５】
次に、２００ＯＫ応答は、ＳＩＰ  Ｐｒｏｘｙ１４０によりルータ１２０ａに転送され（ステップＳ６２９）、ルータ１２０ａから通信装置１００ａに転送される（ステップＳ６３０）。
【００９６】
次に、通信装置１００ａの送受信部１０１は２００ＯＫ応答を受信し、メッセージ処理部１０４は２００ＯＫ応答に含まれる各種パラメータを記憶部１０７に保存する（ステップＳ６３１）。
【００９７】
このような処理により、通信装置１００ａと通信装置１００ｂは、ＴＣＰセッションのパケットを送受信するために必要な全てのアドレス情報、ＥＳＰでカプセル化するためのパラメータを取得できるので、相互にＴＣＰセッションによる通信を開始可能になる（ステップＳ６３２）。
【００９８】
次に、このように構成された本実施の形態にかかる通信装置１００の通信処理の詳細について説明する。図７、図８は、本実施の形態における通信処理の詳細な流れを示すシーケンス図である。なお、同図ではルータ１２０ａ、ＳＩＰ  Ｐｒｏｘｙ１４０、ＮＡＴ  ｂｏｘ１２０ｂは省略している。
【００９９】
まず、通信装置１００ａのアドレス取得部１０２が、通信装置１００ｂから到達可能なＵＤＰデータグラムの送信先ＩＰアドレス（Ｘ）、送信先ＵＤＰポート番号（ＸＰ）を取得し、送信先アドレステーブル１０７ａに保存する（ステップＳ７０１）。アドレス情報の取得処理は、以下のように行う。
【０１００】
ルータ１２０ａがＮＡＴ  ｂｏｘでない場合、通信装置１００ａにはグローバルＩＰアドレスＡが付与されるため、ＩＰアドレスＡ、および通信装置１００ａ上のＵＤＰポート番号ＵＰが通信装置１００ｂから通信装置１００ａへ到達可能なＵＤＰデータグラムの送信先ＩＰアドレス、送信先ＵＤＰポート番号となる。そこで、ルータ１２０ａがＮＡＴ  ｂｏｘでない場合は、自装置のＩＰアドレスＡ、ＵＤＰポート番号ＵＰを、送信先ＩＰアドレスＸ、送信先ＵＤＰポート番号ＸＰとして取得する。
【０１０１】
一方、ルータ１２０ａがＮＡＴ  ｂｏｘである場合、通信装置１００ａにはプライベートＩＰアドレスが付与されるため、ＩＰアドレスＸをＡ以外のＩＰアドレスにする必要がある。しかし、ルータ１２０ａがＮＡＴ  ｂｏｘである場合、上述のように、ルータ１２０ａはＮＡＴマッピングを設定する手段を備えることを前提としている。したがって、自ら設定したＮＡＴマッピングに従い、外部の装置から自装置へ到達可能なアドレス情報を取得することができる。
【０１０２】
すなわち、ＩＰアドレスＲＡ、ＵＤＰポート番号ＲＰを送信先とするパケットの送信先を通信装置１００ａのＩＰアドレスＡ、ＵＤＰポート番号ＵＰに変換し転送するような、ＲＰをルータ１２０ａに設定可能である。そこで、ルータ１２０ａのＩＰアドレスＲＡ、変換先ＵＤＰポート番号ＲＰを、送信先ＩＰアドレスＸ、送信先ＵＤＰポート番号ＸＰとして取得することが可能となる。
【０１０３】
次に、通信装置１００ａのメッセージ生成部１０３は、第１の認証データを生成し、記憶部１０７に第１の認証データを保存する（ステップＳ７０２）。第１の認証データとしては、例えば、ランダムな数字列を生成する。
【０１０４】
また、メッセージ生成部１０３は、送信先アドレステーブル１０７ａに保存したＩＰアドレスＸとＵＤＰポート番号ＸＰと第１の認証データとを含むＩＮＶＩＴＥリクエストを生成する（ステップＳ７０３）。
【０１０５】
次に、通信装置１００ａの送受信部１０１は、生成したＩＮＶＩＴＥリクエストをＳＩＰ  Ｐｒｏｘｙ１４０を介して通信装置１００ｂに送信する（ステップＳ７０４）。
【０１０６】
次に、通信装置１００ｂの送受信部１０１はＩＮＶＩＴＥリクエストを受信し（ステップＳ７０５）、メッセージ処理部１０４は、ＩＮＶＩＴＥリクエストに記されたＩＰアドレスＸ、ＵＤＰポート番号ＸＰ、第１の認証データを取得し、記憶部１０７に保存する（ステップＳ７０６）。なお、ＩＰアドレスＸ、ＵＤＰポート番号ＸＰは、通信装置１００ｂ内の送信先アドレステーブル１０７ａに保存される。
【０１０７】
次に、通信装置１００ｂの送受信部１０１が、メッセージ生成部１０３により生成されたＩＮＶＩＴＥリクエストに対する２００ＯＫ応答を、ＳＩＰ  Ｐｒｏｘｙ１４０を介して通信装置１００ａに送信する（ステップＳ７０７）。
【０１０８】
次に、通信装置１００ａの送受信部１０１は２００ＯＫ応答を受信する（ステップＳ７０８）。
【０１０９】
次に、通信装置１００ｂのメッセージ処理部１０４は、第１の認証データにパスワードを統合した第２の認証データを生成する（ステップＳ７０９）。パスワードは、事前に通信装置１００ａとの間で交換したものを用いる。
【０１１０】
このように、第１の認証データを受信し、受信した第１の認証データとパスワードから生成した第２の認証データを返信して認証を行うダイレクト認証により、通信装置１００ｂから送信されたメッセージであることの認証を行う。
【０１１１】
また、通信装置間の認証方法はこれに限られるものではなく、一般的に用いられているあらゆる認証方法を適用することができる。例えば、ステップＳ７０７で返信する２００ＯＫ応答に第２の認証データを含め、ステップＳ７０９では別の認証データである第３の認証データを変換後アドレス検出用パケットに含め、通信装置１００ａでは、受信した第２の認証データおよび第３の認証データと、事前に記憶部１０７に保存した第１の認証データとの整合性を確認することにより、認証を行うように構成してもよい。
【０１１２】
また、ステップＳ７０６で第１の認証データを取得したときに、事前に記憶した認証データと照合して通信装置１００ａからのメッセージであることを認証するように構成してもよい。さらに、認証処理を省略するように構成してもよい。
【０１１３】
次に、通信装置１００ｂの変換後アドレス検出用パケット生成部１０５は、送信先アドレステーブル１０７ａに保存しておいたＩＰアドレスＸおよびＵＤＰポート番号ＸＰをそれぞれ送信先ＩＰアドレスおよび送信先ＵＤＰポート番号とし、自装置（通信装置１００ｂ）のＩＰアドレスＢおよびＵＤＰポート番号ＵＱをそれぞれ送信元ＩＰアドレスおよび送信元ＵＤＰポート番号とする、変換後アドレス検出用パケットを生成する（ステップＳ７１０）。なお、変換後アドレス検出用パケットは、ステップＳ７０９で生成した第２の認証データを含む。
【０１１４】
次に、通信装置１００ｂの送受信部１０１は、生成した変換後アドレス検出用パケットを、通信装置１００ａに対して送信する（ステップＳ７１１）。
【０１１５】
次に、通信装置１００ａの送受信部１０１は、変換後アドレス検出用パケットを受信する（ステップＳ７１２）。
【０１１６】
ここで、ステップＳ７１１で通信装置１００ｂから送信され、ステップＳ７１２で通信装置１００ａに受信されるまでの、変換後アドレス検出用パケットが通る経路および当該パケットに対して施される処理の詳細について説明する。
【０１１７】
図９は、ルータ１２０ａがＮＡＴ  ｂｏｘでない場合の変換後アドレス検出用パケット９０１の経路の一例を示す説明図である。
【０１１８】
同図では、ルータ１２０ａがＮＡＴ  ｂｏｘでないため、通信装置１００ａのアドレス取得部１０２が取得したＩＰアドレスＸは通信装置１００ａに付与されたグローバルＩＰアドレスＡであり、ＵＤＰポート番号ＸＰは、通信装置１００ａ上のＵＤＰポート番号ＵＰである。
【０１１９】
まず、パケット９０１はＮＡＴ  ｂｏｘ１２０ｂを経由するが、このときＮＡＴ  ｂｏｘ１２０ｂによって少なくともパケット９０１の送信元ＩＰアドレスＢがＮＡＴ  ｂｏｘ１２０ｂに付与されたグローバルＩＰアドレスＲＢに変換される。また、パケット９０１のＵＤＰポート番号ＵＱも変換される場合があるが、いずれにせよＮＡＴ  ｂｏｘ１２０ｂを通過後のパケット９０１の送信元ＵＤＰポート番号をＲＱとする。
【０１２０】
次に、パケット９０１はＳＩＰ  Ｐｒｏｘｙ１４０を経由せず、ルータ１２０ａに転送される。ルータ１２０ａはＮＡＴ変換機能を備えていないため、パケット９０１を単に通信装置１００ａに転送する。
【０１２１】
このようにして、ＮＡＴ変換後の送信元ＩＰアドレスＲＢおよび送信元ＵＤＰポート番号ＲＱを含むパケットが通信装置１００ａに到達する。
【０１２２】
一方、図１０は、ルータ１２０ａがＮＡＴ  ｂｏｘである場合の変換後アドレス検出用パケット１００１の経路の一例を示す説明図である。
【０１２３】
同図では、ルータ１２０ａはＮＡＴ  ｂｏｘであるため、ステップＳ６０１の通信開始時には既にパケット１００１の送信先ＩＰアドレスＸ、送信先ＵＤＰポート番号ＸＰを変換するためのＮＡＴマッピングが設定済みである。
【０１２４】
また、通信装置１００ａのアドレス取得部１０２が取得したＩＰアドレスＸはルータ１２０ａに付与されたグローバルＩＰアドレスＲＡであると同時にルータ１２０ａに設定されたＮＡＴマッピングの変換先ＩＰアドレスであり、ＵＤＰポート番号ＸＰは、ルータ１２０ａに設定されたＮＡＴマッピングの変換先ＵＤＰポート番号ＲＰである。
【０１２５】
同図の例でも、パケット１００１はＮＡＴ  ｂｏｘ１２０ｂを経由するが、このときＮＡＴ  ｂｏｘ１２０ｂのアドレス変換機能によって少なくともパケット１００１の送信元ＩＰアドレスＢがＮＡＴ  ｂｏｘ１２０ｂに付与されたグローバルＩＰアドレスＲＢに変換される。また、パケット１００１のＵＤＰポート番号ＵＱも変換される場合があるが、いずれにせよＮＡＴ  ｂｏｘ１２０ｂを通過後のパケット１００１の送信元ＵＤＰポート番号をＲＱとする。
【０１２６】
次に、ルータ１２０ａは、設定されたＮＡＴマッピングを用いて、パケット１００１の送信先ＩＰアドレスＲＡをＩＰアドレスＡに変換し、送信先ＵＤＰポート番号ＲＰをＵＰに変換して、通信装置１００ａにパケット１００１を転送する。
【０１２７】
このようにして、ルータ１２０ａがＮＡＴ  ｂｏｘである場合であっても、ＮＡＴ変換後の送信元ＩＰアドレスＲＢおよび送信元ＵＤＰポート番号ＲＱを含むパケットが通信装置１００ａに到達する。
【０１２８】
ステップＳ７１２で通信装置１００ａの送受信部１０１が変換後アドレス検出用パケットを受信した後、通信装置１００ａの変換後アドレス検出用パケット処理部１０６が、変換後アドレス検出用パケットの送信元ＩＰアドレスＲＢ、送信元ＵＤＰポート番号ＲＱ、変換後アドレス検出用パケットに記された第２の認証データ、および記憶部１０７に保存していた第１の認証データとの整合性を検証する（ステップＳ７１３）。
【０１２９】
なお、検証に失敗した場合、通信装置１００ａはアドレス取得処理（ステップＳ７０１）から処理をやり直す。また、接続を取りやめる旨のメッセージをＳＩＰ  Ｐｒｏｘｙ１４０を経由して通信装置１００ｂに送信し、通信処理を終了するように構成してもよい。
【０１３０】
検証に成功した場合、通信装置１００ａのメッセージ処理部１０４は、送信元アドレステーブル１０７ｂにＩＰアドレスＲＢ、ＵＤＰポート番号ＲＱを保存する（ステップＳ７１４）。
【０１３１】
次に、通信装置１００ａのメッセージ生成部１０３は、ＩＰアドレスＲＢと、ＵＤＰポート番号ＲＱと、通信装置１００ａがＴＣＰセッションでデータを送る場合の送信元ポート番号ＴＰと、ＥＳＰでＴＣＰをカプセル化するために必要な第１のパラメータＥＰ１とを含むｒｅ−ＩＮＶＩＴＥリクエストを生成する（ステップＳ７１５）。
【０１３２】
なお、メッセージ生成部１０３は、ステップＳ７０８で受信した２００ＯＫ応答に含まれるＣａｌｌ−ＩＤと呼ばれるＩＤを記憶部１０７に保存しておき、当該Ｃａｌｌ−ＩＤをＩＮＶＩＴＥリクエスト記載するように構成してもよい。
【０１３３】
Ｃａｌｌ−ＩＤはＳＩＰ特有のＩＤであり、個々の呼を識別するためのＩＤである。ＳＩＰの仕様により、Ｃａｌｌ−ＩＤを変えずにＩＮＶＩＴＥリクエストを送信することで、全く新しい通信の確立を要求するのではなく通信装置１００ｂとの接続に使用するプロトコルを変更することを、通信装置１００ａが通信装置１００ｂに明示することができる。
【０１３４】
次に、通信装置１００ａの送受信部１０１は、ＳＩＰ  Ｐｒｏｘｙ１４０を介して通信装置１００ｂにｒｅ−ＩＮＶＩＴＥリクエストを送信する（ステップＳ７１６）。
【０１３５】
次に、通信装置１００ｂの送受信部１０１は、ｒｅ−ＩＮＶＩＴＥリクエストを受信する（ステップＳ７１７）。次に、通信装置１００ｂのメッセージ処理部１０４は、ｒｅ−ＩＮＶＩＴＥリクエストに含まれるＩＰアドレスＲＢ、ＵＤＰポート番号ＲＱ、ＴＣＰポート番号ＴＰ、ＥＳＰでＴＣＰをカプセル化するために必要な第１のパラメータＥＰ１をカプセル化パラメータテーブル１０７ｃに保存する（ステップＳ７１８）。
【０１３６】
次に、通信装置１００ｂのメッセージ生成部１０３は、通信装置１００ｂがＴＣＰセッションでデータを送信する場合の送信元ポート番号ＴＱと、ＥＳＰでカプセル化するために必要な第２のパラメータＥＰ２を含む２００ＯＫ応答を生成する（ステップＳ７１９）。
【０１３７】
次に、通信装置１００ｂの送受信部１０１は、ＳＩＰ  Ｐｒｏｘｙ１４０を介して通信装置１００ａに２００ＯＫ応答を送信する（ステップＳ７２０）。
【０１３８】
次に、通信装置１００ａの送受信部１０１は、２００ＯＫ応答を受信する（ステップＳ７２１）。次に、通信装置１００ａのメッセージ処理部１０４は、２００ＯＫ応答に含まれるＴＣＰポート番号ＴＱ、ＥＳＰでＴＣＰをカプセル化するために必要な第２のパラメータＥＰ２をカプセル化パラメータテーブル１０７ｃに保存する（ステップＳ７２２）。
【０１３９】
以上により、通信装置１００ａと通信装置１００ｂは、ＴＣＰセッションのパケットを送受信するために必要な全てのＩＰアドレス、ＵＤＰポート番号、ＥＳＰでカプセル化するためのパラメータ、ＴＣＰポート番号を相互に取得できるので、通信装置１００ａからでも通信装置１００ｂからでもＴＣＰによる通信を開始可能となる。
【０１４０】
通信装置１００ａから通信を開始することでＴＣＰセッションを確立する場合、通信装置１００ａは、送信元ＩＰアドレス、送信元ＵＤＰポート番号、送信元ＴＣＰポート番号をそれぞれＡ、ＵＰ、ＴＰとし、送信先ＩＰアドレス、送信先ＵＤＰポート番号、送信先ＴＣＰポート番号をそれぞれＲＢ、ＲＱ、ＴＱとし、ＴＣＰのＳＹＮフラグをセットし、ＵＤＰヘッダとＥＳＰでＴＣＰヘッダをカプセル化したパケットを送信すればよい。
【０１４１】
一方、通信装置１００ｂから通信を開始することでＴＣＰセッションを確立する場合、通信装置１００ｂは、送信元ＩＰアドレス、送信元ＵＤＰポート番号、送信元ＴＣＰポート番号をそれぞれＢ、ＵＱ、ＴＱとし、送信先ＩＰアドレス、送信先ＵＤＰポート番号、送信先ＴＣＰポート番号をそれぞれＸ、ＸＰ、ＴＰとし、ＴＣＰのＳＹＮフラグをセットし、ＵＤＰヘッダとＥＳＰでＴＣＰヘッダをカプセル化したパケットを送信すればよい。
【０１４２】
いずれの場合でも、カプセル化されたパケットはステップＳ７１１で通信装置１００ｂが送信した変換後アドレス検出用パケットと同じ経路、同じＩＰアドレス、同じＵＤＰポート番号を使用するので、通信相手の装置に到達可能である。
【０１４３】
次に、ＮＡＴ  ｂｏｘ１２０ｂ配下に接続された通信装置１００ｂから、ルータ１２０ａ配下に接続された通信装置１００ａに対して、通信の確立を要求する場合について説明する。
【０１４４】
この場合、通信装置１００ａから通信の確立を要求する場合と異なり、メッセージ生成部１０３、メッセージ処理部１０４、変換後アドレス検出用パケット生成部１０５、および変換後アドレス検出用パケット処理部１０６は以下の処理を実行する。
【０１４５】
メッセージ生成部１０３は、通信装置１００ｂから通信の確立を要求する場合（通信装置１００ｂに相当）、送信先ＩＰアドレスと送信先ＵＤＰポート番号と第１の認証データとをいずれも含まないＩＮＶＩＴＥリクエストを生成する。
【０１４６】
また、通信の確立を要求される場合には（通信装置１００ａに相当）、メッセージ生成部１０３は、ＩＮＶＩＴＥリクエストを受信した場合に、自装置（通信装置１００ａ）を認証するための第１の認証データと、アドレス取得部１０２で取得した送信先ＩＰアドレスと送信先ＵＤＰポート番号とを含む２００ＯＫ応答を生成する。
【０１４７】
メッセージ処理部１０４は、ＩＮＶＩＴＥリクエストに対して通信装置１００ａが送信した２００ＯＫ応答から、第１の認証データと、送信先ＩＰアドレスと、送信先ＵＤＰポート番号とを取得し、記憶部１０７に保存する。
【０１４８】
また、メッセージ処理部１０４は、通信の確立を要求する場合には（通信装置１００ｂに相当）、ｒｅ−ＩＮＶＩＴＥリクエストから、通信装置１００ａがＴＣＰセッションでデータを送信する場合の送信元ＴＣＰポート番号、ＥＳＰによるカプセル化に必要な第１のパラメータを記憶部１０７に保存する。
【０１４９】
メッセージ処理部１０４は、通信の確立を要求される場合には（通信装置１００ａに相当）、ＩＮＶＩＴＥリクエストを受信する。
【０１５０】
また、メッセージ処理部１０４は、ｒｅ−ＩＮＶＩＴＥリクエストに対する２００ＯＫ応答から、通信装置１００ｂがＴＣＰセッションでデータを送信する場合の送信元ＴＣＰポート番号、ＥＳＰによるカプセル化に必要な第２のパラメータを取得し、記憶部１０７に保存する。
【０１５１】
変換後アドレス検出用パケット生成部１０５は、受信した第１の認証データから生成した第２の認証データを含み、通信装置１００ｂがＵＤＰで通信装置１００ａへ送信する変換後アドレス検出用パケットを生成する。
【０１５２】
変換後アドレス検出用パケット処理部１０６は、記憶部１０７に保存しておいた第１の認証データと、通信装置１００ｂが送信した変換後アドレス検出用パケット中の送信元ＩＰアドレスと、ＵＤＰポート番号と、第２の認証データとの整合性を検証する。また、変換検出用パケット処理部１０６は、変換アドレス検出用パケットの送信元ＩＰアドレスと、送信元ＵＤＰポート番号を記憶部１０７に保存する。
【０１５３】
なお、送受信部１０１、アドレス取得部１０２の機能は、通信装置１００ａから通信の確立を要求する場合と同一である。
【０１５４】
次に、通信装置１００ｂから通信の確立を要求する場合における、通信装置１００の通信処理について説明する。図１１は、本実施の形態における通信処理の全体の流れを示すシーケンス図である。なお、同図では通信処理の概要を示し、処理の詳細については後述する図１２、図１３の詳細シーケンス図で説明する。
【０１５５】
同図に示すように、通信装置１００ｂにはプライベートＩＰアドレスＢが付与され、ＮＡＴ  ｂｏｘ１２０ｂにはグローバルＩＰアドレスＲＢが付与され、ルータ１２０ａにはグローバルＩＰアドレスＲＡが付与され、通信装置１００ａにはグローバルＩＰアドレスＡが付与されている。
【０１５６】
また、通信処理を開始する前提として、通信装置１００ａおよび通信装置１００ｂは、それぞれＳＩＰ  Ｐｒｏｘｙ１４０との間でＳＩＰセッションを確立しているものとする。
【０１５７】
まず、通信装置１００ｂのメッセージ生成部１０３が、ＩＮＶＩＴＥリクエストを生成し、送受信部１０１により送信する（ステップＳ１１０１）。
【０１５８】
次に、ＩＮＶＩＴＥリクエストはＮＡＴ  ｂｏｘ１２０ｂに送信され（ステップＳ１１０２）、ＳＩＰ  Ｐｒｏｘｙ１４０に転送される（ステップＳ１１０３）。
【０１５９】
次に、ＩＮＶＩＴＥリクエストは、ＳＩＰ  Ｐｒｏｘｙ１４０によりルータ１２０ａに転送され（ステップＳ１１０４）、ルータ１２０ａから通信装置１００ａに転送される（ステップＳ１１０５）。
【０１６０】
次に、通信装置１００ａのメッセージ処理部１０４は、ＩＮＶＩＴＥリクエストに含まれる第一の認証データを記憶部１０７に保存する（ステップＳ１１０６）。
【０１６１】
次に、通信装置１００ａのアドレス取得部１０２が、通信装置１００ｂから通信装置１００ａに到達可能なアドレスの情報を取得するアドレス取得処理を行う（ステップＳ１１０７）。なお、ステップＳ１１０７のアドレス取得処理は、ＩＮＶＩＴＥリクエストを受信する前に予め行うように構成してもよい。
【０１６２】
次に、通信装置１００ａは、第１の認証データを生成し、生成した第１の認証データと、ステップＳ１１０７で取得したアドレス情報とを含む２００ＯＫ応答を送信する（ステップＳ１１０８）。２００ＯＫ応答はルータ１２０ａに送信され（ステップＳ１１０９）、ルータ１２０ａから、ＳＩＰ  Ｐｒｏｘｙ１４０に転送される（ステップＳ１１１０）。
【０１６３】
次に、２００ＯＫ応答は、ＳＩＰ  Ｐｒｏｘｙ１４０によりＮＡＴ  ｂｏｘ１２０ｂに転送され（ステップＳ１１１１）、ＮＡＴ  ｂｏｘ１２０ｂから通信装置１００ｂに転送される（ステップＳ１１１２）。
【０１６４】
次に、通信装置１００ｂの送受信部１０１は２００ＯＫ応答を受信し、２００ＯＫ応答に含まれるアドレス情報と、第１の認証データとを記憶部１０７に保存する（ステップＳ１１１３）。
【０１６５】
次に、通信装置１００ｂは、ＮＡＴ  ｂｏｘ１２０ｂで変換された後の送信元アドレス情報を検出するために利用する変換後アドレス検出用パケットを送信する（ステップＳ１１１４）。変換後アドレス検出用パケットには、第１の認証データから生成した第２の認証データも含まれる。
【０１６６】
変換後アドレス検出用パケットはＮＡＴ  ｂｏｘ１２０ｂに送信され（ステップＳ１１１５）、ＮＡＴ  ｂｏｘ１２０ｂから、ルータ１２０ａに転送される（ステップＳ１１１６）。このように、変換後アドレス検出用パケットの送信にはＳＩＰ  Ｐｒｏｘｙ１４０は使用しない。
【０１６７】
次に、変換後アドレス検出用パケットは、ルータ１２０ａから通信装置１００ａに転送される（ステップＳ１１１７）。次に、通信装置１００ａの送受信部１０１は変換後アドレス検出用パケットを受信し、送信元アドレス情報、認証データを取得し検証する処理を行う（ステップＳ１１１８）。
【０１６８】
検証に成功した場合、通信装置１００ａのメッセージ処理部１０４は、送信元アドレス情報を送信元アドレステーブル１０７ｂに保存する（ステップＳ１１１９）。
【０１６９】
次に、通信装置１００ａのメッセージ生成部１０３は、ＥＳＰでカプセル化するＴＣＰによる通信に必要なパラメータと、ＥＳＰでカプセル化するために必要な第１のパラメータとを含むｒｅ−ＩＮＶＩＴＥリクエストを生成して送信する（ステップＳ１１２０）。
【０１７０】
次に、ｒｅ−ＩＮＶＩＴＥリクエストはルータ１２０ａに送信され（ステップＳ１１２１）、ＳＩＰ  Ｐｒｏｘｙ１４０に転送される（ステップＳ１１２２）。
【０１７１】
次に、ｒｅ−ＩＮＶＩＴＥリクエストは、ＳＩＰ  Ｐｒｏｘｙ１４０によりＮＡＴ  ｂｏｘ１２０ｂに転送され（ステップＳ１１２３）、ＮＡＴ  ｂｏｘ１２０ｂから通信装置１００ｂに転送される（ステップＳ１１２４）。
【０１７２】
次に、通信装置１００ｂのメッセージ処理部１０４は、ｒｅ−ＩＮＶＩＴＥリクエストに含まれる各種パラメータを記憶部１０７に保存する（ステップＳ１１２５）。
【０１７３】
次に、通信装置１００ｂは、受信したｒｅ−ＩＮＶＩＴＥリクエストに対する２００ＯＫ応答を送信する（ステップＳ１１２６）。この場合の２００ＯＫ応答には、ＥＳＰでカプセル化するＴＣＰによる通信に必要なパラメータと、ＥＳＰでカプセル化するために必要な第２のパラメータとが含まれる。
【０１７４】
２００ＯＫ応答はＮＡＴ  ｂｏｘ１２０ｂに送信され（ステップＳ１１２７）、ＮＡＴ  ｂｏｘ１２０ｂから、ＳＩＰ  Ｐｒｏｘｙ１４０に転送される（ステップＳ１１２８）。
【０１７５】
次に、２００ＯＫ応答は、ＳＩＰ  Ｐｒｏｘｙ１４０によりルータ１２０ａに転送され（ステップＳ１１２９）、ルータ１２０ａから通信装置１００ａに転送される（ステップＳ１１３０）。
【０１７６】
次に、通信装置１００ａの送受信部１０１は２００ＯＫ応答を受信し、メッセージ処理部１０４は２００ＯＫ応答に含まれる各種パラメータを記憶部１０７に保存する（ステップＳ１１３１）。
【０１７７】
このような処理により、通信装置１００ａと通信装置１００ｂは、ＴＣＰセッションのパケットを送受信するために必要な全てのアドレス情報、ＥＳＰでカプセル化するためのパラメータを取得できるので、相互にＴＣＰセッションによる通信を開始可能になる（ステップＳ１１３２）。
【０１７８】
次に、通信装置１００ｂから通信の確立を要求する場合における、通信装置１００の通信処理の詳細について説明する。図１２、図１３は、本実施の形態における通信処理の詳細な流れを示すシーケンス図である。なお、同図ではルータ１２０ａ、ＳＩＰ  Ｐｒｏｘｙ１４０、ＮＡＴ  ｂｏｘ１２０ｂは省略している。
【０１７９】
まず、通信装置１００ｂのメッセージ生成部１０３が、ＩＮＶＩＴＥリクエストを生成する（ステップＳ１２０１）。
【０１８０】
次に、通信装置１００ｂの送受信部１０１は、生成したＩＮＶＩＴＥリクエストをＳＩＰ  Ｐｒｏｘｙ１４０を介して通信装置１００ｂに送信する（ステップＳ１２０２）。
【０１８１】
次に、通信装置１００ａの送受信部１０１はＩＮＶＩＴＥリクエストを受信する（ステップＳ１２０３）。次に、通信装置１００ａのアドレス取得部１０２が、通信装置１００ｂから到達可能なＵＤＰデータグラムの送信先ＩＰアドレス（Ｘ）、送信先ＵＤＰポート番号（ＸＰ）を取得し、送信先アドレステーブル１０７ａに保存する（ステップＳ１２０４）。アドレス情報の取得処理は、ステップＳ７０１で説明した処理内容と同様である。
【０１８２】
次に、メッセージ生成部１０３は、自装置（通信装置１００ａ）を認証させるための第１の認証データを生成し（ステップＳ１２０５）、第１の認証データと、ステップＳ１２０４で取得した送信先ＩＰアドレスＸおよび送信先ＵＤＰポート番号ＸＰとを含む２００ＯＫ応答を生成する（ステップＳ１２０６）。
【０１８３】
次に、通信装置１００ａの送受信部１０１が、メッセージ生成部１０３により生成された２００ＯＫ応答を、ＳＩＰ  Ｐｒｏｘｙ１４０を介して通信装置１００ｂに送信する（ステップＳ１２０７）。
【０１８４】
次に、通信装置１００ｂの送受信部１０１は２００ＯＫ応答を受信する（ステップＳ１２０８）。
【０１８５】
次に、メッセージ処理部１０４は、２００ＯＫ応答に記されたＩＰアドレスＸ、ＵＤＰポート番号ＸＰ、第１の認証データを取得し、記憶部１０７に保存する（ステップＳ１２０９）。
【０１８６】
ステップＳ１２１０からステップＳ１２２３までの、変換後アドレス検出用パケット送受信処理、カプセル化パラメータの送受信処理は、通信装置１００ａから通信の確立を要求する場合における図７のステップＳ７０９からステップＳ７２２までと同様の処理なので、その説明を省略する。
【０１８７】
以上の処理により、通信装置１００ａと通信装置１００ｂは、ＴＣＰセッションのパケットを送受信するために必要な全てのＩＰアドレス、ＵＤＰポート番号、ＥＳＰでカプセル化するためのパラメータ、ＴＣＰポート番号を取得できるので、通信装置１００ａからでも通信装置１００ｂからでもＴＣＰによる通信を開始可能となる。
【０１８８】
次に、ステップＳ１２１２で通信装置１００ｂから送信され、ステップＳ１２１３で通信装置１００ａに受信されるまでの、変換後アドレス検出用パケットが流れる経路および当該パケットに対して施される処理の詳細について説明する。
【０１８９】
図１４は、ルータ１２０ａがＮＡＴ  ｂｏｘでない場合の変換後アドレス検出用パケット１４０１の経路の一例を示す説明図である。
【０１９０】
同図では、ルータ１２０ａがＮＡＴ  ｂｏｘでないため、通信装置１００ａから通知されたＩＰアドレスＸは通信装置１００ａに付与されたグローバルＩＰアドレスＡであり、ＵＤＰポート番号ＸＰは、通信装置１００ａ上のＵＤＰポート番号ＵＰである。
【０１９１】
まず、パケット１４０１はＮＡＴ  ｂｏｘ１２０ｂを経由するが、このときＮＡＴ  ｂｏｘ１２０ｂによって少なくともパケット１４０１の送信元ＩＰアドレスＢがＮＡＴ  ｂｏｘ１２０ｂに付与されたグローバルＩＰアドレスＲＢに変換される。また、パケット１４０１のＵＤＰポート番号ＵＱも変換される場合があるが、いずれにせよＮＡＴ  ｂｏｘ１２０ｂを通過後のパケット１４０１の送信元ＵＤＰポート番号をＲＱとする。
【０１９２】
次に、パケット１４０１はＳＩＰ  Ｐｒｏｘｙ１４０を経由せず、ルータ１２０ａに転送される。ルータ１２０ａはＮＡＴ変換機能を備えていないため、パケット１４０１を単に通信装置１００ａに転送する。
【０１９３】
このようにして、ＮＡＴ変換後の送信元ＩＰアドレスＲＢおよび送信元ＵＤＰポート番号ＲＱを含むパケットが通信装置１００ａに到達する。
【０１９４】
一方、図１５は、ルータ１２０ａがＮＡＴ  ｂｏｘである場合の変換後アドレス検出用パケット１５０１の経路の一例を示す説明図である。
【０１９５】
同図では、ルータ１２０ａはＮＡＴ  ｂｏｘであるため、ステップＳ１２０１の通信開始時には既にパケット１５０１の送信先ＩＰアドレスＸ、送信先ＵＤＰポート番号ＸＰを変換するためのＮＡＴマッピングが設定済みである。
【０１９６】
また、通信装置１００ｂに通知されたＩＰアドレスＸはルータ１２０ａに付与されたグローバルＩＰアドレスＲＡであると同時にルータ１２０ａに設定されたＮＡＴマッピングの変換先ＩＰアドレスであり、通信装置１００ｂに通知されたＵＤＰポート番号ＸＰは、ルータ１２０ａに設定されたＮＡＴマッピングの変換先ＵＤＰポート番号ＲＰである。
【０１９７】
同図の例でも、パケット１５０１はＮＡＴ  ｂｏｘ１２０ｂを経由するが、このときＮＡＴ  ｂｏｘ１２０ｂのアドレス変換機能によって少なくともパケット１５０１の送信元ＩＰアドレスＢがＮＡＴ  ｂｏｘ１２０ｂに付与されたグローバルＩＰアドレスＲＢに変換される。また、パケット１５０１のＵＤＰポート番号ＵＱも変換される場合があるが、いずれにせよＮＡＴ  ｂｏｘ１２０ｂを通過後のパケット１５０１の送信元ＵＤＰポート番号をＲＱとする。
【０１９８】
次に、ルータ１２０ａは、設定されたＮＡＴマッピングを用いて、パケット１５０１の送信先ＩＰアドレスＲＡをＩＰアドレスＡに変換し、送信先ＵＤＰポート番号ＲＰをＵＰに変換して、通信装置１００ａにパケット１５０１を転送する。
【０１９９】
このようにして、ルータ１２０ａがＮＡＴ  ｂｏｘである場合であっても、ＮＡＴ変換後の送信元ＩＰアドレスＲＢおよび送信元ＵＤＰポート番号ＲＱを含むパケットが通信装置１００ａに到達する。
【０２００】
このように、本実施の形態にかかる通信装置では、他の装置がルータまたはＮＡＴ  ｂｏｘのいずれに接続された場合であっても、他の通信装置に対して通信の確立要求を行い、カプセル化される任意のプロトコルによる通信の開始で必要な情報を、相互に送受信することができる。このため、プロトコルの制限を回避しつつ、ＮＡＴ  ｂｏｘの外部の装置から通信の確立要求および通信の開始ができる。
【０２０１】
また、ＮＡＴ  ｂｏｘの内部の装置から通信の確立要求および通信の開始ができる。さらに、一方のＮＡＴ  ｂｏｘに特殊な手段を備える必要もなく、少ないステップ数で実行可能であるという利点がある。
【０２０２】
本実施の形態にかかる通信装置は、ＣＰＵ（Central Processing Unit）などの制御装置と、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などの記憶装置と、ＨＤＤ、ＣＤ（Compact Disc）ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０２０３】
本実施の形態にかかる通信装置で実行される通信プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact Disk Recordable）、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０２０４】
また、本実施の形態にかかる通信装置で実行される通信プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態にかかる通信装置で実行される通信プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０２０５】
また、本実施の形態の通信プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０２０６】
本実施の形態にかかる通信装置で実行される通信プログラムは、上述した各部（送受信部、アドレス取得部、メッセージ生成部、メッセージ処理部、変換後アドレス検出用パケット生成部、変換後アドレス検出用パケット処理部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体から通信プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【産業上の利用可能性】
【０２０７】
以上のように、本発明にかかる通信装置、通信方法および通信プログラムは、ＮＡＴ機能を有するルータに接続されたコンピュータなどの通信装置に適している。
【図面の簡単な説明】
【０２０８】
【図１】本実施の形態にかかる通信装置を含むネットワーク全体の構成を示すブロック図である。
【図２】送信先アドレステーブルのデータ構造の一例を示す説明図である。
【図３】送信元アドレステーブルのデータ構造の一例を示す説明図である。
【図４】カプセル化パラメータテーブルのデータ構造の一例を示す説明図である。
【図５】本実施の形態で送受信されるパケットのヘッダの構成の一例を示した説明図である。
【図６】本実施の形態における通信処理の全体の流れを示すシーケンス図である。
【図７】本実施の形態における通信処理の詳細な流れを示すシーケンス図である。
【図８】本実施の形態における通信処理の詳細な流れを示すシーケンス図である。
【図９】ルータがＮＡＴ  ｂｏｘでない場合の変換後アドレス検出用パケットの経路の一例を示す説明図である。
【図１０】ルータがＮＡＴ  ｂｏｘである場合の変換後アドレス検出用パケットの経路の一例を示す説明図である。
【図１１】本実施の形態における通信処理の全体の流れを示すシーケンス図である。
【図１２】本実施の形態における通信処理の詳細な流れを示すシーケンス図である。
【図１３】本実施の形態における通信処理の詳細な流れを示すシーケンス図である。
【図１４】ルータがＮＡＴ  ｂｏｘでない場合の変換後アドレス検出用パケットの経路の一例を示す説明図である。
【図１５】ルータがＮＡＴ  ｂｏｘである場合の変換後アドレス検出用パケットの経路の一例を示す説明図である。
【符号の説明】
【０２０９】
１００ａ、１００ｂ  通信装置
１０１  送受信部
１０２  アドレス取得部
１０３  メッセージ生成部
１０４  メッセージ処理部
１０５  変換後アドレス検出用パケット生成部
１０６  変換後アドレス検出用パケット処理部
１０７  記憶部
１０７ａ  送信先アドレステーブル
１０７ｂ  送信元アドレステーブル
１０７ｃ  カプセル化パラメータテーブル
１１０ａ、１１０ｂ  ＬＡＮ
１２０ａ  ルータ
１２０ｂ  ＮＡＴ  ｂｏｘ
１３０  インターネット
１４０  ＳＩＰ  Ｐｒｏｘｙ
９０１  パケット
１００１  パケット
１４０１  パケット
１５０１  パケット
【図１】
0004435082.tif 000002
【図２】
0004435082.tif 000003
【図３】
0004435082.tif 000004
【図４】
0004435082.tif 000005
【図５】
0004435082.tif 000006
【図６】
0004435082.tif 000007
【図７】
0004435082.tif 000008
【図８】
0004435082.tif 000009
【図９】
0004435082.tif 000010
【図１０】
0004435082.tif 000011
【図１１】
0004435082.tif 000012
【図１２】
0004435082.tif 000013
【図１３】
0004435082.tif 000014
【図１４】
0004435082.tif 000015
【図１５】
0004435082.tif 000016