説明

通信装置、通信方法、および通信システム

【課題】最小限のIPアドレスおよびポートを使用してNATの特性を判別することができる通信装置、通信方法、および通信システムを提供する。
【解決手段】通信装置は、通信を確立する相手側の通信装置である相手装置とサーバとの通信で使用された、相手装置のIPアドレスおよびサーバ用ポートの情報を取得する(S93)。通信装置は、自装置または相手装置から成功応答が送信される前に、実行中の呼制御において相手装置との通信に未だ使用していない新たなポートから、相手装置のサーバ用ポートに向けて「OPTIONS」を送信する(S94)。通信装置は、相手装置によって「OPTIONS」が受信されたか否かに基づいて、相手装置に関するNATの特性を判別する(S95〜S106)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、NATの特性を判別するための通信装置、通信方法、および通信システムに関する。
【背景技術】
【0002】
従来、複数の通信装置がP2Pで通信を行うために、複数の通信装置間でセッションを確立する技術が知られている。プライベートネットワーク内の通信装置が、グローバルネットワークに接続するためには、ネットワークアドレス変換機能またはネットワークアドレスポート変換機能(以下、「NAT」という。)を有する装置(NATルータ等。以下、「NAT装置」という。)を介する必要がある。セッションを確立する手法は、通信装置に関するNATの特性に応じて異なる。従って、通信装置間でセッションを確立する場合、通信装置に関するNATの特性をあらかじめ判別し、判別結果に適した手法(例えば、UDP Hole Punching等)を用いる。
【0003】
NATの特性を判別する一般的な方法として、RFC3489で示されている方法がある。上記の方法では、2台のSTUN(Simple Traversal of UDP through NATs)サーバを用いてNATの特性が判別される。一方、1台のサーバを用いてNATの特定を判別する方法も開示されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−295909号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
2台のサーバを用いてNATの特性を判別する方法では、有限である固有のIPアドレスを複数使用しなければならない。また、特許文献1に記載の通信装置は、接続しているNAT装置の種別に関わらず、第一の送信処理において、複数のパケットをサーバの異なるポートへ向けて送信する。さらに、通信装置は、第二の送信処理において、第一の送信処理で使用したポートとは異なるポートからサーバへパケットを送信する。つまり、特許文献1に記載の方法では、多数のポートを使用する必要がある。ポートの数は有限である。さらに、ポートを余分に使用することで、通信を許可していない装置が通信装置にアクセスする可能性が増加する。。
【0006】
本発明は、最小限のIPアドレスおよびポートを使用してNATの特性を判別することができる通信装置、通信方法、および通信システムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の第一の態様に係る通信装置は、サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがP2P通信を行うための呼制御を実行する通信システムで用いられる前記通信装置であって、前記サーバとの間で通信を行うためのポートであるサーバ用ポートを用いて、少なくとも前記呼出要求および前記成功応答を送受信するサーバ通信手段と、自装置と通信を確立する相手側の通信装置である相手装置のサーバ通信手段によって前記相手装置と前記サーバとの間で行われた通信における前記相手装置のIPアドレスおよびサーバ用ポートの情報を取得する情報取得手段と、前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得手段によって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するNATの特性を判別するためのデータである第一判別用データを送信する第一データ送信手段と、前記第一判別用データが受信されたか否かに基づいてNATの特性を判別する判別手段とを備えている。
【0008】
第一の態様に係る通信装置は、システム内に存在するサーバを1台のみ用いて、P2P通信を行うための呼制御の過程でNATの特性を判別することができる。従って、通信装置は、使用するIPアドレスの数を最小限に抑えてNATの特性を判別することができる。多数のポートを使用する必要もないので、通信を許可していない装置が通信装置にアクセスする可能性も低下させることができる。サーバの位置に依存したNATの特性ではなく、2つの通信装置間におけるNATの特性を的確に判別することができる。
【0009】
前記通信装置は、前記相手装置の第一データ送信手段によって送信された第一判別用データを受信した場合、受信が成功したことを示す第一受信情報を、前記相手装置のポートのうち、受信した第一判別用データを送信したポートに返信する第一返信手段をさらに備えてもよい。前記判別手段は、前記自装置の前記第一データ送信手段によって前記第一判別用データが前記相手装置に送信された場合、前記相手装置の第一返信手段によって返信された第一受信情報を一定時間内に受信すれば、前記相手装置に接続しているNAT装置の種別がFullConeNATである、または前記相手装置がNAT装置を介さないと判別し、一定時間内に前記相手装置から第一受信情報を受信しなければ、前記相手装置に接続しているNAT装置の種別がFullConeNAT以外の種別であると判別するとよい。
【0010】
通信装置が相手装置のサーバ用ポートに送信した第一判別用データを、相手装置が受信すれば、相手装置に接続しているNAT装置の種別はFullConeNATであるか、または相手装置はNAT装置を介さない(以下、「相手装置はNAT装置を介さない」というNATの特性を「OpenInternet」という)。通信装置は、一定時間内に第一受信情報を受信するか否かを判断するだけで、相手装置に関するNATの特性を容易に絞り込むことができる。
【0011】
前記通信装置は、前記第一データ送信手段によって前記第一判別用データを前記相手装置に送信してから、前記相手装置から第一受信情報を受信せずに一定時間が経過した場合に、前記サーバに対し、実行中の呼制御において前記サーバが前記相手装置との通信に使用したポートである装置用ポート以外の新たなポートから前記相手装置のサーバ用ポートに、前記相手装置に関するNATの特性を判別するためのデータである第二判別用データを送信する指示を行う指示手段をさらに備えてもよい。前記判別手段は、前記第二判別用データが前記相手装置によって受信されたか否かによって、前記相手装置に接続しているNAT装置の種別がアドレス制限ConeNATであるか否かを判別するとよい。
【0012】
通信装置に関するNATの特性がFullConeNAT、OpenInternet、またはアドレス制限ConeNATであれば、通信装置は第二判別用データを受信できる。第二判別用データが送信される時点で、相手装置に関するNATの特性がFullConeNATでもOpenInternetでもないことが判別されている。従って、通信装置は、第二判別用データの受信結果を用いて適切に相手装置に関するNATの特性を絞り込むことができる。
【0013】
前記通信装置は、前記サーバから第二判別用データを受信した場合、第二判別用データの受信が成功したことを示す第二受信情報を前記相手装置に通知する通知手段をさらに備えてもよい。前記判別手段は、前記自装置の前記指示手段によって前記サーバに前記第二判別用データの送信指示が行われた場合、一定時間内に前記相手装置から第二受信情報が通知されれば、前記相手装置に接続しているNAT装置の種別がアドレス制限ConeNATであると判別し、一定時間内に前記相手装置から第二受信情報が通知されなければ、前記相手装置に接続しているNAT装置の種別がFullConeNATおよびアドレス制限ConeNAT以外の種別であると判別するとよい。通信装置は、一定時間内に相手装置から第二受信情報が通知されるか否かを判断するだけで、相手装置に関するNATの種別がアドレス制限ConeNATであるか否かを容易に判別することができる。
【0014】
前記通信装置は、前記相手装置が異なるポートを送信先としてデータを複数回送信する場合に、使用されるNAT装置の前記ネットワーク側のポートが変更されるか否かを示す使用ポート情報を、前記相手装置または前記サーバから取得するポート情報取得手段をさらに備えてもよい。前記判別手段は、前記自装置の前記指示手段によって前記サーバに前記第二判別用データの送信指示が行われ、且つ一定時間内に前記相手装置から第二受信情報が通知されなかった場合、前記ポート情報取得手段によって取得された使用ポート情報が、ポートが変更されないことを示す情報であれば、前記相手装置に接続しているNAT装置の種別がポート制限ConeNATであると判別し、前記ポート情報取得手段によって取得された使用ポート情報が、ポートが変更されることを示す情報であれば、前記相手装置に接続しているNAT装置の種別がSymmetricNATであると判別するとよい。
【0015】
通信装置は、相手装置の使用ポート情報を用いて、NAT種別がポート制限ConeNATであるか、SymmetricNATであるかを容易に判別することができる。その結果、通信装置は、4つに大別されるNATの特性を的確に判別することができる。
【0016】
前記通信装置は、前記相手装置との間でSIP(Session Initiation Protocol)セッションを確立する呼制御を、サーバを介して実行してもよい。通信装置は、汎用的なSIPプロトコルを用いて、NATの特性の判別と通信装置間のセッションの確立とを容易に実現することができる。利用するサーバは、SIPプロトコルに準拠した動作を行うことができればよいため、NATの特性を判別するための特別な動作をサーバに実行させる必要はない。
【0017】
本発明の第二の態様に係る通信方法は、サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがP2P通信を行うための呼制御を実行する通信システムにおいて実行される通信方法であって、前記発呼装置および前記着呼装置の各々は、自装置と通信を確立する相手側の通信装置である相手装置と前記サーバとの間で行われた通信において使用された、前記相手装置のIPアドレス、および前記サーバとの間で通信を行うためのポートであるサーバ用ポートの情報を取得する情報取得ステップと、前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得ステップによって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するNATの特性を判別するためのデータである第一判別用データを送信する第一データ送信ステップと、前記第一判別用データが受信されたか否かに基づいてNATの特性を判別する判別ステップとを備え、前記発呼装置、前記着呼装置、および前記サーバは、前記判別ステップによる判別結果に応じて、前記発呼装置と前記着呼装置との間の通信を確立することを特徴とする。
【0018】
第二の態様に係る通信方法によると、システム内に存在するサーバを1台のみ用いて、P2P通信を行うための呼制御の過程でNATの特性を判別することができる。従って、通信装置は、使用するIPアドレスの数を最小限に抑えてNATの特性を判別することができる。多数のポートを使用する必要もないので、通信を許可していない装置が通信装置にアクセスする可能性も低下させることができる。サーバの位置に依存したNATの特性ではなく、2つの通信装置間におけるNATの特性を的確に判別することができる。
【0019】
本発明の第三の態様に係る通信システムは、サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがP2P通信を行うための呼制御を実行する通信システムであって、前記発呼装置および前記着呼装置の各々は、前記サーバとの間で通信を行うためのポートであるサーバ用ポートを用いて、少なくとも前記呼出要求および前記成功応答を送受信するサーバ通信手段と、自装置と通信を確立する相手側の通信装置である相手装置のサーバ通信手段によって前記相手装置と前記サーバとの間で行われた通信における前記相手装置のIPアドレスおよびサーバ用ポートの情報を取得する情報取得手段と、前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得手段によって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するNATの特性を判別するためのデータである第一判別用データを送信する第一データ送信手段と、前記第一判別用データが受信されたか否かに基づいてNATの特性を判別する判別手段とを備え、前記発呼装置、前記着呼装置、および前記サーバは、前記判別ステップによる判別結果に応じて、前記発呼装置と前記着呼装置との間の通信を確立することを特徴とする。
【0020】
第三の態様に係る通信システムによると、システム内に存在するサーバを1台のみ用いて、P2P通信を行うための呼制御の過程でNATの特性を判別することができる。従って、通信システムは、使用するIPアドレスの数を最小限に抑えてNATの特性を判別することができる。多数のポートを使用する必要もないので、通信を許可していない装置が通信装置にアクセスする可能性も低下させることができる。サーバの位置に依存したNATの特性ではなく、2つの通信装置間におけるNATの特性を的確に判別することができる。
【図面の簡単な説明】
【0021】
【図1】通信システム100のシステム構成を示す図である。
【図2】PC1の電気的構成を示す図である。
【図3】発呼装置に関するNATの特性および着呼装置に関するNATの特性が共にOpenInternetまたはFullConeNATである場合の処理の一例を示すシーケンス図である。
【図4】着呼装置に関するNATの特性がアドレス制限ConeNATである場合の処理の一例を示すシーケンス図である。
【図5】着呼装置に関するNATの特性がポート制限ConeNATである場合の処理の一例を示すシーケンス図である。
【図6】PC1が発呼装置として動作する場合の処理である発呼装置処理のフローチャートである。
【図7】PC1が発呼装置として動作する場合の処理である発呼装置処理のフローチャートである。
【図8】PC1が着呼装置として動作する場合の処理である着呼装置処理のフローチャートである。
【図9】PC1が着呼装置として動作する場合の処理である着呼装置処理のフローチャートである。
【発明を実施するための形態】
【0022】
以下、本発明に係る通信装置を具現化した一実施の形態であるパーソナルコンピュータ(以下、「PC」という。)1、および通信システム100について、図面を参照して説明する。参照する図面は、本発明が採用し得る技術的特徴を説明するために用いられるものである。図面に記載されている装置の構成、各種処理のフローチャート等は、それのみに限定する趣旨ではなく、単なる説明例である。
【0023】
図1を参照して、通信システム100のシステム構成について説明する。通信システム100は、複数のPC1と、サーバ6とを備える。各PC1は、インターネット等の外部ネットワーク8を介してサーバ6に接続することができる。サーバ6は、2つのPC1間におけるセッションを確立する。セッションとは、一般に、通信装置間の接続の開始から終了までを言う。特に、本実施の形態では、2つのPC1が音声データおよび画像データ等のメディアデータをP2P(peer to peer)で相互に送受信できる状態をいう。複数のPC1は、セッションの確立後にメディアデータを相互に送受信することで、遠隔会議を実現する。なお、通信システム100では、複数のPC1が外部ネットワーク8上で通信を開始するための双方向プロトコルとして、SIP(RFC3261)が用いられる。SIP(Session Initiation Protocol)は、外部ネットワーク8上でエンド・トゥ・エンドのセッションを確立するためのプロトコルであり、リアルタイムコミュニケーションを容易に実現できる。
【0024】
図1は、NATルータ9または10を介して外部ネットワーク8に接続するPC1と、NATルータを介さずに直接外部ネットワーク8に接続するPC1とを例示している。(以下、PC1がNATルータを介さずに外部ネットワーク8に接続している状態を、「OpenInternet」または「OpenInet」と略記する。)NATルータは、ローカルなネットワーク(例えば、LAN)内で使用されるプライベートIPアドレスと、外部ネットワーク8で使用されるグローバルIPアドレスとを相互変換する。
【0025】
本実施の形態では、NATルータは、IPアドレスおよびポート番号の変換方法によって、FullConeNAT、アドレス制限ConeNAT、ポート制限ConeNAT、およびSymmetricNATのいずれかの種別に分類される。FullConeNATは、外部ネットワーク8側(外側)に存在する一のIPアドレスおよびポートに対してデータを送信したポートに対しては、いずれのIPアドレスおよびポートからの通信も許可する。アドレス制限ConeNATは、データを送信した送信先のIPアドレスと同一のIPアドレスからの通信のみを許可するが、ポートの同一性は問わない。ポート制限ConeNATは、データを送信した送信先のIPアドレスおよびポートからの通信のみを許可する。SymmetricNATは、宛先毎に異なるポートを使用してデータを通過させる。
【0026】
PC1に関するNATの特性について説明する。NATの特性とは、PC1が外部ネットワーク8への接続にNATルータを介しているか否か、および、PC1がNATルータに接続している場合の、接続しているNATルータの種別を意味する。従って、本実施の形態では、各PC1に関するNATの特性は、OpenInternet、FullConeNAT、アドレス制限ConeNAT、ポート制限ConeNAT、およびSymmetricNATの5つの特性のうちのいずれかとなる。PC1がNATルータを介していない場合には、NATルータを介していないこと自体が、PC1に関するNATの特性となる。
【0027】
2つのPC1がセッションを確立するためには、互いのPC1に関するNATの特性に応じた最適な確立方法が実行される必要がある。この確立方法には、UPnP、UDP Hole Punching(以下、「UHP」という。)、UDP Multi Hole Punching、および直接接続等がある。例えば、NATの特性が共にアドレス制限ConeNATである2つのPC1間でセッションを確立する場合には、UHPを実行する必要がある。一方で、NATの特性が共にOpenInternetである2つのPC1の間でセッションを確立する場合には、データの送信はNATルータによって制限されない。この場合、2つのPC1は相互に直接接続してデータを送受信することができる。
【0028】
セッションの確立方法は、セッションを確立する2つのPC1に関するNATの特性に応じて決定される。従って、セッションを確立する場合、PC1に関するNATの特性があらかじめ判別され、判別結果に適した方法が用いられる。本実施の形態の通信システム100によると、最小限のIPアドレスおよびポートを使用して、SIPの呼制御の中で効率よくPC1に関するNATの特性を判別することができる。サーバ6の配置に関わらず、セッションを確立する2つのPC1に関するNATの特性を判別することができる。
【0029】
図2を参照して、PC1の電気的構成について説明する。図2に示すように、PC1は、PC1の制御を司るCPU20を備えている。CPU20には、ROM21、RAM22、ハードディスクドライブ(以下、「HDD」という。)23、および入出力インターフェース25が、バス24を介して接続されている。ROM21は、PC1を動作させるためのプログラムおよび初期値等を記憶している。RAM22は、制御プログラムで使用される各種の情報を一時的に記憶する。HDD23は、各種の情報を記憶する不揮発性の記憶装置である。
【0030】
入出力インターフェース25には、音声入力処理部41、音声出力処理部42、映像入力処理部43、映像出力処理部44、操作部45、および外部通信インターフェース26が接続されている。音声入力処理部41は、音声を入力するマイク31からの音声データの入力を処理する。音声出力処理部42は、音声を出力するスピーカ32の動作を処理する。映像入力処理部43は、映像を撮像するカメラ33からの画像データの入力を処理する。映像出力処理部44は、映像を表示する表示装置34の動作を処理する。操作部45は、ユーザがPC1に各種指示を入力するために用いられる。外部通信インターフェース26は、PC1を外部ネットワーク8に接続する。図2に示す例では、PC1はNATルータ9を介して外部ネットワーク8に接続している。
【0031】
PC1の代わりに、例えばテレビ会議専用の端末等を通信装置として使用することも可能である。PC1以外の端末を使用する場合でも、通信装置として使用する端末の基本的な電気的構成は、PC1の電気的構成と同じである。ノート型のPC1の代わりに、デスクトップ型のPCを用いてもよいことは言うまでもない。また、サーバ6は、CPU、ROM、RAM、HDD等を備える。サーバ6の基本的な電気的構成は、PC1の電気的構成の一部と共通しているため、この説明は省略する。
【0032】
以下、図3から図5を参照して、通信システム100で行われる処理の流れについて説明する。以下の説明では、セッションを確立する際に発呼側となるPC1を発呼装置、着呼側となるPC1を着呼装置という。発呼装置および着呼装置は、会議に接続可能な装置の1つとしてあらかじめサーバ6に登録されている。詳細には、発呼装置および着呼装置は、セッションを確立する前に、登録要求「REGISTER」のSIPメッセージをサーバ6に送信する。サーバ6は、成功応答「200 OK」を発呼装置および着呼装置に返信し、発呼装置および着呼装置を登録する。発呼装置および着呼装置は、以上の登録処理において使用したポート(以下、「サーバ用ポート」という。)を用いて、以後のサーバ6との通信を行う。サーバ6は、あらかじめ定められたポート(以下、「装置用ポート」という。)を原則として用いて、発呼装置との通信および着呼装置との通信を行う。その後、図3から図5に示す処理が開始する。SIPでは、サーバがPC1との通信に用いる装置用ポートの番号は「5060」と定められている。
【0033】
図3に例示する処理の流れについて説明する。図3は、発呼装置に関するNATの特性、および着呼装置に関するNATの特性が、共にOpenInternetまたはFullConeNATである場合の処理を例示している。まず、発呼装置および着呼装置は、セッションを確立する前に、自装置がデータを連続して送信する場合に使用するポートの値(以下、「使用ポート情報」という。)を取得する(S1およびS2)。具体的には、発呼装置および着呼装置は、3つ以上のパケットのそれぞれを、サーバ6の異なる宛先ポートに向けて連続して送信する。サーバ6は、受信したパケットの送信元ポートの値を、パケットの送信元の装置(発呼装置または着呼装置)に通知する。その結果、発呼装置および着呼装置は、サーバ6との間の通信で使用したポートの値を使用ポート情報として取得することができる。詳細は後述するが、取得した使用ポート情報は、自装置に関するNATの特性を判別する際に用いられる。
【0034】
着呼装置との間のセッションを確立する指示が発呼装置に入力されると、発呼装置は、呼出要求「INVITE」を着呼装置へ送信する(S3)。「INVITE」は、サーバ6によって中継されて着呼装置へ送信される。発呼装置は、「INVITE」のSIPメッセージの中に、あらかじめ取得してある自装置の使用ポート情報を含める。さらに、サーバ6は、発呼装置との通信の結果取得した、発呼装置のIPアドレスおよびサーバ用ポートの情報を、「INVITE」に含める。
【0035】
着呼装置は、「INVITE」を受信すると、「INVITE」に含まれる発呼装置の使用ポート情報から、発呼装置のポート変動を検出する。さらに、着呼装置は、「INVITE」に含まれる発呼装置のIPアドレスおよびサーバ用ポートの情報を取得する(S4)。ポート変動とは、PC1が連続してデータを送信する場合に使用するポートの値が変動するか否か(使用するポートの番号が変更されるか否か)を示す。本実施の形態では、使用ポート情報に含まれる3つ以上のポートの値から、「変動しない」、「固定値で変動する」、および「ランダムに変動する」のいずれであるかが検出される。
【0036】
着呼装置は、通信確立中であることを通知するための暫定レスポンス「100 Trying」を、サーバ6を介して発呼装置に送信する(S5)。この暫定レスポンスの送信処理は、必須ではない。次いで、着呼装置は、実行中の呼制御において発呼装置との間の通信に未だ使用していないポートから、発呼装置のサーバ用ポートへ向けて「OPTIONS」を送信する(S6)。「OPTIONS」は、セッションを確立する相手となる相手装置に対してデータの返信を要求するメッセージである。「OPTIONS」は、相手装置に関するNATの特性を判別するために送信される。「OPTIONS」の送信先のポートは、サーバ6との通信のために用いられるサーバ用ポートである。従って、相手装置に関するNATの特性がアドレス制限ConeNAT、ポート制限ConeNAT、またはSymmetricNATであれば、相手装置は「OPTIONS」を受信することができない。相手装置に関するNATの特性がOpenInternetまたはFullConeNATであれば、相手装置は「OPTIONS」を受信することができる。「100 Trying」と「OPTIONS」の送信順は前後してもよい。
【0037】
図3に示す例では、発呼装置に関するNATの特性はOpenInternetまたはFullConeNATであるため、発呼装置は「OPTIONS」を受信できる。発呼装置は、「OPTIONS」を受信すると、「OPTIONS」の受信に対するレスポンスである成功応答「200 OK(OPT)」を、「OPTIONS」の送信元のポートへ返信する(S7)。着呼装置は、送信した「OPTIONS」に対するレスポンス「200 OK(OPT)」を受信することで、発呼装置に関するNATの特性をOpenInternetまたはFullConeNATと判別する(S8)。
【0038】
着呼装置は、暫定レスポンス「180 Ringing」を、サーバ6を介して発呼装置に送信する(S9)。「180 Ringing」には、発呼装置に関するNATの特性を示すNAT特性情報と、着呼装置の使用ポート情報と、着呼装置のIPアドレスおよびサーバ用ポートの情報とが含まれる。発呼装置は、「180 Ringing」に含まれるNAT特性情報を取得し、自装置に関するNATの特性を認識する。
【0039】
次いで、着呼装置に関するNATの特性を判別する処理に移行する。まず、発呼装置は、「180 Ringing」に含まれる使用ポート情報から着呼装置のポート変動を検出し、且つ、着呼装置のIPアドレスおよびサーバ用ポートの情報を取得する(S10)。発呼装置は、実行中の呼制御において着呼装置との間の通信に未だ使用していない新たなポートから、着呼装置のサーバ用ポートへ向けて「OPTIONS」を送信する(S11)。具体的には、発呼装置は、S7で「200 OK(OPT)」を送信したポート以外のポートから「OPTIONS」を送信する。
【0040】
図3に示す例では、着呼装置に関するNATの特性はOpenInternetまたはFullConeNATである。よって、着呼装置は、自装置のサーバ用ポートへ向けて送信された「OPTIONS」を受信できる。着呼装置は、「OPTIONS」を受信すると、レスポンスである成功応答「200 OK(OPT)」を、「OPTIONS」の送信元のポートへ返信する(S12)。発呼装置は、送信した「OPTIONS」に対するレスポンス「200 OK(OPT)」を受信することで、着呼装置に関するNATの特性をOpenInternetまたはFullConeNATと判別する(S13)。
【0041】
発呼装置は、着呼装置に関するNATの特性がOpenInternetまたはFullConeNATであることを示すNAT特性情報を、着呼装置に送信する(S14)。本実施の形態の発呼装置は、「OPTIONS」にNAT特性情報を含めて送信している。しかし、「UPDATE」等の他のSIPメッセージを利用してNAT特性情報を送信してもよい。また、NAT特性情報は、サーバ6を介して着呼装置に送信してもよいし、サーバ6を介さずに直接送信してもよい。着呼装置は、「INVITE」に対する成功応答「200 OK(INV)」を、サーバ6を介して発呼装置に送信する(S15)。発呼装置は、確認応答「ACK」を着呼装置に送信する(S16)。発呼装置および着呼装置は、判別した互いのNATの特性に応じた方法でセッションを確立する。図3に示す例では、UHP等の方法は用いられずに、直接接続によって発呼装置と着呼装置との間のセッションが確立される。
【0042】
図4に例示する処理の流れについて説明する。図4に示す例では、発呼装置に関するNATの特性は、OpenInternetまたはFullConeNATである。着呼装置に関するNATの特性は、アドレス制限ConeNATである。発呼装置に関するNATの特性は図3の場合と同じであるため、図4のS21〜S29の処理は、図3のS1〜9の処理と同じである。よって、この説明は省略する。
【0043】
発呼装置に関するNATの特性の判別が終了し、発呼装置が「180 Ringing」を受信すると(S29)、発呼装置は、着呼装置のポート変動を検出し、且つ着呼装置のIPアドレスおよびサーバ用ポートの情報を取得する(S30)。発呼装置は、新たなポートから着呼装置のサーバ用ポートへ向けて「OPTIONS」を送信する(S31)。図4に示す例では、着呼装置に関するNATの特性は、アドレス制限ConeNATである。従って、着呼装置は、発呼装置から送信された「OPTIONS」をサーバ用ポートから受信することはできない。
【0044】
発呼装置は、送信した「OPTIONS」に対する着呼装置からのレスポンスがないまま所定時間が経過すると、サーバ6に対して要求送信を指示する(S32)。要求送信の指示とは、実行中の呼制御においてサーバ6が着呼装置との通信で使用したポート以外の新たなポートから、着呼装置のサーバ用ポートに返信要求を送信させる指示である。具体的には、サーバ6は、要求送信の指示を受けると、装置用ポートである「5060」番のポート以外のポートから返信要求を送信する(S33)。図4に示す例では、着呼装置に関するNATの特性はアドレス制限ConeNATである。よって、着呼装置は、サーバ6から送信されたデータであれば、装置用ポート以外のポートから送信されたデータであっても受信できる。
【0045】
着呼装置は、返信要求を受信すると、サーバ6を介して、返信要求に対するレスポンスを発呼装置に返信する(S34)。発呼装置は、返信要求に対するレスポンスを受信することで、着呼装置に関するNATの特性をアドレス制限ConeNATと判別する(S35)。発呼装置は、着呼装置に関するNATの特性がアドレス制限ConeNATであることを示すNAT特性情報を、「OPTIONS」に含めて着呼装置に送信する(S36)。着呼装置は、成功応答「200 OK(INV)」を、サーバ6を介して発呼装置に送信する(S37)。発呼装置は、確認応答「ACK」を着呼装置に送信する(S38)。発呼装置および着呼装置は、判別した互いのNATの特性に基づき、UHPを用いてセッションを確立する。
【0046】
図5に例示する処理の流れについて説明する。図5に示す例では、発呼装置に関するNATの特性は、図3および図4に示す例と同様にOpenInternetまたはFullConeNATである。着呼装置に関するNATの特性は、ポート制限ConeNATである。図5のS41〜S49の処理は、図3のS1〜S9の処理と同じであるため、この説明は省略する。
【0047】
発呼装置に関するNATの特性が判別され、発呼装置が「180 Ringing」を受信すると(S49)、発呼装置は、着呼装置のポート変動を検出し、且つ着呼装置のIPアドレスおよびサーバ用ポートの情報を取得する(S50)。発呼装置は、新たなポートから着呼装置のサーバ用ポートへ向けて「OPTIONS」を送信する(S51)。着呼装置はポート制限ConeNATに接続しているため、着呼装置は、発呼装置から送信された「OPTIONS」を受信することはできない。
【0048】
発呼装置は、送信した「OPTIONS」に対する着呼装置からのレスポンスがないまま所定時間が経過すると、サーバ6に対して要求送信を指示する(S52)。サーバ6は、要求送信の指示を受けて、装置用ポート以外のポートから着呼装置のサーバ用ポートに返信要求を送信する(S53)。図5に示す例では、着呼装置に関するNATの特性はポート制限ConeNATである。着呼装置のサーバ用ポートは、サーバ6の装置用ポートに対する送信履歴を有する。従って、着呼装置は、サーバ6から送信されたデータであっても、装置用ポートから送信されたデータでなければ受信できない。よって、着呼装置は、サーバ6から送信された返信要求を受信できない。
【0049】
発呼装置は、要求送信に対するレスポンスがないまま所定時間が経過すると、着呼装置に関するNATの特性をポート制限ConeNATまたはSymmetricNATと判別する(S54)。詳細には、発呼装置は、S50で検出した着呼装置のポート変動が「変動しない」であれば、着呼装置に関するNATの特性をポート制限ConeNATと判別する。なお、S50で検出したポート変動が「固定値で変動する」または「ランダムに変動する」であれば、SymmetricNATと判別する。
【0050】
発呼装置は、着呼装置に関するNATの特性がポート制限ConeNATであることを示すNAT特性情報を、「OPTIONS」に含めて着呼装置に送信する(S55)。着呼装置は、成功応答「200 OK(INV)」を、サーバ6を介して発呼装置に送信する(S56)。発呼装置は、確認応答「ACK」を着呼装置に送信する(S57)。発呼装置および着呼装置は、判別した互いのNATの特性に基づき、UHPを用いてセッションを確立する。
【0051】
図6から図9を参照して、上記の通信システム100の処理を実行するために各PC1が実行する処理について説明する。まず、図6および図7を参照して、PC1が発呼装置として動作する場合の処理である発呼装置処理について説明する。発呼装置処理は、他のPC1との間のセッションを確立する指示がPC1に入力された場合に、PC1のCPU20が実行する。なお、発呼装置処理が行われる前に、前述した自装置の使用ポート情報が取得される。
【0052】
図6に示すように、発呼装置処理が開始されると、呼出要求「INVITE」が着呼装置へ送信される(S62)。先述したように、「INVITE」を受信した着呼装置は、「100 Trying」を発呼装置に送信し、発呼装置のサーバ用ポートへ向けて「OPTIONS」を送信する。発呼装置では、着呼装置から「OPTIONS」を受信したか否かが判断される(S63)。受信していなければ(S63:NO)、サーバ6から返信要求を受信したか否かが判断される(S64)。受信していなければ(S64:NO)、着呼装置から「180 Ringing」を受信したか否かが判断され(S65)、受信していなければ(S65:NO)、S63〜S65の判断が繰り返し行われる。
【0053】
「OPTIONS」が受信されると(S63:YES)、「OPTIONS」に対するレスポンスである「200 OK(OPT)」が着呼装置に返信される(S66)。着呼装置では、「OPTIONS」に対するレスポンスが受信されると、発呼装置に関するNATの特性がOpenInternetまたはFullConeNATと判別される。次いで、発呼装置では、「180 Ringing」を受信するまで待機される(S67:NO)。「180 Ringing」が受信されると(S67:YES)、受信したメッセージに含まれる自装置のNAT特性情報が取得されて(S68)、処理はS71(図7参照)へ移行する。
【0054】
「OPTIONS」が受信されることなく、サーバ6からの返信要求が受信されると(S64:YES)、返信要求に対するレスポンスが着呼装置に返信される(S66)。着呼装置では、返信要求に対するレスポンスが受信されると、発呼装置に関するNATの特性がアドレス制限ConeNATと判別される。次いで、発呼装置では、「180 Ringing」が受信され(S67:YES)、自装置のNAT特性情報が取得されて(S68)、処理はS71へ移行する。
【0055】
「OPTIONS」および返信要求が受信されることなく、「180 Ringing」が受信された場合には(S65:YES)、「180 Ringing」に含まれるNAT特性情報が取得されて(S68)、処理はS71へ移行する。この場合のNAT特性情報は、発呼装置に関するNATの特性がポート制限ConeNATまたはSymmetricNATであることを示す。
【0056】
着呼装置に関するNATの特性を判別するための処理が行われる。図7に示すように、まず、「180 Ringing」に含まれる着呼装置の使用ポート情報から、着呼装置のポート変動が検出される。さらに、着呼装置のIPアドレスおよびサーバ用ポートの情報が、「180 Ringing」に含まれる情報から取得される(S71)。実行中の呼制御において着呼装置との間の通信に未だ使用していないポートから、着呼装置のサーバ用ポートへ向けて「OPTIONS」が送信される(S72)。「OPTIONS」に対するレスポンスである「200 OK(OPT)」が受信されたか否かが判断される(S73)。受信されていなければ(S73:NO)、「OPTIONS」が送信されてから所定時間が経過したか否かが判断される(S74)。所定時間が経過していなければ(S74:NO)、S73およびS74の判断が繰り返し行われる。
【0057】
「200 OK(OPT)」が受信された場合には(S73:YES)、着呼装置に関するNATの特性がOpenInternetまたはFullConeNATと判別される(S75)。着呼装置に関するNATの特性を示すNAT特性情報が、着呼装置に送信される(S86)。「INVITE」に対する成功応答「200 OK(INV)」が受信されるまで待機され(S87:NO)、受信されると(S87:YES)、「ACK」が着呼装置に送信される(S88)。判別されたNATの特性に応じてセッションが確立されて(S89)、発呼装置処理は終了する。
【0058】
「200 OK(OPT)」が受信されることなく(S73:NO)、所定時間が経過してタイムアウトとなると(S74:YES)、サーバ6に対して要求送信が指示される(S77)。前述したように、要求送信の指示とは、実行中の呼制御においてサーバ6が着呼装置との通信で使用したポート以外の新たなポートから、着呼装置のサーバ用ポートに返信要求を送信させる指示である。次いで、返信要求に対するレスポンスが受信されたか否かが判断される(S78)。受信されていなければ(S78:NO)、サーバ6に要求送信が指示されてから所定時間が経過したか否かが判断される(S79)。所定時間が経過していなければ(S79:NO)、S78およびS79の判断が繰り返し行われる。
【0059】
返信要求に対するレスポンスが受信された場合には(S78:YES)、着呼装置に関するNATの特性がアドレス制限ConeNATと判別されて(S81)、処理はS86へ移行する。レスポンスが受信されることなく(S78:NO)、タイムアウトとなると(S79:YES)、着呼装置に接続されているNATルータのポートの番号が、データが送信される毎に変更されるか否かが判断される(S83)。S83の判断は、S71で行われたポート変動の検出結果に基づいて行われる。変更されないと判断された場合には(S83:NO)、着呼装置に関するNATの特性がポート制限ConeNATと判別されて(S84)、処理はS86へ移行する。ポートの番号が変更されると判断された場合には(S83:YES)、着呼装置に関するNATの特性がSymmetricNATと判別されて(S85)、処理はS86へ移行し、セッションが確立される。
【0060】
図8および図9を参照して、PC1が着呼装置として動作する場合の処理である着呼装置処理について説明する。着呼装置処理は、発呼装置から「INVITE」が送信されることを契機として、PC1のCPU20が実行する。図8に示すように、着呼装置処理が開始されると、「INVITE」が受信される(S92)。「INVITE」に含まれる発呼装置の情報から、発呼装置のポート変動が検出され、且つ発呼装置のIPアドレスおよびサーバ用ポートが取得される(S93)。発呼装置のサーバ用ポートへ向けて、新たなポートから「OPTIONS」が送信される(S94)。本実施の形態では、図示しないが、「INVITE」が受信された以降に「100 Trying」も発呼装置に送信される。
【0061】
「OPTIONS」に対するレスポンスである「200 OK(OPT)」が受信されたか否かが判断される(S95)。受信されていなければ(S95:NO)、「OPTIONS」が送信されてから所定時間が経過したか否かが判断される(S96)。所定時間が経過していなければ(S96:NO)、S95およびS96の判断が繰り返し行われる。
【0062】
「200 OK(OPT)」が受信された場合には(S95:YES)、発呼装置に関するNATの特性がOpenInternetまたはFullConeNATと判別される(S98)。暫定レスポンス「180 Ringing」が、発呼装置に送信される(S108)。この「180 Ringing」には、発呼装置に関するNATの特性を示すNAT特性情報が含まれる。
【0063】
「200 OK(OPT)」が受信されることなく(S95:NO)、タイムアウトとなると(S96:YES)、サーバ6に対して要求送信が指示される(S99)。返信要求に対するレスポンスが受信されたか否かが判断される(S100)。受信されていなければ(S100:NO)、要求送信が指示されてから所定時間が経過したか否かが判断される(S101)。所定時間が経過していなければ(S101:NO)、S100およびS101の判断が繰り返し行われる。
【0064】
返信要求に対するレスポンスが受信された場合には(S100:YES)、発呼装置に関するNATの特性がアドレス制限ConeNATと判別されて(S103)、「180 Ringing」が送信される(S108)。レスポンスが受信されることなく(S100:NO)、タイムアウトとなると(S101:YES)、S93で行われたポート変動の検出結果から、発呼装置に接続されているNATルータのポートが変更されるか否かが判断される(S104)。変更されないと判断された場合には(S104:NO)、発呼装置に関するNATの特性がポート制限ConeNATと判別されて(S105)、「180 Ringing」が送信される(S108)。ポートが変更されると判断された場合には(S104:YES)、発呼装置に関するNATの特性がSymmetricNATと判別されて(S106)、「180 Ringing」が送信される(S108)。処理はS111(図9参照)へ移行する。
【0065】
着呼装置に関するNATの特性の判別するための処理が行われる。図9に示すように、発呼装置から「OPTIONS」を受信したか否かが判断される(S111)。「OPTIONS」を受信していなければ(S111:NO)、サーバ6から返信要求を受信したか否かが判断される(S112)。返信要求を受信していなければ(S112:NO)、発呼装置からNAT特性情報を受信したか否かが判断される(S113)。NAT特性情報も受信していなければ(S113:NO)、S111〜S113の判断が繰り返し行われる。
【0066】
「OPTIONS」が受信されると(S111:YES)、「OPTIONS」に対するレスポンスである「200 OK(OPT)」が発呼装置に返信される(S114)。NAT特性情報を受信するまで待機される(S115:NO)。NAT特性情報が受信されると(S115:YES)、成功応答「200 OK(INV)」が発呼装置に送信される(S116)。発呼装置から「ACK」を受信するまで待機され(S117:NO)、受信すると(S117:YES)、NATの特性に応じてセッションが確立されて(S118)、処理は終了する。
【0067】
「OPTIONS」が受信されることなく、サーバ6からの返信要求が受信されると(S112:YES)、返信要求に対するレスポンスが発呼装置に返信される(S114)。その後、NAT特性情報が受信され(S115:YES)、「200 OK(INV)」が送信されて(S116)、セッションが確立される(S118)。「OPTIONS」および返信要求が受信されることなく、NAT特性情報が受信された場合には(S113:YES)、着呼装置に関するNATの特性は、ポート制限ConeNATまたはSymmericNATである。この場合、そのまま「200 OK(INV)」が送信され(S116)、セッションが確立されて(S118)、処理は終了する。
【0068】
以上説明したように、本実施の形態のPC1によると、通信システム100内に存在するサーバ6を1台のみ用いて、P2P通信を行うための呼制御の過程で、発呼装置および着呼装置に関するNATの特性を判別することができる。従って、PC1は、使用するIPアドレスの数を最小限に抑えてNATの特性を判別することができる。多数のポートを使用する必要もないため、通信を許可していない装置が通信装置にアクセスする可能性も低下させることができる。PC1によると、サーバ6の位置に依存したNATの特性ではなく、2つのPC1間におけるNATの特性を的確に判別することができる。呼制御の中でNATの特性を判別することができるため、効率もよい。呼制御を実行する前にUHP等の処理を行う場合とは異なり、「200 OK(INV)」が着呼装置から送信される前に呼制御がキャンセルされた場合でも、通信を許可していない装置が通信装置にアクセスする可能性が増すことを防止することができる。
【0069】
PC1が相手装置のサーバ用ポートに送信した「OPTIONS」を、相手装置が受信できれば、相手装置に関するNATの特性はOpenInternetまたはFullConeNATである。相手装置は、「OPTIONS」を受信すると「200 OK(OPT)」をPC1に返信する。従って、PC1は、「200 OK(OPT)」を所定時間内に受信するか否かを判断するだけで、相手装置に関するNATの特性を容易に絞り込むことができる。
【0070】
PC1は、相手装置から「200 OK(OPT)」を受信しなかった場合、サーバ6に要求送信を指示する。要求送信を指示されたサーバ6は、相手装置との間の通信に使用する装置用ポート以外のポートから、相手装置のサーバ用ポートに返信要求を送信する。相手装置に関するNATの特性がOpenInternet、FullConeNAT、およびアドレス制限ConeNATのいずれかであれば、相手装置は返信要求を受信できる。また、相手装置は「OPTIONS」を受信できていないので、相手装置に関するNATの特性がOpenInternetでもFullConeNATでもないことが既に判別されている。従って、PC1は、相手装置に関するNATの特性がアドレス制限ConeNATであるか否かを、サーバ6から送信される返信要求が受信されるか否かによって容易に判別することができる。詳細には、PC1は、返信要求に対するレスポンスを相手装置から所定時間内に受信するか否かを判断するだけで、相手装置に関するNATの特性を容易に絞り込むことができる。
【0071】
PC1は、返信要求に対するレスポンスを相手装置から受信しなかった場合、相手装置の使用ポート情報を用いて、相手装置に関するNATの特性がポート制限ConeNATおよびSymmetricNATのいずれであるかを容易に判別することができる。その結果、PC1は、4つに大別されるNATの特性を的確に判別することができる。PC1は、汎用的なSIPプロトコルを用いて、NATの特性の判別と相手装置との間のセッションの確立とを容易に実現することができる。通信システム100に利用されるサーバ6は、SIPプロトコルに準拠した動作を行うことができればよいため、NATの特性を判別するための特別な動作をサーバに実行させる必要はない。
【0072】
上記実施の形態において、PC1が本発明の「通信装置」に相当する。例えば、図6のS62、図8のS92、S108、図9のS116等で、サーバ6との通信処理を行うCPU20が、本発明の「サーバ通信手段」として機能する。図7のS71、図8のS93等で相手装置のIPアドレスおよびサーバ用ポートの情報を取得するCPU20が「情報取得手段」として機能する。図7のS72および図8のS94で送信される「OPTIONS」が「第一判別用データ」に相当する。「OPTIONS」を送信するCPU20が「第一データ送信手段」として機能する。図7のS73〜85で相手装置に関するNATの特性を判別するCPU20が「判別手段」として機能する。
【0073】
図6のS66および図9のS114で「OPTIONS」に対するレスポンスである「200 OK(OPT)」を返信する処理が「第一返信手段」として機能する。「200 OK(OPT)」が「第一受信情報」に相当する。図7のS77および図8のS99で要求送信をサーバ6に指示するCPU20が「指示手段」として機能する。図4のS33および図5のS53でサーバ6から送信される返信要求が「第二判別用データ」に相当する。図6のS66および図9のS114で返信要求に対してレスポンスを送信するCPU20が「通知手段」として機能する。返信要求に対して送信されるレスポンスが「第二受信情報」に相当する。図7のS71および図8のS93で相手装置の使用ポート情報を「INVITE」から取得するCPU20が「ポート情報取得手段」として機能する。
【0074】
図7のS71、図8のS93等で相手装置のIPアドレスおよびサーバ用ポートの情報を取得する処理が「情報取得ステップ」に相当する。図7のS72および図8のS94で「OPTIONS」を送信する処理が「第一データ送信ステップ」に相当する。図7のS73〜85で相手装置に関するNATの特性を判別する処理が「判別ステップ」に相当する。
【0075】
本発明は、上記実施の形態に限定されることはなく、様々な変形が可能であることは言うまでもない。上記実施の形態では、セッション開始プロトコルとして汎用的なSIPプロトコルが使用されている。しかし、これは一例に過ぎない。他の技術を用いてPC1間のセッションを確立する通信システム100にも、本発明は適用できる。
【0076】
上記実施の形態では、第一判別用データである「OPTIONS」を送信したPC1が、相手装置からのレスポンスの有無によって、相手装置に関するNATの特性を判別している。従って、PC1は、実際の通信の結果に基づいて客観的に相手装置に関するNATの特性を判別することができる。しかし、「OPTIONS」を受信する側のPC1が、自装置に関するNATの特性を判別してもよい。例えば、PC1は、図6のS63の判断で「OPTIONS」を受信したと判断した場合に、自装置に関するNATの特性をOpenInternetまたはFullConeNATと判別してもよい。PC1は、図6のS64の判断で返信要求を受信したと判断した場合に、自装置に関するNATの特性をアドレス制限ConeNATと判別してもよい。PC1は、図6のS65の判断で「180 Ringing」を受信した場合に、自装置に関するNATの特性をポート制限ConeNATまたはSymmetricNATと判別してもよい。PC1は、自装置に関するNATの特性を判別した後に、判別の結果を相手装置に通知すればよい。従って、本発明の「判別手段」は、「OPTIONS」等に対するレスポンスの有無によってNATの特性を判別する場合だけでなく、相手装置が判別したNATの特性を相手装置から受信する場合も含む。図9のS111〜S113の処理も、図6のS64〜66の処理と同様に変更できる。
【0077】
上記実施の形態のPC1は、相手装置に関するNATの特性をポート制限ConeNATおよびSymmetricNATの2つに絞り込んだ後に、相手装置が使用するポートが変動するか否かに基づいてNATの特性を判別する。しかし、ポート変動に基づいてNATの特性を判別するタイミングは、変更できる。例えば、図7のS71および図8のS93でポート変動を検出した後に、検出の結果に応じて、相手装置に関するNATの特性がSymmetricNATであるか否かを判別してもよい。上記実施の形態の通信システム100は、セッションを確立する2つのPC1に関するNATの特性を共に判別した後に、判別結果に応じてセッションを確立している。しかし、2つのPC1のうちの一方に関するNATの特性のみを判別してもよい。例えば、通信システム100は、2つのPC1の一方に関するNATの特性がOpenInternetまたはFullConeNATであると判別した時点で、他方のPC1に関するNATの特性を判別せずに、直接接続によって2つのPC1間のセッションを確立してもよい。
【0078】
上記実施の形態のPC1は、相手装置の使用ポート情報を相手装置から取得し、取得した使用ポート情報から相手装置のポート変動を検出する。しかし、ポート変動の検出方法はこれに限られない。例えば、PC1は、相手装置の使用ポート情報をサーバ6から取得してもよい。相手装置自身またはサーバ6が相手装置のポート変動を検出して、検出結果のみをPC1に通知してもよい。PC1が相手装置のポート変動を検出するタイミングも変更できる。
【0079】
上記実施の形態のPC1は、相手装置のIPアドレスおよびサーバ用ポートの情報を、呼出要求「INVITE」と共にサーバ6から取得する。しかし、PC1は、他のタイミングでサーバ用ポート等の情報を取得してもよい。PC1は、「OPTIONS」等によって相手装置から直接サーバ用ポート等の情報を取得してもよい。サーバ6および相手装置以外の外部機器からサーバ用ポートの情報を取得してもよい。
【符号の説明】
【0080】
1 PC
6 サーバ
8 外部ネットワーク
9,10 NATルータ
20 CPU
21 ROM
22 RAM
23 HDD
100 通信システム

