(57)【要約】【課題】最小限のＩＰアドレスおよびポートを使用してＮＡＴの特性を判別することができる通信装置、通信方法、および通信システムを提供する。【解決手段】通信装置は、通信を確立する相手側の通信装置である相手装置とサーバとの通信で使用された、相手装置のＩＰアドレスおよびサーバ用ポートの情報を取得する（Ｓ９３）。通信装置は、自装置または相手装置から成功応答が送信される前に、実行中の呼制御において相手装置との通信に未だ使用していない新たなポートから、相手装置のサーバ用ポートに向けて「ＯＰＴＩＯＮＳ」を送信する（Ｓ９４）。通信装置は、相手装置によって「ＯＰＴＩＯＮＳ」が受信されたか否かに基づいて、相手装置に関するＮＡＴの特性を判別する（Ｓ９５〜Ｓ１０６）。【選択図】図８
2011172143.tif 000002
【特許請求の範囲】
【請求項１】
サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがＰ２Ｐ通信を行うための呼制御を実行する通信システムで用いられる前記通信装置であって、
前記サーバとの間で通信を行うためのポートであるサーバ用ポートを用いて、少なくとも前記呼出要求および前記成功応答を送受信するサーバ通信手段と、
自装置と通信を確立する相手側の通信装置である相手装置のサーバ通信手段によって前記相手装置と前記サーバとの間で行われた通信における前記相手装置のＩＰアドレスおよびサーバ用ポートの情報を取得する情報取得手段と、
前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得手段によって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するＮＡＴの特性を判別するためのデータである第一判別用データを送信する第一データ送信手段と、
前記第一判別用データが受信されたか否かに基づいてＮＡＴの特性を判別する判別手段とを備えたことを特徴とする通信装置。
【請求項２】
前記相手装置の第一データ送信手段によって送信された第一判別用データを受信した場合、受信が成功したことを示す第一受信情報を、前記相手装置のポートのうち、受信した第一判別用データを送信したポートに返信する第一返信手段をさらに備え、
前記判別手段は、前記自装置の前記第一データ送信手段によって前記第一判別用データが前記相手装置に送信された場合、
前記相手装置の第一返信手段によって返信された第一受信情報を一定時間内に受信すれば、前記相手装置に接続しているＮＡＴ装置の種別がＦｕｌｌＣｏｎｅＮＡＴである、または前記相手装置がＮＡＴ装置を介さないと判別し、
一定時間内に前記相手装置から第一受信情報を受信しなければ、前記相手装置に接続しているＮＡＴ装置の種別がＦｕｌｌＣｏｎｅＮＡＴ以外の種別であると判別することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第一データ送信手段によって前記第一判別用データを前記相手装置に送信してから、前記相手装置から第一受信情報を受信せずに一定時間が経過した場合に、前記サーバに対し、実行中の呼制御において前記サーバが前記相手装置との通信に使用したポートである装置用ポート以外の新たなポートから前記相手装置のサーバ用ポートに、前記相手装置に関するＮＡＴの特性を判別するためのデータである第二判別用データを送信する指示を行う指示手段をさらに備え、
前記判別手段は、前記第二判別用データが前記相手装置によって受信されたか否かによって、前記相手装置に接続しているＮＡＴ装置の種別がアドレス制限ＣｏｎｅＮＡＴであるか否かを判別することを特徴とする請求項２に記載の通信装置。
【請求項４】
前記サーバから第二判別用データを受信した場合、第二判別用データの受信が成功したことを示す第二受信情報を前記相手装置に通知する通知手段をさらに備え、
前記判別手段は、前記自装置の前記指示手段によって前記サーバに前記第二判別用データの送信指示が行われた場合、
一定時間内に前記相手装置から第二受信情報が通知されれば、前記相手装置に接続しているＮＡＴ装置の種別がアドレス制限ＣｏｎｅＮＡＴであると判別し、
一定時間内に前記相手装置から第二受信情報が通知されなければ、前記相手装置に接続しているＮＡＴ装置の種別がＦｕｌｌＣｏｎｅＮＡＴおよびアドレス制限ＣｏｎｅＮＡＴ以外の種別であると判別することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記相手装置が異なるポートを送信先としてデータを複数回送信する場合に、使用されるＮＡＴ装置の前記ネットワーク側のポートが変更されるか否かを示す使用ポート情報を、前記相手装置または前記サーバから取得するポート情報取得手段をさらに備え、
前記判別手段は、前記自装置の前記指示手段によって前記サーバに前記第二判別用データの送信指示が行われ、且つ一定時間内に前記相手装置から第二受信情報が通知されなかった場合、
前記ポート情報取得手段によって取得された使用ポート情報が、ポートが変更されないことを示す情報であれば、前記相手装置に接続しているＮＡＴ装置の種別がポート制限ＣｏｎｅＮＡＴであると判別し、
前記ポート情報取得手段によって取得された使用ポート情報が、ポートが変更されることを示す情報であれば、前記相手装置に接続しているＮＡＴ装置の種別がＳｙｍｍｅｔｒｉｃＮＡＴであると判別することを特徴とする請求項４に記載の通信装置。
【請求項６】
前記通信装置は、前記相手装置との間でＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）セッションを確立する呼制御を、サーバを介して実行することを特徴とする請求項１から５のいずれかに記載の通信装置。
【請求項７】
サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがＰ２Ｐ通信を行うための呼制御を実行する通信システムにおいて実行される通信方法であって、
前記発呼装置および前記着呼装置の各々は、
自装置と通信を確立する相手側の通信装置である相手装置と前記サーバとの間で行われた通信において使用された、前記相手装置のＩＰアドレス、および前記サーバとの間で通信を行うためのポートであるサーバ用ポートの情報を取得する情報取得ステップと、
前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得ステップによって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するＮＡＴの特性を判別するためのデータである第一判別用データを送信する第一データ送信ステップと、
前記第一判別用データが受信されたか否かに基づいてＮＡＴの特性を判別する判別ステップとを備え、
前記発呼装置、前記着呼装置、および前記サーバは、前記判別ステップによる判別結果に応じて、前記発呼装置と前記着呼装置との間の通信を確立することを特徴とする通信方法。
【請求項８】
サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがＰ２Ｐ通信を行うための呼制御を実行する通信システムであって、
前記発呼装置および前記着呼装置の各々は、
前記サーバとの間で通信を行うためのポートであるサーバ用ポートを用いて、少なくとも前記呼出要求および前記成功応答を送受信するサーバ通信手段と、
自装置と通信を確立する相手側の通信装置である相手装置のサーバ通信手段によって前記相手装置と前記サーバとの間で行われた通信における前記相手装置のＩＰアドレスおよびサーバ用ポートの情報を取得する情報取得手段と、
前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得手段によって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するＮＡＴの特性を判別するためのデータである第一判別用データを送信する第一データ送信手段と、
前記第一判別用データが受信されたか否かに基づいてＮＡＴの特性を判別する判別手段とを備え、
前記発呼装置、前記着呼装置、および前記サーバは、前記判別ステップによる判別結果に応じて、前記発呼装置と前記着呼装置との間の通信を確立することを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＴの特性を判別するための通信装置、通信方法、および通信システムに関する。
【背景技術】
【０００２】
従来、複数の通信装置がＰ２Ｐで通信を行うために、複数の通信装置間でセッションを確立する技術が知られている。プライベートネットワーク内の通信装置が、グローバルネットワークに接続するためには、ネットワークアドレス変換機能またはネットワークアドレスポート変換機能（以下、「ＮＡＴ」という。）を有する装置（ＮＡＴルータ等。以下、「ＮＡＴ装置」という。）を介する必要がある。セッションを確立する手法は、通信装置に関するＮＡＴの特性に応じて異なる。従って、通信装置間でセッションを確立する場合、通信装置に関するＮＡＴの特性をあらかじめ判別し、判別結果に適した手法（例えば、ＵＤＰ  Ｈｏｌｅ  Ｐｕｎｃｈｉｎｇ等）を用いる。
【０００３】
ＮＡＴの特性を判別する一般的な方法として、ＲＦＣ３４８９で示されている方法がある。上記の方法では、２台のＳＴＵＮ（Ｓｉｍｐｌｅ  Ｔｒａｖｅｒｓａｌ  ｏｆ  ＵＤＰ  ｔｈｒｏｕｇｈ  ＮＡＴｓ）サーバを用いてＮＡＴの特性が判別される。一方、１台のサーバを用いてＮＡＴの特定を判別する方法も開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２９５９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
２台のサーバを用いてＮＡＴの特性を判別する方法では、有限である固有のＩＰアドレスを複数使用しなければならない。また、特許文献１に記載の通信装置は、接続しているＮＡＴ装置の種別に関わらず、第一の送信処理において、複数のパケットをサーバの異なるポートへ向けて送信する。さらに、通信装置は、第二の送信処理において、第一の送信処理で使用したポートとは異なるポートからサーバへパケットを送信する。つまり、特許文献１に記載の方法では、多数のポートを使用する必要がある。ポートの数は有限である。さらに、ポートを余分に使用することで、通信を許可していない装置が通信装置にアクセスする可能性が増加する。。
【０００６】
本発明は、最小限のＩＰアドレスおよびポートを使用してＮＡＴの特性を判別することができる通信装置、通信方法、および通信システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第一の態様に係る通信装置は、サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがＰ２Ｐ通信を行うための呼制御を実行する通信システムで用いられる前記通信装置であって、前記サーバとの間で通信を行うためのポートであるサーバ用ポートを用いて、少なくとも前記呼出要求および前記成功応答を送受信するサーバ通信手段と、自装置と通信を確立する相手側の通信装置である相手装置のサーバ通信手段によって前記相手装置と前記サーバとの間で行われた通信における前記相手装置のＩＰアドレスおよびサーバ用ポートの情報を取得する情報取得手段と、前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得手段によって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するＮＡＴの特性を判別するためのデータである第一判別用データを送信する第一データ送信手段と、前記第一判別用データが受信されたか否かに基づいてＮＡＴの特性を判別する判別手段とを備えている。
【０００８】
第一の態様に係る通信装置は、システム内に存在するサーバを１台のみ用いて、Ｐ２Ｐ通信を行うための呼制御の過程でＮＡＴの特性を判別することができる。従って、通信装置は、使用するＩＰアドレスの数を最小限に抑えてＮＡＴの特性を判別することができる。多数のポートを使用する必要もないので、通信を許可していない装置が通信装置にアクセスする可能性も低下させることができる。サーバの位置に依存したＮＡＴの特性ではなく、２つの通信装置間におけるＮＡＴの特性を的確に判別することができる。
【０００９】
前記通信装置は、前記相手装置の第一データ送信手段によって送信された第一判別用データを受信した場合、受信が成功したことを示す第一受信情報を、前記相手装置のポートのうち、受信した第一判別用データを送信したポートに返信する第一返信手段をさらに備えてもよい。前記判別手段は、前記自装置の前記第一データ送信手段によって前記第一判別用データが前記相手装置に送信された場合、前記相手装置の第一返信手段によって返信された第一受信情報を一定時間内に受信すれば、前記相手装置に接続しているＮＡＴ装置の種別がＦｕｌｌＣｏｎｅＮＡＴである、または前記相手装置がＮＡＴ装置を介さないと判別し、一定時間内に前記相手装置から第一受信情報を受信しなければ、前記相手装置に接続しているＮＡＴ装置の種別がＦｕｌｌＣｏｎｅＮＡＴ以外の種別であると判別するとよい。
【００１０】
通信装置が相手装置のサーバ用ポートに送信した第一判別用データを、相手装置が受信すれば、相手装置に接続しているＮＡＴ装置の種別はＦｕｌｌＣｏｎｅＮＡＴであるか、または相手装置はＮＡＴ装置を介さない（以下、「相手装置はＮＡＴ装置を介さない」というＮＡＴの特性を「ＯｐｅｎＩｎｔｅｒｎｅｔ」という）。通信装置は、一定時間内に第一受信情報を受信するか否かを判断するだけで、相手装置に関するＮＡＴの特性を容易に絞り込むことができる。
【００１１】
前記通信装置は、前記第一データ送信手段によって前記第一判別用データを前記相手装置に送信してから、前記相手装置から第一受信情報を受信せずに一定時間が経過した場合に、前記サーバに対し、実行中の呼制御において前記サーバが前記相手装置との通信に使用したポートである装置用ポート以外の新たなポートから前記相手装置のサーバ用ポートに、前記相手装置に関するＮＡＴの特性を判別するためのデータである第二判別用データを送信する指示を行う指示手段をさらに備えてもよい。前記判別手段は、前記第二判別用データが前記相手装置によって受信されたか否かによって、前記相手装置に接続しているＮＡＴ装置の種別がアドレス制限ＣｏｎｅＮＡＴであるか否かを判別するとよい。
【００１２】
通信装置に関するＮＡＴの特性がＦｕｌｌＣｏｎｅＮＡＴ、ＯｐｅｎＩｎｔｅｒｎｅｔ、またはアドレス制限ＣｏｎｅＮＡＴであれば、通信装置は第二判別用データを受信できる。第二判別用データが送信される時点で、相手装置に関するＮＡＴの特性がＦｕｌｌＣｏｎｅＮＡＴでもＯｐｅｎＩｎｔｅｒｎｅｔでもないことが判別されている。従って、通信装置は、第二判別用データの受信結果を用いて適切に相手装置に関するＮＡＴの特性を絞り込むことができる。
【００１３】
前記通信装置は、前記サーバから第二判別用データを受信した場合、第二判別用データの受信が成功したことを示す第二受信情報を前記相手装置に通知する通知手段をさらに備えてもよい。前記判別手段は、前記自装置の前記指示手段によって前記サーバに前記第二判別用データの送信指示が行われた場合、一定時間内に前記相手装置から第二受信情報が通知されれば、前記相手装置に接続しているＮＡＴ装置の種別がアドレス制限ＣｏｎｅＮＡＴであると判別し、一定時間内に前記相手装置から第二受信情報が通知されなければ、前記相手装置に接続しているＮＡＴ装置の種別がＦｕｌｌＣｏｎｅＮＡＴおよびアドレス制限ＣｏｎｅＮＡＴ以外の種別であると判別するとよい。通信装置は、一定時間内に相手装置から第二受信情報が通知されるか否かを判断するだけで、相手装置に関するＮＡＴの種別がアドレス制限ＣｏｎｅＮＡＴであるか否かを容易に判別することができる。
【００１４】
前記通信装置は、前記相手装置が異なるポートを送信先としてデータを複数回送信する場合に、使用されるＮＡＴ装置の前記ネットワーク側のポートが変更されるか否かを示す使用ポート情報を、前記相手装置または前記サーバから取得するポート情報取得手段をさらに備えてもよい。前記判別手段は、前記自装置の前記指示手段によって前記サーバに前記第二判別用データの送信指示が行われ、且つ一定時間内に前記相手装置から第二受信情報が通知されなかった場合、前記ポート情報取得手段によって取得された使用ポート情報が、ポートが変更されないことを示す情報であれば、前記相手装置に接続しているＮＡＴ装置の種別がポート制限ＣｏｎｅＮＡＴであると判別し、前記ポート情報取得手段によって取得された使用ポート情報が、ポートが変更されることを示す情報であれば、前記相手装置に接続しているＮＡＴ装置の種別がＳｙｍｍｅｔｒｉｃＮＡＴであると判別するとよい。
【００１５】
通信装置は、相手装置の使用ポート情報を用いて、ＮＡＴ種別がポート制限ＣｏｎｅＮＡＴであるか、ＳｙｍｍｅｔｒｉｃＮＡＴであるかを容易に判別することができる。その結果、通信装置は、４つに大別されるＮＡＴの特性を的確に判別することができる。
【００１６】
前記通信装置は、前記相手装置との間でＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）セッションを確立する呼制御を、サーバを介して実行してもよい。通信装置は、汎用的なＳＩＰプロトコルを用いて、ＮＡＴの特性の判別と通信装置間のセッションの確立とを容易に実現することができる。利用するサーバは、ＳＩＰプロトコルに準拠した動作を行うことができればよいため、ＮＡＴの特性を判別するための特別な動作をサーバに実行させる必要はない。
【００１７】
本発明の第二の態様に係る通信方法は、サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがＰ２Ｐ通信を行うための呼制御を実行する通信システムにおいて実行される通信方法であって、前記発呼装置および前記着呼装置の各々は、自装置と通信を確立する相手側の通信装置である相手装置と前記サーバとの間で行われた通信において使用された、前記相手装置のＩＰアドレス、および前記サーバとの間で通信を行うためのポートであるサーバ用ポートの情報を取得する情報取得ステップと、前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得ステップによって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するＮＡＴの特性を判別するためのデータである第一判別用データを送信する第一データ送信ステップと、前記第一判別用データが受信されたか否かに基づいてＮＡＴの特性を判別する判別ステップとを備え、前記発呼装置、前記着呼装置、および前記サーバは、前記判別ステップによる判別結果に応じて、前記発呼装置と前記着呼装置との間の通信を確立することを特徴とする。
【００１８】
第二の態様に係る通信方法によると、システム内に存在するサーバを１台のみ用いて、Ｐ２Ｐ通信を行うための呼制御の過程でＮＡＴの特性を判別することができる。従って、通信装置は、使用するＩＰアドレスの数を最小限に抑えてＮＡＴの特性を判別することができる。多数のポートを使用する必要もないので、通信を許可していない装置が通信装置にアクセスする可能性も低下させることができる。サーバの位置に依存したＮＡＴの特性ではなく、２つの通信装置間におけるＮＡＴの特性を的確に判別することができる。
【００１９】
本発明の第三の態様に係る通信システムは、サーバおよび複数の通信装置がネットワークに接続され、前記複数の通信装置のうちの一の通信装置である発呼装置が他の通信装置である着呼装置に前記サーバを介して呼出要求を送信し、且つ前記着呼装置が前記発呼装置に前記サーバを介して成功応答を送信することで、前記発呼装置と前記着呼装置とがＰ２Ｐ通信を行うための呼制御を実行する通信システムであって、前記発呼装置および前記着呼装置の各々は、前記サーバとの間で通信を行うためのポートであるサーバ用ポートを用いて、少なくとも前記呼出要求および前記成功応答を送受信するサーバ通信手段と、自装置と通信を確立する相手側の通信装置である相手装置のサーバ通信手段によって前記相手装置と前記サーバとの間で行われた通信における前記相手装置のＩＰアドレスおよびサーバ用ポートの情報を取得する情報取得手段と、前記自装置または前記相手装置から前記成功応答が送信される前に、前記情報取得手段によって取得された前記相手装置のサーバ用ポートに、実行中の呼制御において前記相手装置との通信に未だ使用していないポートから、前記相手装置に関するＮＡＴの特性を判別するためのデータである第一判別用データを送信する第一データ送信手段と、前記第一判別用データが受信されたか否かに基づいてＮＡＴの特性を判別する判別手段とを備え、前記発呼装置、前記着呼装置、および前記サーバは、前記判別ステップによる判別結果に応じて、前記発呼装置と前記着呼装置との間の通信を確立することを特徴とする。
【００２０】
第三の態様に係る通信システムによると、システム内に存在するサーバを１台のみ用いて、Ｐ２Ｐ通信を行うための呼制御の過程でＮＡＴの特性を判別することができる。従って、通信システムは、使用するＩＰアドレスの数を最小限に抑えてＮＡＴの特性を判別することができる。多数のポートを使用する必要もないので、通信を許可していない装置が通信装置にアクセスする可能性も低下させることができる。サーバの位置に依存したＮＡＴの特性ではなく、２つの通信装置間におけるＮＡＴの特性を的確に判別することができる。
【図面の簡単な説明】
【００２１】
【図１】通信システム１００のシステム構成を示す図である。
【図２】ＰＣ１の電気的構成を示す図である。
【図３】発呼装置に関するＮＡＴの特性および着呼装置に関するＮＡＴの特性が共にＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴである場合の処理の一例を示すシーケンス図である。
【図４】着呼装置に関するＮＡＴの特性がアドレス制限ＣｏｎｅＮＡＴである場合の処理の一例を示すシーケンス図である。
【図５】着呼装置に関するＮＡＴの特性がポート制限ＣｏｎｅＮＡＴである場合の処理の一例を示すシーケンス図である。
【図６】ＰＣ１が発呼装置として動作する場合の処理である発呼装置処理のフローチャートである。
【図７】ＰＣ１が発呼装置として動作する場合の処理である発呼装置処理のフローチャートである。
【図８】ＰＣ１が着呼装置として動作する場合の処理である着呼装置処理のフローチャートである。
【図９】ＰＣ１が着呼装置として動作する場合の処理である着呼装置処理のフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明に係る通信装置を具現化した一実施の形態であるパーソナルコンピュータ（以下、「ＰＣ」という。）１、および通信システム１００について、図面を参照して説明する。参照する図面は、本発明が採用し得る技術的特徴を説明するために用いられるものである。図面に記載されている装置の構成、各種処理のフローチャート等は、それのみに限定する趣旨ではなく、単なる説明例である。
【００２３】
図１を参照して、通信システム１００のシステム構成について説明する。通信システム１００は、複数のＰＣ１と、サーバ６とを備える。各ＰＣ１は、インターネット等の外部ネットワーク８を介してサーバ６に接続することができる。サーバ６は、２つのＰＣ１間におけるセッションを確立する。セッションとは、一般に、通信装置間の接続の開始から終了までを言う。特に、本実施の形態では、２つのＰＣ１が音声データおよび画像データ等のメディアデータをＰ２Ｐ（ｐｅｅｒ  ｔｏ  ｐｅｅｒ）で相互に送受信できる状態をいう。複数のＰＣ１は、セッションの確立後にメディアデータを相互に送受信することで、遠隔会議を実現する。なお、通信システム１００では、複数のＰＣ１が外部ネットワーク８上で通信を開始するための双方向プロトコルとして、ＳＩＰ（ＲＦＣ３２６１）が用いられる。ＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）は、外部ネットワーク８上でエンド・トゥ・エンドのセッションを確立するためのプロトコルであり、リアルタイムコミュニケーションを容易に実現できる。
【００２４】
図１は、ＮＡＴルータ９または１０を介して外部ネットワーク８に接続するＰＣ１と、ＮＡＴルータを介さずに直接外部ネットワーク８に接続するＰＣ１とを例示している。（以下、ＰＣ１がＮＡＴルータを介さずに外部ネットワーク８に接続している状態を、「ＯｐｅｎＩｎｔｅｒｎｅｔ」または「ＯｐｅｎＩｎｅｔ」と略記する。）ＮＡＴルータは、ローカルなネットワーク（例えば、ＬＡＮ）内で使用されるプライベートＩＰアドレスと、外部ネットワーク８で使用されるグローバルＩＰアドレスとを相互変換する。
【００２５】
本実施の形態では、ＮＡＴルータは、ＩＰアドレスおよびポート番号の変換方法によって、ＦｕｌｌＣｏｎｅＮＡＴ、アドレス制限ＣｏｎｅＮＡＴ、ポート制限ＣｏｎｅＮＡＴ、およびＳｙｍｍｅｔｒｉｃＮＡＴのいずれかの種別に分類される。ＦｕｌｌＣｏｎｅＮＡＴは、外部ネットワーク８側（外側）に存在する一のＩＰアドレスおよびポートに対してデータを送信したポートに対しては、いずれのＩＰアドレスおよびポートからの通信も許可する。アドレス制限ＣｏｎｅＮＡＴは、データを送信した送信先のＩＰアドレスと同一のＩＰアドレスからの通信のみを許可するが、ポートの同一性は問わない。ポート制限ＣｏｎｅＮＡＴは、データを送信した送信先のＩＰアドレスおよびポートからの通信のみを許可する。ＳｙｍｍｅｔｒｉｃＮＡＴは、宛先毎に異なるポートを使用してデータを通過させる。
【００２６】
ＰＣ１に関するＮＡＴの特性について説明する。ＮＡＴの特性とは、ＰＣ１が外部ネットワーク８への接続にＮＡＴルータを介しているか否か、および、ＰＣ１がＮＡＴルータに接続している場合の、接続しているＮＡＴルータの種別を意味する。従って、本実施の形態では、各ＰＣ１に関するＮＡＴの特性は、ＯｐｅｎＩｎｔｅｒｎｅｔ、ＦｕｌｌＣｏｎｅＮＡＴ、アドレス制限ＣｏｎｅＮＡＴ、ポート制限ＣｏｎｅＮＡＴ、およびＳｙｍｍｅｔｒｉｃＮＡＴの５つの特性のうちのいずれかとなる。ＰＣ１がＮＡＴルータを介していない場合には、ＮＡＴルータを介していないこと自体が、ＰＣ１に関するＮＡＴの特性となる。
【００２７】
２つのＰＣ１がセッションを確立するためには、互いのＰＣ１に関するＮＡＴの特性に応じた最適な確立方法が実行される必要がある。この確立方法には、ＵＰｎＰ、ＵＤＰ  Ｈｏｌｅ  Ｐｕｎｃｈｉｎｇ（以下、「ＵＨＰ」という。）、ＵＤＰ  Ｍｕｌｔｉ  Ｈｏｌｅ  Ｐｕｎｃｈｉｎｇ、および直接接続等がある。例えば、ＮＡＴの特性が共にアドレス制限ＣｏｎｅＮＡＴである２つのＰＣ１間でセッションを確立する場合には、ＵＨＰを実行する必要がある。一方で、ＮＡＴの特性が共にＯｐｅｎＩｎｔｅｒｎｅｔである２つのＰＣ１の間でセッションを確立する場合には、データの送信はＮＡＴルータによって制限されない。この場合、２つのＰＣ１は相互に直接接続してデータを送受信することができる。
【００２８】
セッションの確立方法は、セッションを確立する２つのＰＣ１に関するＮＡＴの特性に応じて決定される。従って、セッションを確立する場合、ＰＣ１に関するＮＡＴの特性があらかじめ判別され、判別結果に適した方法が用いられる。本実施の形態の通信システム１００によると、最小限のＩＰアドレスおよびポートを使用して、ＳＩＰの呼制御の中で効率よくＰＣ１に関するＮＡＴの特性を判別することができる。サーバ６の配置に関わらず、セッションを確立する２つのＰＣ１に関するＮＡＴの特性を判別することができる。
【００２９】
図２を参照して、ＰＣ１の電気的構成について説明する。図２に示すように、ＰＣ１は、ＰＣ１の制御を司るＣＰＵ２０を備えている。ＣＰＵ２０には、ＲＯＭ２１、ＲＡＭ２２、ハードディスクドライブ（以下、「ＨＤＤ」という。）２３、および入出力インターフェース２５が、バス２４を介して接続されている。ＲＯＭ２１は、ＰＣ１を動作させるためのプログラムおよび初期値等を記憶している。ＲＡＭ２２は、制御プログラムで使用される各種の情報を一時的に記憶する。ＨＤＤ２３は、各種の情報を記憶する不揮発性の記憶装置である。
【００３０】
入出力インターフェース２５には、音声入力処理部４１、音声出力処理部４２、映像入力処理部４３、映像出力処理部４４、操作部４５、および外部通信インターフェース２６が接続されている。音声入力処理部４１は、音声を入力するマイク３１からの音声データの入力を処理する。音声出力処理部４２は、音声を出力するスピーカ３２の動作を処理する。映像入力処理部４３は、映像を撮像するカメラ３３からの画像データの入力を処理する。映像出力処理部４４は、映像を表示する表示装置３４の動作を処理する。操作部４５は、ユーザがＰＣ１に各種指示を入力するために用いられる。外部通信インターフェース２６は、ＰＣ１を外部ネットワーク８に接続する。図２に示す例では、ＰＣ１はＮＡＴルータ９を介して外部ネットワーク８に接続している。
【００３１】
ＰＣ１の代わりに、例えばテレビ会議専用の端末等を通信装置として使用することも可能である。ＰＣ１以外の端末を使用する場合でも、通信装置として使用する端末の基本的な電気的構成は、ＰＣ１の電気的構成と同じである。ノート型のＰＣ１の代わりに、デスクトップ型のＰＣを用いてもよいことは言うまでもない。また、サーバ６は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ等を備える。サーバ６の基本的な電気的構成は、ＰＣ１の電気的構成の一部と共通しているため、この説明は省略する。
【００３２】
以下、図３から図５を参照して、通信システム１００で行われる処理の流れについて説明する。以下の説明では、セッションを確立する際に発呼側となるＰＣ１を発呼装置、着呼側となるＰＣ１を着呼装置という。発呼装置および着呼装置は、会議に接続可能な装置の１つとしてあらかじめサーバ６に登録されている。詳細には、発呼装置および着呼装置は、セッションを確立する前に、登録要求「ＲＥＧＩＳＴＥＲ」のＳＩＰメッセージをサーバ６に送信する。サーバ６は、成功応答「２００  ＯＫ」を発呼装置および着呼装置に返信し、発呼装置および着呼装置を登録する。発呼装置および着呼装置は、以上の登録処理において使用したポート（以下、「サーバ用ポート」という。）を用いて、以後のサーバ６との通信を行う。サーバ６は、あらかじめ定められたポート（以下、「装置用ポート」という。）を原則として用いて、発呼装置との通信および着呼装置との通信を行う。その後、図３から図５に示す処理が開始する。ＳＩＰでは、サーバがＰＣ１との通信に用いる装置用ポートの番号は「５０６０」と定められている。
【００３３】
図３に例示する処理の流れについて説明する。図３は、発呼装置に関するＮＡＴの特性、および着呼装置に関するＮＡＴの特性が、共にＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴである場合の処理を例示している。まず、発呼装置および着呼装置は、セッションを確立する前に、自装置がデータを連続して送信する場合に使用するポートの値（以下、「使用ポート情報」という。）を取得する（Ｓ１およびＳ２）。具体的には、発呼装置および着呼装置は、３つ以上のパケットのそれぞれを、サーバ６の異なる宛先ポートに向けて連続して送信する。サーバ６は、受信したパケットの送信元ポートの値を、パケットの送信元の装置（発呼装置または着呼装置）に通知する。その結果、発呼装置および着呼装置は、サーバ６との間の通信で使用したポートの値を使用ポート情報として取得することができる。詳細は後述するが、取得した使用ポート情報は、自装置に関するＮＡＴの特性を判別する際に用いられる。
【００３４】
着呼装置との間のセッションを確立する指示が発呼装置に入力されると、発呼装置は、呼出要求「ＩＮＶＩＴＥ」を着呼装置へ送信する（Ｓ３）。「ＩＮＶＩＴＥ」は、サーバ６によって中継されて着呼装置へ送信される。発呼装置は、「ＩＮＶＩＴＥ」のＳＩＰメッセージの中に、あらかじめ取得してある自装置の使用ポート情報を含める。さらに、サーバ６は、発呼装置との通信の結果取得した、発呼装置のＩＰアドレスおよびサーバ用ポートの情報を、「ＩＮＶＩＴＥ」に含める。
【００３５】
着呼装置は、「ＩＮＶＩＴＥ」を受信すると、「ＩＮＶＩＴＥ」に含まれる発呼装置の使用ポート情報から、発呼装置のポート変動を検出する。さらに、着呼装置は、「ＩＮＶＩＴＥ」に含まれる発呼装置のＩＰアドレスおよびサーバ用ポートの情報を取得する（Ｓ４）。ポート変動とは、ＰＣ１が連続してデータを送信する場合に使用するポートの値が変動するか否か（使用するポートの番号が変更されるか否か）を示す。本実施の形態では、使用ポート情報に含まれる３つ以上のポートの値から、「変動しない」、「固定値で変動する」、および「ランダムに変動する」のいずれであるかが検出される。
【００３６】
着呼装置は、通信確立中であることを通知するための暫定レスポンス「１００  Ｔｒｙｉｎｇ」を、サーバ６を介して発呼装置に送信する（Ｓ５）。この暫定レスポンスの送信処理は、必須ではない。次いで、着呼装置は、実行中の呼制御において発呼装置との間の通信に未だ使用していないポートから、発呼装置のサーバ用ポートへ向けて「ＯＰＴＩＯＮＳ」を送信する（Ｓ６）。「ＯＰＴＩＯＮＳ」は、セッションを確立する相手となる相手装置に対してデータの返信を要求するメッセージである。「ＯＰＴＩＯＮＳ」は、相手装置に関するＮＡＴの特性を判別するために送信される。「ＯＰＴＩＯＮＳ」の送信先のポートは、サーバ６との通信のために用いられるサーバ用ポートである。従って、相手装置に関するＮＡＴの特性がアドレス制限ＣｏｎｅＮＡＴ、ポート制限ＣｏｎｅＮＡＴ、またはＳｙｍｍｅｔｒｉｃＮＡＴであれば、相手装置は「ＯＰＴＩＯＮＳ」を受信することができない。相手装置に関するＮＡＴの特性がＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴであれば、相手装置は「ＯＰＴＩＯＮＳ」を受信することができる。「１００  Ｔｒｙｉｎｇ」と「ＯＰＴＩＯＮＳ」の送信順は前後してもよい。
【００３７】
図３に示す例では、発呼装置に関するＮＡＴの特性はＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴであるため、発呼装置は「ＯＰＴＩＯＮＳ」を受信できる。発呼装置は、「ＯＰＴＩＯＮＳ」を受信すると、「ＯＰＴＩＯＮＳ」の受信に対するレスポンスである成功応答「２００  ＯＫ（ＯＰＴ）」を、「ＯＰＴＩＯＮＳ」の送信元のポートへ返信する（Ｓ７）。着呼装置は、送信した「ＯＰＴＩＯＮＳ」に対するレスポンス「２００  ＯＫ（ＯＰＴ）」を受信することで、発呼装置に関するＮＡＴの特性をＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴと判別する（Ｓ８）。
【００３８】
着呼装置は、暫定レスポンス「１８０  Ｒｉｎｇｉｎｇ」を、サーバ６を介して発呼装置に送信する（Ｓ９）。「１８０  Ｒｉｎｇｉｎｇ」には、発呼装置に関するＮＡＴの特性を示すＮＡＴ特性情報と、着呼装置の使用ポート情報と、着呼装置のＩＰアドレスおよびサーバ用ポートの情報とが含まれる。発呼装置は、「１８０  Ｒｉｎｇｉｎｇ」に含まれるＮＡＴ特性情報を取得し、自装置に関するＮＡＴの特性を認識する。
【００３９】
次いで、着呼装置に関するＮＡＴの特性を判別する処理に移行する。まず、発呼装置は、「１８０  Ｒｉｎｇｉｎｇ」に含まれる使用ポート情報から着呼装置のポート変動を検出し、且つ、着呼装置のＩＰアドレスおよびサーバ用ポートの情報を取得する（Ｓ１０）。発呼装置は、実行中の呼制御において着呼装置との間の通信に未だ使用していない新たなポートから、着呼装置のサーバ用ポートへ向けて「ＯＰＴＩＯＮＳ」を送信する（Ｓ１１）。具体的には、発呼装置は、Ｓ７で「２００  ＯＫ（ＯＰＴ）」を送信したポート以外のポートから「ＯＰＴＩＯＮＳ」を送信する。
【００４０】
図３に示す例では、着呼装置に関するＮＡＴの特性はＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴである。よって、着呼装置は、自装置のサーバ用ポートへ向けて送信された「ＯＰＴＩＯＮＳ」を受信できる。着呼装置は、「ＯＰＴＩＯＮＳ」を受信すると、レスポンスである成功応答「２００  ＯＫ（ＯＰＴ）」を、「ＯＰＴＩＯＮＳ」の送信元のポートへ返信する（Ｓ１２）。発呼装置は、送信した「ＯＰＴＩＯＮＳ」に対するレスポンス「２００  ＯＫ（ＯＰＴ）」を受信することで、着呼装置に関するＮＡＴの特性をＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴと判別する（Ｓ１３）。
【００４１】
発呼装置は、着呼装置に関するＮＡＴの特性がＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴであることを示すＮＡＴ特性情報を、着呼装置に送信する（Ｓ１４）。本実施の形態の発呼装置は、「ＯＰＴＩＯＮＳ」にＮＡＴ特性情報を含めて送信している。しかし、「ＵＰＤＡＴＥ」等の他のＳＩＰメッセージを利用してＮＡＴ特性情報を送信してもよい。また、ＮＡＴ特性情報は、サーバ６を介して着呼装置に送信してもよいし、サーバ６を介さずに直接送信してもよい。着呼装置は、「ＩＮＶＩＴＥ」に対する成功応答「２００  ＯＫ（ＩＮＶ）」を、サーバ６を介して発呼装置に送信する（Ｓ１５）。発呼装置は、確認応答「ＡＣＫ」を着呼装置に送信する（Ｓ１６）。発呼装置および着呼装置は、判別した互いのＮＡＴの特性に応じた方法でセッションを確立する。図３に示す例では、ＵＨＰ等の方法は用いられずに、直接接続によって発呼装置と着呼装置との間のセッションが確立される。
【００４２】
図４に例示する処理の流れについて説明する。図４に示す例では、発呼装置に関するＮＡＴの特性は、ＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴである。着呼装置に関するＮＡＴの特性は、アドレス制限ＣｏｎｅＮＡＴである。発呼装置に関するＮＡＴの特性は図３の場合と同じであるため、図４のＳ２１〜Ｓ２９の処理は、図３のＳ１〜９の処理と同じである。よって、この説明は省略する。
【００４３】
発呼装置に関するＮＡＴの特性の判別が終了し、発呼装置が「１８０  Ｒｉｎｇｉｎｇ」を受信すると（Ｓ２９）、発呼装置は、着呼装置のポート変動を検出し、且つ着呼装置のＩＰアドレスおよびサーバ用ポートの情報を取得する（Ｓ３０）。発呼装置は、新たなポートから着呼装置のサーバ用ポートへ向けて「ＯＰＴＩＯＮＳ」を送信する（Ｓ３１）。図４に示す例では、着呼装置に関するＮＡＴの特性は、アドレス制限ＣｏｎｅＮＡＴである。従って、着呼装置は、発呼装置から送信された「ＯＰＴＩＯＮＳ」をサーバ用ポートから受信することはできない。
【００４４】
発呼装置は、送信した「ＯＰＴＩＯＮＳ」に対する着呼装置からのレスポンスがないまま所定時間が経過すると、サーバ６に対して要求送信を指示する（Ｓ３２）。要求送信の指示とは、実行中の呼制御においてサーバ６が着呼装置との通信で使用したポート以外の新たなポートから、着呼装置のサーバ用ポートに返信要求を送信させる指示である。具体的には、サーバ６は、要求送信の指示を受けると、装置用ポートである「５０６０」番のポート以外のポートから返信要求を送信する（Ｓ３３）。図４に示す例では、着呼装置に関するＮＡＴの特性はアドレス制限ＣｏｎｅＮＡＴである。よって、着呼装置は、サーバ６から送信されたデータであれば、装置用ポート以外のポートから送信されたデータであっても受信できる。
【００４５】
着呼装置は、返信要求を受信すると、サーバ６を介して、返信要求に対するレスポンスを発呼装置に返信する（Ｓ３４）。発呼装置は、返信要求に対するレスポンスを受信することで、着呼装置に関するＮＡＴの特性をアドレス制限ＣｏｎｅＮＡＴと判別する（Ｓ３５）。発呼装置は、着呼装置に関するＮＡＴの特性がアドレス制限ＣｏｎｅＮＡＴであることを示すＮＡＴ特性情報を、「ＯＰＴＩＯＮＳ」に含めて着呼装置に送信する（Ｓ３６）。着呼装置は、成功応答「２００  ＯＫ（ＩＮＶ）」を、サーバ６を介して発呼装置に送信する（Ｓ３７）。発呼装置は、確認応答「ＡＣＫ」を着呼装置に送信する（Ｓ３８）。発呼装置および着呼装置は、判別した互いのＮＡＴの特性に基づき、ＵＨＰを用いてセッションを確立する。
【００４６】
図５に例示する処理の流れについて説明する。図５に示す例では、発呼装置に関するＮＡＴの特性は、図３および図４に示す例と同様にＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴである。着呼装置に関するＮＡＴの特性は、ポート制限ＣｏｎｅＮＡＴである。図５のＳ４１〜Ｓ４９の処理は、図３のＳ１〜Ｓ９の処理と同じであるため、この説明は省略する。
【００４７】
発呼装置に関するＮＡＴの特性が判別され、発呼装置が「１８０  Ｒｉｎｇｉｎｇ」を受信すると（Ｓ４９）、発呼装置は、着呼装置のポート変動を検出し、且つ着呼装置のＩＰアドレスおよびサーバ用ポートの情報を取得する（Ｓ５０）。発呼装置は、新たなポートから着呼装置のサーバ用ポートへ向けて「ＯＰＴＩＯＮＳ」を送信する（Ｓ５１）。着呼装置はポート制限ＣｏｎｅＮＡＴに接続しているため、着呼装置は、発呼装置から送信された「ＯＰＴＩＯＮＳ」を受信することはできない。
【００４８】
発呼装置は、送信した「ＯＰＴＩＯＮＳ」に対する着呼装置からのレスポンスがないまま所定時間が経過すると、サーバ６に対して要求送信を指示する（Ｓ５２）。サーバ６は、要求送信の指示を受けて、装置用ポート以外のポートから着呼装置のサーバ用ポートに返信要求を送信する（Ｓ５３）。図５に示す例では、着呼装置に関するＮＡＴの特性はポート制限ＣｏｎｅＮＡＴである。着呼装置のサーバ用ポートは、サーバ６の装置用ポートに対する送信履歴を有する。従って、着呼装置は、サーバ６から送信されたデータであっても、装置用ポートから送信されたデータでなければ受信できない。よって、着呼装置は、サーバ６から送信された返信要求を受信できない。
【００４９】
発呼装置は、要求送信に対するレスポンスがないまま所定時間が経過すると、着呼装置に関するＮＡＴの特性をポート制限ＣｏｎｅＮＡＴまたはＳｙｍｍｅｔｒｉｃＮＡＴと判別する（Ｓ５４）。詳細には、発呼装置は、Ｓ５０で検出した着呼装置のポート変動が「変動しない」であれば、着呼装置に関するＮＡＴの特性をポート制限ＣｏｎｅＮＡＴと判別する。なお、Ｓ５０で検出したポート変動が「固定値で変動する」または「ランダムに変動する」であれば、ＳｙｍｍｅｔｒｉｃＮＡＴと判別する。
【００５０】
発呼装置は、着呼装置に関するＮＡＴの特性がポート制限ＣｏｎｅＮＡＴであることを示すＮＡＴ特性情報を、「ＯＰＴＩＯＮＳ」に含めて着呼装置に送信する（Ｓ５５）。着呼装置は、成功応答「２００  ＯＫ（ＩＮＶ）」を、サーバ６を介して発呼装置に送信する（Ｓ５６）。発呼装置は、確認応答「ＡＣＫ」を着呼装置に送信する（Ｓ５７）。発呼装置および着呼装置は、判別した互いのＮＡＴの特性に基づき、ＵＨＰを用いてセッションを確立する。
【００５１】
図６から図９を参照して、上記の通信システム１００の処理を実行するために各ＰＣ１が実行する処理について説明する。まず、図６および図７を参照して、ＰＣ１が発呼装置として動作する場合の処理である発呼装置処理について説明する。発呼装置処理は、他のＰＣ１との間のセッションを確立する指示がＰＣ１に入力された場合に、ＰＣ１のＣＰＵ２０が実行する。なお、発呼装置処理が行われる前に、前述した自装置の使用ポート情報が取得される。
【００５２】
図６に示すように、発呼装置処理が開始されると、呼出要求「ＩＮＶＩＴＥ」が着呼装置へ送信される（Ｓ６２）。先述したように、「ＩＮＶＩＴＥ」を受信した着呼装置は、「１００  Ｔｒｙｉｎｇ」を発呼装置に送信し、発呼装置のサーバ用ポートへ向けて「ＯＰＴＩＯＮＳ」を送信する。発呼装置では、着呼装置から「ＯＰＴＩＯＮＳ」を受信したか否かが判断される（Ｓ６３）。受信していなければ（Ｓ６３：ＮＯ）、サーバ６から返信要求を受信したか否かが判断される（Ｓ６４）。受信していなければ（Ｓ６４：ＮＯ）、着呼装置から「１８０  Ｒｉｎｇｉｎｇ」を受信したか否かが判断され（Ｓ６５）、受信していなければ（Ｓ６５：ＮＯ）、Ｓ６３〜Ｓ６５の判断が繰り返し行われる。
【００５３】
「ＯＰＴＩＯＮＳ」が受信されると（Ｓ６３：ＹＥＳ）、「ＯＰＴＩＯＮＳ」に対するレスポンスである「２００  ＯＫ（ＯＰＴ）」が着呼装置に返信される（Ｓ６６）。着呼装置では、「ＯＰＴＩＯＮＳ」に対するレスポンスが受信されると、発呼装置に関するＮＡＴの特性がＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴと判別される。次いで、発呼装置では、「１８０  Ｒｉｎｇｉｎｇ」を受信するまで待機される（Ｓ６７：ＮＯ）。「１８０  Ｒｉｎｇｉｎｇ」が受信されると（Ｓ６７：ＹＥＳ）、受信したメッセージに含まれる自装置のＮＡＴ特性情報が取得されて（Ｓ６８）、処理はＳ７１（図７参照）へ移行する。
【００５４】
「ＯＰＴＩＯＮＳ」が受信されることなく、サーバ６からの返信要求が受信されると（Ｓ６４：ＹＥＳ）、返信要求に対するレスポンスが着呼装置に返信される（Ｓ６６）。着呼装置では、返信要求に対するレスポンスが受信されると、発呼装置に関するＮＡＴの特性がアドレス制限ＣｏｎｅＮＡＴと判別される。次いで、発呼装置では、「１８０  Ｒｉｎｇｉｎｇ」が受信され（Ｓ６７：ＹＥＳ）、自装置のＮＡＴ特性情報が取得されて（Ｓ６８）、処理はＳ７１へ移行する。
【００５５】
「ＯＰＴＩＯＮＳ」および返信要求が受信されることなく、「１８０  Ｒｉｎｇｉｎｇ」が受信された場合には（Ｓ６５：ＹＥＳ）、「１８０  Ｒｉｎｇｉｎｇ」に含まれるＮＡＴ特性情報が取得されて（Ｓ６８）、処理はＳ７１へ移行する。この場合のＮＡＴ特性情報は、発呼装置に関するＮＡＴの特性がポート制限ＣｏｎｅＮＡＴまたはＳｙｍｍｅｔｒｉｃＮＡＴであることを示す。
【００５６】
着呼装置に関するＮＡＴの特性を判別するための処理が行われる。図７に示すように、まず、「１８０  Ｒｉｎｇｉｎｇ」に含まれる着呼装置の使用ポート情報から、着呼装置のポート変動が検出される。さらに、着呼装置のＩＰアドレスおよびサーバ用ポートの情報が、「１８０  Ｒｉｎｇｉｎｇ」に含まれる情報から取得される（Ｓ７１）。実行中の呼制御において着呼装置との間の通信に未だ使用していないポートから、着呼装置のサーバ用ポートへ向けて「ＯＰＴＩＯＮＳ」が送信される（Ｓ７２）。「ＯＰＴＩＯＮＳ」に対するレスポンスである「２００  ＯＫ（ＯＰＴ）」が受信されたか否かが判断される（Ｓ７３）。受信されていなければ（Ｓ７３：ＮＯ）、「ＯＰＴＩＯＮＳ」が送信されてから所定時間が経過したか否かが判断される（Ｓ７４）。所定時間が経過していなければ（Ｓ７４：ＮＯ）、Ｓ７３およびＳ７４の判断が繰り返し行われる。
【００５７】
「２００  ＯＫ（ＯＰＴ）」が受信された場合には（Ｓ７３：ＹＥＳ）、着呼装置に関するＮＡＴの特性がＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴと判別される（Ｓ７５）。着呼装置に関するＮＡＴの特性を示すＮＡＴ特性情報が、着呼装置に送信される（Ｓ８６）。「ＩＮＶＩＴＥ」に対する成功応答「２００  ＯＫ（ＩＮＶ）」が受信されるまで待機され（Ｓ８７：ＮＯ）、受信されると（Ｓ８７：ＹＥＳ）、「ＡＣＫ」が着呼装置に送信される（Ｓ８８）。判別されたＮＡＴの特性に応じてセッションが確立されて（Ｓ８９）、発呼装置処理は終了する。
【００５８】
「２００  ＯＫ（ＯＰＴ）」が受信されることなく（Ｓ７３：ＮＯ）、所定時間が経過してタイムアウトとなると（Ｓ７４：ＹＥＳ）、サーバ６に対して要求送信が指示される（Ｓ７７）。前述したように、要求送信の指示とは、実行中の呼制御においてサーバ６が着呼装置との通信で使用したポート以外の新たなポートから、着呼装置のサーバ用ポートに返信要求を送信させる指示である。次いで、返信要求に対するレスポンスが受信されたか否かが判断される（Ｓ７８）。受信されていなければ（Ｓ７８：ＮＯ）、サーバ６に要求送信が指示されてから所定時間が経過したか否かが判断される（Ｓ７９）。所定時間が経過していなければ（Ｓ７９：ＮＯ）、Ｓ７８およびＳ７９の判断が繰り返し行われる。
【００５９】
返信要求に対するレスポンスが受信された場合には（Ｓ７８：ＹＥＳ）、着呼装置に関するＮＡＴの特性がアドレス制限ＣｏｎｅＮＡＴと判別されて（Ｓ８１）、処理はＳ８６へ移行する。レスポンスが受信されることなく（Ｓ７８：ＮＯ）、タイムアウトとなると（Ｓ７９：ＹＥＳ）、着呼装置に接続されているＮＡＴルータのポートの番号が、データが送信される毎に変更されるか否かが判断される（Ｓ８３）。Ｓ８３の判断は、Ｓ７１で行われたポート変動の検出結果に基づいて行われる。変更されないと判断された場合には（Ｓ８３：ＮＯ）、着呼装置に関するＮＡＴの特性がポート制限ＣｏｎｅＮＡＴと判別されて（Ｓ８４）、処理はＳ８６へ移行する。ポートの番号が変更されると判断された場合には（Ｓ８３：ＹＥＳ）、着呼装置に関するＮＡＴの特性がＳｙｍｍｅｔｒｉｃＮＡＴと判別されて（Ｓ８５）、処理はＳ８６へ移行し、セッションが確立される。
【００６０】
図８および図９を参照して、ＰＣ１が着呼装置として動作する場合の処理である着呼装置処理について説明する。着呼装置処理は、発呼装置から「ＩＮＶＩＴＥ」が送信されることを契機として、ＰＣ１のＣＰＵ２０が実行する。図８に示すように、着呼装置処理が開始されると、「ＩＮＶＩＴＥ」が受信される（Ｓ９２）。「ＩＮＶＩＴＥ」に含まれる発呼装置の情報から、発呼装置のポート変動が検出され、且つ発呼装置のＩＰアドレスおよびサーバ用ポートが取得される（Ｓ９３）。発呼装置のサーバ用ポートへ向けて、新たなポートから「ＯＰＴＩＯＮＳ」が送信される（Ｓ９４）。本実施の形態では、図示しないが、「ＩＮＶＩＴＥ」が受信された以降に「１００  Ｔｒｙｉｎｇ」も発呼装置に送信される。
【００６１】
「ＯＰＴＩＯＮＳ」に対するレスポンスである「２００  ＯＫ（ＯＰＴ）」が受信されたか否かが判断される（Ｓ９５）。受信されていなければ（Ｓ９５：ＮＯ）、「ＯＰＴＩＯＮＳ」が送信されてから所定時間が経過したか否かが判断される（Ｓ９６）。所定時間が経過していなければ（Ｓ９６：ＮＯ）、Ｓ９５およびＳ９６の判断が繰り返し行われる。
【００６２】
「２００  ＯＫ（ＯＰＴ）」が受信された場合には（Ｓ９５：ＹＥＳ）、発呼装置に関するＮＡＴの特性がＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴと判別される（Ｓ９８）。暫定レスポンス「１８０  Ｒｉｎｇｉｎｇ」が、発呼装置に送信される（Ｓ１０８）。この「１８０  Ｒｉｎｇｉｎｇ」には、発呼装置に関するＮＡＴの特性を示すＮＡＴ特性情報が含まれる。
【００６３】
「２００  ＯＫ（ＯＰＴ）」が受信されることなく（Ｓ９５：ＮＯ）、タイムアウトとなると（Ｓ９６：ＹＥＳ）、サーバ６に対して要求送信が指示される（Ｓ９９）。返信要求に対するレスポンスが受信されたか否かが判断される（Ｓ１００）。受信されていなければ（Ｓ１００：ＮＯ）、要求送信が指示されてから所定時間が経過したか否かが判断される（Ｓ１０１）。所定時間が経過していなければ（Ｓ１０１：ＮＯ）、Ｓ１００およびＳ１０１の判断が繰り返し行われる。
【００６４】
返信要求に対するレスポンスが受信された場合には（Ｓ１００：ＹＥＳ）、発呼装置に関するＮＡＴの特性がアドレス制限ＣｏｎｅＮＡＴと判別されて（Ｓ１０３）、「１８０  Ｒｉｎｇｉｎｇ」が送信される（Ｓ１０８）。レスポンスが受信されることなく（Ｓ１００：ＮＯ）、タイムアウトとなると（Ｓ１０１：ＹＥＳ）、Ｓ９３で行われたポート変動の検出結果から、発呼装置に接続されているＮＡＴルータのポートが変更されるか否かが判断される（Ｓ１０４）。変更されないと判断された場合には（Ｓ１０４：ＮＯ）、発呼装置に関するＮＡＴの特性がポート制限ＣｏｎｅＮＡＴと判別されて（Ｓ１０５）、「１８０  Ｒｉｎｇｉｎｇ」が送信される（Ｓ１０８）。ポートが変更されると判断された場合には（Ｓ１０４：ＹＥＳ）、発呼装置に関するＮＡＴの特性がＳｙｍｍｅｔｒｉｃＮＡＴと判別されて（Ｓ１０６）、「１８０  Ｒｉｎｇｉｎｇ」が送信される（Ｓ１０８）。処理はＳ１１１（図９参照）へ移行する。
【００６５】
着呼装置に関するＮＡＴの特性の判別するための処理が行われる。図９に示すように、発呼装置から「ＯＰＴＩＯＮＳ」を受信したか否かが判断される（Ｓ１１１）。「ＯＰＴＩＯＮＳ」を受信していなければ（Ｓ１１１：ＮＯ）、サーバ６から返信要求を受信したか否かが判断される（Ｓ１１２）。返信要求を受信していなければ（Ｓ１１２：ＮＯ）、発呼装置からＮＡＴ特性情報を受信したか否かが判断される（Ｓ１１３）。ＮＡＴ特性情報も受信していなければ（Ｓ１１３：ＮＯ）、Ｓ１１１〜Ｓ１１３の判断が繰り返し行われる。
【００６６】
「ＯＰＴＩＯＮＳ」が受信されると（Ｓ１１１：ＹＥＳ）、「ＯＰＴＩＯＮＳ」に対するレスポンスである「２００  ＯＫ（ＯＰＴ）」が発呼装置に返信される（Ｓ１１４）。ＮＡＴ特性情報を受信するまで待機される（Ｓ１１５：ＮＯ）。ＮＡＴ特性情報が受信されると（Ｓ１１５：ＹＥＳ）、成功応答「２００  ＯＫ（ＩＮＶ）」が発呼装置に送信される（Ｓ１１６）。発呼装置から「ＡＣＫ」を受信するまで待機され（Ｓ１１７：ＮＯ）、受信すると（Ｓ１１７：ＹＥＳ）、ＮＡＴの特性に応じてセッションが確立されて（Ｓ１１８）、処理は終了する。
【００６７】
「ＯＰＴＩＯＮＳ」が受信されることなく、サーバ６からの返信要求が受信されると（Ｓ１１２：ＹＥＳ）、返信要求に対するレスポンスが発呼装置に返信される（Ｓ１１４）。その後、ＮＡＴ特性情報が受信され（Ｓ１１５：ＹＥＳ）、「２００  ＯＫ（ＩＮＶ）」が送信されて（Ｓ１１６）、セッションが確立される（Ｓ１１８）。「ＯＰＴＩＯＮＳ」および返信要求が受信されることなく、ＮＡＴ特性情報が受信された場合には（Ｓ１１３：ＹＥＳ）、着呼装置に関するＮＡＴの特性は、ポート制限ＣｏｎｅＮＡＴまたはＳｙｍｍｅｒｉｃＮＡＴである。この場合、そのまま「２００  ＯＫ（ＩＮＶ）」が送信され（Ｓ１１６）、セッションが確立されて（Ｓ１１８）、処理は終了する。
【００６８】
以上説明したように、本実施の形態のＰＣ１によると、通信システム１００内に存在するサーバ６を１台のみ用いて、Ｐ２Ｐ通信を行うための呼制御の過程で、発呼装置および着呼装置に関するＮＡＴの特性を判別することができる。従って、ＰＣ１は、使用するＩＰアドレスの数を最小限に抑えてＮＡＴの特性を判別することができる。多数のポートを使用する必要もないため、通信を許可していない装置が通信装置にアクセスする可能性も低下させることができる。ＰＣ１によると、サーバ６の位置に依存したＮＡＴの特性ではなく、２つのＰＣ１間におけるＮＡＴの特性を的確に判別することができる。呼制御の中でＮＡＴの特性を判別することができるため、効率もよい。呼制御を実行する前にＵＨＰ等の処理を行う場合とは異なり、「２００  ＯＫ（ＩＮＶ）」が着呼装置から送信される前に呼制御がキャンセルされた場合でも、通信を許可していない装置が通信装置にアクセスする可能性が増すことを防止することができる。
【００６９】
ＰＣ１が相手装置のサーバ用ポートに送信した「ＯＰＴＩＯＮＳ」を、相手装置が受信できれば、相手装置に関するＮＡＴの特性はＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴである。相手装置は、「ＯＰＴＩＯＮＳ」を受信すると「２００  ＯＫ（ＯＰＴ）」をＰＣ１に返信する。従って、ＰＣ１は、「２００  ＯＫ（ＯＰＴ）」を所定時間内に受信するか否かを判断するだけで、相手装置に関するＮＡＴの特性を容易に絞り込むことができる。
【００７０】
ＰＣ１は、相手装置から「２００  ＯＫ（ＯＰＴ）」を受信しなかった場合、サーバ６に要求送信を指示する。要求送信を指示されたサーバ６は、相手装置との間の通信に使用する装置用ポート以外のポートから、相手装置のサーバ用ポートに返信要求を送信する。相手装置に関するＮＡＴの特性がＯｐｅｎＩｎｔｅｒｎｅｔ、ＦｕｌｌＣｏｎｅＮＡＴ、およびアドレス制限ＣｏｎｅＮＡＴのいずれかであれば、相手装置は返信要求を受信できる。また、相手装置は「ＯＰＴＩＯＮＳ」を受信できていないので、相手装置に関するＮＡＴの特性がＯｐｅｎＩｎｔｅｒｎｅｔでもＦｕｌｌＣｏｎｅＮＡＴでもないことが既に判別されている。従って、ＰＣ１は、相手装置に関するＮＡＴの特性がアドレス制限ＣｏｎｅＮＡＴであるか否かを、サーバ６から送信される返信要求が受信されるか否かによって容易に判別することができる。詳細には、ＰＣ１は、返信要求に対するレスポンスを相手装置から所定時間内に受信するか否かを判断するだけで、相手装置に関するＮＡＴの特性を容易に絞り込むことができる。
【００７１】
ＰＣ１は、返信要求に対するレスポンスを相手装置から受信しなかった場合、相手装置の使用ポート情報を用いて、相手装置に関するＮＡＴの特性がポート制限ＣｏｎｅＮＡＴおよびＳｙｍｍｅｔｒｉｃＮＡＴのいずれであるかを容易に判別することができる。その結果、ＰＣ１は、４つに大別されるＮＡＴの特性を的確に判別することができる。ＰＣ１は、汎用的なＳＩＰプロトコルを用いて、ＮＡＴの特性の判別と相手装置との間のセッションの確立とを容易に実現することができる。通信システム１００に利用されるサーバ６は、ＳＩＰプロトコルに準拠した動作を行うことができればよいため、ＮＡＴの特性を判別するための特別な動作をサーバに実行させる必要はない。
【００７２】
上記実施の形態において、ＰＣ１が本発明の「通信装置」に相当する。例えば、図６のＳ６２、図８のＳ９２、Ｓ１０８、図９のＳ１１６等で、サーバ６との通信処理を行うＣＰＵ２０が、本発明の「サーバ通信手段」として機能する。図７のＳ７１、図８のＳ９３等で相手装置のＩＰアドレスおよびサーバ用ポートの情報を取得するＣＰＵ２０が「情報取得手段」として機能する。図７のＳ７２および図８のＳ９４で送信される「ＯＰＴＩＯＮＳ」が「第一判別用データ」に相当する。「ＯＰＴＩＯＮＳ」を送信するＣＰＵ２０が「第一データ送信手段」として機能する。図７のＳ７３〜８５で相手装置に関するＮＡＴの特性を判別するＣＰＵ２０が「判別手段」として機能する。
【００７３】
図６のＳ６６および図９のＳ１１４で「ＯＰＴＩＯＮＳ」に対するレスポンスである「２００  ＯＫ（ＯＰＴ）」を返信する処理が「第一返信手段」として機能する。「２００  ＯＫ（ＯＰＴ）」が「第一受信情報」に相当する。図７のＳ７７および図８のＳ９９で要求送信をサーバ６に指示するＣＰＵ２０が「指示手段」として機能する。図４のＳ３３および図５のＳ５３でサーバ６から送信される返信要求が「第二判別用データ」に相当する。図６のＳ６６および図９のＳ１１４で返信要求に対してレスポンスを送信するＣＰＵ２０が「通知手段」として機能する。返信要求に対して送信されるレスポンスが「第二受信情報」に相当する。図７のＳ７１および図８のＳ９３で相手装置の使用ポート情報を「ＩＮＶＩＴＥ」から取得するＣＰＵ２０が「ポート情報取得手段」として機能する。
【００７４】
図７のＳ７１、図８のＳ９３等で相手装置のＩＰアドレスおよびサーバ用ポートの情報を取得する処理が「情報取得ステップ」に相当する。図７のＳ７２および図８のＳ９４で「ＯＰＴＩＯＮＳ」を送信する処理が「第一データ送信ステップ」に相当する。図７のＳ７３〜８５で相手装置に関するＮＡＴの特性を判別する処理が「判別ステップ」に相当する。
【００７５】
本発明は、上記実施の形態に限定されることはなく、様々な変形が可能であることは言うまでもない。上記実施の形態では、セッション開始プロトコルとして汎用的なＳＩＰプロトコルが使用されている。しかし、これは一例に過ぎない。他の技術を用いてＰＣ１間のセッションを確立する通信システム１００にも、本発明は適用できる。
【００７６】
上記実施の形態では、第一判別用データである「ＯＰＴＩＯＮＳ」を送信したＰＣ１が、相手装置からのレスポンスの有無によって、相手装置に関するＮＡＴの特性を判別している。従って、ＰＣ１は、実際の通信の結果に基づいて客観的に相手装置に関するＮＡＴの特性を判別することができる。しかし、「ＯＰＴＩＯＮＳ」を受信する側のＰＣ１が、自装置に関するＮＡＴの特性を判別してもよい。例えば、ＰＣ１は、図６のＳ６３の判断で「ＯＰＴＩＯＮＳ」を受信したと判断した場合に、自装置に関するＮＡＴの特性をＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴと判別してもよい。ＰＣ１は、図６のＳ６４の判断で返信要求を受信したと判断した場合に、自装置に関するＮＡＴの特性をアドレス制限ＣｏｎｅＮＡＴと判別してもよい。ＰＣ１は、図６のＳ６５の判断で「１８０  Ｒｉｎｇｉｎｇ」を受信した場合に、自装置に関するＮＡＴの特性をポート制限ＣｏｎｅＮＡＴまたはＳｙｍｍｅｔｒｉｃＮＡＴと判別してもよい。ＰＣ１は、自装置に関するＮＡＴの特性を判別した後に、判別の結果を相手装置に通知すればよい。従って、本発明の「判別手段」は、「ＯＰＴＩＯＮＳ」等に対するレスポンスの有無によってＮＡＴの特性を判別する場合だけでなく、相手装置が判別したＮＡＴの特性を相手装置から受信する場合も含む。図９のＳ１１１〜Ｓ１１３の処理も、図６のＳ６４〜６６の処理と同様に変更できる。
【００７７】
上記実施の形態のＰＣ１は、相手装置に関するＮＡＴの特性をポート制限ＣｏｎｅＮＡＴおよびＳｙｍｍｅｔｒｉｃＮＡＴの２つに絞り込んだ後に、相手装置が使用するポートが変動するか否かに基づいてＮＡＴの特性を判別する。しかし、ポート変動に基づいてＮＡＴの特性を判別するタイミングは、変更できる。例えば、図７のＳ７１および図８のＳ９３でポート変動を検出した後に、検出の結果に応じて、相手装置に関するＮＡＴの特性がＳｙｍｍｅｔｒｉｃＮＡＴであるか否かを判別してもよい。上記実施の形態の通信システム１００は、セッションを確立する２つのＰＣ１に関するＮＡＴの特性を共に判別した後に、判別結果に応じてセッションを確立している。しかし、２つのＰＣ１のうちの一方に関するＮＡＴの特性のみを判別してもよい。例えば、通信システム１００は、２つのＰＣ１の一方に関するＮＡＴの特性がＯｐｅｎＩｎｔｅｒｎｅｔまたはＦｕｌｌＣｏｎｅＮＡＴであると判別した時点で、他方のＰＣ１に関するＮＡＴの特性を判別せずに、直接接続によって２つのＰＣ１間のセッションを確立してもよい。
【００７８】
上記実施の形態のＰＣ１は、相手装置の使用ポート情報を相手装置から取得し、取得した使用ポート情報から相手装置のポート変動を検出する。しかし、ポート変動の検出方法はこれに限られない。例えば、ＰＣ１は、相手装置の使用ポート情報をサーバ６から取得してもよい。相手装置自身またはサーバ６が相手装置のポート変動を検出して、検出結果のみをＰＣ１に通知してもよい。ＰＣ１が相手装置のポート変動を検出するタイミングも変更できる。
【００７９】
上記実施の形態のＰＣ１は、相手装置のＩＰアドレスおよびサーバ用ポートの情報を、呼出要求「ＩＮＶＩＴＥ」と共にサーバ６から取得する。しかし、ＰＣ１は、他のタイミングでサーバ用ポート等の情報を取得してもよい。ＰＣ１は、「ＯＰＴＩＯＮＳ」等によって相手装置から直接サーバ用ポート等の情報を取得してもよい。サーバ６および相手装置以外の外部機器からサーバ用ポートの情報を取得してもよい。
【符号の説明】
【００８０】
１    ＰＣ
６    サーバ
８    外部ネットワーク
９，１０    ＮＡＴルータ
２０    ＣＰＵ
２１    ＲＯＭ
２２    ＲＡＭ
２３    ＨＤＤ
１００    通信システム
【図１】
2011172143.tif 000003
【図２】
2011172143.tif 000004
【図３】
2011172143.tif 000005
【図４】
2011172143.tif 000006
【図５】
2011172143.tif 000007
【図６】
2011172143.tif 000008
【図７】
2011172143.tif 000009
【図８】
2011172143.tif 000010
【図９】
2011172143.tif 000011