(57)【特許請求の範囲】
【請求項１】
Network Address Translation（ＮＡＴ）装置のＬＡＮ側に接続し、前記ＮＡＴ装置のＷＡＮ側に接続された他の前記ＮＡＴ装置のＬＡＮ側に接続された他の通信装置との間でセッションを確立して通信を行う通信装置であって、
前記通信装置と、前記ＮＡＴ装置のＷＡＮ側に接続された中継装置との間の通信遅延時間を取得する取得手段と、
前記他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得手段によって取得された前記通信遅延時間を少なくとも含む要求データを、前記ＮＡＴ装置、前記中継装置、および前記他のＮＡＴ装置を介して前記他の通信装置に対して送信する第一送信手段と、
前記他のＮＡＴ装置、前記中継装置、および前記ＮＡＴ装置を介し、前記他の通信装置から送信された前記要求データを受信する第一受信手段と、
前記第一受信手段によって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記ＮＡＴ装置、前記中継装置、および前記他のＮＡＴ装置を介して前記他の通信装置に対して送信する第二送信手段と、
前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出手段と、
前記第一算出手段によって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第三送信手段と
を備えたことを特徴とする通信装置。
【請求項２】
前記第一算出手段は、
前記第二送信手段によって前記応答データを送信してから、前記第三送信手段によって前記設定データを送信するまでの待機時間を、前記第一時間情報として算出し、
前記第三送信手段は、
前記第二送信手段によって前記応答データを送信してから、前記第一算出手段によって算出された待機時間分待機した後、前記設定データを送信することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを前記通信装置に対して送信するタイミングを特定するための第二時間情報を算出する第二算出手段を備え、
前記第二送信手段は、
前記第二算出手段によって算出された前記第二時間情報を少なくとも含む前記応答データを、前記ＮＡＴ装置、前記中継装置、および前記他のＮＡＴ装置を介して前記他の通信装置に対して送信し、
前記他のＮＡＴ装置、前記中継装置、および前記ＮＡＴ装置を介し、前記他の通信装置から、前記第二時間情報を少なくとも含む前記応答データを受信する第二受信手段と、
前記第二受信手段によって受信された前記第二時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第四送信手段と
を更に備えたことを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記第一送信手段は、
前記他の通信装置に対して前記要求データを送信する時刻を示す第一時刻情報と前記通信遅延時間とを含む前記要求データを、前記他の通信装置に対して送信し、
前記第二算出手段は、
前記第一受信手段によって、前記第一時刻情報および前記通信遅延時間を含む前記要求データを前記他の通信装置から受信した場合に、前記要求データに含まれる前記第一時刻情報および前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを送信する時刻を示す第二時刻情報を、前記第二時間情報として算出し、
前記第二送信手段は、
前記第二算出手段によって、前記第二時間情報として算出された前記第二時刻情報を含む前記応答データを、前記他の通信装置に対して送信し、
前記第二受信手段は、
前記他の通信装置から、前記第二時刻情報を前記第二時間情報として受信し、
前記第四送信手段は、
前記第二受信手段によって受信された前記第二時刻情報によって示される前記時刻に、前記他の通信装置に対して前記設定データを送信することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記取得手段は、
前記ＮＡＴ装置を介して前記中継装置に往路データを送信してから、前記中継装置が前記往路データに応じて返信する復路データを、前記ＮＡＴ装置を介して受信するまでの時間を複数回計測し、計測した時間を２分した値の平均値を、前記通信遅延時間として取得することを特徴とする請求項１から４のいずれかに記載の通信装置。
【請求項６】
前記第一算出手段は、
前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得した前記通信遅延時間とを加算することによって、前記待機時間を算出することを特徴とする請求項２に記載の通信装置。
【請求項７】
Network Address Translation（ＮＡＴ）装置のＬＡＮ側に接続する通信装置と、前記ＮＡＴ装置のＷＡＮ側に接続された中継装置との間の通信遅延時間を、前記通信装置が取得する取得ステップと、
他のＮＡＴ装置のＬＡＮ側に接続する他の通信装置が、前記通信装置との間でセッションを確立させることを要求するデータであって、前記他のＮＡＴ装置のＷＡＮ側に接続する前記中継装置と前記他の通信装置との間の通信遅延時間を少なくとも含む要求データが、前記他のＮＡＴ装置、前記中継装置、および前記ＮＡＴ装置を介して、前記他の通信装置から前記通信装置に対して送信された場合に、前記通信装置が前記要求データを受信する第一受信ステップと、
前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記ＮＡＴ装置、前記中継装置、および前記他のＮＡＴ装置を介して、前記通信装置が前記他の通信装置に対して送信する第一送信ステップと、
前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記通信装置が前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、
前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記通信装置が前記他の通信装置に対して前記設定データを送信する第二送信ステップと
を備えたことを特徴とする通信方法。
【請求項８】
Network Address Translation（ＮＡＴ）装置のＬＡＮ側に接続する通信装置と、前記ＮＡＴ装置のＷＡＮ側に接続された中継装置との間の通信遅延時間を取得する取得ステップと、
他のＮＡＴ装置のＬＡＮ側に接続する他の通信装置が、前記通信装置との間でセッションを確立させることを要求するデータであって、前記他のＮＡＴ装置のＷＡＮ側に接続する前記中継装置と前記他の通信装置との間の通信遅延時間を少なくとも含む要求データが、前記他のＮＡＴ装置、前記中継装置、および前記ＮＡＴ装置を介して、前記他の通信装置から前記通信装置に対して送信された場合に、前記要求データを受信する第一受信ステップと、
前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記ＮＡＴ装置、前記中継装置、および前記他のＮＡＴ装置を介して、前記他の通信装置に対して送信する第一送信ステップと、
前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、
前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第二送信ステップと
を通信装置のコンピュータに実行させるための通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Network Address Translation（ＮＡＴ）装置のＬＡＮ側に接続し、他のＮＡＴ装置のＬＡＮ側に接続する他の通信装置と通信を行う通信装置、通信方法、および通信プログラムに関する。
【背景技術】
【０００２】
Stateful Packet Inspection（ＳＰＩ）と呼ばれる方法によってパケットをフィルタリングするNetwork Address Translation（ＮＡＴ）装置が知られている。ＳＰＩを備えたＮＡＴ装置は、ＬＡＮ側からＷＡＮ側に向けてデータを送信した場合、送信履歴をセッションログとして記憶する。ＮＡＴ装置は、ＷＡＮ側からＬＡＮ側に向かうデータを受信した場合、受信したデータがセッションログと矛盾しないかを判断する。例えばＮＡＴ装置は、ＷＡＮ側からＬＡＮ側に向かうデータを受信した場合、受信したデータの送信元アドレスを宛先アドレスとするデータの送信履歴が、セッションログとして記憶されているかを確認する。該当する送信履歴がセッションログとして記憶されていない場合、ＷＡＮ側に割り当てたアドレスを使用してＬＡＮ側からＷＡＮ側にデータが送信される前に、該アドレスに対するデータをＷＡＮ側から受信したことになる。このような場合、ＮＡＴ装置は、ＷＡＮ側から不正にアクセスされたと判断し、割り当てたアドレスを無効化する。これによって、ＬＡＮ側に接続された通信装置を不正アクセスから保護している。
【０００３】
一方で、ＳＰＩを備えたＮＡＴ装置のＬＡＮ側に接続する通信装置と、他のＮＡＴ装置のＬＡＮ側に接続する他の通信装置との間で通信が行われる場合、ＮＡＴ装置に割り当てられたアドレスがＳＰＩによって無効化され、通信ができなくなる場合がある。従って、ＳＰＩによって通信装置間の通信が妨げられることを抑止するための様々な技術が提案されている（例えば特許文献１参照）。
【０００４】
ＮＡＴ装置のＬＡＮ側に接続する通信装置が、他のＮＡＴ装置のＬＡＮ側に接続する他の通信装置との間で、Session Initiation Protocol（ＳＩＰ）に基づいた通信を行い、Peer to Peer（Ｐ２Ｐ）通信を開始する場合、ＮＡＴ越えの問題を解消するために、Interactive Connectivity Establishment（ＩＣＥ）という技術が利用される場合がある。この技術では、通信装置間でアドレス情報を交換する通信が反復されることによって、Ｐ２Ｐ通信を行う場合に使用可能なアドレス情報が通信装置において特定される。通信装置は、特定したアドレス情報を使用することで、他の通信装置との間にＮＡＴ装置が介在する場合でも、Ｐ２Ｐ通信を開始することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−３３２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＳＰＩを備えたＮＡＴ装置のＬＡＮ側に接続する通信装置と、他のＮＡＴ装置のＬＡＮ側に接続する他の通信装置との間で、Ｐ２Ｐ通信を開始しようとする場合を想定する。この場合、通信装置間でＩＣＥに基づいた通信が行われることによって、ＮＡＴ装置に割り当てられたアドレスがＳＰＩによって無効化される場合がある。ＩＣＥでは、通信装置間でアドレス情報を交換する通信が反復されるため、この通信の過程で、ＮＡＴ装置が通信装置からのデータをＬＡＮ側から受信してＷＡＮ側に送信する前に、他の通信装置からのデータをＷＡＮ側から受信する場合があるためである。このような場合、通信装置間でＰ２Ｐ通信を開始することができないという問題点がある。
【０００７】
本発明の目的は、ＳＰＩを備えたＮＡＴ装置を介して、他の通信装置とＰ２Ｐ通信を適切に行うことが可能な通信装置、通信方法、および通信プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明の第一態様に係る通信装置は、Network Address Translation（ＮＡＴ）装置のＬＡＮ側に接続し、前記ＮＡＴ装置のＷＡＮ側に接続された他の前記ＮＡＴ装置のＬＡＮ側に接続された他の通信装置との間でセッションを確立して通信を行う通信装置であって、前記通信装置と、前記ＮＡＴ装置のＷＡＮ側に接続された中継装置との間の通信遅延時間を取得する取得手段と、前記他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得手段によって取得された前記通信遅延時間を少なくとも含む要求データを、前記ＮＡＴ装置、前記中継装置、および前記他のＮＡＴ装置を介して前記他の通信装置に対して送信する第一送信手段と、前記他のＮＡＴ装置、前記中継装置、および前記ＮＡＴ装置を介し、前記他の通信装置から送信された前記要求データを受信する第一受信手段と、前記第一受信手段によって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記ＮＡＴ装置、前記中継装置、および前記他のＮＡＴ装置を介して前記他の通信装置に対して送信する第二送信手段と、前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出手段と、前記第一算出手段によって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第三送信手段とを備えている。
【０００９】
第一態様によれば、通信装置は、他の通信装置から設定データが送信されるタイミングと、通信装置が他の通信装置に対して設定データを送信するタイミングとが近似するように、設定データの送信タイミングを設定することができる。通信装置は、通信装置および他の通信装置と中継装置との間の通信遅延時間に基づき、他の通信装置に対して送信した応答データの通信遅延時間を算出することによって、他の通信装置が設定データを送信するタイミングを推測することができるためである。従って通信装置は、Stateful Packet Inspection（ＳＰＩ）を備えたＮＡＴ装置が他の通信装置との間に介在する場合であっても、設定データの通信によってＮＡＴ装置に割り当てられたアドレスが無効化されることを抑止することができる。これによって通信装置は、他の通信装置との間にＳＰＩを備えたＮＡＴ装置が介在する場合でも、他の通信装置との間にセッションを確立し、通信を適切に行うことが可能となる。
【００１０】
第一態様において、前記第一算出手段は、前記第二送信手段によって前記応答データを送信してから、前記第三送信手段によって前記設定データを送信するまでの待機時間を、第一時間情報として算出してもよい。前記第三送信手段は、前記第二送信手段によって前記応答データを送信してから、前記第一算出手段によって算出された待機時間分待機した後、前記設定データを送信してもよい。これによって通信装置は、応答データを送信してからの経過時間を監視することによって、他の通信装置に対して設定データを送信するタイミングを容易に判断することができる。
【００１１】
第一態様において、前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを前記通信装置に対して送信するタイミングを特定するための第二時間情報を算出する第二算出手段を備えてもよい。前記第二送信手段は、前記第二算出手段によって算出された前記第二時間情報を少なくとも含む前記応答データを、前記ＮＡＴ装置、前記中継装置、および前記他のＮＡＴ装置を介して前記他の通信装置に対して送信してもよい。前記他のＮＡＴ装置、前記中継装置、および前記ＮＡＴ装置を介し、前記他の通信装置から、前記第二時間情報を少なくとも含む前記応答データを受信する第二受信手段をそなえていてもよい。前記第二受信手段によって受信された前記第二時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第四送信手段を備えていてもよい。通信装置は、他の通信装置が応答データに応じて送信する設定データの送信タイミングを制御することができる。従って、通信装置が設定データを送信するタイミングと、他の通信装置が設定データを送信するタイミングとを、更に良好に近似させることができる。従って通信装置は、設定データの通信によってＮＡＴ装置に割り当てられたアドレスがＳＰＩによって無効化されることを、さらに効果的に抑止することができる。
【００１２】
第一態様において、前記第一送信手段は、前記他の通信装置に対して前記要求データを送信する時刻を示す第一時刻情報と前記通信遅延時間とを含む前記要求データを、前記他の通信装置に対して送信してもよい。前記第二算出手段は、前記第一受信手段によって、前記第一時刻情報および前記通信遅延時間を含む前記要求データを前記他の通信装置から受信した場合に、前記要求データに含まれる前記第一時刻情報および前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを送信する時刻を示す第二時刻情報を、前記第二時間情報として算出してもよい。前記第二送信手段は、前記第二算出手段によって、前記第二時間情報として算出された前記第二時刻情報を含む前記応答データを、前記他の通信装置に対して送信してもよい。前記第二受信手段は、前記他の通信装置から、前記第二時刻情報を前記第二時間情報として受信してもよい。前記第四送信手段は、前記第二受信手段によって受信された前記第二時刻情報によって示される前記時刻に、前記他の通信装置に対して前記設定データを送信してもよい。通信装置は、通知された時刻を基準にして設定データを送信するタイミングを特定することができる。従って、ＮＡＴ装置間の伝送路の通信状態が変化し、要求データおよび応答データの通信時における実際の通信遅延時間が、取得された通信遅延時間と相違する場合でも、通信装置から送信される設定データの送信タイミングと、他の通信装置から送信される設定データの送信タイミングとを良好に近似させることができる。
【００１３】
第一態様において、前記取得手段は、前記ＮＡＴ装置を介して前記中継装置に往路データを送信してから、前記中継装置が前記往路データに応じて返信する復路データを、前記ＮＡＴ装置を介して受信するまでの時間を複数回計測し、計測した時間を２分した値の平均値を、前記通信遅延時間として取得してもよい。通信装置は、中継装置との間の通信遅延時間を、より正確に且つ容易に取得することができる。
【００１４】
第一態様において、前記第一算出手段は、前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得した前記通信遅延時間とを加算することによって、前記待機時間を算出してもよい。これによって通信装置は、待機時間を容易に算出することができる。
【００１５】
本発明の第二態様に係る通信方法は、Network Address Translation（ＮＡＴ）装置のＬＡＮ側に接続する通信装置と、前記ＮＡＴ装置のＷＡＮ側に接続された中継装置との間の通信遅延時間を、前記通信装置が取得する取得ステップと、他のＮＡＴ装置のＬＡＮ側に接続する他の通信装置が、前記通信装置との間でセッションを確立させることを要求するデータであって、前記他のＮＡＴ装置のＷＡＮ側に接続する前記中継装置と前記他の通信装置との間の通信遅延時間を少なくとも含む要求データが、前記他のＮＡＴ装置、前記中継装置、および前記ＮＡＴ装置を介して、前記他の通信装置から前記通信装置に対して送信された場合に、前記通信装置が前記要求データを受信する第一受信ステップと、前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記ＮＡＴ装置、前記中継装置、および前記他のＮＡＴ装置を介して、前記通信装置が前記他の通信装置に対して送信する第一送信ステップと、前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記通信装置が前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記通信装置が前記他の通信装置に対して前記設定データを送信する第二送信ステップとを備えている。第二態様によれば、第一態様と同様の効果を奏することができる。
【００１６】
本発明の第三態様に係る通信プログラムは、Network Address Translation（ＮＡＴ）装置のＬＡＮ側に接続する通信装置と、前記ＮＡＴ装置のＷＡＮ側に接続された中継装置との間の通信遅延時間を取得する取得ステップと、他のＮＡＴ装置のＬＡＮ側に接続する他の通信装置が、前記通信装置との間でセッションを確立させることを要求するデータであって、前記他のＮＡＴ装置のＷＡＮ側に接続する前記中継装置と前記他の通信装置との間の通信遅延時間を少なくとも含む要求データが、前記他のＮＡＴ装置、前記中継装置、および前記ＮＡＴ装置を介して、前記他の通信装置から前記通信装置に対して送信された場合に、前記要求データを受信する第一受信ステップと、前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記ＮＡＴ装置、前記中継装置、および前記他のＮＡＴ装置を介して、前記他の通信装置に対して送信する第一送信ステップと、前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第二送信ステップとを通信装置のコンピュータに実行させる。第三態様によれば、第一態様と同様の効果を奏することができる。
【図面の簡単な説明】
【００１７】
【図１】通信システム１の概要、および通信装置１３の電気的構成を示す図である。
【図２】ＳＰＩを備えないＮＡＴ装置１０が使用された場合の通信の様子を示すシーケンス図である。
【図３】ＳＰＩを備えたＮＡＴ装置１０が使用された場合の通信の様子を示すシーケンス図である。
【図４】ＳＰＩを備えたＮＡＴ装置１０が使用された場合の通信の様子を示すシーケンス図である。
【図５】メイン処理を示すフローチャートである。
【図６】発呼側処理を示すフローチャートである。
【図７】着呼側処理を示すフローチャートである。
【図８】ＳＰＩを備えたＮＡＴ装置１０が使用された場合の通信の様子を示すシーケンス図出ある。
【図９】変形例における発呼側処理を示すフローチャートである。
【図１０】変形例における着呼側処理を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の一実施形態について、図面を参照して説明する。これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている装置の構成、各種処理のフローチャート等は、それのみに限定する趣旨ではなく、単なる説明例である。
【００１９】
図１を参照し、通信システム１の概要について説明する。通信システム１は、Network Address Translation（ＮＡＴ）装置１１、１２、通信装置１４、１５、および中継装置１７を備えている。通信装置１４は、ＮＡＴ装置１１のＬＡＮ側に接続している。通信装置１５は、ＮＡＴ装置１２のＬＡＮ側に接続している。ＮＡＴ装置１１、１２のＷＡＮ側は、ネットワーク網１８に接続している。中継装置１７は、ネットワーク網１８に接続している。中継装置１７およびＮＡＴ装置１１、１２は、ネットワーク網１８を介して通信を行うことができる。以下、ＮＡＴ装置１１、１２を区別しない場合または総称する場合、これらをＮＡＴ装置１０という。通信装置１４、１５を区別しない場合または総称する場合、これらを通信装置１３という。
【００２０】
中継装置１７は、Session Initiation Protocol（ＳＩＰ）を制御するＳＩＰサーバである。通信装置１３は、ＰＣやＩＰ電話等の通信端末である。通信装置１３は、中継装置１７を介して他の通信装置１３とＳＩＰに基づいた通信を行う。これによって通信装置１３は、他の通信装置１３との間でセッションを確立させ、Peer to Peer（Ｐ２Ｐ）通信を行う。ＮＡＴ装置１０は、ＬＡＮ側に接続された通信装置１３から、ＷＡＮ側に向かう方向のデータを受信した場合、ＷＡＮ側に新たなアドレス情報を割り当てる。ＷＡＮ側に割り当てるアドレス情報は、ネットワーク網１８に接続した図示外のSession Traversal Utilities for NAT（ＳＴＵＮ）サーバと通信を行うことによって、ＳＴＵＮサーバから取得される。ＮＡＴ装置１０は、受信したデータのアドレス情報を、ＷＡＮ側に割り当てたアドレス情報に変換し、ＷＡＮ側に転送する。またＮＡＴ装置１０は、ＷＡＮ側に割り当てたアドレス情報宛にデータを受信した場合、受信したデータのアドレス情報を、ＬＡＮ側に接続された通信装置１３のアドレス情報に変換し、ＷＡＮ側に転送する。
【００２１】
通信装置１３の電気的構成について説明する。通信装置１３は、通信装置１３の制御を司るＣＰＵ２１を備えている。ＣＰＵ２１は、ＲＯＭ２２、ＲＡＭ２３、ハードディスクドライブ（以下、ＨＤＤという。）２４、通信インタフェース（以下、通信Ｉ／Ｆという。）２５、入力部２６、および出力部２７と電気的に接続している。ＲＯＭ２２には、ブートプログラム、ＢＩＯＳ等が記憶される。ＲＡＭ２３には、タイマやカウンタ、一時的なデータが記憶される。ＨＤＤ２４には、ＣＰＵ２１の制御プログラムやＯＳが記憶される。通信Ｉ／Ｆ２５は、ＮＡＴ装置１０と通信を行うためのインタフェースである。入力部２６は、通信装置１３に対して情報の入力を行うキーボード、マウス、マイク等である。出力部２７は、通信装置１３のユーザに対して情報を出力するディスプレイ、スピーカ等である。
【００２２】
通信装置１４、１５間でセッションを確立させてＰ２Ｐ通信を行う場合、通信装置１４、１５間にＮＡＴ装置１１、１２が介在しているため、いわゆるＮＡＴ越えの問題が発生し得る。通信装置１４は、通信装置１５とＰ２Ｐ通信を行う場合、ＮＡＴ装置１２のＷＡＮ側に割り当てられたアドレス情報宛にデータを送信しなければならないため、事前にこのアドレス情報を特定しておく必要がある。同様に通信装置１５は、通信装置１４とＰ２Ｐ通信を行う場合、ＮＡＴ装置１１のＷＡＮ側に割り当てられたアドレス情報を事前に特定しておく必要がある。
【００２３】
これに対して通信装置１４、１５では、Interactive Connectivity Establishment（ＩＣＥ）という技術を利用することによって、上述したＮＡＴ越えの問題を解消している。図２を参照し、通信装置１４、１５間でＰ２Ｐ通信が可能となるまでの通信の手順について説明する。なおＮＡＴ装置１１は、ＷＡＮ側に割り当てるアドレス情報３１、３３（後述）を予めＳＴＵＮサーバから取得しているものとする。同様にＮＡＴ装置１２は、ＷＡＮ側に割り当てるアドレス情報３２、３４（後述）を予めＳＴＵＮサーバから取得しているものとする。はじめに通信装置１４は、中継装置１７に通信装置１４を登録するために、ＮＡＴ装置１１を介して中継装置１７にRegisterデータを送信する（Ｓ１２１）。ＮＡＴ装置１１は、ＬＡＮ側の通信装置１４からResisterデータを受信した場合、ＷＡＮ側の装置と通信を行うためのアドレス情報３１をＷＡＮ側に割り当てる。ＮＡＴ装置１１は、受信したRegisterデータのアドレス情報を、ＷＡＮ側に割り当てられたアドレス情報３１に変換し、中継装置１７に対して中継する（Ｓ１２３）。同様に通信装置１５は、中継装置１７に通信装置１５を登録するために、ＮＡＴ装置１２を介して中継装置１７にRegisterデータを送信する（Ｓ１２５）。ＮＡＴ装置１２は、ＬＡＮ側の通信装置１５からResisterデータを受信した場合、ＷＡＮ側の装置と通信を行うためのアドレス情報３２をＷＡＮ側に割り当てる。ＮＡＴ装置１２は、受信したRegisterデータのアドレス情報を、ＷＡＮ側に割り当てられたアドレス情報３２に変換し、中継装置１７に対して中継する（Ｓ１２７）。中継装置１７は、通信装置１４、１５からRegisterデータを受信し、通信装置１４、１５を登録する。
【００２４】
通信装置１４、１５は、ＳＩＰに基づいた通信を開始する。通信装置１４は、セッションの確立を要求するINVITEデータを、ＮＡＴ装置１１を介して中継装置１７に対して送信する（Ｓ１３１）。なおINVITEデータには、ＮＡＴ装置１１のＷＡＮ側に割り当てられるアドレス情報であってＮＡＴ装置１１とＮＡＴ装置１２とが通信を行う場合に使用されるアドレス情報３３が格納される。ＮＡＴ装置１１は、ＬＡＮ側から受信したINVITEデータのアドレス情報を、ＷＡＮ側に割り当てられたアドレス情報３１に変換し、ＷＡＮ側の中継装置１７に対して中継する（Ｓ１３３）。中継装置１７は、ＮＡＴ装置１１から受信したINVITEデータを、ＮＡＴ装置１２のＷＡＮ側に割り当てられたアドレス情報３２宛に中継する（Ｓ１３５）。ＮＡＴ装置１２は、ＷＡＮ側から受信したINVITEデータのアドレス情報３２を、通信装置１５のアドレス情報に変換し、ＬＡＮ側に接続された通信装置１５に対して中継する（Ｓ１３７）。通信装置１５はINVITEデータを受信する。通信装置１５は、INVITEデータに格納されたアドレス情報３３を、通信装置１４との通信時においてＮＡＴ装置１１のＷＡＮ側に割り当てられ使用されるアドレス情報３３として取得する。
【００２５】
通信装置１５は、受信したINVITEデータに応じ、ＮＡＴ装置１２を介して中継装置１７に対して、200OKデータを送信する（Ｓ１４１）。なお200OKデータには、ＮＡＴ装置１２のＷＡＮ側に割り当てられるアドレス情報であってＮＡＴ装置１２とＮＡＴ装置１１とが通信を行う場合に使用されるアドレス情報３４が格納される。ＮＡＴ装置１２は、ＬＡＮ側から受信した200OKデータのアドレス情報を、ＷＡＮ側に割り当てられたアドレス情報３２に変換し、ＷＡＮ側の中継装置１７に対して中継する（Ｓ１４３）。中継装置１７は、ＮＡＴ装置１２から受信した200OKデータを、ＮＡＴ装置１１のＷＡＮ側に割り当てられたアドレス情報３１宛に中継する（Ｓ１４５）。ＮＡＴ装置１１は、ＷＡＮ側から受信した200OKデータのアドレス情報３１を、通信装置１４のアドレス情報に変換し、ＬＡＮ側に接続された通信装置１４に対して中継する（Ｓ１４７）。通信装置１４は200OKデータを受信する。通信装置１４は、200OKデータに格納されたアドレス情報３４を、通信装置１５との通信時においてＮＡＴ装置１２のＷＡＮ側に割り当てられ使用されるアドレス情報３４として取得する。
【００２６】
続いて通信装置１４、１５は、ＩＣＥによる通信を開始する。通信装置１５は、ＮＡＴ装置１１のＷＡＮ側に割り当てられるアドレス情報３３宛てのICE Checkデータを、ＮＡＴ装置１２に送信する（Ｓ１５１）。ICE Checkデータは、ＮＡＴ装置１１、１２のＷＡＮ側に割り当てられたアドレス情報３３、３４が通信装置１４、１５間で通知された後、通知されたアドレス情報を用いて実際に通信端末１４、１５間でＰ２Ｐ通信を開始することが可能であるかを確認するためのデータである。ＮＡＴ装置１２は、通信装置１５からICE Checkデータを受信した場合、受信したICE Checkデータのアドレス情報を、ＷＡＮ側に割り当てられたアドレス情報３４に変換し、ＮＡＴ装置１１に対して中継する（Ｓ１５３）。ＮＡＴ装置１１は、ＮＡＴ装置１２から送信されたICE Checkデータを受信し、ＬＡＮ側の通信装置１４に対して中継する（Ｓ１５５）。通信装置１４はICE Checkデータを受信する。
【００２７】
通信装置１４は、受信したICE Checkに応じ、ＮＡＴ装置１１を介してＮＡＴ装置１２に対してResponseデータを送信する（Ｓ１６１、Ｓ１６３）。Responseデータは、ＮＡＴ装置１２のＷＡＮ側に割り当てられたアドレス情報３４宛に送信される。ＮＡＴ装置１２は、ＮＡＴ装置１１から受信したResponseデータを、ＬＡＮ側の通信装置１５に対して中継する（Ｓ１６５）。通信装置１５は、Responseデータを受信する。
【００２８】
通信装置１４は、Ｓ１６１でResponseデータを送信した後、ＮＡＴ装置１２宛のICE Checkデータを、ＮＡＴ装置１１に対して送信する（Ｓ１７１）。ＮＡＴ装置１１は、受信したICE Checkデータのアドレス情報を、ＷＡＮ側に割り当てられたアドレス情報３３に変換し、ＮＡＴ装置１２のＷＡＮ側に割り当てられたアドレス情報３４宛に送信する（Ｓ１７３）。ＮＡＴ装置１２は、ＮＡＴ装置１１から受信したICE Checkデータを、ＬＡＮ側の通信装置１５に対して中継する（Ｓ１７５）。通信装置１５はICE Checkデータを受信する。通信装置１５は、受信したICE Checkに応じ、ＮＡＴ装置１２を介してＮＡＴ装置１１に対してResponseデータを送信する（Ｓ１８１、Ｓ１８３）。ＮＡＴ装置１１は、ＮＡＴ装置１２から受信したResponseデータを、ＬＡＮ側の通信装置１４に対して中継する（Ｓ１８５）。通信装置１４はResponseデータを受信する。
【００２９】
ＩＣＥによる通信が上述のようにして行われることによって、通信装置１４は、ＮＡＴ装置１２のＷＡＮ側に割り当てられたアドレス情報として通知されたアドレス情報３４を使用し、通信装置１５とＰ２Ｐ通信を行うことが可能であると判断する。同様に通信装置１５は、ＮＡＴ装置１１のＷＡＮ側に割り当てられたアドレス情報として通知されたアドレス情報３３を使用し、通信装置１４とＰ２Ｐ通信を行うことが可能であると判断する。これによって通信装置１４、１５は、通知されたアドレス情報を使用することによって、中継装置１７を介することなくＰ２Ｐ通信を行うことが可能となる（Ｓ１９１）。
【００３０】
ＮＡＴ装置１０には、Stateful Packet Inspection（ＳＰＩ）と呼ばれる方法によって、パケットをフィルタリングする機能を備えているものがある。ＳＰＩを備えたＮＡＴ装置１０における動作の概要は次の通りである。ＮＡＴ装置１０は、ＬＡＮ側の通信装置１３からデータを受信し、ＷＡＮ側に向けてデータを中継する場合、データを送信した通信装置１３のアドレス情報（以下、送信元アドレス情報という。）、および、データの宛先のアドレス情報（以下、宛先アドレス情報という。）を送信履歴としてＨＤＤ２４に記憶する。
【００３１】
ＮＡＴ装置１０が、ＬＡＮ側の通信装置１３に対するデータをＷＡＮ側から受信したとする。ＮＡＴ装置１０は、受信したデータの送信元のアドレス情報が宛先アドレス情報として送信履歴に記憶されており、且つ、受信したデータの宛先のアドレス情報が送信元アドレス情報として送信履歴に記憶されているかを判断する。該当するアドレス情報が送信履歴に記憶されている場合、ＮＡＴ装置１０は従来通り、ＬＡＮ側の通信装置１３に対して受信したデータを中継する。一方、該当する送信履歴が記憶されていない場合、ＷＡＮ側に割り当てたアドレスを使用してＬＡＮ側からＷＡＮ側にデータが送信されない状態で、該アドレスに対するデータをＷＡＮ側から受信したことになる。このような場合、ＮＡＴ装置１０は、ＷＡＮ側から不正にアクセスされたと判断し、割り当てたアドレス情報を無効化する。これによって、ＬＡＮ側に接続された通信装置１３を不正アクセスから保護する。
【００３２】
図３を参照し、具体例を挙げて詳細に説明する。なお、図２で説明した通信の手順と同一部分については、同一符号を付し、説明を簡略化している。通信装置１４、１５から中継装置１７に対してRegisterデータが送信されることによって（Ｓ１２１、Ｓ１２３、Ｓ１２５、Ｓ１２７）、中継装置１７に通信装置１４、１５が登録される。また、ＮＡＴ装置１１のＷＡＮ側にアドレス情報３１が割り当てられ、ＮＡＴ装置１２のＷＡＮ側にアドレス情報３２が割り当てられる。またＮＡＴ装置１１は、ＬＡＮ側から受信したRegisterデータを送信した通信装置１４のアドレス情報を、送信元アドレス情報として送信履歴に記憶する。またＮＡＴ装置１１は、Registerデータの宛先である中継装置１７のアドレス情報を、宛先アドレス情報として送信履歴に記憶する。同様にＮＡＴ装置１２は、通信装置１５のアドレス情報を送信元アドレス情報とし、中継装置１７のアドレス情報を宛先アドレス情報として、送信履歴に記憶する。
【００３３】
通信装置１４、１５は、ＳＩＰに基づいた通信を開始する。通信装置１４は、中継装置１７宛のINVITEデータを、ＮＡＴ装置１１に対して送信する（Ｓ１３１）。ＮＡＴ装置１１は、受信したINVITEデータを送信した通信装置１４のアドレス情報を、送信元アドレス情報として送信履歴に記憶する。またＮＡＴ装置１１は、INVITEデータの宛先である中継装置１７のアドレス情報を、宛先アドレス情報として送信履歴に記憶する。ＮＡＴ装置１１は、INVITEデータを中継装置１７に対して中継する（Ｓ１３３）。中継装置１７は、INVITEデータをＮＡＴ装置１２に対して中継する（Ｓ１３５）。
【００３４】
ＮＡＴ装置１２は、中継装置１７からINVITEデータを受信する。ＮＡＴ装置１２は、送信履歴を参照する。INVITEデータを送信した中継装置１７のアドレス情報は、Ｓ１２５で通信装置１５からRegisterデータを受信した時点で、宛先アドレス情報として送信履歴に記憶されている。またINVITEデータの宛先である通信装置１５のアドレス情報は、Ｓ１２５で通信装置１５からRegisterデータを受信した時点で、送信元アドレス情報として送信履歴に記憶されている。従ってＮＡＴ装置１２は、中継装置１７から受信したINVITEデータをＬＡＮ側の通信装置１５に対して中継する（Ｓ１３７）。通信装置１５はINVITEデータを受信する。
【００３５】
通信装置１５は、受信したINVITEデータに応じ、200OKデータをＮＡＴ装置１２に対して送信する（Ｓ１４１）。ＮＡＴ装置１２は、受信した200OKデータを送信した通信装置１５のアドレス情報を、送信元アドレス情報として送信履歴に記憶する。またＮＡＴ装置１２は、200OKデータの宛先である中継装置１７のアドレス情報を、宛先アドレス情報として送信履歴に記憶する。ＮＡＴ装置１２は、200OKデータを中継装置１７に対して中継する（Ｓ１４３）。中継装置１７は、200OKデータをＮＡＴ装置１１に対して中継する（Ｓ１４５）。
【００３６】
ＮＡＴ装置１１は、中継装置１７から200OKデータを受信する。ＮＡＴ装置１１は、送信履歴を参照する。200OKデータを送信した中継装置１７のアドレス情報は、Ｓ１３１で通信装置１４からINVITEデータを受信した時点で、宛先アドレス情報として送信履歴に記憶されている。また200OKデータの宛先である通信装置１４のアドレス情報は、Ｓ１３１で通信装置１４からINVITEデータを受信した時点で、送信元アドレス情報として送信履歴に記憶されている。従ってＮＡＴ装置１１は、中継装置１７から受信した200OKデータをＬＡＮ側の通信装置１４に対して中継する（Ｓ１４７）。通信装置１４は200OKデータを受信する。
【００３７】
通信装置１４、１５は、ＩＣＥによる通信を開始する。通信装置１５は、ＮＡＴ装置１２を介してＮＡＴ装置１１に対してICE Checkデータを送信する（Ｓ１５１）。ＮＡＴ装置１２は、通信装置１５からICE Checkデータを受信する。送信履歴として、送信元アドレス情報（通信装置１５のアドレス情報）、および、宛先アドレス情報（ＮＡＴ装置１１のアドレス情報）が記憶される。ＮＡＴ装置１２は、ICE CheckデータをＮＡＴ装置１１に対して中継する（Ｓ１５３）。
【００３８】
ＮＡＴ装置１１は、ＮＡＴ装置１２から送信されたICE Checkデータを受信する。ＮＡＴ装置１１は、送信履歴を参照する。ここで送信履歴として、Ｓ１３１で通信装置１４からINVITEデータを受信した時点で、送信元アドレス情報（通信装置１４のアドレス情報）、および、宛先アドレス情報（中継装置１７のアドレス情報）が記憶されている。従って、ICE Checkデータを送信したＮＡＴ装置１２のアドレス情報は、宛先情報として送信履歴に記憶されていない。従ってＮＡＴ装置１１は、受信したICE Checkを通信装置１４に対して中継せず、ＮＡＴ装置１２との通信時に使用するためにＷＡＮ側に割り当てたアドレス情報３３を無効化する。
【００３９】
通信装置１５は、Ｓ１５１で送信したICE Checkに対応するResponseを受信できないため、ＮＡＴ装置１２を介してＮＡＴ装置１１に対して、ICE Checkデータを再送する（Ｓ２０１、Ｓ２０３）。ＮＡＴ装置１１は、Ｓ１５３でICE Checkデータを受信した段階で、ＷＡＮ側に割り当てたアドレス情報３３を無効化しているため、通信装置１５から再送されたICE Checkデータを受信することができない。
【００４０】
また通信装置１４は、ＮＡＴ装置１１に対して、ＮＡＴ装置１２宛のICE Checkデータを送信する（Ｓ２０５）。ＮＡＴ装置１１は、通信装置１４からICE Checkデータを受信する。ＮＡＴ装置１１は、Ｓ１５３でICE Checkデータを受信した段階で、ＷＡＮ側に割り当てたアドレス情報３３を無効化している。従ってＮＡＴ装置１１は、通信装置１４から受信したICE CheckデータをＮＡＴ装置１２に対して中継することができない。また、通信装置１４からICE Checkデータが再送された場合（Ｓ２０７）も同様に、ＮＡＴ装置１１はICE CheckデータをＮＡＴ装置１２に中継することができない。
【００４１】
このように、通信装置１３間に介在するＮＡＴ装置１０がＳＰＩの機能を備えていると、通信装置１３がＳＩＰおよびＩＣＥを利用してＰ２Ｐ通信を開始させようとした場合に、ＮＡＴ装置１０のＷＡＮ側に割り当てられたアドレス情報が無効化されてしまう場合がある。この場合通信装置１３は、他の通信装置１３との間でＰ２Ｐ通信を開始させることができなくなる。これに対して本発明では、ＮＡＴ装置１０のＷＡＮ側に割り当てられたアドレス情報が無効化されることを抑止するために、通信装置１３はICE Checkデータを送信するタイミングを制御する。これによって、ＮＡＴ装置１０がＳＰＩの機能を備えている場合でも、通信装置１３間でＰ２Ｐ通信を開始することができるようになる。詳細は以下のとおりである。
【００４２】
図４を参照し、通信装置１３においてICE Checkデータを送信するタイミングが制御された場合の通信の手順について説明する。なお、図２、３で説明した通信の手順と同一部分については、同一符号を付し、説明を簡略化している。
【００４３】
通信装置１３は、ＳＩＰに基づく通信を開始する前に、通信装置１３と中継装置１７との間の通信遅延時間を特定する。通信遅延時間は、通信装置１３からデータが送信されてから、中継装置１７に到達するまでに要する時間であり、同様に、中継装置１７からデータが送信されてから、通信装置１３に到達するまでに要する時間である。通信装置１３から中継装置１７に向かう方向のデータに対応する通信遅延時間と、中継装置１７から通信装置１３に向かう方向のデータに対応する通信遅延時間とは、厳密に一致しない場合もある。しかしながら通信装置１３は、双方が略同一であるとみなし、双方を同様に扱う。通信遅延時間の計測方法については後述する。なお以下、通信装置１４によって特定された通信遅延時間を、通信遅延時間Ａといい、通信装置１５によって特定された通信遅延時間を、通信遅延時間Ｂという。
【００４４】
通信装置１４は、上述のようにして特定した通信時間ＡをINVITEデータに格納し、ＮＡＴ装置１１を介して中継装置１７に対して送信する（Ｓ１３１、Ｓ１３３）。中継装置１７は、INVITEデータをＮＡＴ装置１２に対して中継する（Ｓ１３５）。ＮＡＴ装置１２は、INVITEデータを通信装置１５に対して中継する（Ｓ１３７）。通信装置１５は、INVITEデータに応じ、ＮＡＴ装置１２を介して中継装置１７に対して200OKデータを送信する（Ｓ１４１、Ｓ１４３）。中継装置１７は、200OKデータをＮＡＴ装置１１に対して中継する（Ｓ１４５）。ＮＡＴ装置１１は、200OKデータを通信装置１４に対して中継する（Ｓ１４７）。通信装置１４は、200OKデータを受信する。
【００４５】
ここで通信装置１５は、図３で示した通信手順とは異なり、Ｓ１４１で中継装置１７に対して200OKデータを送信した後、直ぐにICE CheckデータをＮＡＴ装置１１に対して送信しない。通信装置１５は、Ｓ１３７で受信したINVITEデータに格納されている通信遅延時間Ａと、通信装置１５が計測した通信遅延時間Ｂとを加算し、待機時間Ａ＋Ｂとして算出する。通信装置１５は、Ｓ１４１で200OKデータを送信した後、待機時間Ａ＋Ｂ分待った後、ＮＡＴ装置１２に対してICE Checkデータを送信する（Ｓ２２１）。ＮＡＴ装置１２は、通信装置１５から受信したICE CheckデータをＮＡＴ装置１１に対して中継する（Ｓ２２３）。ＮＡＴ装置１２には、送信元アドレス情報（通信装置１５のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１１のアドレス情報）が送信履歴として記憶される。
【００４６】
一方、通信装置１４では、Ｓ１４７で200OKデータを受信した後、ＮＡＴ装置１１に対してICE Checkデータを送信する（Ｓ２２５）。ＮＡＴ装置１１は、通信装置１４から受信したICE CheckデータをＮＡＴ装置１２に対して中継する（Ｓ２２７）。ＮＡＴ装置１１には、送信元アドレス情報（通信装置１４のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１２のアドレス情報）が送信履歴として記憶される。
【００４７】
上述において、通信装置１５は、200OKデータを送信した（Ｓ１４１）後、待機時間Ａ＋Ｂ分待った後、ICE Checkデータを送信している（Ｓ２２１）。待機時間Ａ＋Ｂは、通信装置１５−（ＮＡＴ装置１２）−中継装置１７の通信遅延時間と、中継装置１７−（ＮＡＴ装置１１）−通信装置１４の通信遅延時間とを加算した時間である。従って待機時間Ａ＋Bは、通信装置１５が200OKデータを送信してから、送信された200OKデータが通信装置１４に到達する時間と略同一になる。従って、通信装置１５からICE Checkデータが送信されるタイミングと、通信装置１４が200OKを受信するタイミングは略同一になる。このため、通信装置１５から送信されたICE CheckデータがＮＡＴ装置１１に到達する前に、通信装置１４からＮＡＴ装置１１に対してICE Checkデータが送信され、ＮＡＴ装置１１は通信装置１４からICE Checkデータを受信する。
【００４８】
通信装置１５から送信されたICE Checkデータが、ＮＡＴ装置１１に到達したとする（Ｓ２２３）。この時点でＮＡＴ装置１１は、既に通信装置１４からICE Checkデータを受信しているので（Ｓ２２５）、送信元アドレス情報（通信装置１４のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１２のアドレス情報）が送信履歴として記憶されている。ＮＡＴ装置１１の送信履歴には、ＷＡＮ側から受信したICE Checkデータの送信元のアドレス情報（ＮＡＴ装置１２のアドレス情報）が宛先アドレス情報として記憶されており、ICE Checkデータの宛先のアドレス情報（通信装置１４のアドレス情報）が送信元アドレス情報として記憶されていることになる。従ってＮＡＴ装置１１は、受信したICE Checkデータを、ＬＡＮ側の通信装置１４に対して中継する（Ｓ２２９）。図３で説明した場合のように、ＮＡＴ装置１１のＷＡＮ側に割り当てられたアドレス情報３３は無効化されない。通信装置１４は、ICE Checkを受信する。
【００４９】
同様に、通信装置１４から送信されたICE Checkデータが、ＮＡＴ装置１２に到達したとする（Ｓ２２７）。この時点でＮＡＴ装置１２は、既に通信装置１５からICE Checkデータを受信しているので（Ｓ２２１）、送信元アドレス情報（通信装置１５のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１１のアドレス情報）が送信履歴として記憶されている。ＮＡＴ装置１２の送信履歴には、ＷＡＮ側から受信したICE Checkデータの送信元のアドレス情報（ＮＡＴ装置１１のアドレス情報）が宛先アドレス情報として記憶されており、ICE Checkデータの宛先のアドレス情報（通信装置１５のアドレス情報）が送信元アドレス情報として記憶されていることになる。従ってＮＡＴ装置１２は、受信したICE Checkデータを、ＬＡＮ側の通信装置１５に対して中継する（Ｓ２３１）。ＮＡＴ装置１２のＷＡＮ側に割り当てられたアドレス情報３４は無効化されない。通信装置１５は、ICE Checkデータを受信する。
【００５０】
通信装置１４は、Ｓ２２９で受信したICE Checkデータに応じ、Responseデータを送信する（Ｓ２３３）。ＮＡＴ装置１１は、通信装置１４からResponseデータを受信し、送信元アドレス情報（通信装置１４のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１２のアドレス情報）を送信履歴として記憶する。ＮＡＴ装置１１は、ResponseデータをＮＡＴ装置１２に対して中継する（Ｓ２３５）。また通信装置１５は、Ｓ２３１で受信したICE Checkデータに応じ、Responseデータを送信する（Ｓ２３７）。ＮＡＴ装置１２は、通信装置１５からResponseデータを受信し、送信元アドレス情報（通信装置１５のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１１のアドレス情報）を送信履歴として記憶する。ＮＡＴ装置１２は、ResponseデータをＮＡＴ装置１１に対して中継する（Ｓ２４１）。
【００５１】
ＮＡＴ装置１２は、Ｓ２４１でＮＡＴ装置１１に対してResponseデータを送信した後、ＮＡＴ装置１１からResponseデータを受信する（Ｓ２３５）。この時点でＮＡＴ装置１２は、既に通信装置１５からResponseデータを受信しているので（Ｓ２３７）、送信元アドレス情報（通信装置１５のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１１のアドレス情報）が送信履歴として記憶されている。従ってＮＡＴ装置１２は、受信したResponseデータを、ＬＡＮ側の通信装置１５に対して中継する（Ｓ２３９）。同様にＮＡＴ装置１１は、Ｓ２３５でＮＡＴ装置１２に対してResponseデータを送信した後、ＮＡＴ装置１２からResponseデータを受信する（Ｓ２４１）。この時点でＮＡＴ装置１１は、既に通信装置１４からResponseデータを受信しているので（Ｓ２３３）、送信元アドレス情報（通信装置１４のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１２のアドレス情報）が送信履歴として記憶されている。従ってＮＡＴ装置１１は、受信したResponseデータを、ＬＡＮ側の通信装置１４に対して中継する（Ｓ２４３）。
【００５２】
以上のように通信が実行されることによって、図３を参照して説明した場合のように、ＮＡＴ装置１１、１２のＷＡＮ側に割り当てられたアドレス情報３３、３４は無効化されない。これによって通信装置１４、１５は、INVITEデータおよび200OKデータの通信によって通知されたアドレス情報を使用することによって、中継装置１７を介することなくＰ２Ｐ通信を行うことが可能となる（Ｓ２４５）。このように通信装置１５は、200OKデータに応じて送信するICE Checkデータの送信タイミングを制御することができる。従って、通信装置１５がICE Checkデータを送信するタイミングと、通信装置１４がICE Checkデータを送信するタイミングとを、良好に近似させることができる。従って通信装置１３は、ICE Checkデータの通信によってＮＡＴ装置１０のＷＡＮ側に割り当てられたアドレス情報３３、３４がＳＰＩによって無効化されることを効果的に抑止できる。
【００５３】
図５から図７を参照し、通信装置１３が実行するメイン処理について説明する。以下説明するメイン処理は、ＨＤＤ２４に記憶されている通信プログラムに従って、通信装置１３のＣＰＵ２１が実行する。メイン処理は、通信装置１３の電源がＯＮされた場合に、ＨＤＤ２４に記憶されたメイン処理用のプログラムが起動されて開始される。そして、ＣＰＵ２１がこのプログラムを実行することにより行われる。
【００５４】
図５に示すように、メイン処理が開始されると、はじめにＣＰＵ２１は、ＮＡＴ装置１０を介して中継装置１７に対し、Registerデータを送信する。これによってＣＰＵ２１は、中継装置１７に通信装置１３を登録する（Ｓ１０）（Ｓ１２１、Ｓ１２５（図４参照））。また、ＮＡＴ装置１０がＬＡＮ側からＷＡＮ側にRegisterデータを中継することによって、ＮＡＴ装置１０のＷＡＮ側に、ＷＡＮ側の装置と通信を行うためのアドレス情報（アドレス情報３１、３２、図４参照）が割り当てられる。
【００５５】
ＣＰＵ２１は、中継装置１７と通信を行うことによって通信遅延時間を特定する（Ｓ１１）。通信遅延時間は次のようにして計測される。通信装置１３は、ＮＡＴ装置１０を介して中継装置１７に対して往路データを送信する。中継装置１７は、通信装置１３から往路データを受信した場合、ＮＡＴ装置１０を介して通信装置１３に対して復路データを送信する。通信装置１３は、中継装置１７から送信された復路データを、ＮＡＴ装置１０を介して受信する。通信装置１３は、往路データを送信してから復路データを受信するまでの時間を計測し、計測した時間を二分することによって、片道分の通信に要した時間を算出する。通信装置１３は、上述の通信を複数回（例えば１０回）繰り返し、時間を繰り返し算出する。通信装置１３は、算出した時間の平均を、通信遅延時間として特定する。このようにして通信装置１３は、中継装置１７との間の通信遅延時間を、より正確に且つ容易に取得している。
【００５６】
ＣＰＵ２１は、入力部２６を介して、他の通信装置１３との間のＰ２Ｐ通信を開始する指示の入力操作を検出したか判断する（Ｓ１３）。入力操作を検出した場合（Ｓ１３：ＹＥＳ）、ＣＰＵ２１は、他の通信装置１３に対してINVITEデータを送信することによって他の通信装置１３との間のセッションを確立し、他の通信装置１３との間でＰ２Ｐ通信を開始する処理（発呼側処理、図６参照）を実行する（Ｓ１５）。発呼側処理の詳細は後述する。発呼側処理の終了後、メイン処理は終了する。一方、他の通信装置１３との間のＰ２Ｐ通信を開始する指示の入力操作を検出しない場合（Ｓ１３：ＮＯ）、ＣＰＵ２１は、他の通信装置１３から送信されたINVITEデータを受信したか判断する（Ｓ１７）。他の通信装置１３から送信されたINVITEデータを受信した場合（Ｓ１７：ＹＥＳ）（Ｓ１３７（図４参照））、ＣＰＵ２１は、INVITEデータに応じて他の通信装置１３との間のセッションを確立し、他の通信装置１３との間でＰ２Ｐ通信を開始する処理（着呼側処理、図７参照）を実行する（Ｓ１９）。着呼側処理の詳細は後述する。着呼側処理の終了後、メイン処理は終了する。
【００５７】
図６を参照し、発呼側処理について説明する。なお以下では、図４における通信装置１４のＣＰＵ２１において実行される発呼側処理を想定して説明する。ＣＰＵ２１は、通信装置１５との通信時にＮＡＴ装置１１のＷＡＮ側に割り当てられて使用されるアドレス情報３３（図４参照）を、ＳＴＵＮサーバに問い合わせることによって特定する（Ｓ２１）。ＣＰＵ２１は、Ｓ１１（図５参照）で特定した通信遅延時間Ａと、Ｓ２１で特定されたアドレス情報３３を、INVITEデータに格納する（Ｓ２３）。ＣＰＵ２１は、通信遅延時間Ａおよびアドレス情報３３が格納されたINVITEデータを、ＮＡＴ装置１１を介して中継装置１７に対して送信する（Ｓ２５）（Ｓ１３１（図４参照））。ＣＰＵ２１は、INVITEデータに応じて通信装置１５から送信される200OKデータを受信したか判断する（Ｓ２７）。200OKデータを受信していないと判断した場合（Ｓ２７：ＮＯ）、継続して200OKデータの受信を監視するために、処理はＳ２７に戻る。
【００５８】
通信装置１５から送信された200OKデータを受信した場合（Ｓ２７：ＹＥＳ）（Ｓ１４７（図４参照））、ＣＰＵ２１は、受信した200OKデータが、Ｓ２５で送信したINVITEデータに応じて通信装置１５から送信されたものであるかを判断することによって、200OKデータを解析する（Ｓ２９）。INVITEデータに応じて通信装置１５から送信された200OKデータであった場合、ＣＰＵ２１は、200OKデータに格納されたアドレス情報３４（図４参照）を取得する。ＣＰＵ２１は、ＩＣＥによる通信を次のように実行する（Ｓ３１）。ＣＰＵ２１は、取得されたアドレス情報３４を使用し、通信装置１５に対してICE Checkデータを送信する（Ｓ２２５（図４参照）。ICE Checkデータを送信した後、ＣＰＵ２１は、通信装置１５から送信されたICE Checkデータを受信する（Ｓ２２９（図４参照））。ＣＰＵ２１は、受信したICE Checkデータに応じ、通信装置１５に対してResponseデータを送信する（Ｓ２３３（図４参照））。ＣＰＵ２１は、ICE Checkデータに応じて通信装置１５から送信されたResponseデータを受信する（Ｓ２４３（図４参照））。
【００５９】
ＩＣＥによる以上の通信を行うことによって、通信装置１４、１５間でＰ２Ｐ通信を行うことが可能な状態になる。ＣＰＵ２１は、通信装置１５との間でセッションを確立させ、Ｐ２Ｐ通信を開始する（Ｓ３３）（Ｓ２４５（図４参照））。Ｐ２Ｐ通信の終了後、発呼側処理は終了し、処理はメイン処理（図５参照）に戻る。
【００６０】
図７を参照し、着呼側処理について説明する。なお以下では、図４における通信装置１５のＣＰＵ２１において実行される着呼側処理を想定して説明する。ＣＰＵ２１は、Ｓ１７（図５参照）で受信したINVITEデータに、通信遅延時間Ａが格納されているかを判断することによって、INVITEデータを解析する（Ｓ４１）。INVITEデータに通信遅延時間Ａが格納されていた場合、ＣＰＵ２１は、INVITEデータに格納されたアドレス情報３３（図４参照）を取得する。ＣＰＵ２１は、通信装置１４との通信時にＮＡＴ装置１２のＷＡＮ側に割り当てられて使用されるアドレス情報３４（図４参照）を、ＳＴＵＮサーバに問い合わせることによって特定する（Ｓ４３）。ＣＰＵ２１は、Ｓ１７で受信したINVITEデータに格納されていた通信遅延時間Ａと、Ｓ１１（図５参照）で特定した通信遅延時間Ｂとを加算することによって、待機時間Ａ＋Ｂを算出する（Ｓ４５）。
【００６１】
ＣＰＵ２１は、Ｓ１７で受信したINVITEデータに応じる200OKデータを、ＮＡＴ装置１２を介して中継装置１７に対して送信する（Ｓ４７）（Ｓ１４１（図４参照））。200OKデータには、Ｓ４３で取得されたアドレス情報３４が格納される。200OKデータの送信後、ＣＰＵ２１は、200OKデータを送信してからの経過時間が、待機時間Ａ＋Ｂに達したかを判断する（Ｓ４９）。ＣＰＵ２１は、経過時間が待機時間Ａ＋Ｂに達していない場合（Ｓ４９：ＮＯ）、処理はＳ４９に戻る。一方、経過時間が待機時間Ａ＋Ｂに達した場合（Ｓ４９：ＹＥＳ）、ＩＣＥによる通信を次のように実行する（Ｓ５１）。ＣＰＵ２１は、取得されたアドレス情報３３を使用し、通信装置１４に対してICE Checkデータを送信する（Ｓ２２１（図４参照））。ICE Checkデータを送信した後、ＣＰＵ２１は、通信装置１４から送信されたICE Checkデータを受信する（Ｓ２３１（図４参照））。ＣＰＵ２１は、受信したICE Checkデータに応じ、通信装置１４に対してResponseデータを送信する（Ｓ２３７（図４参照））。ＣＰＵ２１は、ICE Checkデータに応じて通信装置１４から送信されたResponseデータを受信する（Ｓ２３９（図４参照））。
【００６２】
ＩＣＥによる以上の通信を行うことによって、通信装置１４、１５間でＰ２Ｐ通信を行うことが可能な状態になる。ＣＰＵ２１は、通信装置１４との間でセッションを確立させ、Ｐ２Ｐ通信を開始する（Ｓ５３）（Ｓ２４５（図４参照））。Ｐ２Ｐ通信の終了後、着呼側処理は終了し、処理はメイン処理（図５参照）に戻る。
【００６３】
通信装置１５は、200OKデータを送信してから待機時間Ａ＋Ｂ分待機した後、ICE Checkデータを通信装置１４に対して送信することによって、通信装置１５が通信装置１４に対してICE Checkデータを送信するタイミングと、通信装置１５によって送信された200OKデータを通信装置１４が受信するタイミングとを近似させている。通信装置１４では、200OKデータを受信した直後に、通信装置１５に対してICE Checkデータを送信することになるので、通信装置１４からICE Checkデータが送信されるタイミングと、通信装置１５からICE Checkデータが送信されるタイミングとが近似することになる。従ってＮＡＴ装置１１は、ＮＡＴ装置１２からICE Checkデータを送信する前に、通信装置１４からICE Checkデータを受信することになり、送信履歴がＨＤＤ２４に記憶される。ＮＡＴ装置１１は、この送信履歴を参照することによって、ＮＡＴ装置１２からICE Checkデータを受信した場合に、アドレス情報３３を無効化することなく、通信装置１４に対して中継することができる。
【００６４】
以上のようなタイミング制御を行うことによって、通信装置１５は、ＳＰＩを備えたＮＡＴ装置１１が通信装置１４との間に介在する場合であっても、ＮＡＴ装置１１のＷＡＮ側に割り当てられたアドレス情報３３がＩＣＥによる通信によって無効化されることを抑止することができる。従って通信装置１５は、通信装置１４との間に介在するＮＡＴ装置１１がＳＰＩを備えている場合でも、通信装置１４との間にセッションを確立し、Ｐ２Ｐ通信を適切に開始することが可能となる。
【００６５】
なお本発明は上述の実施形態に限定されず、種々の変更が可能である。上述において通信装置１５は、通信遅延時間Ａ、Ｂを加算することによって待機時間Ａ＋Ｂを算出していた。これに対し、通信装置１５は、通信遅延時間Ａ、Ｂを加算した値に所定のマージンを加算することによって待機時間を算出してもよい。所定のマージンは、例えば、通信装置１４が200OKデータを受信してから、通信装置１５に対してICE Checkデータを送信するまでに要する処理時間としてもよい。通信装置１４、１５において通信遅延時間を特定する方法は、上述以外の方法であってもよい。例えば、通信遅延時間を計測するための周知の方法（例えばｐｉｎｇ）が用いられてもよい。また、例えば中継装置１７が、通信装置１４、１５との間の通信遅延時間を計測する機能を備えていてもよい。通信装置１４、１５は、中継装置１７に問い合わせることによって、中継装置１７から通信遅延時間を取得してもよい。通信装置１５は、通信遅延時間Ａ、Ｂ、および、通信装置１４からINVITEデータを受信した時刻に基づいて、ICE Checkデータを送信する時刻を特定し、特定した時刻で、ICE Checkデータを通信装置１４に対して送信してもよい。
【００６６】
上述では、通信装置１５が待機時間Ａ＋Ｂを算出することによってICE Checkデータの送信タイミングを制御していた。これに対し、通信装置１４、１５の両方がICE Checkデータの送信タイミングを制御してもよい。以下、図８から図１０を参照し、本発明の変形例について説明する。図８を参照し、変形例において、通信装置１４、１５の両方がICE Checkデータの送信タイミングを制御する場合の通信の手順について説明する。なお、図４で説明した通信の手順と同一部分については、同一符号を付し、説明を省略または簡略化している。
【００６７】
通信装置１３は、ＳＩＰに基づく通信を開始する前に、通信装置１３と中継装置１７との間の通信遅延時間を特定する。通信装置１４は、通信遅延時間Ａに加えて、INVITEデータの送信時の時刻をINVITEデータに格納し、ＮＡＴ装置１１を介して中継装置１７に対して送信する（Ｓ１３１、Ｓ１３３）。以下、通信装置１４がINVITEデータを送信した時刻を、時刻Ｃという。中継装置１７は、INVITEデータをＮＡＴ装置１２に対して中継する（Ｓ１３５）。ＮＡＴ装置１２は、INVITEデータを通信装置１５に対して中継する（Ｓ１３７）。通信装置１５は、INVITEデータを受信する。通信装置１５は、INVITEデータを受信した時刻を、ＲＡＭ２３に記憶する。以下、通信装置１５がINVITEデータを受信した時刻を、時刻Ｄという。通信装置１５は、受信したINVITEデータを解析する（Ｓ４１、図７参照）。以下、通信装置１５がINVITEデータを解析するために要する時間を、解析時間Ｅという。
【００６８】
通信装置１５は、INVITEデータに格納された通信遅延時間Ａおよび時刻Ｃ、INVITEデータを受信した時刻Ｄ、最初に特定した通信遅延時間Ｂ、および、解析時間Ｅに基づいて、通信装置１４、１５においてICE Checkデータを送信するタイミングを決定する。詳細は以下のとおりである。
【００６９】
通信装置１４におけるICE Checkデータの送信タイミングは、通信遅延時間Ａを２倍した時間（２Ａ）、通信遅延時間Ｂを２倍した時間（２Ｂ）、および、解析時間Ｅを２倍した時間（２Ｅ）を加算した時間（２（Ａ＋Ｂ＋Ｅ））分、INVITEを送信した時刻Ｃから経過した時点の時刻（Ｃ＋２（Ａ＋Ｂ＋Ｅ））に決定される。この時刻は、通信装置１４からINVITEデータが送信されてから通信装置１５に到達するまで（Ｓ１３１、１３３、１３５、１３７）に要する時間（Ａ＋Ｂ）、通信装置１５においてINVITEデータが解析される場合に要する時間（Ｅ）、通信装置１５から200OKデータが送信されてから通信装置１４に到達するまで（Ｓ１４１、１４３、１４５、１４７）に要する時間（Ａ＋Ｂ）、および、通信装置１４において200OKデータが解析される場合に要する時間（Ｅ）を加算し、通信装置１４がINVITEデータを送信した時刻（Ｃ）に加算結果を反映させることによって導き出されている。ここで通信装置１５は、通信装置１４において200OKデータを解析する場合に要する時間が、通信装置１５においてINVITEデータを解析する場合に要する時間（Ｅ）とほぼ同一であると判断し、上述の計算を行っている。以下、上述のようにして算出された、通信装置１４がICE Checkデータを送信する時刻（Ｃ＋２（Ａ＋Ｂ＋Ｅ））を、発呼側時刻という。
【００７０】
通信装置１５におけるICE Checkデータの送信タイミングは、通信遅延時間Ａ、通信遅延時間Ｂ、および、解析時間Ｅを２倍した時間（２Ｅ）を加算した時間（Ａ＋Ｂ＋２Ｅ）分、INVITEデータを受信した時刻Ｄから経過した時点の時刻（Ｄ＋Ａ＋Ｂ＋２Ｅ）に決定される。この時刻は、通信装置１５から送信された200OKデータに応じて通信装置１４がICE Checkデータを通信装置１５に対して送信する場合の時刻を想定し、この時刻と同じ時刻で、通信装置１５がICE Checkデータを送信できるように決定される。従って、通信装置１５においてINVITEデータを解析する場合に要する時間（Ｅ）、通信装置１５から200OKデータが送信されてから通信装置１４に到達するまで（Ｓ１４１、１４３、１４５、１４７）に要する時間（Ａ＋Ｂ）、および、通信装置１４において200OKデータを解析する場合に要する時間（Ｅ）を加算し、通信装置１５がINVITEデータを受信した時刻（Ｄ）に加算結果を反映させることによって導き出されている。発呼側時刻を算出した場合と同様、通信装置１５は、通信装置１４において200OKデータを解析する場合に要する時間が、通信装置１５においてINVITEデータを解析する場合に要する時間（Ｅ）とほぼ同一であると判断している。以下、上述のようにして算出された、通信装置１５がICE Checkを送信する時刻（Ｄ＋Ａ＋Ｂ＋２Ｅ）を、着呼側時刻という。
【００７１】
通信装置１５は、INVITEデータに応じて通信装置１４に送信する200OKデータに、発呼側時刻を示す発呼側時刻情報を格納する。通信装置１５は、ＮＡＴ装置１２を介して中継装置１７に対して200OKデータを送信する（Ｓ１４１、Ｓ１４３）。中継装置１７は、200OKデータをＮＡＴ装置１１に対して中継する（Ｓ１４５）。ＮＡＴ装置１１は、200OKデータを通信装置１４に対して中継する（Ｓ１４７）。通信装置１４は、200OKデータを受信する。
【００７２】
通信装置１５は、200OKデータを通信装置１４に対して送信した後、算出した着呼側時刻まで待機し、ＮＡＴ装置１２に対してICE Checkデータを送信する（Ｓ２５１）。ＮＡＴ装置１２は、通信装置１５から受信したICE CheckデータをＮＡＴ装置１１に対して中継する（Ｓ２５３）。ＮＡＴ装置１２には、送信元アドレス情報（通信装置１５のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１１のアドレス情報）が送信履歴として記憶される。一方、通信装置１４では、Ｓ１４７で受信した200OKデータに格納された発呼側時刻情報に基づいて、発呼側時刻を特定する。通信装置１４は、発呼側時刻まで待機し、ＮＡＴ装置１１に対してICE Checkデータを送信する（Ｓ２５５）。ＮＡＴ装置１１は、通信装置１４から受信したICE CheckデータをＮＡＴ装置１２に対して中継する（Ｓ２５７）。ＮＡＴ装置１１には、送信元アドレス情報（通信装置１４のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１２のアドレス情報）が送信履歴として記憶される。
【００７３】
ここで上述では、通信装置１４からICE Checkデータが送信される時刻と、通信装置１５からICE Checkデータが送信される時刻とがほぼ同一時刻となるように、発呼側時刻および着呼側時刻が算出されている。このため、通信装置１５から送信されたICE CheckデータがＮＡＴ装置１１に到達する（Ｓ２５３）前に、通信装置１４からＮＡＴ装置１１に対してICE Checkデータが送信され（Ｓ２５５）、ＮＡＴ装置１１は通信装置１４からICE Checkデータを受信する。従って、通信装置１５から送信されたICE CheckデータがＮＡＴ装置１１に到達した場合（Ｓ２５３）、送信元アドレス情報（通信装置１４のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１２のアドレス情報）がＮＡＴ装置１１の送信履歴として記憶された状態になっている。従ってＮＡＴ装置１１は、ＮＡＴ装置１２から受信したICE Checkデータを、ＬＡＮ側の通信装置１４に対して中継する（Ｓ２６１）。ＮＡＴ装置１１は、ＷＡＮ側に割り当てたアドレス情報３３を無効化しない。通信装置１４は、ICE Checkデータを受信する。
【００７４】
同様に、通信装置１４から送信されたICE Checkデータが、ＮＡＴ装置１２に到達した場合（Ｓ２５７）、送信元アドレス情報（通信装置１５のアドレス情報）および宛先アドレス情報（ＮＡＴ装置１１のアドレス情報）がＮＡＴ装置１２の送信履歴として記憶された状態になっている。従ってＮＡＴ装置１２は、受信したICE Checkデータを、ＬＡＮ側の通信装置１５に対して中継する（Ｓ２５９）。ＮＡＴ装置１２は、ＷＡＮ側に割り当てたアドレス情報３４を無効化しない。通信装置１５は、ICE  Checkデータを受信する。
【００７５】
以上の通信を実行することによって、通信装置１４、１５は、INVITEデータおよび200OKデータの通信によって通知されたアドレス情報３３、３４を使用して、Ｐ２Ｐ通信を行うことが可能となる（Ｓ２８１）。上述の実施形態とは異なり、変形例において通信装置１５は、通信装置１４におけるICE Checkデータの送信タイミングも制御する。ここで通信装置１５は、通信装置１４がICE Checkデータを送信するタイミングを、発呼側時刻によって通知するので、通信装置１４は、通知された発呼側時刻を基準にしてICE Checkデータを送信するタイミングを特定することができる。通信装置１４に対して通知される発呼側時刻は、通信装置１４がINVITEデータを送信した時刻Ｃに基づいて特定される。従って、通信装置１４、１５の其々において管理する時刻がずれている場合でも、通信装置１５は、通信装置１４から所望のタイミングでICE Checkデータを送信させることができる。
【００７６】
ここで通信装置１５が、通信装置１４が200OKデータを受信してからICE Checkデータを送信するまでの待機時間を、発呼側時刻の代わりに通信装置１４に対して通知した場合を想定する。この場合、200OKデータの通信に要した時間が、算出された通信遅延時間Ａ、Ｂと異なると、通信装置１４からICE Checkデータが送信されるタイミングは、通信装置１５からICE Checkデータが送信されるタイミングからずれてしまう。待機時間は、通信遅延時間Ａ、Ｂに基づいて決定されるためである。例えば200OKデータの通信に要した時間が通信遅延時間Ａ、Ｂよりも長くなると、長くなった分、通信装置１４がICE Checkデータを送信する時間が遅れてしまう。この場合、ＮＡＴ装置１１がＬＡＮ側からＷＡＮ側に向かう方向にICE Checkデータを中継する（Ｓ２５５、Ｓ２５７）前に、ＮＡＴ装置１１はＷＡＮ側からICE Checkデータを受信してしまう可能性がある（Ｓ２５３）。このような場合、ＷＡＮ側に割り当てられたアドレス情報３３は無効化されてしまう。
【００７７】
これに対して変形例では、通信装置１５はICE Checkデータを送信する発呼側時刻を決定する。通信装置１４は、発呼側時刻に基づいてICE Checkデータを送信するタイミングを制御する。従って、ＮＡＴ装置１１、１２間の伝送路の通信状態が変化し、200OKデータの通信に要した時間が通信遅延時間Ａ、Ｂと相違する場合でも、通信装置１４は発呼側時刻を基準としてICE Checkデータの送信タイミングを決定できるので、通信装置１４から送信されるICE Checkデータの送信タイミングを、通信装置１５から送信されるICE Checkデータの送信タイミングと良好に近似させることができる。
【００７８】
図９および図１０を参照し、変形例における発呼側処理および着呼側処理について説明する。変形例における発呼側処理および着呼側処理は、上述の実施形態における発呼側処理および着呼側処理の代わりにメイン処理から呼び出され、実行される。メイン処理は、上述した実施形態と同一であるので、以下では説明を省略している。
【００７９】
図９を参照し、変形例における発呼側処理について説明する。なお以下では、図８における通信装置１４のＣＰＵ２１において実行される発呼側処理を想定して説明する。ＣＰＵ２１は、通信装置１５との通信時にＮＡＴ装置１１のＷＡＮ側に割り当てられて使用されるアドレス情報３３（図８参照）を、ＳＴＵＮサーバに問い合わせることによって特定する（Ｓ６１）。ＣＰＵ２１は、Ｓ１１（図５参照）で特定した通信遅延時間ＡをINVITEデータに格納する（Ｓ６３）。次いでＣＰＵ２１は、INVITEデータを送信する時刻Ｃを、INVITEデータに格納する（Ｓ６５）。ＣＰＵ２１は、通信遅延時間Ａ、時刻Ｃ、およびアドレス情報３３が格納されたINVITEデータを、ＮＡＴ装置１１を介して中継装置１７に対して送信する（Ｓ６７）（Ｓ１３１（図８参照））。ＣＰＵ２１は、INVITEデータに応じて通信装置１５から送信される200OKデータを受信したか判断する（Ｓ６９）。200OKデータを受信していないと判断した場合（Ｓ６９：ＮＯ）、継続して200OKデータの受信を監視するために、処理はＳ６９に戻る。
【００８０】
通信装置１５から送信された200OKデータを受信した場合（Ｓ６９：ＹＥＳ）（Ｓ１４７（図８参照））、ＣＰＵ２１は、受信した200OKデータが、Ｓ６７で送信したINVITEデータに応じて通信装置１５から送信されたものであるかを判断することによって、200OKデータを解析する（Ｓ７１）。INVITEデータに応じて通信装置１５から送信された200OKデータであった場合、ＣＰＵ２１は、200OKデータに格納されたアドレス情報３４（図８参照）を取得する。ＣＰＵ２１は、200OKデータに格納されている発呼側時刻情報を取得し、発呼側時刻（Ｃ＋２（Ａ＋Ｂ＋Ｅ））を特定する（Ｓ７３）。ＣＰＵ２１は、発呼側時刻となったかを判断する（Ｓ７５）。発呼側時刻となっていない場合（Ｓ７５：ＮＯ）、継続して待機するために、処理はＳ７５に戻る。
【００８１】
一方、発呼側時刻となった場合（Ｓ７５：ＹＥＳ）、ＣＰＵ２１は、200OKデータから取得されたアドレス情報３４を使用し、通信装置１５に対してICE Checkデータを送信する（Ｓ２５５（図８参照））ことによって、ＩＣＥによる通信を実行する（Ｓ７７）。ＩＣＥによる通信が終了した場合、通信装置１４、１５間でＰ２Ｐ通信を行うことが可能な状態になる。ＣＰＵ２１は、通信装置１５との間でセッションを確立させ、Ｐ２Ｐ通信を開始する（Ｓ７９）（Ｓ２８１（図８参照））。Ｐ２Ｐ通信の終了後、発呼側処理は終了し、処理はメイン処理（図５参照）に戻る。
【００８２】
図１０を参照し、着呼側処理について説明する。なお以下では、図８における通信装置１５のＣＰＵ２１において実行される着呼側処理を想定して説明する。ＣＰＵ２１は、Ｓ１７（図５参照）でINVITEデータを受信した時刻Ｄを取得する（Ｓ９１）。ＣＰＵ２１は、Ｓ１７で受信したINVITEデータに、通信遅延時間Ａおよび時刻Ｃが格納されているかを判断することによって、INVITEデータを解析する（Ｓ９３）。INVITEデータに通信遅延時間Ａおよび時刻Ｃが格納されていた場合、ＣＰＵ２１は、INVITEデータに格納されたアドレス情報３３（図８参照）を取得する。ＣＰＵ２１は、通信装置１４との通信時にＮＡＴ装置１２のＷＡＮ側に割り当てられて使用されるアドレス情報３４（図８参照）を、ＳＴＵＮサーバに問い合わせることによって特定する（Ｓ９５）。
【００８３】
ＣＰＵ２１は、通信装置１４においてICE Checkデータを送信するまでの待機時間（２（Ａ＋Ｂ＋Ｅ））を、通信遅延時間Ａ、Ｂ、および、解析時間Ｅに基づいて算出する（Ｓ９７）。ＣＰＵ２１は、INVITEデータに格納されていた時刻Ｃから待機時間（２（Ａ＋Ｂ＋Ｅ））分経過した時刻を、発呼側時刻として特定する（Ｓ９９）。ＣＰＵ２１は、通信装置１５においてICE Checkデータを送信するまでの待機時間（Ａ＋Ｂ＋２Ｅ）を、通信遅延時間Ａ、Ｂ、および、解析時間Ｅに基づいて算出する（Ｓ１０１）。ＣＰＵ２１は、Ｓ９１で取得した時刻Ｄから待機時間（Ａ＋Ｂ＋２Ｅ）分経過した時刻を、着呼側時刻として特定する（Ｓ１０３）。
【００８４】
ＣＰＵ２１は、Ｓ１７で受信したINVITEデータに応じる200OKデータに、Ｓ９９で特定した発呼側時刻を示す発呼側時刻情報を格納する（Ｓ１０５）。ＣＰＵ２１は、INVITEデータから取得されたアドレス情報３３を使用し、発呼側時刻情報、および、Ｓ９５で取得されたアドレス情報３４を格納した200OKデータを、ＮＡＴ装置１２を介して中継装置１７に対して送信する（Ｓ１０７）（Ｓ１４１（図８参照））。200OKデータの送信後、ＣＰＵ２１は、Ｓ１０３で特定した着呼側時刻となったかを判断する（Ｓ１０９）。着呼側時刻となっていない場合（Ｓ１０９：ＮＯ）、継続して待機するために、処理はＳ１０９に戻る。
【００８５】
一方、着呼側時刻となった場合（Ｓ１０９：ＹＥＳ）、ＣＰＵ２１は、INVITEデータから取得されたアドレス情報３３を使用し、通信装置１４に対してICE Checkデータを送信する（Ｓ２５１（図８参照）ことによって、ＩＣＥによる通信を実行する（Ｓ１１１）。ＩＣＥによる通信が終了した場合、通信装置１４、１５間でＰ２Ｐ通信を行うことが可能な状態になる。ＣＰＵ２１は、通信装置１５との間でセッションを確立させ、Ｐ２Ｐ通信を開始する（Ｓ１１３）（Ｓ２８１（図８参照））。Ｐ２Ｐ通信の終了後、発呼側処理は終了し、処理はメイン処理（図５参照）に戻る。
【００８６】
以上説明したように、通信装置１５は、通信装置１４がICE Checkデータを送信する場合の送信タイミングだけでなく、通信装置１４が200OKデータに応じて送信するICE Checkデータの送信タイミングも制御することができる。これによって、通信装置１４、１５において特定された通信遅延時間と、実際の通信に要した通信時間とが相違する場合であっても、通信装置１４がICEデータを送信するタイミングと、通信装置１５がICE Checkデータを送信するタイミングとを、良好に近似させることができる。更に通信装置１５は、通信装置１４におけるICE Checkデータの送信タイミングを、通信装置１４の時刻Ｃに基づき特定された時刻を指定することによって通知する。これによって、通信装置１４、１５の双方が管理する時刻がずれている場合であっても、通信装置１４がICEデータを送信するタイミングと、通信装置１５がICE Checkデータを送信するタイミングとを、良好に近似させることができる。以上によって通信装置１５は、ICE Checkデータの通信によってＮＡＴ装置１１に割り当てられたアドレス情報３３がＳＰＩによって無効化されることを、さらに効果的に抑止することができる。
【００８７】
なお上述の変形例において、発呼側時刻および着呼側時刻を特定する場合に解析時間Ｅは考慮されなくてもよい。なお解析時間Ｅは、通信遅延時間Ａ、Ｂと比較して非常に短い時間であるため、解析時間Ｅを考慮することなく発呼皮時刻および着呼側時刻が特定された場合でも、ICE Checkデータが送信されるタイミングは通信装置１４、１５間でほぼ一致する。また通信装置１５は、発呼側時刻の代わりに待機時間（２（Ａ＋Ｂ＋Ｅ））を通知することによって、通信装置１４から送信されるICE Checkデータのタイミング制御を行ってもよい。通信装置１４は、INVITEデータを送信した時刻Ｃから、通知された待機時間（２（Ａ＋Ｂ＋Ｅ））分経過した時刻に、ICE Checkデータを送信してもよい。通信装置１５は、発呼側時刻情報を200OKデータに格納し、通信装置１４に対して送信していた。これに対し、例えば通信装置１５は、INVITEデータに応じて180Ringingデータを通信装置１４に送信し、所定時間経過後、200OKデータを通信装置１４に送信してもよい。そして通信装置１５は、180Ringingデータに発呼側時刻情報を格納し、送信してもよい。この場合、通信装置１５は、180Ringingデータを送信してから200OKデータを送信するまでの時間を考慮して発呼側時刻情報を特定してもよい。これによって通信装置１５は、200OKデータを受信する前に発呼側時刻情報を取得することができるので、200OKデータを受信してからICE Checkデータを送信するまでの処理を軽減し、迅速にICE Checkデータを送信することができる。
【００８８】
なお、Ｓ１１の処理を行うＣＰＵ２１が本発明の「取得手段」に相当する。Ｓ２５、Ｓ６７の処理を行うＣＰＵ２１が本発明の「第一送信手段」に相当する。Ｓ１７の処理を行うＣＰＵ２１が本発明の「第一受信手段」に相当する。Ｓ４７、Ｓ１０７の処理を行うＣＰＵ２１が本発明の「第二送信手段」に相当する。Ｓ４５、Ｓ１０１、Ｓ１０３の処理を行うＣＰＵ２１が本発明の「第一算出手段」に相当する。Ｓ５１、Ｓ１１１の処理を行うＣＵＰ２１が本発明の「第三送信手段」に相当する。Ｓ３１、Ｓ７１の処理を行うＣＰＵ２１が本発明の「第四送信手段」に相当する。INVITEデータが本発明の「要求データ」に相当する。200OKデータが本発明の「応答データ」に相当する。ICE Checkデータが本発明の「設定データ」に相当する。Ｓ１１の処理が本発明の「取得ステップ」に相当する。Ｓ２５、Ｓ６７の処理が本発明の「第一送信ステップ」に相当する。Ｓ１７の処理が本発明の「第一受信ステップ」に相当する。Ｓ４７、Ｓ１０７の処理が本発明の「第二送信ステップ」に相当する。Ｓ４５、Ｓ１０１、Ｓ１０３の処理が本発明の「第一算出ステップ」に相当する。Ｓ５１、Ｓ１１１の処理が本発明の「第三送信ステップ」に相当する。
【符号の説明】
【００８９】
１      通信システム
１０、１１、１２  ＮＡＴ装置
１３、１４、１５  通信装置
１７    中継装置
【図１】
0005803525.tif 000002
【図２】
0005803525.tif 000003
【図３】
0005803525.tif 000004
【図４】
0005803525.tif 000005
【図５】
0005803525.tif 000006
【図６】
0005803525.tif 000007
【図７】
0005803525.tif 000008
【図８】
0005803525.tif 000009
【図９】
0005803525.tif 000010
【図１０】
0005803525.tif 000011