【特許請求の範囲】
【請求項1】
サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがP2P通信を行うための呼制御を実行する通信システムで用いられる前記通信装置であって、
前記サーバとの間で通信を行うためのポートであるサーバ用ポートを用いて、少なくとも前記呼出要求および前記成功応答を送受信するサーバ通信手段と、
自装置と通信を確立する相手側の通信装置である相手装置のサーバ通信手段によって前記相手装置と前記サーバとの間で行われた通信における前記相手装置のIPアドレスおよびサーバ用ポートの情報を取得する情報取得手段と、
前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得手段によって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するNATの特性を判別するためのデータである第一判別用データを送信する第一データ送信手段と、
前記第一判別用データが受信されたか否かに基づいてNATの特性を判別する判別手段とを備えたことを特徴とする通信装置。
【請求項2】
前記相手装置の第一データ送信手段によって送信された第一判別用データを受信した場合、受信が成功したことを示す第一受信情報を、前記相手装置のポートのうち、受信した第一判別用データを送信したポートに返信する第一返信手段をさらに備え、
前記判別手段は、前記自装置の前記第一データ送信手段によって前記第一判別用データが前記相手装置に送信された場合、
前記相手装置の第一返信手段によって返信された第一受信情報を一定時間内に受信すれば、前記相手装置に接続しているNAT装置の種別がFullConeNATである、または前記相手装置がNAT装置を介さないと判別し、
一定時間内に前記相手装置から第一受信情報を受信しなければ、前記相手装置に接続しているNAT装置の種別がFullConeNAT以外の種別であると判別することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記第一データ送信手段によって前記第一判別用データを前記相手装置に送信してから、前記相手装置から第一受信情報を受信せずに一定時間が経過した場合に、前記サーバに対し、実行中の呼制御において前記サーバが前記相手装置との通信に使用したポートである装置用ポート以外の新たなポートから前記相手装置のサーバ用ポートに、前記相手装置に関するNATの特性を判別するためのデータである第二判別用データを送信する指示を行う指示手段をさらに備え、
前記判別手段は、前記第二判別用データが前記相手装置によって受信されたか否かによって、前記相手装置に接続しているNAT装置の種別がアドレス制限ConeNATであるか否かを判別することを特徴とする請求項2に記載の通信装置。
【請求項4】
前記サーバから第二判別用データを受信した場合、第二判別用データの受信が成功したことを示す第二受信情報を前記相手装置に通知する通知手段をさらに備え、
前記判別手段は、前記自装置の前記指示手段によって前記サーバに前記第二判別用データの送信指示が行われた場合、
一定時間内に前記相手装置から第二受信情報が通知されれば、前記相手装置に接続しているNAT装置の種別がアドレス制限ConeNATであると判別し、
一定時間内に前記相手装置から第二受信情報が通知されなければ、前記相手装置に接続しているNAT装置の種別がFullConeNATおよびアドレス制限ConeNAT以外の種別であると判別することを特徴とする請求項3に記載の通信装置。
【請求項5】
前記相手装置が異なるポートを送信先としてデータを複数回送信する場合に、使用されるNAT装置の前記ネットワーク側のポートが変更されるか否かを示す使用ポート情報を、前記相手装置または前記サーバから取得するポート情報取得手段をさらに備え、
前記判別手段は、前記自装置の前記指示手段によって前記サーバに前記第二判別用データの送信指示が行われ、且つ一定時間内に前記相手装置から第二受信情報が通知されなかった場合、
前記ポート情報取得手段によって取得された使用ポート情報が、ポートが変更されないことを示す情報であれば、前記相手装置に接続しているNAT装置の種別がポート制限ConeNATであると判別し、
前記ポート情報取得手段によって取得された使用ポート情報が、ポートが変更されることを示す情報であれば、前記相手装置に接続しているNAT装置の種別がSymmetricNATであると判別することを特徴とする請求項4に記載の通信装置。
【請求項6】
前記通信装置は、前記相手装置との間でSIP(Session Initiation Protocol)セッションを確立する呼制御を、サーバを介して実行することを特徴とする請求項1から5のいずれかに記載の通信装置。
【請求項7】
サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがP2P通信を行うための呼制御を実行する通信システムにおいて実行される通信方法であって、
前記発呼装置および前記着呼装置の各々は、
自装置と通信を確立する相手側の通信装置である相手装置と前記サーバとの間で行われた通信において使用された、前記相手装置のIPアドレス、および前記サーバとの間で通信を行うためのポートであるサーバ用ポートの情報を取得する情報取得ステップと、
前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得ステップによって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するNATの特性を判別するためのデータである第一判別用データを送信する第一データ送信ステップと、
前記第一判別用データが受信されたか否かに基づいてNATの特性を判別する判別ステップとを備え、
前記発呼装置、前記着呼装置、および前記サーバは、前記判別ステップによる判別結果に応じて、前記発呼装置と前記着呼装置との間の通信を確立することを特徴とする通信方法。
【請求項8】
サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがP2P通信を行うための呼制御を実行する通信システムであって、
前記発呼装置および前記着呼装置の各々は、
前記サーバとの間で通信を行うためのポートであるサーバ用ポートを用いて、少なくとも前記呼出要求および前記成功応答を送受信するサーバ通信手段と、
自装置と通信を確立する相手側の通信装置である相手装置のサーバ通信手段によって前記相手装置と前記サーバとの間で行われた通信における前記相手装置のIPアドレスおよびサーバ用ポートの情報を取得する情報取得手段と、
前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得手段によって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するNATの特性を判別するためのデータである第一判別用データを送信する第一データ送信手段と、
前記第一判別用データが受信されたか否かに基づいてNATの特性を判別する判別手段とを備え、
前記発呼装置、前記着呼装置、および前記サーバは、前記判別ステップによる判別結果に応じて、前記発呼装置と前記着呼装置との間の通信を確立することを特徴とする通信システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−172143(P2011−172143A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−35958(P2010−35958)
【出願日】平成22年2月22日(2010.2.22)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】