通信装置、通信方法、および通信プログラム
【課題】SPIを備えたNAT装置を介して、他の通信装置とP2P通信を適切に行うことが可能な通信装置、通信方法、および通信プログラムを提供する。
【解決手段】通信装置14、15は、中継装置17との間の通信遅延時間を取得する。通信装置14は、通信装置15との間のセッションを確立させるために、INVITEデータを通信装置15に送信する(S131〜S137)。INVITEデータには、通信装置14が取得した通信遅延時間Aが格納される。通信装置15は、受信したINVITEデータに格納された通信遅延時間Aと、通信装置15が取得した通信遅延時間Bとに基づいて、ICE Checkデータを送信するまでの待機時間A+Bを特定する。通信装置15は、200OKデータを通信装置14に対して送信し(S141)、待機時間A+B分待機した後、通信装置15に対してICE Checkデータを送信する(S221〜S229)。
【解決手段】通信装置14、15は、中継装置17との間の通信遅延時間を取得する。通信装置14は、通信装置15との間のセッションを確立させるために、INVITEデータを通信装置15に送信する(S131〜S137)。INVITEデータには、通信装置14が取得した通信遅延時間Aが格納される。通信装置15は、受信したINVITEデータに格納された通信遅延時間Aと、通信装置15が取得した通信遅延時間Bとに基づいて、ICE Checkデータを送信するまでの待機時間A+Bを特定する。通信装置15は、200OKデータを通信装置14に対して送信し(S141)、待機時間A+B分待機した後、通信装置15に対してICE Checkデータを送信する(S221〜S229)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Network Address Translation(NAT)装置のLAN側に接続し、他のNAT装置のLAN側に接続する他の通信装置と通信を行う通信装置、通信方法、および通信プログラムに関する。
【背景技術】
【0002】
Stateful Packet Inspection(SPI)と呼ばれる方法によってパケットをフィルタリングするNetwork Address Translation(NAT)装置が知られている。SPIを備えたNAT装置は、LAN側からWAN側に向けてデータを送信した場合、送信履歴をセッションログとして記憶する。NAT装置は、WAN側からLAN側に向かうデータを受信した場合、受信したデータがセッションログと矛盾しないかを判断する。例えばNAT装置は、WAN側からLAN側に向かうデータを受信した場合、受信したデータの送信元アドレスを宛先アドレスとするデータの送信履歴が、セッションログとして記憶されているかを確認する。該当する送信履歴がセッションログとして記憶されていない場合、WAN側に割り当てたアドレスを使用してLAN側からWAN側にデータが送信される前に、該アドレスに対するデータをWAN側から受信したことになる。このような場合、NAT装置は、WAN側から不正にアクセスされたと判断し、割り当てたアドレスを無効化する。これによって、LAN側に接続された通信装置を不正アクセスから保護している。
【0003】
一方で、SPIを備えたNAT装置のLAN側に接続する通信装置と、他のNAT装置のLAN側に接続する他の通信装置との間で通信が行われる場合、NAT装置に割り当てられたアドレスがSPIによって無効化され、通信ができなくなる場合がある。従って、SPIによって通信装置間の通信が妨げられることを抑止するための様々な技術が提案されている(例えば特許文献1参照)。
【0004】
NAT装置のLAN側に接続する通信装置が、他のNAT装置のLAN側に接続する他の通信装置との間で、Session Initiation Protocol(SIP)に基づいた通信を行い、Peer to Peer(P2P)通信を開始する場合、NAT越えの問題を解消するために、Interactive Connectivity Establishment(ICE)という技術が利用される場合がある。この技術では、通信装置間でアドレス情報を交換する通信が反復されることによって、P2P通信を行う場合に使用可能なアドレス情報が通信装置において特定される。通信装置は、特定したアドレス情報を使用することで、他の通信装置との間にNAT装置が介在する場合でも、P2P通信を開始することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−33299号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
SPIを備えたNAT装置のLAN側に接続する通信装置と、他のNAT装置のLAN側に接続する他の通信装置との間で、P2P通信を開始しようとする場合を想定する。この場合、通信装置間でICEに基づいた通信が行われることによって、NAT装置に割り当てられたアドレスがSPIによって無効化される場合がある。ICEでは、通信装置間でアドレス情報を交換する通信が反復されるため、この通信の過程で、NAT装置が通信装置からのデータをLAN側から受信してWAN側に送信する前に、他の通信装置からのデータをWAN側から受信する場合があるためである。このような場合、通信装置間でP2P通信を開始することができないという問題点がある。
【0007】
本発明の目的は、SPIを備えたNAT装置を介して、他の通信装置とP2P通信を適切に行うことが可能な通信装置、通信方法、および通信プログラムを提供することにある。
【課題を解決するための手段】
【0008】
本発明の第一態様に係る通信装置は、Network Address Translation(NAT)装置のLAN側に接続し、前記NAT装置のWAN側に接続された他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立して通信を行う通信装置であって、前記通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得手段と、前記他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得手段によって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信する第一送信手段と、前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを受信する第一受信手段と、前記第一受信手段によって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信する第二送信手段と、前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出手段と、前記第一算出手段によって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第三送信手段とを備えている。
【0009】
第一態様によれば、通信装置は、他の通信装置から設定データが送信されるタイミングと、通信装置が他の通信装置に対して設定データを送信するタイミングとが近似するように、設定データの送信タイミングを設定することができる。通信装置は、通信装置および他の通信装置と中継装置との間の通信遅延時間に基づき、他の通信装置に対して送信した応答データの通信遅延時間を算出することによって、他の通信装置が設定データを送信するタイミングを推測することができるためである。従って通信装置は、Stateful Packet Inspection(SPI)を備えたNAT装置が他の通信装置との間に介在する場合であっても、設定データの通信によってNAT装置に割り当てられたアドレスが無効化されることを抑止することができる。これによって通信装置は、他の通信装置との間にSPIを備えたNAT装置が介在する場合でも、他の通信装置との間にセッションを確立し、通信を適切に行うことが可能となる。
【0010】
第一態様において、前記第一算出手段は、前記第二送信手段によって前記応答データを送信してから、前記第三送信手段によって前記設定データを送信するまでの待機時間を、第一時間情報として算出してもよい。前記第三送信手段は、前記第二送信手段によって前記応答データを送信してから、前記第一算出手段によって算出された待機時間分待機した後、前記設定データを送信してもよい。これによって通信装置は、応答データを送信してからの経過時間を監視することによって、他の通信装置に対して設定データを送信するタイミングを容易に判断することができる。
【0011】
第一態様において、前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを前記通信装置に対して送信するタイミングを特定するための第二時間情報を算出する第二算出手段を備えてもよい。前記第二送信手段は、前記第二算出手段によって算出された前記第二時間情報を少なくとも含む前記応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信してもよい。前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から、前記第二時間情報を少なくとも含む前記応答データを受信する第二受信手段をそなえていてもよい。前記第二受信手段によって受信された前記第二時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第四送信手段を備えていてもよい。通信装置は、他の通信装置が応答データに応じて送信する設定データの送信タイミングを制御することができる。従って、通信装置が設定データを送信するタイミングと、他の通信装置が設定データを送信するタイミングとを、更に良好に近似させることができる。従って通信装置は、設定データの通信によってNAT装置に割り当てられたアドレスがSPIによって無効化されることを、さらに効果的に抑止することができる。
【0012】
第一態様において、前記第一送信手段は、前記他の通信装置に対して前記要求データを送信する時刻を示す第一時刻情報と前記通信遅延時間とを含む前記要求データを、前記他の通信装置に対して送信してもよい。前記第二算出手段は、前記第一受信手段によって、前記第一時刻情報および前記通信遅延時間を含む前記要求データを前記他の通信装置から受信した場合に、前記要求データに含まれる前記第一時刻情報および前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを送信する時刻を示す第二時刻情報を、前記第二時間情報として算出してもよい。前記第二送信手段は、前記第二算出手段によって、前記第二時間情報として算出された前記第二時刻情報を含む前記応答データを、前記他の通信装置に対して送信してもよい。前記第二受信手段は、前記他の通信装置から、前記第二時刻情報を前記第二時間情報として受信してもよい。前記第四送信手段は、前記第二受信手段によって受信された前記第二時刻情報によって示される前記時刻に、前記他の通信装置に対して前記設定データを送信してもよい。通信装置は、通知された時刻を基準にして設定データを送信するタイミングを特定することができる。従って、NAT装置間の伝送路の通信状態が変化し、要求データおよび応答データの通信時における実際の通信遅延時間が、取得された通信遅延時間と相違する場合でも、通信装置から送信される設定データの送信タイミングと、他の通信装置から送信される設定データの送信タイミングとを良好に近似させることができる。
【0013】
第一態様において、前記取得時間は、前記NAT装置を介して前記中継装置に往路データを送信してから、前記中継装置が前記往路データに応じて返信する復路データを、前記NAT装置を介して受信するまでの時間を複数回計測し、計測した時間を2分した値の平均値を、前記通信遅延時間として取得してもよい。通信装置は、中継装置との間の通信遅延時間を、より正確に且つ容易に取得することができる。
【0014】
第一態様において、前記第一算出手段は、前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得した前記通信遅延時間とを加算することによって、前記待機時間を算出してもよい。これによって通信装置は、待機時間を容易に算出することができる。
【0015】
本発明の第二態様に係る通信方法は、Network Address Translation(NAT)装置のLAN側に接続する通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得ステップと、前記通信装置が、他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得ステップによって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記通信装置から前記他の通信装置に対して送信する第一送信ステップと、前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを前記通信装置が受信する第一受信ステップと、前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記通信装置が前記他の通信装置に対して送信する第二送信ステップと、前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記通信装置が前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記通信装置が前記他の通信装置に対して前記設定データを送信する第三送信ステップとを備えている。第二態様によれば、第一態様と同様の効果を奏することができる。
【0016】
本発明の第三態様に係る通信プログラムは、Network Address Translation(NAT)装置のLAN側に接続する通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得ステップと、他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得ステップによって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記他の通信装置に対して送信する第一送信ステップと、前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを受信する第一受信ステップと、前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記他の通信装置に対して送信する第二送信ステップと、前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第三送信ステップとを通信装置のコンピュータに実行させる。第三態様によれば、第一態様と同様の効果を奏することができる。
【図面の簡単な説明】
【0017】
【図1】通信システム1の概要、および通信装置13の電気的構成を示す図である。
【図2】SPIを備えないNAT装置10が使用された場合の通信の様子を示すシーケンス図である。
【図3】SPIを備えたNAT装置10が使用された場合の通信の様子を示すシーケンス図である。
【図4】SPIを備えたNAT装置10が使用された場合の通信の様子を示すシーケンス図である。
【図5】メイン処理を示すフローチャートである。
【図6】発呼側処理を示すフローチャートである。
【図7】着呼側処理を示すフローチャートである。
【図8】SPIを備えたNAT装置10が使用された場合の通信の様子を示すシーケンス図出ある。
【図9】変形例における発呼側処理を示すフローチャートである。
【図10】変形例における着呼側処理を示すフローチャートである。
【発明を実施するための形態】
【0018】
以下、本発明の一実施形態について、図面を参照して説明する。これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている装置の構成、各種処理のフローチャート等は、それのみに限定する趣旨ではなく、単なる説明例である。
【0019】
図1を参照し、通信システム1の概要について説明する。通信システム1は、Network Address Translation(NAT)装置11、12、通信装置14、15、および中継装置17を備えている。通信装置14は、NAT装置11のLAN側に接続している。通信装置15は、NAT装置12のLAN側に接続している。NAT装置11、12のWAN側は、ネットワーク網18に接続している。中継装置17は、ネットワーク網18に接続している。中継装置17およびNAT装置11、12は、ネットワーク網18を介して通信を行うことができる。以下、NAT装置11、12を区別しない場合または総称する場合、これらをNAT装置10という。通信装置14、15を区別しない場合または総称する場合、これらを通信装置13という。
【0020】
中継装置17は、Session Initiation Protocol(SIP)を制御するSIPサーバである。通信装置13は、PCやIP電話等の通信端末である。通信装置13は、中継装置17を介して他の通信装置13とSIPに基づいた通信を行う。これによって通信装置13は、他の通信装置13との間でセッションを確立させ、Peer to Peer(P2P)通信を行う。NAT装置10は、LAN側に接続された通信装置13から、WAN側に向かう方向のデータを受信した場合、WAN側に新たなアドレス情報を割り当てる。WAN側に割り当てるアドレス情報は、ネットワーク網18に接続した図示外のSession Traversal Utilities for NAT(STUN)サーバと通信を行うことによって、STUNサーバから取得される。NAT装置10は、受信したデータのアドレス情報を、WAN側に割り当てたアドレス情報に変換し、WAN側に転送する。またNAT装置10は、WAN側に割り当てたアドレス情報宛にデータを受信した場合、受信したデータのアドレス情報を、LAN側に接続された通信装置13のアドレス情報に変換し、WAN側に転送する。
【0021】
通信装置13の電気的構成について説明する。通信装置13は、通信装置13の制御を司るCPU21を備えている。CPU21は、ROM22、RAM23、ハードディスクドライブ(以下、HDDという。)24、通信インタフェース(以下、通信I/Fという。)25、入力部26、および出力部27と電気的に接続している。ROM22には、ブートプログラム、BIOS等が記憶される。RAM23には、タイマやカウンタ、一時的なデータが記憶される。HDD24には、CPU21の制御プログラムやOSが記憶される。通信I/F25は、NAT装置10と通信を行うためのインタフェースである。入力部26は、通信装置13に対して情報の入力を行うキーボード、マウス、マイク等である。出力部27は、通信装置13のユーザに対して情報を出力するディスプレイ、スピーカ等である。
【0022】
通信装置14、15間でセッションを確立させてP2P通信を行う場合、通信装置14、15間にNAT装置11、12が介在しているため、いわゆるNAT越えの問題が発生し得る。通信装置14は、通信装置15とP2P通信を行う場合、NAT装置12のWAN側に割り当てられたアドレス情報宛にデータを送信しなければならないため、事前にこのアドレス情報を特定しておく必要がある。同様に通信装置15は、通信装置14とP2P通信を行う場合、NAT装置11のWAN側に割り当てられたアドレス情報を事前に特定しておく必要がある。
【0023】
これに対して通信装置14、15では、Interactive Connectivity Establishment(ICE)という技術を利用することによって、上述したNAT越えの問題を解消している。図2を参照し、通信装置14、15間でP2P通信が可能となるまでの通信の手順について説明する。なおNAT装置11は、WAN側に割り当てるアドレス情報31、33(後述)を予めSTUNサーバから取得しているものとする。同様にNAT装置12は、WAN側に割り当てるアドレス情報32、34(後述)を予めSTUNサーバから取得しているものとする。はじめに通信装置14は、中継装置17に通信装置14を登録するために、NAT装置11を介して中継装置17にRegisterデータを送信する(S121)。NAT装置11は、LAN側の通信装置14からResisterデータを受信した場合、WAN側の装置と通信を行うためのアドレス情報31をWAN側に割り当てる。NAT装置11は、受信したRegisterデータのアドレス情報を、WAN側に割り当てられたアドレス情報31に変換し、中継装置17に対して中継する(S123)。同様に通信装置15は、中継装置17に通信装置15を登録するために、NAT装置12を介して中継装置17にRegisterデータを送信する(S125)。NAT装置12は、LAN側の通信装置15からResisterデータを受信した場合、WAN側の装置と通信を行うためのアドレス情報32をWAN側に割り当てる。NAT装置12は、受信したRegisterデータのアドレス情報を、WAN側に割り当てられたアドレス情報32に変換し、中継装置17に対して中継する(S127)。中継装置17は、通信装置14、15からRegisterデータを受信し、通信装置14、15を登録する。
【0024】
通信装置14、15は、SIPに基づいた通信を開始する。通信装置14は、セッションの確立を要求するINVITEデータを、NAT装置11を介して中継装置17に対して送信する(S131)。なおINVITEデータには、NAT装置11のWAN側に割り当てられるアドレス情報であってNAT装置11とNAT装置12とが通信を行う場合に使用されるアドレス情報33が格納される。NAT装置11は、LAN側から受信したINVITEデータのアドレス情報を、WAN側に割り当てられたアドレス情報31に変換し、WAN側の中継装置17に対して中継する(S133)。中継装置17は、NAT装置11から受信したINVITEデータを、NAT装置12のWAN側に割り当てられたアドレス情報32宛に中継する(S135)。NAT装置12は、WAN側から受信したINVITEデータのアドレス情報32を、通信装置15のアドレス情報に変換し、LAN側に接続された通信装置15に対して中継する(S137)。通信装置15はINVITEデータを受信する。通信装置15は、INVITEデータに格納されたアドレス情報33を、通信装置14との通信時においてNAT装置11のWAN側に割り当てられ使用されるアドレス情報33として取得する。
【0025】
通信装置15は、受信したINVITEデータに応じ、NAT装置12を介して中継装置17に対して、200OKデータを送信する(S141)。なお200OKデータには、NAT装置12のWAN側に割り当てられるアドレス情報であってNAT装置12とNAT装置11とが通信を行う場合に使用されるアドレス情報34が格納される。NAT装置12は、LAN側から受信した200OKデータのアドレス情報を、WAN側に割り当てられたアドレス情報32に変換し、WAN側の中継装置17に対して中継する(S143)。中継装置17は、NAT装置12から受信した200OKデータを、NAT装置11のWAN側に割り当てられたアドレス情報31宛に中継する(S145)。NAT装置11は、WAN側から受信した200OKデータのアドレス情報31を、通信装置14のアドレス情報に変換し、LAN側に接続された通信装置14に対して中継する(S147)。通信装置14は200OKデータを受信する。通信装置14は、200OKデータに格納されたアドレス情報34を、通信装置15との通信時においてNAT装置12のWAN側に割り当てられ使用されるアドレス情報34として取得する。
【0026】
続いて通信装置14、15は、ICEによる通信を開始する。通信装置15は、NAT装置11のWAN側に割り当てられるアドレス情報33宛てのICE Checkデータを、NAT装置12に送信する(S151)。ICE Checkデータは、NAT装置11、12のWAN側に割り当てられたアドレス情報33、34が通信装置14、15間で通知された後、通知されたアドレス情報を用いて実際に通信端末14、15間でP2P通信を開始することが可能であるかを確認するためのデータである。NAT装置12は、通信装置15からICE Checkデータを受信した場合、受信したICE Checkデータのアドレス情報を、WAN側に割り当てられたアドレス情報34に変換し、NAT装置11に対して中継する(S153)。NAT装置11は、NAT装置12から送信されたICE Checkデータを受信し、LAN側の通信装置14に対して中継する(S155)。通信装置14はICE Checkデータを受信する。
【0027】
通信装置14は、受信したICE Checkに応じ、NAT装置11を介してNAT装置12に対してResponseデータを送信する(S161、S163)。Responseデータは、NAT装置12のWAN側に割り当てられたアドレス情報34宛に送信される。NAT装置12は、NAT装置11から受信したResponseデータを、LAN側の通信装置15に対して中継する(S165)。通信装置15は、Responseデータを受信する。
【0028】
通信装置14は、S161でResponseデータを送信した後、NAT装置12宛のICE Checkデータを、NAT装置11に対して送信する(S171)。NAT装置11は、受信したICE Checkデータのアドレス情報を、WAN側に割り当てられたアドレス情報33に変換し、NAT装置12のWAN側に割り当てられたアドレス情報34宛に送信する(S173)。NAT装置12は、NAT装置11から受信したICE Checkデータを、LAN側の通信装置15に対して中継する(S175)。通信装置15はICE Checkデータを受信する。通信装置15は、受信したICE Checkに応じ、NAT装置12を介してNAT装置11に対してResponseデータを送信する(S181、S183)。NAT装置11は、NAT装置12から受信したResponseデータを、LAN側の通信装置14に対して中継する(S185)。通信装置14はResponseデータを受信する。
【0029】
ICEによる通信が上述のようにして行われることによって、通信装置14は、NAT装置12のWAN側に割り当てられたアドレス情報として通知されたアドレス情報34を使用し、通信装置15とP2P通信を行うことが可能であると判断する。同様に通信装置15は、NAT装置11のWAN側に割り当てられたアドレス情報として通知されたアドレス情報33を使用し、通信装置14とP2P通信を行うことが可能であると判断する。これによって通信装置14、15は、通知されたアドレス情報を使用することによって、中継装置17を介することなくP2P通信を行うことが可能となる(S191)。
【0030】
NAT装置10には、Stateful Packet Inspection(SPI)と呼ばれる方法によって、パケットをフィルタリングする機能を備えているものがある。SPIを備えたNAT装置10における動作の概要は次の通りである。NAT装置10は、LAN側の通信装置13からデータを受信し、WAN側に向けてデータを中継する場合、データを送信した通信装置13のアドレス情報(以下、送信元アドレス情報という。)、および、データの宛先のアドレス情報(以下、宛先アドレス情報という。)を送信履歴としてHDD24に記憶する。
【0031】
NAT装置10が、LAN側の通信装置13に対するデータをWAN側から受信したとする。NAT装置10は、受信したデータの送信元のアドレス情報が宛先アドレス情報として送信履歴に記憶されており、且つ、受信したデータの宛先のアドレス情報が送信元アドレス情報として送信履歴に記憶されているかを判断する。該当するアドレス情報が送信履歴に記憶されている場合、NAT装置10は従来通り、LAN側の通信装置13に対して受信したデータを中継する。一方、該当する送信履歴が記憶されていない場合、WAN側に割り当てたアドレスを使用してLAN側からWAN側にデータが送信されない状態で、該アドレスに対するデータをWAN側から受信したことになる。このような場合、NAT装置10は、WAN側から不正にアクセスされたと判断し、割り当てたアドレス情報を無効化する。これによって、LAN側に接続された通信装置13を不正アクセスから保護する。
【0032】
図3を参照し、具体例を挙げて詳細に説明する。なお、図2で説明した通信の手順と同一部分については、同一符号を付し、説明を簡略化している。通信装置14、15から中継装置17に対してRegisterデータが送信されることによって(S121、S123、S125、S127)、中継装置17に通信装置14、15が登録される。また、NAT装置11のWAN側にアドレス情報31が割り当てられ、NAT装置12のWAN側にアドレス情報32が割り当てられる。またNAT装置11は、LAN側から受信したRegisterデータを送信した通信装置14のアドレス情報を、送信元アドレス情報として送信履歴に記憶する。またNAT装置11は、Registerデータの宛先である中継装置17のアドレス情報を、宛先アドレス情報として送信履歴に記憶する。同様にNAT装置12は、通信装置15のアドレス情報を送信元アドレス情報とし、中継装置17のアドレス情報を宛先アドレス情報として、送信履歴に記憶する。
【0033】
通信装置14、15は、SIPに基づいた通信を開始する。通信装置14は、中継装置17宛のINVITEデータを、NAT装置11に対して送信する(S131)。NAT装置11は、受信したINVITEデータを送信した通信装置14のアドレス情報を、送信元アドレス情報として送信履歴に記憶する。またNAT装置11は、INVITEデータの宛先である中継装置17のアドレス情報を、宛先アドレス情報として送信履歴に記憶する。NAT装置11は、INVITEデータを中継装置17に対して中継する(S133)。中継装置17は、INVITEデータをNAT装置12に対して中継する(S135)。
【0034】
NAT装置12は、中継装置17からINVITEデータを受信する。NAT装置12は、送信履歴を参照する。INVITEデータを送信した中継装置17のアドレス情報は、S125で通信装置15からRegisterデータを受信した時点で、宛先アドレス情報として送信履歴に記憶されている。またINVITEデータの宛先である通信装置15のアドレス情報は、S125で通信装置15からRegisterデータを受信した時点で、送信元アドレス情報として送信履歴に記憶されている。従ってNAT装置12は、中継装置17から受信したINVITEデータをLAN側の通信装置15に対して中継する(S137)。通信装置15はINVITEデータを受信する。
【0035】
通信装置15は、受信したINVITEデータに応じ、200OKデータをNAT装置12に対して送信する(S141)。NAT装置12は、受信した200OKデータを送信した通信装置15のアドレス情報を、送信元アドレス情報として送信履歴に記憶する。またNAT装置12は、200OKデータの宛先である中継装置17のアドレス情報を、宛先アドレス情報として送信履歴に記憶する。NAT装置12は、200OKデータを中継装置17に対して中継する(S143)。中継装置17は、200OKデータをNAT装置11に対して中継する(S145)。
【0036】
NAT装置11は、中継装置17から200OKデータを受信する。NAT装置11は、送信履歴を参照する。200OKデータを送信した中継装置17のアドレス情報は、S131で通信装置14からINVITEデータを受信した時点で、宛先アドレス情報として送信履歴に記憶されている。また200OKデータの宛先である通信装置14のアドレス情報は、S131で通信装置14からINVITEデータを受信した時点で、送信元アドレス情報として送信履歴に記憶されている。従ってNAT装置11は、中継装置17から受信した200OKデータをLAN側の通信装置14に対して中継する(S147)。通信装置14は200OKデータを受信する。
【0037】
通信装置14、15は、ICEによる通信を開始する。通信装置15は、NAT装置12を介してNAT装置11に対してICE Checkデータを送信する(S151)。NAT装置12は、通信装置15からICE Checkデータを受信する。送信履歴として、送信元アドレス情報(通信装置15のアドレス情報)、および、宛先アドレス情報(NAT装置11のアドレス情報)が記憶される。NAT装置12は、ICE CheckデータをNAT装置11に対して中継する(S153)。
【0038】
NAT装置11は、NAT装置12から送信されたICE Checkデータを受信する。NAT装置11は、送信履歴を参照する。ここで送信履歴として、S131で通信装置14からINVITEデータを受信した時点で、送信元アドレス情報(通信装置14のアドレス情報)、および、宛先アドレス情報(中継装置17のアドレス情報)が記憶されている。従って、ICE Checkデータを送信したNAT装置12のアドレス情報は、宛先情報として送信履歴に記憶されていない。従ってNAT装置11は、受信したICE Checkを通信装置14に対して中継せず、NAT装置12との通信時に使用するためにWAN側に割り当てたアドレス情報33を無効化する。
【0039】
通信装置15は、S151で送信したICE Checkに対応するResponseを受信できないため、NAT装置12を介してNAT装置11に対して、ICE Checkデータを再送する(S201、S203)。NAT装置11は、S153でICE Checkデータを受信した段階で、WAN側に割り当てたアドレス情報33を無効化しているため、通信装置15から再送されたICE Checkデータを受信することができない。
【0040】
また通信装置14は、NAT装置11に対して、NAT装置12宛のICE Checkデータを送信する(S205)。NAT装置11は、通信装置14からICE Checkデータを受信する。NAT装置11は、S153でICE Checkデータを受信した段階で、WAN側に割り当てたアドレス情報33を無効化している。従ってNAT装置11は、通信装置14から受信したICE CheckデータをNAT装置12に対して中継することができない。また、通信装置14からICE Checkデータが再送された場合(S207)も同様に、NAT装置11はICE CheckデータをNAT装置12に中継することができない。
【0041】
このように、通信装置13間に介在するNAT装置10がSPIの機能を備えていると、通信装置13がSIPおよびICEを利用してP2P通信を開始させようとした場合に、NAT装置10のWAN側に割り当てられたアドレス情報が無効化されてしまう場合がある。この場合通信装置13は、他の通信装置13との間でP2P通信を開始させることができなくなる。これに対して本発明では、NAT装置10のWAN側に割り当てられたアドレス情報が無効化されることを抑止するために、通信装置13はICE Checkデータを送信するタイミングを制御する。これによって、NAT装置10がSPIの機能を備えている場合でも、通信装置13間でP2P通信を開始することができるようになる。詳細は以下のとおりである。
【0042】
図4を参照し、通信装置13においてICE Checkデータを送信するタイミングが制御された場合の通信の手順について説明する。なお、図2、3で説明した通信の手順と同一部分については、同一符号を付し、説明を簡略化している。
【0043】
通信装置13は、SIPに基づく通信を開始する前に、通信装置13と中継装置17との間の通信遅延時間を特定する。通信遅延時間は、通信装置13からデータが送信されてから、中継装置17に到達するまでに要する時間であり、同様に、中継装置17からデータが送信されてから、通信装置13に到達するまでに要する時間である。通信装置13から中継装置17に向かう方向のデータに対応する通信遅延時間と、中継装置17から通信装置13に向かう方向のデータに対応する通信遅延時間とは、厳密に一致しない場合もある。しかしながら通信装置13は、双方が略同一であるとみなし、双方を同様に扱う。通信遅延時間の計測方法については後述する。なお以下、通信装置14によって特定された通信遅延時間を、通信遅延時間Aといい、通信装置15によって特定された通信遅延時間を、通信遅延時間Bという。
【0044】
通信装置14は、上述のようにして特定した通信時間AをINVITEデータに格納し、NAT装置11を介して中継装置17に対して送信する(S131、S133)。中継装置17は、INVITEデータをNAT装置12に対して中継する(S135)。NAT装置12は、INVITEデータを通信装置15に対して中継する(S137)。通信装置15は、INVITEデータに応じ、NAT装置12を介して中継装置17に対して200OKデータを送信する(S141、S143)。中継装置17は、200OKデータをNAT装置11に対して中継する(S145)。NAT装置11は、200OKデータを通信装置14に対して中継する(S147)。通信装置14は、200OKデータを受信する。
【0045】
ここで通信装置15は、図3で示した通信手順とは異なり、S141で中継装置17に対して200OKデータを送信した後、直ぐにICE CheckデータをNAT装置11に対して送信しない。通信装置15は、S137で受信したINVITEデータに格納されている通信遅延時間Aと、通信装置15が計測した通信遅延時間Bとを加算し、待機時間A+Bとして算出する。通信装置15は、S141で200OKデータを送信した後、待機時間A+B分待った後、NAT装置12に対してICE Checkデータを送信する(S221)。NAT装置12は、通信装置15から受信したICE CheckデータをNAT装置11に対して中継する(S223)。NAT装置12には、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)が送信履歴として記憶される。
【0046】
一方、通信装置14では、S147で200OKデータを受信した後、NAT装置11に対してICE Checkデータを送信する(S225)。NAT装置11は、通信装置14から受信したICE CheckデータをNAT装置12に対して中継する(S227)。NAT装置11には、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)が送信履歴として記憶される。
【0047】
上述において、通信装置15は、200OKデータを送信した(S141)後、待機時間A+B分待った後、ICE Checkデータを送信している(S221)。待機時間A+Bは、通信装置15−(NAT装置12)−中継装置17の通信遅延時間と、中継装置17−(NAT装置11)−通信装置14の通信遅延時間とを加算した時間である。従って待機時間A+Bは、通信装置15が200OKデータを送信してから、送信された200OKデータが通信装置14に到達する時間と略同一になる。従って、通信装置15からICE Checkデータが送信されるタイミングと、通信装置14が200OKを受信するタイミングは略同一になる。このため、通信装置15から送信されたICE CheckデータがNAT装置11に到達する前に、通信装置14からNAT装置11に対してICE Checkデータが送信され、NAT装置11は通信装置14からICE Checkデータを受信する。
【0048】
通信装置15から送信されたICE Checkデータが、NAT装置11に到達したとする(S223)。この時点でNAT装置11は、既に通信装置14からICE Checkデータを受信しているので(S225)、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)が送信履歴として記憶されている。NAT装置11の送信履歴には、WAN側から受信したICE Checkデータの送信元のアドレス情報(NAT装置12のアドレス情報)が宛先アドレス情報として記憶されており、ICE Checkデータの宛先のアドレス情報(通信装置14のアドレス情報)が送信元アドレス情報として記憶されていることになる。従ってNAT装置11は、受信したICE Checkデータを、LAN側の通信装置14に対して中継する(S229)。図3で説明した場合のように、NAT装置11のWAN側に割り当てられたアドレス情報33は無効化されない。通信装置14は、ICE Checkを受信する。
【0049】
同様に、通信装置14から送信されたICE Checkデータが、NAT装置12に到達したとする(S227)。この時点でNAT装置12は、既に通信装置15からICE Checkデータを受信しているので(S221)、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)が送信履歴として記憶されている。NAT装置12の送信履歴には、WAN側から受信したICE Checkデータの送信元のアドレス情報(NAT装置11のアドレス情報)が宛先アドレス情報として記憶されており、ICE Checkデータの宛先のアドレス情報(通信装置15のアドレス情報)が送信元アドレス情報として記憶されていることになる。従ってNAT装置12は、受信したICE Checkデータを、LAN側の通信装置15に対して中継する(S231)。NAT装置12のWAN側に割り当てられたアドレス情報34は無効化されない。通信装置15は、ICE Checkデータを受信する。
【0050】
通信装置14は、S229で受信したICE Checkデータに応じ、Responseデータを送信する(S233)。NAT装置11は、通信装置14からResponseデータを受信し、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)を送信履歴として記憶する。NAT装置11は、ResponseデータをNAT装置12に対して中継する(S235)。また通信装置15は、S231で受信したICE Checkデータに応じ、Responseデータを送信する(S237)。NAT装置12は、通信装置15からResponseデータを受信し、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)を送信履歴として記憶する。NAT装置12は、ResponseデータをNAT装置11に対して中継する(S241)。
【0051】
NAT装置12は、S241でNAT装置11に対してResponseデータを送信した後、NAT装置11からResponseデータを受信する(S235)。この時点でNAT装置12は、既に通信装置15からResponseデータを受信しているので(S237)、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)が送信履歴として記憶されている。従ってNAT装置12は、受信したResponseデータを、LAN側の通信装置15に対して中継する(S239)。同様にNAT装置11は、S235でNAT装置12に対してResponseデータを送信した後、NAT装置12からResponseデータを受信する(S241)。この時点でNAT装置11は、既に通信装置14からResponseデータを受信しているので(S233)、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)が送信履歴として記憶されている。従ってNAT装置11は、受信したResponseデータを、LAN側の通信装置14に対して中継する(S243)。
【0052】
以上のように通信が実行されることによって、図3を参照して説明した場合のように、NAT装置11、12のWAN側に割り当てられたアドレス情報33、34は無効化されない。これによって通信装置14、15は、INVITEデータおよび200OKデータの通信によって通知されたアドレス情報を使用することによって、中継装置17を介することなくP2P通信を行うことが可能となる(S245)。このように通信装置15は、200OKデータに応じて送信するICE Checkデータの送信タイミングを制御することができる。従って、通信装置15がICE Checkデータを送信するタイミングと、通信装置14がICE Checkデータを送信するタイミングとを、良好に近似させることができる。従って通信装置13は、ICE Checkデータの通信によってNAT装置10のWAN側に割り当てられたアドレス情報33、34がSPIによって無効化されることを効果的に抑止できる。
【0053】
図5から図7を参照し、通信装置13が実行するメイン処理について説明する。以下説明するメイン処理は、HDD24に記憶されている通信プログラムに従って、通信装置13のCPU21が実行する。メイン処理は、通信装置13の電源がONされた場合に、HDD24に記憶されたメイン処理用のプログラムが起動されて開始される。そして、CPU21がこのプログラムを実行することにより行われる。
【0054】
図5に示すように、メイン処理が開始されると、はじめにCPU21は、NAT装置10を介して中継装置17に対し、Registerデータを送信する。これによってCPU21は、中継装置17に通信装置13を登録する(S10)(S121、S125(図4参照))。また、NAT装置10がLAN側からWAN側にRegisterデータを中継することによって、NAT装置10のWAN側に、WAN側の装置と通信を行うためのアドレス情報(アドレス情報31、32、図4参照)が割り当てられる。
【0055】
CPU21は、中継装置17と通信を行うことによって通信遅延時間を特定する(S11)。通信遅延時間は次のようにして計測される。通信装置13は、NAT装置10を介して中継装置17に対して往路データを送信する。中継装置17は、通信装置13から往路データを受信した場合、NAT装置10を介して通信装置13に対して復路データを送信する。通信装置13は、中継装置17から送信された復路データを、NAT装置10を介して受信する。通信装置13は、往路データを送信してから復路データを受信するまでの時間を計測し、計測した時間を二分することによって、片道分の通信に要した時間を算出する。通信装置13は、上述の通信を複数回(例えば10回)繰り返し、時間を繰り返し算出する。通信装置13は、算出した時間の平均を、通信遅延時間として特定する。このようにして通信装置13は、中継装置17との間の通信遅延時間を、より正確に且つ容易に取得している。
【0056】
CPU21は、入力部26を介して、他の通信装置13との間のP2P通信を開始する指示の入力操作を検出したか判断する(S13)。入力操作を検出した場合(S13:YES)、CPU21は、他の通信装置13に対してINVITEデータを送信することによって他の通信装置13との間のセッションを確立し、他の通信装置13との間でP2P通信を開始する処理(発呼側処理、図6参照)を実行する(S15)。発呼側処理の詳細は後述する。発呼側処理の終了後、メイン処理は終了する。一方、他の通信装置13との間のP2P通信を開始する指示の入力操作を検出しない場合(S13:NO)、CPU21は、他の通信装置13から送信されたINVITEデータを受信したか判断する(S17)。他の通信装置13から送信されたINVITEデータを受信した場合(S17:YES)(S137(図4参照))、CPU21は、INVITEデータに応じて他の通信装置13との間のセッションを確立し、他の通信装置13との間でP2P通信を開始する処理(着呼側処理、図7参照)を実行する(S19)。着呼側処理の詳細は後述する。着呼側処理の終了後、メイン処理は終了する。
【0057】
図6を参照し、発呼側処理について説明する。なお以下では、図4における通信装置14のCPU21において実行される発呼側処理を想定して説明する。CPU21は、通信装置15との通信時にNAT装置11のWAN側に割り当てられて使用されるアドレス情報33(図4参照)を、STUNサーバに問い合わせることによって特定する(S21)。CPU21は、S11(図5参照)で特定した通信遅延時間Aと、S21で特定されたアドレス情報33を、INVITEデータに格納する(S23)。CPU21は、通信遅延時間Aおよびアドレス情報33が格納されたINVITEデータを、NAT装置11を介して中継装置17に対して送信する(S25)(S131(図4参照))。CPU21は、INVITEデータに応じて通信装置15から送信される200OKデータを受信したか判断する(S27)。200OKデータを受信していないと判断した場合(S27:NO)、継続して200OKデータの受信を監視するために、処理はS27に戻る。
【0058】
通信装置15から送信された200OKデータを受信した場合(S27:YES)(S147(図4参照))、CPU21は、受信した200OKデータが、S25で送信したINVITEデータに応じて通信装置15から送信されたものであるかを判断することによって、200OKデータを解析する(S29)。INVITEデータに応じて通信装置15から送信された200OKデータであった場合、CPU21は、200OKデータに格納されたアドレス情報34(図4参照)を取得する。CPU21は、ICEによる通信を次のように実行する(S31)。CPU21は、取得されたアドレス情報34を使用し、通信装置15に対してICE Checkデータを送信する(S225(図4参照)。ICE Checkデータを送信した後、CPU21は、通信装置15から送信されたICE Checkデータを受信する(S229(図4参照))。CPU21は、受信したICE Checkデータに応じ、通信装置15に対してResponseデータを送信する(S233(図4参照))。CPU21は、ICE Checkデータに応じて通信装置15から送信されたResponseデータを受信する(S243(図4参照))。
【0059】
ICEによる以上の通信を行うことによって、通信装置14、15間でP2P通信を行うことが可能な状態になる。CPU21は、通信装置15との間でセッションを確立させ、P2P通信を開始する(S33)(S245(図4参照))。P2P通信の終了後、発呼側処理は終了し、処理はメイン処理(図5参照)に戻る。
【0060】
図7を参照し、着呼側処理について説明する。なお以下では、図4における通信装置15のCPU21において実行される着呼側処理を想定して説明する。CPU21は、S17(図5参照)で受信したINVITEデータに、通信遅延時間Aが格納されているかを判断することによって、INVITEデータを解析する(S41)。INVITEデータに通信遅延時間Aが格納されていた場合、CPU21は、INVITEデータに格納されたアドレス情報33(図4参照)を取得する。CPU21は、通信装置14との通信時にNAT装置12のWAN側に割り当てられて使用されるアドレス情報34(図4参照)を、STUNサーバに問い合わせることによって特定する(S43)。CPU21は、S17で受信したINVITEデータに格納されていた通信遅延時間Aと、S11(図5参照)で特定した通信遅延時間Bとを加算することによって、待機時間A+Bを算出する(S45)。
【0061】
CPU21は、S17で受信したINVITEデータに応じる200OKデータを、NAT装置12を介して中継装置17に対して送信する(S47)(S141(図4参照))。200OKデータには、S43で取得されたアドレス情報34が格納される。200OKデータの送信後、CPU21は、200OKデータを送信してからの経過時間が、待機時間A+Bに達したかを判断する(S49)。CPU21は、経過時間が待機時間A+Bに達していない場合(S49:NO)、処理はS49に戻る。一方、経過時間が待機時間A+Bに達した場合(S49:YES)、ICEによる通信を次のように実行する(S51)。CPU21は、取得されたアドレス情報33を使用し、通信装置14に対してICE Checkデータを送信する(S221(図4参照))。ICE Checkデータを送信した後、CPU21は、通信装置14から送信されたICE Checkデータを受信する(S231(図4参照))。CPU21は、受信したICE Checkデータに応じ、通信装置14に対してResponseデータを送信する(S237(図4参照))。CPU21は、ICE Checkデータに応じて通信装置14から送信されたResponseデータを受信する(S239(図4参照))。
【0062】
ICEによる以上の通信を行うことによって、通信装置14、15間でP2P通信を行うことが可能な状態になる。CPU21は、通信装置14との間でセッションを確立させ、P2P通信を開始する(S53)(S245(図4参照))。P2P通信の終了後、着呼側処理は終了し、処理はメイン処理(図5参照)に戻る。
【0063】
通信装置15は、200OKデータを送信してから待機時間A+B分待機した後、ICE Checkデータを通信装置14に対して送信することによって、通信装置15が通信装置14に対してICE Checkデータを送信するタイミングと、通信装置15によって送信された200OKデータを通信装置14が受信するタイミングとを近似させている。通信装置14では、200OKデータを受信した直後に、通信装置15に対してICE Checkデータを送信することになるので、通信装置14からICE Checkデータが送信されるタイミングと、通信装置15からICE Checkデータが送信されるタイミングとが近似することになる。従ってNAT装置11は、NAT装置12からICE Checkデータを送信する前に、通信装置14からICE Checkデータを受信することになり、送信履歴がHDD24に記憶される。NAT装置11は、この送信履歴を参照することによって、NAT装置12からICE Checkデータを受信した場合に、アドレス情報33を無効化することなく、通信装置14に対して中継することができる。
【0064】
以上のようなタイミング制御を行うことによって、通信装置15は、SPIを備えたNAT装置11が通信装置14との間に介在する場合であっても、NAT装置11のWAN側に割り当てられたアドレス情報33がICEによる通信によって無効化されることを抑止することができる。従って通信装置15は、通信装置14との間に介在するNAT装置11がSPIを備えている場合でも、通信装置14との間にセッションを確立し、P2P通信を適切に開始することが可能となる。
【0065】
なお本発明は上述の実施形態に限定されず、種々の変更が可能である。上述において通信装置15は、通信遅延時間A、Bを加算することによって待機時間A+Bを算出していた。これに対し、通信装置15は、通信遅延時間A、Bを加算した値に所定のマージンを加算することによって待機時間を算出してもよい。所定のマージンは、例えば、通信装置14が200OKデータを受信してから、通信装置15に対してICE Checkデータを送信するまでに要する処理時間としてもよい。通信装置14、15において通信遅延時間を特定する方法は、上述以外の方法であってもよい。例えば、通信遅延時間を計測するための周知の方法(例えばping)が用いられてもよい。また、例えば中継装置17が、通信装置14、15との間の通信遅延時間を計測する機能を備えていてもよい。通信装置14、15は、中継装置17に問い合わせることによって、中継装置17から通信遅延時間を取得してもよい。通信装置15は、通信遅延時間A、B、および、通信装置14からINVITEデータを受信した時刻に基づいて、ICE Checkデータを送信する時刻を特定し、特定した時刻で、ICE Checkデータを通信装置14に対して送信してもよい。
【0066】
上述では、通信装置15が待機時間A+Bを算出することによってICE Checkデータの送信タイミングを制御していた。これに対し、通信装置14、15の両方がICE Checkデータの送信タイミングを制御してもよい。以下、図8から図10を参照し、本発明の変形例について説明する。図8を参照し、変形例において、通信装置14、15の両方がICE Checkデータの送信タイミングを制御する場合の通信の手順について説明する。なお、図4で説明した通信の手順と同一部分については、同一符号を付し、説明を省略または簡略化している。
【0067】
通信装置13は、SIPに基づく通信を開始する前に、通信装置13と中継装置17との間の通信遅延時間を特定する。通信装置14は、通信遅延時間Aに加えて、INVITEデータの送信時の時刻をINVITEデータに格納し、NAT装置11を介して中継装置17に対して送信する(S131、S133)。以下、通信装置14がINVITEデータを送信した時刻を、時刻Cという。中継装置17は、INVITEデータをNAT装置12に対して中継する(S135)。NAT装置12は、INVITEデータを通信装置15に対して中継する(S137)。通信装置15は、INVITEデータを受信する。通信装置15は、INVITEデータを受信した時刻を、RAM23に記憶する。以下、通信装置15がINVITEデータを受信した時刻を、時刻Dという。通信装置15は、受信したINVITEデータを解析する(S41、図7参照)。以下、通信装置15がINVITEデータを解析するために要する時間を、解析時間Eという。
【0068】
通信装置15は、INVITEデータに格納された通信遅延時間Aおよび時刻C、INVITEデータを受信した時刻D、最初に特定した通信遅延時間B、および、解析時間Eに基づいて、通信装置14、15においてICE Checkデータを送信するタイミングを決定する。詳細は以下のとおりである。
【0069】
通信装置14におけるICE Checkデータの送信タイミングは、通信遅延時間Aを2倍した時間(2A)、通信遅延時間Bを2倍した時間(2B)、および、解析時間Eを2倍した時間(2E)を加算した時間(2(A+B+E))分、INVITEを送信した時刻Cから経過した時点の時刻(C+2(A+B+E))に決定される。この時刻は、通信装置14からINVITEデータが送信されてから通信装置15に到達するまで(S131、133、135、137)に要する時間(A+B)、通信装置15においてINVITEデータが解析される場合に要する時間(E)、通信装置15から200OKデータが送信されてから通信装置14に到達するまで(S141、143、145、147)に要する時間(A+B)、および、通信装置14において200OKデータが解析される場合に要する時間(E)を加算し、通信装置14がINVITEデータを送信した時刻(C)に加算結果を反映させることによって導き出されている。ここで通信装置15は、通信装置14において200OKデータを解析する場合に要する時間が、通信装置15においてINVITEデータを解析する場合に要する時間(E)とほぼ同一であると判断し、上述の計算を行っている。以下、上述のようにして算出された、通信装置14がICE Checkデータを送信する時刻(C+2(A+B+E))を、発呼側時刻という。
【0070】
通信装置15におけるICE Checkデータの送信タイミングは、通信遅延時間A、通信遅延時間B、および、解析時間Eを2倍した時間(2E)を加算した時間(A+B+2E)分、INVITEデータを受信した時刻Dから経過した時点の時刻(D+A+B+2E)に決定される。この時刻は、通信装置15から送信された200OKデータに応じて通信装置14がICE Checkデータを通信装置15に対して送信する場合の時刻を想定し、この時刻と同じ時刻で、通信装置15がICE Checkデータを送信できるように決定される。従って、通信装置15においてINVITEデータを解析する場合に要する時間(E)、通信装置15から200OKデータが送信されてから通信装置14に到達するまで(S141、143、145、147)に要する時間(A+B)、および、通信装置14において200OKデータを解析する場合に要する時間(E)を加算し、通信装置15がINVITEデータを受信した時刻(D)に加算結果を反映させることによって導き出されている。発呼側時刻を算出した場合と同様、通信装置15は、通信装置14において200OKデータを解析する場合に要する時間が、通信装置15においてINVITEデータを解析する場合に要する時間(E)とほぼ同一であると判断している。以下、上述のようにして算出された、通信装置15がICE Checkを送信する時刻(D+A+B+2E)を、着呼側時刻という。
【0071】
通信装置15は、INVITEデータに応じて通信装置14に送信する200OKデータに、発呼側時刻を示す発呼側時刻情報を格納する。通信装置15は、NAT装置12を介して中継装置17に対して200OKデータを送信する(S141、S143)。中継装置17は、200OKデータをNAT装置11に対して中継する(S145)。NAT装置11は、200OKデータを通信装置14に対して中継する(S147)。通信装置14は、200OKデータを受信する。
【0072】
通信装置15は、200OKデータを通信装置14に対して送信した後、算出した着呼側時刻まで待機し、NAT装置12に対してICE Checkデータを送信する(S251)。NAT装置12は、通信装置15から受信したICE CheckデータをNAT装置11に対して中継する(S253)。NAT装置12には、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)が送信履歴として記憶される。一方、通信装置14では、S147で受信した200OKデータに格納された発呼側時刻情報に基づいて、発呼側時刻を特定する。通信装置14は、発呼側時刻まで待機し、NAT装置11に対してICE Checkデータを送信する(S255)。NAT装置11は、通信装置14から受信したICE CheckデータをNAT装置12に対して中継する(S257)。NAT装置11には、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)が送信履歴として記憶される。
【0073】
ここで上述では、通信装置14からICE Checkデータが送信される時刻と、通信装置15からICE Checkデータが送信される時刻とがほぼ同一時刻となるように、発呼側時刻および着呼側時刻が算出されている。このため、通信装置15から送信されたICE CheckデータがNAT装置11に到達する(S253)前に、通信装置14からNAT装置11に対してICE Checkデータが送信され(S255)、NAT装置11は通信装置14からICE Checkデータを受信する。従って、通信装置15から送信されたICE CheckデータがNAT装置11に到達した場合(S253)、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)がNAT装置11の送信履歴として記憶された状態になっている。従ってNAT装置11は、NAT装置12から受信したICE Checkデータを、LAN側の通信装置14に対して中継する(S261)。NAT装置11は、WAN側に割り当てたアドレス情報33を無効化しない。通信装置14は、ICE Checkデータを受信する。
【0074】
同様に、通信装置14から送信されたICE Checkデータが、NAT装置12に到達した場合(S257)、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)がNAT装置12の送信履歴として記憶された状態になっている。従ってNAT装置12は、受信したICE Checkデータを、LAN側の通信装置15に対して中継する(S259)。NAT装置12は、WAN側に割り当てたアドレス情報34を無効化しない。通信装置15は、ICE Checkデータを受信する。
【0075】
以上の通信を実行することによって、通信装置14、15は、INVITEデータおよび200OKデータの通信によって通知されたアドレス情報33、34を使用して、P2P通信を行うことが可能となる(S281)。上述の実施形態とは異なり、変形例において通信装置15は、通信装置14におけるICE Checkデータの送信タイミングも制御する。ここで通信装置15は、通信装置14がICE Checkデータを送信するタイミングを、発呼側時刻によって通知するので、通信装置14は、通知された発呼側時刻を基準にしてICE Checkデータを送信するタイミングを特定することができる。通信装置14に対して通知される発呼側時刻は、通信装置14がINVITEデータを送信した時刻Cに基づいて特定される。従って、通信装置14、15の其々において管理する時刻がずれている場合でも、通信装置15は、通信装置14から所望のタイミングでICE Checkデータを送信させることができる。
【0076】
ここで通信装置15が、通信装置14が200OKデータを受信してからICE Checkデータを送信するまでの待機時間を、発呼側時刻の代わりに通信装置14に対して通知した場合を想定する。この場合、200OKデータの通信に要した時間が、算出された通信遅延時間A、Bと異なると、通信装置14からICE Checkデータが送信されるタイミングは、通信装置15からICE Checkデータが送信されるタイミングからずれてしまう。待機時間は、通信遅延時間A、Bに基づいて決定されるためである。例えば200OKデータの通信に要した時間が通信遅延時間A、Bよりも長くなると、長くなった分、通信装置14がICE Checkデータを送信する時間が遅れてしまう。この場合、NAT装置11がLAN側からWAN側に向かう方向にICE Checkデータを中継する(S255、S257)前に、NAT装置11はWAN側からICE Checkデータを受信してしまう可能性がある(S253)。このような場合、WAN側に割り当てられたアドレス情報33は無効化されてしまう。
【0077】
これに対して変形例では、通信装置15はICE Checkデータを送信する発呼側時刻を決定する。通信装置14は、発呼側時刻に基づいてICE Checkデータを送信するタイミングを制御する。従って、NAT装置11、12間の伝送路の通信状態が変化し、200OKデータの通信に要した時間が通信遅延時間A、Bと相違する場合でも、通信装置14は発呼側時刻を基準としてICE Checkデータの送信タイミングを決定できるので、通信装置14から送信されるICE Checkデータの送信タイミングを、通信装置15から送信されるICE Checkデータの送信タイミングと良好に近似させることができる。
【0078】
図9および図10を参照し、変形例における発呼側処理および着呼側処理について説明する。変形例における発呼側処理および着呼側処理は、上述の実施形態における発呼側処理および着呼側処理の代わりにメイン処理から呼び出され、実行される。メイン処理は、上述した実施形態と同一であるので、以下では説明を省略している。
【0079】
図9を参照し、変形例における発呼側処理について説明する。なお以下では、図8における通信装置14のCPU21において実行される発呼側処理を想定して説明する。CPU21は、通信装置15との通信時にNAT装置11のWAN側に割り当てられて使用されるアドレス情報33(図8参照)を、STUNサーバに問い合わせることによって特定する(S61)。CPU21は、S11(図5参照)で特定した通信遅延時間AをINVITEデータに格納する(S63)。次いでCPU21は、INVITEデータを送信する時刻Cを、INVITEデータに格納する(S65)。CPU21は、通信遅延時間A、時刻C、およびアドレス情報33が格納されたINVITEデータを、NAT装置11を介して中継装置17に対して送信する(S67)(S131(図8参照))。CPU21は、INVITEデータに応じて通信装置15から送信される200OKデータを受信したか判断する(S69)。200OKデータを受信していないと判断した場合(S69:NO)、継続して200OKデータの受信を監視するために、処理はS69に戻る。
【0080】
通信装置15から送信された200OKデータを受信した場合(S69:YES)(S147(図8参照))、CPU21は、受信した200OKデータが、S67で送信したINVITEデータに応じて通信装置15から送信されたものであるかを判断することによって、200OKデータを解析する(S71)。INVITEデータに応じて通信装置15から送信された200OKデータであった場合、CPU21は、200OKデータに格納されたアドレス情報34(図8参照)を取得する。CPU21は、200OKデータに格納されている発呼側時刻情報を取得し、発呼側時刻(C+2(A+B+E))を特定する(S73)。CPU21は、発呼側時刻となったかを判断する(S75)。発呼側時刻となっていない場合(S75:NO)、継続して待機するために、処理はS75に戻る。
【0081】
一方、発呼側時刻となった場合(S75:YES)、CPU21は、200OKデータから取得されたアドレス情報34を使用し、通信装置15に対してICE Checkデータを送信する(S255(図8参照))ことによって、ICEによる通信を実行する(S77)。ICEによる通信が終了した場合、通信装置14、15間でP2P通信を行うことが可能な状態になる。CPU21は、通信装置15との間でセッションを確立させ、P2P通信を開始する(S79)(S281(図8参照))。P2P通信の終了後、発呼側処理は終了し、処理はメイン処理(図5参照)に戻る。
【0082】
図10を参照し、着呼側処理について説明する。なお以下では、図8における通信装置15のCPU21において実行される着呼側処理を想定して説明する。CPU21は、S17(図5参照)でINVITEデータを受信した時刻Dを取得する(S91)。CPU21は、S17で受信したINVITEデータに、通信遅延時間Aおよび時刻Cが格納されているかを判断することによって、INVITEデータを解析する(S93)。INVITEデータに通信遅延時間Aおよび時刻Cが格納されていた場合、CPU21は、INVITEデータに格納されたアドレス情報33(図8参照)を取得する。CPU21は、通信装置14との通信時にNAT装置12のWAN側に割り当てられて使用されるアドレス情報34(図8参照)を、STUNサーバに問い合わせることによって特定する(S95)。
【0083】
CPU21は、通信装置14においてICE Checkデータを送信するまでの待機時間(2(A+B+E))を、通信遅延時間A、B、および、解析時間Eに基づいて算出する(S97)。CPU21は、INVITEデータに格納されていた時刻Cから待機時間(2(A+B+E))分経過した時刻を、発呼側時刻として特定する(S99)。CPU21は、通信装置15においてICE Checkデータを送信するまでの待機時間(A+B+2E)を、通信遅延時間A、B、および、解析時間Eに基づいて算出する(S101)。CPU21は、S91で取得した時刻Dから待機時間(A+B+2E)分経過した時刻を、着呼側時刻として特定する(S103)。
【0084】
CPU21は、S17で受信したINVITEデータに応じる200OKデータに、S99で特定した発呼側時刻を示す発呼側時刻情報を格納する(S105)。CPU21は、INVITEデータから取得されたアドレス情報33を使用し、発呼側時刻情報、および、S95で取得されたアドレス情報34を格納した200OKデータを、NAT装置12を介して中継装置17に対して送信する(S107)(S141(図8参照))。200OKデータの送信後、CPU21は、S103で特定した着呼側時刻となったかを判断する(S109)。着呼側時刻となっていない場合(S109:NO)、継続して待機するために、処理はS109に戻る。
【0085】
一方、着呼側時刻となった場合(S109:YES)、CPU21は、INVITEデータから取得されたアドレス情報33を使用し、通信装置14に対してICE Checkデータを送信する(S251(図8参照)ことによって、ICEによる通信を実行する(S111)。ICEによる通信が終了した場合、通信装置14、15間でP2P通信を行うことが可能な状態になる。CPU21は、通信装置15との間でセッションを確立させ、P2P通信を開始する(S113)(S281(図8参照))。P2P通信の終了後、発呼側処理は終了し、処理はメイン処理(図5参照)に戻る。
【0086】
以上説明したように、通信装置15は、通信装置14がICE Checkデータを送信する場合の送信タイミングだけでなく、通信装置14が200OKデータに応じて送信するICE Checkデータの送信タイミングも制御することができる。これによって、通信装置14、15において特定された通信遅延時間と、実際の通信に要した通信時間とが相違する場合であっても、通信装置14がICEデータを送信するタイミングと、通信装置15がICE Checkデータを送信するタイミングとを、良好に近似させることができる。更に通信装置15は、通信装置14におけるICE Checkデータの送信タイミングを、通信装置14の時刻Cに基づき特定された時刻を指定することによって通知する。これによって、通信装置14、15の双方が管理する時刻がずれている場合であっても、通信装置14がICEデータを送信するタイミングと、通信装置15がICE Checkデータを送信するタイミングとを、良好に近似させることができる。以上によって通信装置15は、ICE Checkデータの通信によってNAT装置11に割り当てられたアドレス情報33がSPIによって無効化されることを、さらに効果的に抑止することができる。
【0087】
なお上述の変形例において、発呼側時刻および着呼側時刻を特定する場合に解析時間Eは考慮されなくてもよい。なお解析時間Eは、通信遅延時間A、Bと比較して非常に短い時間であるため、解析時間Eを考慮することなく発呼皮時刻および着呼側時刻が特定された場合でも、ICE Checkデータが送信されるタイミングは通信装置14、15間でほぼ一致する。また通信装置15は、発呼側時刻の代わりに待機時間(2(A+B+E))を通知することによって、通信装置14から送信されるICE Checkデータのタイミング制御を行ってもよい。通信装置14は、INVITEデータを送信した時刻Cから、通知された待機時間(2(A+B+E))分経過した時刻に、ICE Checkデータを送信してもよい。通信装置15は、発呼側時刻情報を200OKデータに格納し、通信装置14に対して送信していた。これに対し、例えば通信装置15は、INVITEデータに応じて180Ringingデータを通信装置14に送信し、所定時間経過後、200OKデータを通信装置14に送信してもよい。そして通信装置15は、180Ringingデータに発呼側時刻情報を格納し、送信してもよい。この場合、通信装置15は、180Ringingデータを送信してから200OKデータを送信するまでの時間を考慮して発呼側時刻情報を特定してもよい。これによって通信装置15は、200OKデータを受信する前に発呼側時刻情報を取得することができるので、200OKデータを受信してからICE Checkデータを送信するまでの処理を軽減し、迅速にICE Checkデータを送信することができる。
【0088】
なお、S11の処理を行うCPU21が本発明の「取得手段」に相当する。S25、S67の処理を行うCPU21が本発明の「第一送信手段」に相当する。S17の処理を行うCPU21が本発明の「第一受信手段」に相当する。S47、S107の処理を行うCPU21が本発明の「第二送信手段」に相当する。S45、S101、S103の処理を行うCPU21が本発明の「第一算出手段」に相当する。S51、S111の処理を行うCUP21が本発明の「第三送信手段」に相当する。S31、S71の処理を行うCPU21が本発明の「第四送信手段」に相当する。INVITEデータが本発明の「要求データ」に相当する。200OKデータが本発明の「応答データ」に相当する。ICE Checkデータが本発明の「設定データ」に相当する。S11の処理が本発明の「取得ステップ」に相当する。S25、S67の処理が本発明の「第一送信ステップ」に相当する。S17の処理が本発明の「第一受信ステップ」に相当する。S47、S107の処理が本発明の「第二送信ステップ」に相当する。S45、S101、S103の処理が本発明の「第一算出ステップ」に相当する。S51、S111の処理が本発明の「第三送信ステップ」に相当する。
【符号の説明】
【0089】
1 通信システム
10、11、12 NAT装置
13、14、15 通信装置
17 中継装置
【技術分野】
【0001】
本発明は、Network Address Translation(NAT)装置のLAN側に接続し、他のNAT装置のLAN側に接続する他の通信装置と通信を行う通信装置、通信方法、および通信プログラムに関する。
【背景技術】
【0002】
Stateful Packet Inspection(SPI)と呼ばれる方法によってパケットをフィルタリングするNetwork Address Translation(NAT)装置が知られている。SPIを備えたNAT装置は、LAN側からWAN側に向けてデータを送信した場合、送信履歴をセッションログとして記憶する。NAT装置は、WAN側からLAN側に向かうデータを受信した場合、受信したデータがセッションログと矛盾しないかを判断する。例えばNAT装置は、WAN側からLAN側に向かうデータを受信した場合、受信したデータの送信元アドレスを宛先アドレスとするデータの送信履歴が、セッションログとして記憶されているかを確認する。該当する送信履歴がセッションログとして記憶されていない場合、WAN側に割り当てたアドレスを使用してLAN側からWAN側にデータが送信される前に、該アドレスに対するデータをWAN側から受信したことになる。このような場合、NAT装置は、WAN側から不正にアクセスされたと判断し、割り当てたアドレスを無効化する。これによって、LAN側に接続された通信装置を不正アクセスから保護している。
【0003】
一方で、SPIを備えたNAT装置のLAN側に接続する通信装置と、他のNAT装置のLAN側に接続する他の通信装置との間で通信が行われる場合、NAT装置に割り当てられたアドレスがSPIによって無効化され、通信ができなくなる場合がある。従って、SPIによって通信装置間の通信が妨げられることを抑止するための様々な技術が提案されている(例えば特許文献1参照)。
【0004】
NAT装置のLAN側に接続する通信装置が、他のNAT装置のLAN側に接続する他の通信装置との間で、Session Initiation Protocol(SIP)に基づいた通信を行い、Peer to Peer(P2P)通信を開始する場合、NAT越えの問題を解消するために、Interactive Connectivity Establishment(ICE)という技術が利用される場合がある。この技術では、通信装置間でアドレス情報を交換する通信が反復されることによって、P2P通信を行う場合に使用可能なアドレス情報が通信装置において特定される。通信装置は、特定したアドレス情報を使用することで、他の通信装置との間にNAT装置が介在する場合でも、P2P通信を開始することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−33299号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
SPIを備えたNAT装置のLAN側に接続する通信装置と、他のNAT装置のLAN側に接続する他の通信装置との間で、P2P通信を開始しようとする場合を想定する。この場合、通信装置間でICEに基づいた通信が行われることによって、NAT装置に割り当てられたアドレスがSPIによって無効化される場合がある。ICEでは、通信装置間でアドレス情報を交換する通信が反復されるため、この通信の過程で、NAT装置が通信装置からのデータをLAN側から受信してWAN側に送信する前に、他の通信装置からのデータをWAN側から受信する場合があるためである。このような場合、通信装置間でP2P通信を開始することができないという問題点がある。
【0007】
本発明の目的は、SPIを備えたNAT装置を介して、他の通信装置とP2P通信を適切に行うことが可能な通信装置、通信方法、および通信プログラムを提供することにある。
【課題を解決するための手段】
【0008】
本発明の第一態様に係る通信装置は、Network Address Translation(NAT)装置のLAN側に接続し、前記NAT装置のWAN側に接続された他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立して通信を行う通信装置であって、前記通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得手段と、前記他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得手段によって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信する第一送信手段と、前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを受信する第一受信手段と、前記第一受信手段によって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信する第二送信手段と、前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出手段と、前記第一算出手段によって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第三送信手段とを備えている。
【0009】
第一態様によれば、通信装置は、他の通信装置から設定データが送信されるタイミングと、通信装置が他の通信装置に対して設定データを送信するタイミングとが近似するように、設定データの送信タイミングを設定することができる。通信装置は、通信装置および他の通信装置と中継装置との間の通信遅延時間に基づき、他の通信装置に対して送信した応答データの通信遅延時間を算出することによって、他の通信装置が設定データを送信するタイミングを推測することができるためである。従って通信装置は、Stateful Packet Inspection(SPI)を備えたNAT装置が他の通信装置との間に介在する場合であっても、設定データの通信によってNAT装置に割り当てられたアドレスが無効化されることを抑止することができる。これによって通信装置は、他の通信装置との間にSPIを備えたNAT装置が介在する場合でも、他の通信装置との間にセッションを確立し、通信を適切に行うことが可能となる。
【0010】
第一態様において、前記第一算出手段は、前記第二送信手段によって前記応答データを送信してから、前記第三送信手段によって前記設定データを送信するまでの待機時間を、第一時間情報として算出してもよい。前記第三送信手段は、前記第二送信手段によって前記応答データを送信してから、前記第一算出手段によって算出された待機時間分待機した後、前記設定データを送信してもよい。これによって通信装置は、応答データを送信してからの経過時間を監視することによって、他の通信装置に対して設定データを送信するタイミングを容易に判断することができる。
【0011】
第一態様において、前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを前記通信装置に対して送信するタイミングを特定するための第二時間情報を算出する第二算出手段を備えてもよい。前記第二送信手段は、前記第二算出手段によって算出された前記第二時間情報を少なくとも含む前記応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信してもよい。前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から、前記第二時間情報を少なくとも含む前記応答データを受信する第二受信手段をそなえていてもよい。前記第二受信手段によって受信された前記第二時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第四送信手段を備えていてもよい。通信装置は、他の通信装置が応答データに応じて送信する設定データの送信タイミングを制御することができる。従って、通信装置が設定データを送信するタイミングと、他の通信装置が設定データを送信するタイミングとを、更に良好に近似させることができる。従って通信装置は、設定データの通信によってNAT装置に割り当てられたアドレスがSPIによって無効化されることを、さらに効果的に抑止することができる。
【0012】
第一態様において、前記第一送信手段は、前記他の通信装置に対して前記要求データを送信する時刻を示す第一時刻情報と前記通信遅延時間とを含む前記要求データを、前記他の通信装置に対して送信してもよい。前記第二算出手段は、前記第一受信手段によって、前記第一時刻情報および前記通信遅延時間を含む前記要求データを前記他の通信装置から受信した場合に、前記要求データに含まれる前記第一時刻情報および前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを送信する時刻を示す第二時刻情報を、前記第二時間情報として算出してもよい。前記第二送信手段は、前記第二算出手段によって、前記第二時間情報として算出された前記第二時刻情報を含む前記応答データを、前記他の通信装置に対して送信してもよい。前記第二受信手段は、前記他の通信装置から、前記第二時刻情報を前記第二時間情報として受信してもよい。前記第四送信手段は、前記第二受信手段によって受信された前記第二時刻情報によって示される前記時刻に、前記他の通信装置に対して前記設定データを送信してもよい。通信装置は、通知された時刻を基準にして設定データを送信するタイミングを特定することができる。従って、NAT装置間の伝送路の通信状態が変化し、要求データおよび応答データの通信時における実際の通信遅延時間が、取得された通信遅延時間と相違する場合でも、通信装置から送信される設定データの送信タイミングと、他の通信装置から送信される設定データの送信タイミングとを良好に近似させることができる。
【0013】
第一態様において、前記取得時間は、前記NAT装置を介して前記中継装置に往路データを送信してから、前記中継装置が前記往路データに応じて返信する復路データを、前記NAT装置を介して受信するまでの時間を複数回計測し、計測した時間を2分した値の平均値を、前記通信遅延時間として取得してもよい。通信装置は、中継装置との間の通信遅延時間を、より正確に且つ容易に取得することができる。
【0014】
第一態様において、前記第一算出手段は、前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得した前記通信遅延時間とを加算することによって、前記待機時間を算出してもよい。これによって通信装置は、待機時間を容易に算出することができる。
【0015】
本発明の第二態様に係る通信方法は、Network Address Translation(NAT)装置のLAN側に接続する通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得ステップと、前記通信装置が、他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得ステップによって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記通信装置から前記他の通信装置に対して送信する第一送信ステップと、前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを前記通信装置が受信する第一受信ステップと、前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記通信装置が前記他の通信装置に対して送信する第二送信ステップと、前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記通信装置が前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記通信装置が前記他の通信装置に対して前記設定データを送信する第三送信ステップとを備えている。第二態様によれば、第一態様と同様の効果を奏することができる。
【0016】
本発明の第三態様に係る通信プログラムは、Network Address Translation(NAT)装置のLAN側に接続する通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得ステップと、他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得ステップによって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記他の通信装置に対して送信する第一送信ステップと、前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを受信する第一受信ステップと、前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記他の通信装置に対して送信する第二送信ステップと、前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第三送信ステップとを通信装置のコンピュータに実行させる。第三態様によれば、第一態様と同様の効果を奏することができる。
【図面の簡単な説明】
【0017】
【図1】通信システム1の概要、および通信装置13の電気的構成を示す図である。
【図2】SPIを備えないNAT装置10が使用された場合の通信の様子を示すシーケンス図である。
【図3】SPIを備えたNAT装置10が使用された場合の通信の様子を示すシーケンス図である。
【図4】SPIを備えたNAT装置10が使用された場合の通信の様子を示すシーケンス図である。
【図5】メイン処理を示すフローチャートである。
【図6】発呼側処理を示すフローチャートである。
【図7】着呼側処理を示すフローチャートである。
【図8】SPIを備えたNAT装置10が使用された場合の通信の様子を示すシーケンス図出ある。
【図9】変形例における発呼側処理を示すフローチャートである。
【図10】変形例における着呼側処理を示すフローチャートである。
【発明を実施するための形態】
【0018】
以下、本発明の一実施形態について、図面を参照して説明する。これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている装置の構成、各種処理のフローチャート等は、それのみに限定する趣旨ではなく、単なる説明例である。
【0019】
図1を参照し、通信システム1の概要について説明する。通信システム1は、Network Address Translation(NAT)装置11、12、通信装置14、15、および中継装置17を備えている。通信装置14は、NAT装置11のLAN側に接続している。通信装置15は、NAT装置12のLAN側に接続している。NAT装置11、12のWAN側は、ネットワーク網18に接続している。中継装置17は、ネットワーク網18に接続している。中継装置17およびNAT装置11、12は、ネットワーク網18を介して通信を行うことができる。以下、NAT装置11、12を区別しない場合または総称する場合、これらをNAT装置10という。通信装置14、15を区別しない場合または総称する場合、これらを通信装置13という。
【0020】
中継装置17は、Session Initiation Protocol(SIP)を制御するSIPサーバである。通信装置13は、PCやIP電話等の通信端末である。通信装置13は、中継装置17を介して他の通信装置13とSIPに基づいた通信を行う。これによって通信装置13は、他の通信装置13との間でセッションを確立させ、Peer to Peer(P2P)通信を行う。NAT装置10は、LAN側に接続された通信装置13から、WAN側に向かう方向のデータを受信した場合、WAN側に新たなアドレス情報を割り当てる。WAN側に割り当てるアドレス情報は、ネットワーク網18に接続した図示外のSession Traversal Utilities for NAT(STUN)サーバと通信を行うことによって、STUNサーバから取得される。NAT装置10は、受信したデータのアドレス情報を、WAN側に割り当てたアドレス情報に変換し、WAN側に転送する。またNAT装置10は、WAN側に割り当てたアドレス情報宛にデータを受信した場合、受信したデータのアドレス情報を、LAN側に接続された通信装置13のアドレス情報に変換し、WAN側に転送する。
【0021】
通信装置13の電気的構成について説明する。通信装置13は、通信装置13の制御を司るCPU21を備えている。CPU21は、ROM22、RAM23、ハードディスクドライブ(以下、HDDという。)24、通信インタフェース(以下、通信I/Fという。)25、入力部26、および出力部27と電気的に接続している。ROM22には、ブートプログラム、BIOS等が記憶される。RAM23には、タイマやカウンタ、一時的なデータが記憶される。HDD24には、CPU21の制御プログラムやOSが記憶される。通信I/F25は、NAT装置10と通信を行うためのインタフェースである。入力部26は、通信装置13に対して情報の入力を行うキーボード、マウス、マイク等である。出力部27は、通信装置13のユーザに対して情報を出力するディスプレイ、スピーカ等である。
【0022】
通信装置14、15間でセッションを確立させてP2P通信を行う場合、通信装置14、15間にNAT装置11、12が介在しているため、いわゆるNAT越えの問題が発生し得る。通信装置14は、通信装置15とP2P通信を行う場合、NAT装置12のWAN側に割り当てられたアドレス情報宛にデータを送信しなければならないため、事前にこのアドレス情報を特定しておく必要がある。同様に通信装置15は、通信装置14とP2P通信を行う場合、NAT装置11のWAN側に割り当てられたアドレス情報を事前に特定しておく必要がある。
【0023】
これに対して通信装置14、15では、Interactive Connectivity Establishment(ICE)という技術を利用することによって、上述したNAT越えの問題を解消している。図2を参照し、通信装置14、15間でP2P通信が可能となるまでの通信の手順について説明する。なおNAT装置11は、WAN側に割り当てるアドレス情報31、33(後述)を予めSTUNサーバから取得しているものとする。同様にNAT装置12は、WAN側に割り当てるアドレス情報32、34(後述)を予めSTUNサーバから取得しているものとする。はじめに通信装置14は、中継装置17に通信装置14を登録するために、NAT装置11を介して中継装置17にRegisterデータを送信する(S121)。NAT装置11は、LAN側の通信装置14からResisterデータを受信した場合、WAN側の装置と通信を行うためのアドレス情報31をWAN側に割り当てる。NAT装置11は、受信したRegisterデータのアドレス情報を、WAN側に割り当てられたアドレス情報31に変換し、中継装置17に対して中継する(S123)。同様に通信装置15は、中継装置17に通信装置15を登録するために、NAT装置12を介して中継装置17にRegisterデータを送信する(S125)。NAT装置12は、LAN側の通信装置15からResisterデータを受信した場合、WAN側の装置と通信を行うためのアドレス情報32をWAN側に割り当てる。NAT装置12は、受信したRegisterデータのアドレス情報を、WAN側に割り当てられたアドレス情報32に変換し、中継装置17に対して中継する(S127)。中継装置17は、通信装置14、15からRegisterデータを受信し、通信装置14、15を登録する。
【0024】
通信装置14、15は、SIPに基づいた通信を開始する。通信装置14は、セッションの確立を要求するINVITEデータを、NAT装置11を介して中継装置17に対して送信する(S131)。なおINVITEデータには、NAT装置11のWAN側に割り当てられるアドレス情報であってNAT装置11とNAT装置12とが通信を行う場合に使用されるアドレス情報33が格納される。NAT装置11は、LAN側から受信したINVITEデータのアドレス情報を、WAN側に割り当てられたアドレス情報31に変換し、WAN側の中継装置17に対して中継する(S133)。中継装置17は、NAT装置11から受信したINVITEデータを、NAT装置12のWAN側に割り当てられたアドレス情報32宛に中継する(S135)。NAT装置12は、WAN側から受信したINVITEデータのアドレス情報32を、通信装置15のアドレス情報に変換し、LAN側に接続された通信装置15に対して中継する(S137)。通信装置15はINVITEデータを受信する。通信装置15は、INVITEデータに格納されたアドレス情報33を、通信装置14との通信時においてNAT装置11のWAN側に割り当てられ使用されるアドレス情報33として取得する。
【0025】
通信装置15は、受信したINVITEデータに応じ、NAT装置12を介して中継装置17に対して、200OKデータを送信する(S141)。なお200OKデータには、NAT装置12のWAN側に割り当てられるアドレス情報であってNAT装置12とNAT装置11とが通信を行う場合に使用されるアドレス情報34が格納される。NAT装置12は、LAN側から受信した200OKデータのアドレス情報を、WAN側に割り当てられたアドレス情報32に変換し、WAN側の中継装置17に対して中継する(S143)。中継装置17は、NAT装置12から受信した200OKデータを、NAT装置11のWAN側に割り当てられたアドレス情報31宛に中継する(S145)。NAT装置11は、WAN側から受信した200OKデータのアドレス情報31を、通信装置14のアドレス情報に変換し、LAN側に接続された通信装置14に対して中継する(S147)。通信装置14は200OKデータを受信する。通信装置14は、200OKデータに格納されたアドレス情報34を、通信装置15との通信時においてNAT装置12のWAN側に割り当てられ使用されるアドレス情報34として取得する。
【0026】
続いて通信装置14、15は、ICEによる通信を開始する。通信装置15は、NAT装置11のWAN側に割り当てられるアドレス情報33宛てのICE Checkデータを、NAT装置12に送信する(S151)。ICE Checkデータは、NAT装置11、12のWAN側に割り当てられたアドレス情報33、34が通信装置14、15間で通知された後、通知されたアドレス情報を用いて実際に通信端末14、15間でP2P通信を開始することが可能であるかを確認するためのデータである。NAT装置12は、通信装置15からICE Checkデータを受信した場合、受信したICE Checkデータのアドレス情報を、WAN側に割り当てられたアドレス情報34に変換し、NAT装置11に対して中継する(S153)。NAT装置11は、NAT装置12から送信されたICE Checkデータを受信し、LAN側の通信装置14に対して中継する(S155)。通信装置14はICE Checkデータを受信する。
【0027】
通信装置14は、受信したICE Checkに応じ、NAT装置11を介してNAT装置12に対してResponseデータを送信する(S161、S163)。Responseデータは、NAT装置12のWAN側に割り当てられたアドレス情報34宛に送信される。NAT装置12は、NAT装置11から受信したResponseデータを、LAN側の通信装置15に対して中継する(S165)。通信装置15は、Responseデータを受信する。
【0028】
通信装置14は、S161でResponseデータを送信した後、NAT装置12宛のICE Checkデータを、NAT装置11に対して送信する(S171)。NAT装置11は、受信したICE Checkデータのアドレス情報を、WAN側に割り当てられたアドレス情報33に変換し、NAT装置12のWAN側に割り当てられたアドレス情報34宛に送信する(S173)。NAT装置12は、NAT装置11から受信したICE Checkデータを、LAN側の通信装置15に対して中継する(S175)。通信装置15はICE Checkデータを受信する。通信装置15は、受信したICE Checkに応じ、NAT装置12を介してNAT装置11に対してResponseデータを送信する(S181、S183)。NAT装置11は、NAT装置12から受信したResponseデータを、LAN側の通信装置14に対して中継する(S185)。通信装置14はResponseデータを受信する。
【0029】
ICEによる通信が上述のようにして行われることによって、通信装置14は、NAT装置12のWAN側に割り当てられたアドレス情報として通知されたアドレス情報34を使用し、通信装置15とP2P通信を行うことが可能であると判断する。同様に通信装置15は、NAT装置11のWAN側に割り当てられたアドレス情報として通知されたアドレス情報33を使用し、通信装置14とP2P通信を行うことが可能であると判断する。これによって通信装置14、15は、通知されたアドレス情報を使用することによって、中継装置17を介することなくP2P通信を行うことが可能となる(S191)。
【0030】
NAT装置10には、Stateful Packet Inspection(SPI)と呼ばれる方法によって、パケットをフィルタリングする機能を備えているものがある。SPIを備えたNAT装置10における動作の概要は次の通りである。NAT装置10は、LAN側の通信装置13からデータを受信し、WAN側に向けてデータを中継する場合、データを送信した通信装置13のアドレス情報(以下、送信元アドレス情報という。)、および、データの宛先のアドレス情報(以下、宛先アドレス情報という。)を送信履歴としてHDD24に記憶する。
【0031】
NAT装置10が、LAN側の通信装置13に対するデータをWAN側から受信したとする。NAT装置10は、受信したデータの送信元のアドレス情報が宛先アドレス情報として送信履歴に記憶されており、且つ、受信したデータの宛先のアドレス情報が送信元アドレス情報として送信履歴に記憶されているかを判断する。該当するアドレス情報が送信履歴に記憶されている場合、NAT装置10は従来通り、LAN側の通信装置13に対して受信したデータを中継する。一方、該当する送信履歴が記憶されていない場合、WAN側に割り当てたアドレスを使用してLAN側からWAN側にデータが送信されない状態で、該アドレスに対するデータをWAN側から受信したことになる。このような場合、NAT装置10は、WAN側から不正にアクセスされたと判断し、割り当てたアドレス情報を無効化する。これによって、LAN側に接続された通信装置13を不正アクセスから保護する。
【0032】
図3を参照し、具体例を挙げて詳細に説明する。なお、図2で説明した通信の手順と同一部分については、同一符号を付し、説明を簡略化している。通信装置14、15から中継装置17に対してRegisterデータが送信されることによって(S121、S123、S125、S127)、中継装置17に通信装置14、15が登録される。また、NAT装置11のWAN側にアドレス情報31が割り当てられ、NAT装置12のWAN側にアドレス情報32が割り当てられる。またNAT装置11は、LAN側から受信したRegisterデータを送信した通信装置14のアドレス情報を、送信元アドレス情報として送信履歴に記憶する。またNAT装置11は、Registerデータの宛先である中継装置17のアドレス情報を、宛先アドレス情報として送信履歴に記憶する。同様にNAT装置12は、通信装置15のアドレス情報を送信元アドレス情報とし、中継装置17のアドレス情報を宛先アドレス情報として、送信履歴に記憶する。
【0033】
通信装置14、15は、SIPに基づいた通信を開始する。通信装置14は、中継装置17宛のINVITEデータを、NAT装置11に対して送信する(S131)。NAT装置11は、受信したINVITEデータを送信した通信装置14のアドレス情報を、送信元アドレス情報として送信履歴に記憶する。またNAT装置11は、INVITEデータの宛先である中継装置17のアドレス情報を、宛先アドレス情報として送信履歴に記憶する。NAT装置11は、INVITEデータを中継装置17に対して中継する(S133)。中継装置17は、INVITEデータをNAT装置12に対して中継する(S135)。
【0034】
NAT装置12は、中継装置17からINVITEデータを受信する。NAT装置12は、送信履歴を参照する。INVITEデータを送信した中継装置17のアドレス情報は、S125で通信装置15からRegisterデータを受信した時点で、宛先アドレス情報として送信履歴に記憶されている。またINVITEデータの宛先である通信装置15のアドレス情報は、S125で通信装置15からRegisterデータを受信した時点で、送信元アドレス情報として送信履歴に記憶されている。従ってNAT装置12は、中継装置17から受信したINVITEデータをLAN側の通信装置15に対して中継する(S137)。通信装置15はINVITEデータを受信する。
【0035】
通信装置15は、受信したINVITEデータに応じ、200OKデータをNAT装置12に対して送信する(S141)。NAT装置12は、受信した200OKデータを送信した通信装置15のアドレス情報を、送信元アドレス情報として送信履歴に記憶する。またNAT装置12は、200OKデータの宛先である中継装置17のアドレス情報を、宛先アドレス情報として送信履歴に記憶する。NAT装置12は、200OKデータを中継装置17に対して中継する(S143)。中継装置17は、200OKデータをNAT装置11に対して中継する(S145)。
【0036】
NAT装置11は、中継装置17から200OKデータを受信する。NAT装置11は、送信履歴を参照する。200OKデータを送信した中継装置17のアドレス情報は、S131で通信装置14からINVITEデータを受信した時点で、宛先アドレス情報として送信履歴に記憶されている。また200OKデータの宛先である通信装置14のアドレス情報は、S131で通信装置14からINVITEデータを受信した時点で、送信元アドレス情報として送信履歴に記憶されている。従ってNAT装置11は、中継装置17から受信した200OKデータをLAN側の通信装置14に対して中継する(S147)。通信装置14は200OKデータを受信する。
【0037】
通信装置14、15は、ICEによる通信を開始する。通信装置15は、NAT装置12を介してNAT装置11に対してICE Checkデータを送信する(S151)。NAT装置12は、通信装置15からICE Checkデータを受信する。送信履歴として、送信元アドレス情報(通信装置15のアドレス情報)、および、宛先アドレス情報(NAT装置11のアドレス情報)が記憶される。NAT装置12は、ICE CheckデータをNAT装置11に対して中継する(S153)。
【0038】
NAT装置11は、NAT装置12から送信されたICE Checkデータを受信する。NAT装置11は、送信履歴を参照する。ここで送信履歴として、S131で通信装置14からINVITEデータを受信した時点で、送信元アドレス情報(通信装置14のアドレス情報)、および、宛先アドレス情報(中継装置17のアドレス情報)が記憶されている。従って、ICE Checkデータを送信したNAT装置12のアドレス情報は、宛先情報として送信履歴に記憶されていない。従ってNAT装置11は、受信したICE Checkを通信装置14に対して中継せず、NAT装置12との通信時に使用するためにWAN側に割り当てたアドレス情報33を無効化する。
【0039】
通信装置15は、S151で送信したICE Checkに対応するResponseを受信できないため、NAT装置12を介してNAT装置11に対して、ICE Checkデータを再送する(S201、S203)。NAT装置11は、S153でICE Checkデータを受信した段階で、WAN側に割り当てたアドレス情報33を無効化しているため、通信装置15から再送されたICE Checkデータを受信することができない。
【0040】
また通信装置14は、NAT装置11に対して、NAT装置12宛のICE Checkデータを送信する(S205)。NAT装置11は、通信装置14からICE Checkデータを受信する。NAT装置11は、S153でICE Checkデータを受信した段階で、WAN側に割り当てたアドレス情報33を無効化している。従ってNAT装置11は、通信装置14から受信したICE CheckデータをNAT装置12に対して中継することができない。また、通信装置14からICE Checkデータが再送された場合(S207)も同様に、NAT装置11はICE CheckデータをNAT装置12に中継することができない。
【0041】
このように、通信装置13間に介在するNAT装置10がSPIの機能を備えていると、通信装置13がSIPおよびICEを利用してP2P通信を開始させようとした場合に、NAT装置10のWAN側に割り当てられたアドレス情報が無効化されてしまう場合がある。この場合通信装置13は、他の通信装置13との間でP2P通信を開始させることができなくなる。これに対して本発明では、NAT装置10のWAN側に割り当てられたアドレス情報が無効化されることを抑止するために、通信装置13はICE Checkデータを送信するタイミングを制御する。これによって、NAT装置10がSPIの機能を備えている場合でも、通信装置13間でP2P通信を開始することができるようになる。詳細は以下のとおりである。
【0042】
図4を参照し、通信装置13においてICE Checkデータを送信するタイミングが制御された場合の通信の手順について説明する。なお、図2、3で説明した通信の手順と同一部分については、同一符号を付し、説明を簡略化している。
【0043】
通信装置13は、SIPに基づく通信を開始する前に、通信装置13と中継装置17との間の通信遅延時間を特定する。通信遅延時間は、通信装置13からデータが送信されてから、中継装置17に到達するまでに要する時間であり、同様に、中継装置17からデータが送信されてから、通信装置13に到達するまでに要する時間である。通信装置13から中継装置17に向かう方向のデータに対応する通信遅延時間と、中継装置17から通信装置13に向かう方向のデータに対応する通信遅延時間とは、厳密に一致しない場合もある。しかしながら通信装置13は、双方が略同一であるとみなし、双方を同様に扱う。通信遅延時間の計測方法については後述する。なお以下、通信装置14によって特定された通信遅延時間を、通信遅延時間Aといい、通信装置15によって特定された通信遅延時間を、通信遅延時間Bという。
【0044】
通信装置14は、上述のようにして特定した通信時間AをINVITEデータに格納し、NAT装置11を介して中継装置17に対して送信する(S131、S133)。中継装置17は、INVITEデータをNAT装置12に対して中継する(S135)。NAT装置12は、INVITEデータを通信装置15に対して中継する(S137)。通信装置15は、INVITEデータに応じ、NAT装置12を介して中継装置17に対して200OKデータを送信する(S141、S143)。中継装置17は、200OKデータをNAT装置11に対して中継する(S145)。NAT装置11は、200OKデータを通信装置14に対して中継する(S147)。通信装置14は、200OKデータを受信する。
【0045】
ここで通信装置15は、図3で示した通信手順とは異なり、S141で中継装置17に対して200OKデータを送信した後、直ぐにICE CheckデータをNAT装置11に対して送信しない。通信装置15は、S137で受信したINVITEデータに格納されている通信遅延時間Aと、通信装置15が計測した通信遅延時間Bとを加算し、待機時間A+Bとして算出する。通信装置15は、S141で200OKデータを送信した後、待機時間A+B分待った後、NAT装置12に対してICE Checkデータを送信する(S221)。NAT装置12は、通信装置15から受信したICE CheckデータをNAT装置11に対して中継する(S223)。NAT装置12には、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)が送信履歴として記憶される。
【0046】
一方、通信装置14では、S147で200OKデータを受信した後、NAT装置11に対してICE Checkデータを送信する(S225)。NAT装置11は、通信装置14から受信したICE CheckデータをNAT装置12に対して中継する(S227)。NAT装置11には、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)が送信履歴として記憶される。
【0047】
上述において、通信装置15は、200OKデータを送信した(S141)後、待機時間A+B分待った後、ICE Checkデータを送信している(S221)。待機時間A+Bは、通信装置15−(NAT装置12)−中継装置17の通信遅延時間と、中継装置17−(NAT装置11)−通信装置14の通信遅延時間とを加算した時間である。従って待機時間A+Bは、通信装置15が200OKデータを送信してから、送信された200OKデータが通信装置14に到達する時間と略同一になる。従って、通信装置15からICE Checkデータが送信されるタイミングと、通信装置14が200OKを受信するタイミングは略同一になる。このため、通信装置15から送信されたICE CheckデータがNAT装置11に到達する前に、通信装置14からNAT装置11に対してICE Checkデータが送信され、NAT装置11は通信装置14からICE Checkデータを受信する。
【0048】
通信装置15から送信されたICE Checkデータが、NAT装置11に到達したとする(S223)。この時点でNAT装置11は、既に通信装置14からICE Checkデータを受信しているので(S225)、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)が送信履歴として記憶されている。NAT装置11の送信履歴には、WAN側から受信したICE Checkデータの送信元のアドレス情報(NAT装置12のアドレス情報)が宛先アドレス情報として記憶されており、ICE Checkデータの宛先のアドレス情報(通信装置14のアドレス情報)が送信元アドレス情報として記憶されていることになる。従ってNAT装置11は、受信したICE Checkデータを、LAN側の通信装置14に対して中継する(S229)。図3で説明した場合のように、NAT装置11のWAN側に割り当てられたアドレス情報33は無効化されない。通信装置14は、ICE Checkを受信する。
【0049】
同様に、通信装置14から送信されたICE Checkデータが、NAT装置12に到達したとする(S227)。この時点でNAT装置12は、既に通信装置15からICE Checkデータを受信しているので(S221)、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)が送信履歴として記憶されている。NAT装置12の送信履歴には、WAN側から受信したICE Checkデータの送信元のアドレス情報(NAT装置11のアドレス情報)が宛先アドレス情報として記憶されており、ICE Checkデータの宛先のアドレス情報(通信装置15のアドレス情報)が送信元アドレス情報として記憶されていることになる。従ってNAT装置12は、受信したICE Checkデータを、LAN側の通信装置15に対して中継する(S231)。NAT装置12のWAN側に割り当てられたアドレス情報34は無効化されない。通信装置15は、ICE Checkデータを受信する。
【0050】
通信装置14は、S229で受信したICE Checkデータに応じ、Responseデータを送信する(S233)。NAT装置11は、通信装置14からResponseデータを受信し、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)を送信履歴として記憶する。NAT装置11は、ResponseデータをNAT装置12に対して中継する(S235)。また通信装置15は、S231で受信したICE Checkデータに応じ、Responseデータを送信する(S237)。NAT装置12は、通信装置15からResponseデータを受信し、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)を送信履歴として記憶する。NAT装置12は、ResponseデータをNAT装置11に対して中継する(S241)。
【0051】
NAT装置12は、S241でNAT装置11に対してResponseデータを送信した後、NAT装置11からResponseデータを受信する(S235)。この時点でNAT装置12は、既に通信装置15からResponseデータを受信しているので(S237)、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)が送信履歴として記憶されている。従ってNAT装置12は、受信したResponseデータを、LAN側の通信装置15に対して中継する(S239)。同様にNAT装置11は、S235でNAT装置12に対してResponseデータを送信した後、NAT装置12からResponseデータを受信する(S241)。この時点でNAT装置11は、既に通信装置14からResponseデータを受信しているので(S233)、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)が送信履歴として記憶されている。従ってNAT装置11は、受信したResponseデータを、LAN側の通信装置14に対して中継する(S243)。
【0052】
以上のように通信が実行されることによって、図3を参照して説明した場合のように、NAT装置11、12のWAN側に割り当てられたアドレス情報33、34は無効化されない。これによって通信装置14、15は、INVITEデータおよび200OKデータの通信によって通知されたアドレス情報を使用することによって、中継装置17を介することなくP2P通信を行うことが可能となる(S245)。このように通信装置15は、200OKデータに応じて送信するICE Checkデータの送信タイミングを制御することができる。従って、通信装置15がICE Checkデータを送信するタイミングと、通信装置14がICE Checkデータを送信するタイミングとを、良好に近似させることができる。従って通信装置13は、ICE Checkデータの通信によってNAT装置10のWAN側に割り当てられたアドレス情報33、34がSPIによって無効化されることを効果的に抑止できる。
【0053】
図5から図7を参照し、通信装置13が実行するメイン処理について説明する。以下説明するメイン処理は、HDD24に記憶されている通信プログラムに従って、通信装置13のCPU21が実行する。メイン処理は、通信装置13の電源がONされた場合に、HDD24に記憶されたメイン処理用のプログラムが起動されて開始される。そして、CPU21がこのプログラムを実行することにより行われる。
【0054】
図5に示すように、メイン処理が開始されると、はじめにCPU21は、NAT装置10を介して中継装置17に対し、Registerデータを送信する。これによってCPU21は、中継装置17に通信装置13を登録する(S10)(S121、S125(図4参照))。また、NAT装置10がLAN側からWAN側にRegisterデータを中継することによって、NAT装置10のWAN側に、WAN側の装置と通信を行うためのアドレス情報(アドレス情報31、32、図4参照)が割り当てられる。
【0055】
CPU21は、中継装置17と通信を行うことによって通信遅延時間を特定する(S11)。通信遅延時間は次のようにして計測される。通信装置13は、NAT装置10を介して中継装置17に対して往路データを送信する。中継装置17は、通信装置13から往路データを受信した場合、NAT装置10を介して通信装置13に対して復路データを送信する。通信装置13は、中継装置17から送信された復路データを、NAT装置10を介して受信する。通信装置13は、往路データを送信してから復路データを受信するまでの時間を計測し、計測した時間を二分することによって、片道分の通信に要した時間を算出する。通信装置13は、上述の通信を複数回(例えば10回)繰り返し、時間を繰り返し算出する。通信装置13は、算出した時間の平均を、通信遅延時間として特定する。このようにして通信装置13は、中継装置17との間の通信遅延時間を、より正確に且つ容易に取得している。
【0056】
CPU21は、入力部26を介して、他の通信装置13との間のP2P通信を開始する指示の入力操作を検出したか判断する(S13)。入力操作を検出した場合(S13:YES)、CPU21は、他の通信装置13に対してINVITEデータを送信することによって他の通信装置13との間のセッションを確立し、他の通信装置13との間でP2P通信を開始する処理(発呼側処理、図6参照)を実行する(S15)。発呼側処理の詳細は後述する。発呼側処理の終了後、メイン処理は終了する。一方、他の通信装置13との間のP2P通信を開始する指示の入力操作を検出しない場合(S13:NO)、CPU21は、他の通信装置13から送信されたINVITEデータを受信したか判断する(S17)。他の通信装置13から送信されたINVITEデータを受信した場合(S17:YES)(S137(図4参照))、CPU21は、INVITEデータに応じて他の通信装置13との間のセッションを確立し、他の通信装置13との間でP2P通信を開始する処理(着呼側処理、図7参照)を実行する(S19)。着呼側処理の詳細は後述する。着呼側処理の終了後、メイン処理は終了する。
【0057】
図6を参照し、発呼側処理について説明する。なお以下では、図4における通信装置14のCPU21において実行される発呼側処理を想定して説明する。CPU21は、通信装置15との通信時にNAT装置11のWAN側に割り当てられて使用されるアドレス情報33(図4参照)を、STUNサーバに問い合わせることによって特定する(S21)。CPU21は、S11(図5参照)で特定した通信遅延時間Aと、S21で特定されたアドレス情報33を、INVITEデータに格納する(S23)。CPU21は、通信遅延時間Aおよびアドレス情報33が格納されたINVITEデータを、NAT装置11を介して中継装置17に対して送信する(S25)(S131(図4参照))。CPU21は、INVITEデータに応じて通信装置15から送信される200OKデータを受信したか判断する(S27)。200OKデータを受信していないと判断した場合(S27:NO)、継続して200OKデータの受信を監視するために、処理はS27に戻る。
【0058】
通信装置15から送信された200OKデータを受信した場合(S27:YES)(S147(図4参照))、CPU21は、受信した200OKデータが、S25で送信したINVITEデータに応じて通信装置15から送信されたものであるかを判断することによって、200OKデータを解析する(S29)。INVITEデータに応じて通信装置15から送信された200OKデータであった場合、CPU21は、200OKデータに格納されたアドレス情報34(図4参照)を取得する。CPU21は、ICEによる通信を次のように実行する(S31)。CPU21は、取得されたアドレス情報34を使用し、通信装置15に対してICE Checkデータを送信する(S225(図4参照)。ICE Checkデータを送信した後、CPU21は、通信装置15から送信されたICE Checkデータを受信する(S229(図4参照))。CPU21は、受信したICE Checkデータに応じ、通信装置15に対してResponseデータを送信する(S233(図4参照))。CPU21は、ICE Checkデータに応じて通信装置15から送信されたResponseデータを受信する(S243(図4参照))。
【0059】
ICEによる以上の通信を行うことによって、通信装置14、15間でP2P通信を行うことが可能な状態になる。CPU21は、通信装置15との間でセッションを確立させ、P2P通信を開始する(S33)(S245(図4参照))。P2P通信の終了後、発呼側処理は終了し、処理はメイン処理(図5参照)に戻る。
【0060】
図7を参照し、着呼側処理について説明する。なお以下では、図4における通信装置15のCPU21において実行される着呼側処理を想定して説明する。CPU21は、S17(図5参照)で受信したINVITEデータに、通信遅延時間Aが格納されているかを判断することによって、INVITEデータを解析する(S41)。INVITEデータに通信遅延時間Aが格納されていた場合、CPU21は、INVITEデータに格納されたアドレス情報33(図4参照)を取得する。CPU21は、通信装置14との通信時にNAT装置12のWAN側に割り当てられて使用されるアドレス情報34(図4参照)を、STUNサーバに問い合わせることによって特定する(S43)。CPU21は、S17で受信したINVITEデータに格納されていた通信遅延時間Aと、S11(図5参照)で特定した通信遅延時間Bとを加算することによって、待機時間A+Bを算出する(S45)。
【0061】
CPU21は、S17で受信したINVITEデータに応じる200OKデータを、NAT装置12を介して中継装置17に対して送信する(S47)(S141(図4参照))。200OKデータには、S43で取得されたアドレス情報34が格納される。200OKデータの送信後、CPU21は、200OKデータを送信してからの経過時間が、待機時間A+Bに達したかを判断する(S49)。CPU21は、経過時間が待機時間A+Bに達していない場合(S49:NO)、処理はS49に戻る。一方、経過時間が待機時間A+Bに達した場合(S49:YES)、ICEによる通信を次のように実行する(S51)。CPU21は、取得されたアドレス情報33を使用し、通信装置14に対してICE Checkデータを送信する(S221(図4参照))。ICE Checkデータを送信した後、CPU21は、通信装置14から送信されたICE Checkデータを受信する(S231(図4参照))。CPU21は、受信したICE Checkデータに応じ、通信装置14に対してResponseデータを送信する(S237(図4参照))。CPU21は、ICE Checkデータに応じて通信装置14から送信されたResponseデータを受信する(S239(図4参照))。
【0062】
ICEによる以上の通信を行うことによって、通信装置14、15間でP2P通信を行うことが可能な状態になる。CPU21は、通信装置14との間でセッションを確立させ、P2P通信を開始する(S53)(S245(図4参照))。P2P通信の終了後、着呼側処理は終了し、処理はメイン処理(図5参照)に戻る。
【0063】
通信装置15は、200OKデータを送信してから待機時間A+B分待機した後、ICE Checkデータを通信装置14に対して送信することによって、通信装置15が通信装置14に対してICE Checkデータを送信するタイミングと、通信装置15によって送信された200OKデータを通信装置14が受信するタイミングとを近似させている。通信装置14では、200OKデータを受信した直後に、通信装置15に対してICE Checkデータを送信することになるので、通信装置14からICE Checkデータが送信されるタイミングと、通信装置15からICE Checkデータが送信されるタイミングとが近似することになる。従ってNAT装置11は、NAT装置12からICE Checkデータを送信する前に、通信装置14からICE Checkデータを受信することになり、送信履歴がHDD24に記憶される。NAT装置11は、この送信履歴を参照することによって、NAT装置12からICE Checkデータを受信した場合に、アドレス情報33を無効化することなく、通信装置14に対して中継することができる。
【0064】
以上のようなタイミング制御を行うことによって、通信装置15は、SPIを備えたNAT装置11が通信装置14との間に介在する場合であっても、NAT装置11のWAN側に割り当てられたアドレス情報33がICEによる通信によって無効化されることを抑止することができる。従って通信装置15は、通信装置14との間に介在するNAT装置11がSPIを備えている場合でも、通信装置14との間にセッションを確立し、P2P通信を適切に開始することが可能となる。
【0065】
なお本発明は上述の実施形態に限定されず、種々の変更が可能である。上述において通信装置15は、通信遅延時間A、Bを加算することによって待機時間A+Bを算出していた。これに対し、通信装置15は、通信遅延時間A、Bを加算した値に所定のマージンを加算することによって待機時間を算出してもよい。所定のマージンは、例えば、通信装置14が200OKデータを受信してから、通信装置15に対してICE Checkデータを送信するまでに要する処理時間としてもよい。通信装置14、15において通信遅延時間を特定する方法は、上述以外の方法であってもよい。例えば、通信遅延時間を計測するための周知の方法(例えばping)が用いられてもよい。また、例えば中継装置17が、通信装置14、15との間の通信遅延時間を計測する機能を備えていてもよい。通信装置14、15は、中継装置17に問い合わせることによって、中継装置17から通信遅延時間を取得してもよい。通信装置15は、通信遅延時間A、B、および、通信装置14からINVITEデータを受信した時刻に基づいて、ICE Checkデータを送信する時刻を特定し、特定した時刻で、ICE Checkデータを通信装置14に対して送信してもよい。
【0066】
上述では、通信装置15が待機時間A+Bを算出することによってICE Checkデータの送信タイミングを制御していた。これに対し、通信装置14、15の両方がICE Checkデータの送信タイミングを制御してもよい。以下、図8から図10を参照し、本発明の変形例について説明する。図8を参照し、変形例において、通信装置14、15の両方がICE Checkデータの送信タイミングを制御する場合の通信の手順について説明する。なお、図4で説明した通信の手順と同一部分については、同一符号を付し、説明を省略または簡略化している。
【0067】
通信装置13は、SIPに基づく通信を開始する前に、通信装置13と中継装置17との間の通信遅延時間を特定する。通信装置14は、通信遅延時間Aに加えて、INVITEデータの送信時の時刻をINVITEデータに格納し、NAT装置11を介して中継装置17に対して送信する(S131、S133)。以下、通信装置14がINVITEデータを送信した時刻を、時刻Cという。中継装置17は、INVITEデータをNAT装置12に対して中継する(S135)。NAT装置12は、INVITEデータを通信装置15に対して中継する(S137)。通信装置15は、INVITEデータを受信する。通信装置15は、INVITEデータを受信した時刻を、RAM23に記憶する。以下、通信装置15がINVITEデータを受信した時刻を、時刻Dという。通信装置15は、受信したINVITEデータを解析する(S41、図7参照)。以下、通信装置15がINVITEデータを解析するために要する時間を、解析時間Eという。
【0068】
通信装置15は、INVITEデータに格納された通信遅延時間Aおよび時刻C、INVITEデータを受信した時刻D、最初に特定した通信遅延時間B、および、解析時間Eに基づいて、通信装置14、15においてICE Checkデータを送信するタイミングを決定する。詳細は以下のとおりである。
【0069】
通信装置14におけるICE Checkデータの送信タイミングは、通信遅延時間Aを2倍した時間(2A)、通信遅延時間Bを2倍した時間(2B)、および、解析時間Eを2倍した時間(2E)を加算した時間(2(A+B+E))分、INVITEを送信した時刻Cから経過した時点の時刻(C+2(A+B+E))に決定される。この時刻は、通信装置14からINVITEデータが送信されてから通信装置15に到達するまで(S131、133、135、137)に要する時間(A+B)、通信装置15においてINVITEデータが解析される場合に要する時間(E)、通信装置15から200OKデータが送信されてから通信装置14に到達するまで(S141、143、145、147)に要する時間(A+B)、および、通信装置14において200OKデータが解析される場合に要する時間(E)を加算し、通信装置14がINVITEデータを送信した時刻(C)に加算結果を反映させることによって導き出されている。ここで通信装置15は、通信装置14において200OKデータを解析する場合に要する時間が、通信装置15においてINVITEデータを解析する場合に要する時間(E)とほぼ同一であると判断し、上述の計算を行っている。以下、上述のようにして算出された、通信装置14がICE Checkデータを送信する時刻(C+2(A+B+E))を、発呼側時刻という。
【0070】
通信装置15におけるICE Checkデータの送信タイミングは、通信遅延時間A、通信遅延時間B、および、解析時間Eを2倍した時間(2E)を加算した時間(A+B+2E)分、INVITEデータを受信した時刻Dから経過した時点の時刻(D+A+B+2E)に決定される。この時刻は、通信装置15から送信された200OKデータに応じて通信装置14がICE Checkデータを通信装置15に対して送信する場合の時刻を想定し、この時刻と同じ時刻で、通信装置15がICE Checkデータを送信できるように決定される。従って、通信装置15においてINVITEデータを解析する場合に要する時間(E)、通信装置15から200OKデータが送信されてから通信装置14に到達するまで(S141、143、145、147)に要する時間(A+B)、および、通信装置14において200OKデータを解析する場合に要する時間(E)を加算し、通信装置15がINVITEデータを受信した時刻(D)に加算結果を反映させることによって導き出されている。発呼側時刻を算出した場合と同様、通信装置15は、通信装置14において200OKデータを解析する場合に要する時間が、通信装置15においてINVITEデータを解析する場合に要する時間(E)とほぼ同一であると判断している。以下、上述のようにして算出された、通信装置15がICE Checkを送信する時刻(D+A+B+2E)を、着呼側時刻という。
【0071】
通信装置15は、INVITEデータに応じて通信装置14に送信する200OKデータに、発呼側時刻を示す発呼側時刻情報を格納する。通信装置15は、NAT装置12を介して中継装置17に対して200OKデータを送信する(S141、S143)。中継装置17は、200OKデータをNAT装置11に対して中継する(S145)。NAT装置11は、200OKデータを通信装置14に対して中継する(S147)。通信装置14は、200OKデータを受信する。
【0072】
通信装置15は、200OKデータを通信装置14に対して送信した後、算出した着呼側時刻まで待機し、NAT装置12に対してICE Checkデータを送信する(S251)。NAT装置12は、通信装置15から受信したICE CheckデータをNAT装置11に対して中継する(S253)。NAT装置12には、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)が送信履歴として記憶される。一方、通信装置14では、S147で受信した200OKデータに格納された発呼側時刻情報に基づいて、発呼側時刻を特定する。通信装置14は、発呼側時刻まで待機し、NAT装置11に対してICE Checkデータを送信する(S255)。NAT装置11は、通信装置14から受信したICE CheckデータをNAT装置12に対して中継する(S257)。NAT装置11には、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)が送信履歴として記憶される。
【0073】
ここで上述では、通信装置14からICE Checkデータが送信される時刻と、通信装置15からICE Checkデータが送信される時刻とがほぼ同一時刻となるように、発呼側時刻および着呼側時刻が算出されている。このため、通信装置15から送信されたICE CheckデータがNAT装置11に到達する(S253)前に、通信装置14からNAT装置11に対してICE Checkデータが送信され(S255)、NAT装置11は通信装置14からICE Checkデータを受信する。従って、通信装置15から送信されたICE CheckデータがNAT装置11に到達した場合(S253)、送信元アドレス情報(通信装置14のアドレス情報)および宛先アドレス情報(NAT装置12のアドレス情報)がNAT装置11の送信履歴として記憶された状態になっている。従ってNAT装置11は、NAT装置12から受信したICE Checkデータを、LAN側の通信装置14に対して中継する(S261)。NAT装置11は、WAN側に割り当てたアドレス情報33を無効化しない。通信装置14は、ICE Checkデータを受信する。
【0074】
同様に、通信装置14から送信されたICE Checkデータが、NAT装置12に到達した場合(S257)、送信元アドレス情報(通信装置15のアドレス情報)および宛先アドレス情報(NAT装置11のアドレス情報)がNAT装置12の送信履歴として記憶された状態になっている。従ってNAT装置12は、受信したICE Checkデータを、LAN側の通信装置15に対して中継する(S259)。NAT装置12は、WAN側に割り当てたアドレス情報34を無効化しない。通信装置15は、ICE Checkデータを受信する。
【0075】
以上の通信を実行することによって、通信装置14、15は、INVITEデータおよび200OKデータの通信によって通知されたアドレス情報33、34を使用して、P2P通信を行うことが可能となる(S281)。上述の実施形態とは異なり、変形例において通信装置15は、通信装置14におけるICE Checkデータの送信タイミングも制御する。ここで通信装置15は、通信装置14がICE Checkデータを送信するタイミングを、発呼側時刻によって通知するので、通信装置14は、通知された発呼側時刻を基準にしてICE Checkデータを送信するタイミングを特定することができる。通信装置14に対して通知される発呼側時刻は、通信装置14がINVITEデータを送信した時刻Cに基づいて特定される。従って、通信装置14、15の其々において管理する時刻がずれている場合でも、通信装置15は、通信装置14から所望のタイミングでICE Checkデータを送信させることができる。
【0076】
ここで通信装置15が、通信装置14が200OKデータを受信してからICE Checkデータを送信するまでの待機時間を、発呼側時刻の代わりに通信装置14に対して通知した場合を想定する。この場合、200OKデータの通信に要した時間が、算出された通信遅延時間A、Bと異なると、通信装置14からICE Checkデータが送信されるタイミングは、通信装置15からICE Checkデータが送信されるタイミングからずれてしまう。待機時間は、通信遅延時間A、Bに基づいて決定されるためである。例えば200OKデータの通信に要した時間が通信遅延時間A、Bよりも長くなると、長くなった分、通信装置14がICE Checkデータを送信する時間が遅れてしまう。この場合、NAT装置11がLAN側からWAN側に向かう方向にICE Checkデータを中継する(S255、S257)前に、NAT装置11はWAN側からICE Checkデータを受信してしまう可能性がある(S253)。このような場合、WAN側に割り当てられたアドレス情報33は無効化されてしまう。
【0077】
これに対して変形例では、通信装置15はICE Checkデータを送信する発呼側時刻を決定する。通信装置14は、発呼側時刻に基づいてICE Checkデータを送信するタイミングを制御する。従って、NAT装置11、12間の伝送路の通信状態が変化し、200OKデータの通信に要した時間が通信遅延時間A、Bと相違する場合でも、通信装置14は発呼側時刻を基準としてICE Checkデータの送信タイミングを決定できるので、通信装置14から送信されるICE Checkデータの送信タイミングを、通信装置15から送信されるICE Checkデータの送信タイミングと良好に近似させることができる。
【0078】
図9および図10を参照し、変形例における発呼側処理および着呼側処理について説明する。変形例における発呼側処理および着呼側処理は、上述の実施形態における発呼側処理および着呼側処理の代わりにメイン処理から呼び出され、実行される。メイン処理は、上述した実施形態と同一であるので、以下では説明を省略している。
【0079】
図9を参照し、変形例における発呼側処理について説明する。なお以下では、図8における通信装置14のCPU21において実行される発呼側処理を想定して説明する。CPU21は、通信装置15との通信時にNAT装置11のWAN側に割り当てられて使用されるアドレス情報33(図8参照)を、STUNサーバに問い合わせることによって特定する(S61)。CPU21は、S11(図5参照)で特定した通信遅延時間AをINVITEデータに格納する(S63)。次いでCPU21は、INVITEデータを送信する時刻Cを、INVITEデータに格納する(S65)。CPU21は、通信遅延時間A、時刻C、およびアドレス情報33が格納されたINVITEデータを、NAT装置11を介して中継装置17に対して送信する(S67)(S131(図8参照))。CPU21は、INVITEデータに応じて通信装置15から送信される200OKデータを受信したか判断する(S69)。200OKデータを受信していないと判断した場合(S69:NO)、継続して200OKデータの受信を監視するために、処理はS69に戻る。
【0080】
通信装置15から送信された200OKデータを受信した場合(S69:YES)(S147(図8参照))、CPU21は、受信した200OKデータが、S67で送信したINVITEデータに応じて通信装置15から送信されたものであるかを判断することによって、200OKデータを解析する(S71)。INVITEデータに応じて通信装置15から送信された200OKデータであった場合、CPU21は、200OKデータに格納されたアドレス情報34(図8参照)を取得する。CPU21は、200OKデータに格納されている発呼側時刻情報を取得し、発呼側時刻(C+2(A+B+E))を特定する(S73)。CPU21は、発呼側時刻となったかを判断する(S75)。発呼側時刻となっていない場合(S75:NO)、継続して待機するために、処理はS75に戻る。
【0081】
一方、発呼側時刻となった場合(S75:YES)、CPU21は、200OKデータから取得されたアドレス情報34を使用し、通信装置15に対してICE Checkデータを送信する(S255(図8参照))ことによって、ICEによる通信を実行する(S77)。ICEによる通信が終了した場合、通信装置14、15間でP2P通信を行うことが可能な状態になる。CPU21は、通信装置15との間でセッションを確立させ、P2P通信を開始する(S79)(S281(図8参照))。P2P通信の終了後、発呼側処理は終了し、処理はメイン処理(図5参照)に戻る。
【0082】
図10を参照し、着呼側処理について説明する。なお以下では、図8における通信装置15のCPU21において実行される着呼側処理を想定して説明する。CPU21は、S17(図5参照)でINVITEデータを受信した時刻Dを取得する(S91)。CPU21は、S17で受信したINVITEデータに、通信遅延時間Aおよび時刻Cが格納されているかを判断することによって、INVITEデータを解析する(S93)。INVITEデータに通信遅延時間Aおよび時刻Cが格納されていた場合、CPU21は、INVITEデータに格納されたアドレス情報33(図8参照)を取得する。CPU21は、通信装置14との通信時にNAT装置12のWAN側に割り当てられて使用されるアドレス情報34(図8参照)を、STUNサーバに問い合わせることによって特定する(S95)。
【0083】
CPU21は、通信装置14においてICE Checkデータを送信するまでの待機時間(2(A+B+E))を、通信遅延時間A、B、および、解析時間Eに基づいて算出する(S97)。CPU21は、INVITEデータに格納されていた時刻Cから待機時間(2(A+B+E))分経過した時刻を、発呼側時刻として特定する(S99)。CPU21は、通信装置15においてICE Checkデータを送信するまでの待機時間(A+B+2E)を、通信遅延時間A、B、および、解析時間Eに基づいて算出する(S101)。CPU21は、S91で取得した時刻Dから待機時間(A+B+2E)分経過した時刻を、着呼側時刻として特定する(S103)。
【0084】
CPU21は、S17で受信したINVITEデータに応じる200OKデータに、S99で特定した発呼側時刻を示す発呼側時刻情報を格納する(S105)。CPU21は、INVITEデータから取得されたアドレス情報33を使用し、発呼側時刻情報、および、S95で取得されたアドレス情報34を格納した200OKデータを、NAT装置12を介して中継装置17に対して送信する(S107)(S141(図8参照))。200OKデータの送信後、CPU21は、S103で特定した着呼側時刻となったかを判断する(S109)。着呼側時刻となっていない場合(S109:NO)、継続して待機するために、処理はS109に戻る。
【0085】
一方、着呼側時刻となった場合(S109:YES)、CPU21は、INVITEデータから取得されたアドレス情報33を使用し、通信装置14に対してICE Checkデータを送信する(S251(図8参照)ことによって、ICEによる通信を実行する(S111)。ICEによる通信が終了した場合、通信装置14、15間でP2P通信を行うことが可能な状態になる。CPU21は、通信装置15との間でセッションを確立させ、P2P通信を開始する(S113)(S281(図8参照))。P2P通信の終了後、発呼側処理は終了し、処理はメイン処理(図5参照)に戻る。
【0086】
以上説明したように、通信装置15は、通信装置14がICE Checkデータを送信する場合の送信タイミングだけでなく、通信装置14が200OKデータに応じて送信するICE Checkデータの送信タイミングも制御することができる。これによって、通信装置14、15において特定された通信遅延時間と、実際の通信に要した通信時間とが相違する場合であっても、通信装置14がICEデータを送信するタイミングと、通信装置15がICE Checkデータを送信するタイミングとを、良好に近似させることができる。更に通信装置15は、通信装置14におけるICE Checkデータの送信タイミングを、通信装置14の時刻Cに基づき特定された時刻を指定することによって通知する。これによって、通信装置14、15の双方が管理する時刻がずれている場合であっても、通信装置14がICEデータを送信するタイミングと、通信装置15がICE Checkデータを送信するタイミングとを、良好に近似させることができる。以上によって通信装置15は、ICE Checkデータの通信によってNAT装置11に割り当てられたアドレス情報33がSPIによって無効化されることを、さらに効果的に抑止することができる。
【0087】
なお上述の変形例において、発呼側時刻および着呼側時刻を特定する場合に解析時間Eは考慮されなくてもよい。なお解析時間Eは、通信遅延時間A、Bと比較して非常に短い時間であるため、解析時間Eを考慮することなく発呼皮時刻および着呼側時刻が特定された場合でも、ICE Checkデータが送信されるタイミングは通信装置14、15間でほぼ一致する。また通信装置15は、発呼側時刻の代わりに待機時間(2(A+B+E))を通知することによって、通信装置14から送信されるICE Checkデータのタイミング制御を行ってもよい。通信装置14は、INVITEデータを送信した時刻Cから、通知された待機時間(2(A+B+E))分経過した時刻に、ICE Checkデータを送信してもよい。通信装置15は、発呼側時刻情報を200OKデータに格納し、通信装置14に対して送信していた。これに対し、例えば通信装置15は、INVITEデータに応じて180Ringingデータを通信装置14に送信し、所定時間経過後、200OKデータを通信装置14に送信してもよい。そして通信装置15は、180Ringingデータに発呼側時刻情報を格納し、送信してもよい。この場合、通信装置15は、180Ringingデータを送信してから200OKデータを送信するまでの時間を考慮して発呼側時刻情報を特定してもよい。これによって通信装置15は、200OKデータを受信する前に発呼側時刻情報を取得することができるので、200OKデータを受信してからICE Checkデータを送信するまでの処理を軽減し、迅速にICE Checkデータを送信することができる。
【0088】
なお、S11の処理を行うCPU21が本発明の「取得手段」に相当する。S25、S67の処理を行うCPU21が本発明の「第一送信手段」に相当する。S17の処理を行うCPU21が本発明の「第一受信手段」に相当する。S47、S107の処理を行うCPU21が本発明の「第二送信手段」に相当する。S45、S101、S103の処理を行うCPU21が本発明の「第一算出手段」に相当する。S51、S111の処理を行うCUP21が本発明の「第三送信手段」に相当する。S31、S71の処理を行うCPU21が本発明の「第四送信手段」に相当する。INVITEデータが本発明の「要求データ」に相当する。200OKデータが本発明の「応答データ」に相当する。ICE Checkデータが本発明の「設定データ」に相当する。S11の処理が本発明の「取得ステップ」に相当する。S25、S67の処理が本発明の「第一送信ステップ」に相当する。S17の処理が本発明の「第一受信ステップ」に相当する。S47、S107の処理が本発明の「第二送信ステップ」に相当する。S45、S101、S103の処理が本発明の「第一算出ステップ」に相当する。S51、S111の処理が本発明の「第三送信ステップ」に相当する。
【符号の説明】
【0089】
1 通信システム
10、11、12 NAT装置
13、14、15 通信装置
17 中継装置
【特許請求の範囲】
【請求項1】
Network Address Translation(NAT)装置のLAN側に接続し、前記NAT装置のWAN側に接続された他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立して通信を行う通信装置であって、
前記通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得手段と、
前記他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得手段によって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信する第一送信手段と、
前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを受信する第一受信手段と、
前記第一受信手段によって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信する第二送信手段と、
前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出手段と、
前記第一算出手段によって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第三送信手段と
を備えたことを特徴とする通信装置。
【請求項2】
前記第一算出手段は、
前記第二送信手段によって前記応答データを送信してから、前記第三送信手段によって前記設定データを送信するまでの待機時間を、前記第一時間情報として算出し、
前記第三送信手段は、
前記第二送信手段によって前記応答データを送信してから、前記第一算出手段によって算出された待機時間分待機した後、前記設定データを送信することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを前記通信装置に対して送信するタイミングを特定するための第二時間情報を算出する第二算出手段を備え、
前記第二送信手段は、
前記第二算出手段によって算出された前記第二時間情報を少なくとも含む前記応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信し、
前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から、前記第二時間情報を少なくとも含む前記応答データを受信する第二受信手段と、
前記第二受信手段によって受信された前記第二時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第四送信手段と
を更に備えたことを特徴とする請求項1または2に記載の通信装置。
【請求項4】
前記第一送信手段は、
前記他の通信装置に対して前記要求データを送信する時刻を示す第一時刻情報と前記通信遅延時間とを含む前記要求データを、前記他の通信装置に対して送信し、
前記第二算出手段は、
前記第一受信手段によって、前記第一時刻情報および前記通信遅延時間を含む前記要求データを前記他の通信装置から受信した場合に、前記要求データに含まれる前記第一時刻情報および前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを送信する時刻を示す第二時刻情報を、前記第二時間情報として算出し、
前記第二送信手段は、
前記第二算出手段によって、前記第二時間情報として算出された前記第二時刻情報を含む前記応答データを、前記他の通信装置に対して送信し、
前記第二受信手段は、
前記他の通信装置から、前記第二時刻情報を前記第二時間情報として受信し、
前記第四送信手段は、
前記第二受信手段によって受信された前記第二時刻情報によって示される前記時刻に、前記他の通信装置に対して前記設定データを送信することを特徴とする請求項3に記載の通信装置。
【請求項5】
前記取得時間は、
前記NAT装置を介して前記中継装置に往路データを送信してから、前記中継装置が前記往路データに応じて返信する復路データを、前記NAT装置を介して受信するまでの時間を複数回計測し、計測した時間を2分した値の平均値を、前記通信遅延時間として取得することを特徴とする請求項1から4のいずれかに記載の通信装置。
【請求項6】
前記第一算出手段は、
前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得した前記通信遅延時間とを加算することによって、前記待機時間を算出することを特徴とする請求項2に記載の通信装置。
【請求項7】
Network Address Translation(NAT)装置のLAN側に接続する通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得ステップと、
前記通信装置が、他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得ステップによって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記通信装置から前記他の通信装置に対して送信する第一送信ステップと、
前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを前記通信装置が受信する第一受信ステップと、
前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記通信装置が前記他の通信装置に対して送信する第二送信ステップと、
前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記通信装置が前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、
前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記通信装置が前記他の通信装置に対して前記設定データを送信する第三送信ステップと
を備えたことを特徴とする通信方法。
【請求項8】
Network Address Translation(NAT)装置のLAN側に接続する通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得ステップと、
他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得ステップによって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記他の通信装置に対して送信する第一送信ステップと、
前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを受信する第一受信ステップと、
前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記他の通信装置に対して送信する第二送信ステップと、
前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、
前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第三送信ステップと
を通信装置のコンピュータに実行させるための通信プログラム。
【請求項1】
Network Address Translation(NAT)装置のLAN側に接続し、前記NAT装置のWAN側に接続された他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立して通信を行う通信装置であって、
前記通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得手段と、
前記他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得手段によって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信する第一送信手段と、
前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを受信する第一受信手段と、
前記第一受信手段によって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信する第二送信手段と、
前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出手段と、
前記第一算出手段によって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第三送信手段と
を備えたことを特徴とする通信装置。
【請求項2】
前記第一算出手段は、
前記第二送信手段によって前記応答データを送信してから、前記第三送信手段によって前記設定データを送信するまでの待機時間を、前記第一時間情報として算出し、
前記第三送信手段は、
前記第二送信手段によって前記応答データを送信してから、前記第一算出手段によって算出された待機時間分待機した後、前記設定データを送信することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを前記通信装置に対して送信するタイミングを特定するための第二時間情報を算出する第二算出手段を備え、
前記第二送信手段は、
前記第二算出手段によって算出された前記第二時間情報を少なくとも含む前記応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して前記他の通信装置に対して送信し、
前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から、前記第二時間情報を少なくとも含む前記応答データを受信する第二受信手段と、
前記第二受信手段によって受信された前記第二時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第四送信手段と
を更に備えたことを特徴とする請求項1または2に記載の通信装置。
【請求項4】
前記第一送信手段は、
前記他の通信装置に対して前記要求データを送信する時刻を示す第一時刻情報と前記通信遅延時間とを含む前記要求データを、前記他の通信装置に対して送信し、
前記第二算出手段は、
前記第一受信手段によって、前記第一時刻情報および前記通信遅延時間を含む前記要求データを前記他の通信装置から受信した場合に、前記要求データに含まれる前記第一時刻情報および前記通信遅延時間と、前記取得手段によって取得された前記通信遅延時間とに基づいて、前記他の通信装置が前記応答データに応じて前記設定データを送信する時刻を示す第二時刻情報を、前記第二時間情報として算出し、
前記第二送信手段は、
前記第二算出手段によって、前記第二時間情報として算出された前記第二時刻情報を含む前記応答データを、前記他の通信装置に対して送信し、
前記第二受信手段は、
前記他の通信装置から、前記第二時刻情報を前記第二時間情報として受信し、
前記第四送信手段は、
前記第二受信手段によって受信された前記第二時刻情報によって示される前記時刻に、前記他の通信装置に対して前記設定データを送信することを特徴とする請求項3に記載の通信装置。
【請求項5】
前記取得時間は、
前記NAT装置を介して前記中継装置に往路データを送信してから、前記中継装置が前記往路データに応じて返信する復路データを、前記NAT装置を介して受信するまでの時間を複数回計測し、計測した時間を2分した値の平均値を、前記通信遅延時間として取得することを特徴とする請求項1から4のいずれかに記載の通信装置。
【請求項6】
前記第一算出手段は、
前記第一受信手段によって受信された前記要求データに含まれる前記通信遅延時間と、前記取得手段によって取得した前記通信遅延時間とを加算することによって、前記待機時間を算出することを特徴とする請求項2に記載の通信装置。
【請求項7】
Network Address Translation(NAT)装置のLAN側に接続する通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得ステップと、
前記通信装置が、他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得ステップによって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記通信装置から前記他の通信装置に対して送信する第一送信ステップと、
前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを前記通信装置が受信する第一受信ステップと、
前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記通信装置が前記他の通信装置に対して送信する第二送信ステップと、
前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記通信装置が前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、
前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記通信装置が前記他の通信装置に対して前記設定データを送信する第三送信ステップと
を備えたことを特徴とする通信方法。
【請求項8】
Network Address Translation(NAT)装置のLAN側に接続する通信装置と、前記NAT装置のWAN側に接続された中継装置との間の通信遅延時間を取得する取得ステップと、
他の前記NAT装置のLAN側に接続された他の通信装置との間でセッションを確立させることを要求するデータであって、前記取得ステップによって取得された前記通信遅延時間を少なくとも含む要求データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記他の通信装置に対して送信する第一送信ステップと、
前記他のNAT装置、前記中継装置、および前記NAT装置を介し、前記他の通信装置から送信された前記要求データを受信する第一受信ステップと、
前記第一受信ステップによって前記要求データを受信した場合に、セッションの確立を許可することを通知する応答データを、前記NAT装置、前記中継装置、および前記他のNAT装置を介して、前記他の通信装置に対して送信する第二送信ステップと、
前記第一受信ステップによって受信された前記要求データに含まれる前記通信遅延時間と、前記取得ステップによって取得された前記通信遅延時間とに基づいて、前記他の通信装置との間でセッションを確立させるために必要な設定データを送信するタイミングを特定するための第一時間情報を算出する第一算出ステップと、
前記第一算出ステップによって算出された前記第一時間情報に基づいて、前記設定データを送信するタイミングを特定し、特定した前記タイミングで、前記他の通信装置に対して前記設定データを送信する第三送信ステップと
を通信装置のコンピュータに実行させるための通信プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2013−78031(P2013−78031A)
【公開日】平成25年4月25日(2013.4.25)
【国際特許分類】
【出願番号】特願2011−217442(P2011−217442)
【出願日】平成23年9月30日(2011.9.30)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】
【公開日】平成25年4月25日(2013.4.25)
【国際特許分類】
【出願日】平成23年9月30日(2011.9.30)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】
[ Back to top ]