説明

通信装置、通信方法、及び通信プログラム

【課題】実行可能な確立通信の手順が異なる複数の通信装置間で、確実に確立通信を実行することが可能な通信装置、通信方法、及び通信プログラムを提供する。
【解決手段】通信装置12と通信装置13との間のセッションは確立している。通信装置12は、通信装置11との間で、手順1に基づいて確立通信を実行する(S13、S15、S17、S19、S21)。通信装置11と通信装置12との間のセッションが確立する。通信装置12は、通信装置12及び13に実装された通信アプリケーションの版数を、通信装置11に対して通知する(S23)。通信装置11は、通知された版数に基づいて、通信装置13との間で実行される確立通信の手順2を決定する。通信装置11は、通信装置13との間で、手順2に基づいて確立通信を実行する(S25、S27、S29、S31、S33、S35)。通信装置11と通信装置13との間のセッションが確立する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置、通信方法、及び通信プログラムに関する。より詳細には、多拠点間でセッションを確立させることができる通信装置、通信方法、及び通信プログラムに関する。
【背景技術】
【0002】
複数の通信装置間でセッションを確立させ、通信を開始させることができる通信装置が知られている。例えば特許文献1に記載された通信装置では、通信装置間のセッションを確立するための確立通信が、通信経路毎に実行される。確立通信では、他の通信装置と通信を行うために必要なアドレス情報等が交換される。通信装置は、確立通信を行なうことで、他の通信装置とのセッションを確立させ、通信を開始することができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−341582号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
確立通信が、其々の通信装置に実装されたアプリケーション等に基づいて実行される場合がある。また、確立通信時における通信手順が、該アプリケーションの種類やバージョン毎に異なる場合がある。このような場合、通信装置は、異なる種類やバージョンのアプリケーションが実装された他の通信装置との間で、最適な条件で確実に確立通信を行うことができない。従って、他の通信装置とセッションを確立させて通信を開始することができない場合があるという問題点がある。
【0005】
本発明の目的は、実行可能な確立通信の通信手順が異なる複数の通信装置間で、最適な条件で確実に確立通信を実行することが可能な通信装置、通信方法、及び通信プログラムを提供することにある。
【課題を解決するための手段】
【0006】
本発明の第一態様に係る通信装置は、他の通信装置とのセッションを確立して通信を実行することが可能な通信装置であって、前記他の通信装置のうち一である前記第一通信装置とのセッションを確立する為に必要な確立通信である第一確立通信を、前記第一通信装置との間で実行する第一通信手段と、前記第一通信手段によって前記第一確立通信が実行され、前記第一通信装置とのセッションが確立した場合に、前記第一通信装置から送信される情報であって、前記第一通信装置とセッションが確立している前記他の通信装置である第二通信装置を特定する装置特定情報と、前記第二通信装置が実行可能な前記確立通信である第二確立通信を特定可能な通信特定情報とのうち少なくとも一方を、前記第一通信装置から受信する受信手段と、前記受信手段によって前記装置特定情報及び前記通信特定情報が受信された場合に、受信された前記通信特定情報に基づいて、前記装置特定情報によって特定される前記第二通信装置との間で実行する確立通信である第三確立通信を決定する決定手段と、前記決定手段によって決定された前記第三確立通信を、前記装置特定情報によって特定される前記第二通信装置との間で実行する第二通信手段とを備えている。
【0007】
第一態様によれば、第一通信装置と第二通信装置とは既にセッションが確立しているので、第一通信装置は、第二通信装置が実行可能な確立通信を、通信特定情報によって通知できる。通信装置は、第一通信装置から受信した通信特定情報に基づいて、自身と第二通信装置との両方が実行可能な確立通信を決定して実行できる。従って通信装置は、第二通信装置と最適な条件で確実にセッションを確立して通信を実行することができる。
【0008】
また、第一態様において、前記決定手段は、自身が実行可能な前記確立通信と、前記受信手段によって受信された前記通信特定情報によって特定される前記第二確立通信とが重複する場合に、重複する前記確立通信を前記第三確立通信として決定してもよい。通信装置は、自身が実行可能な確立通信と第二確立通信とで重複する確立通信を、第三確立通信として決定する。従って通信装置は、自身と第二通信装置との両方が実行可能な確立通信を確実に選択することができるので、セッションを安定的に確立させることができる。
【0009】
また、第一態様において、前記第一確立通信は、全ての前記通信装置が実行可能な前記確立通信であってもよい。これによって、第一通信装置において実行可能な確立通信がわからない場合であっても、通信装置は、第一確立通信を実行することで、第一通信装置とのセッションを確実に確立させることができる。
【0010】
また、第一態様において、前記決定手段は、前記受信手段によって前記装置特定情報のみ受信された場合に、前記第一確立通信を前記第三確立通信として決定してもよい。通信特定情報が受信されなかった場合、第二通信装置との間で第一確立通信が実行される。第一確立通信は全ての通信装置が実行可能な確立通信であるため、通信装置は、最適な条件で確実に第二通信装置とのセッションを確立させることができる。
【0011】
また、第一態様において、前記通信特定情報は、前記第二確立通信を実行するために前記第二通信装置に実装されるアプリケーションの版数であってもよい。通信装置は、確立通信を実行するために実装されるアプリケーションの版数に基づいて、第二確立通信を一義的に特定できる。
【0012】
本発明の第二態様に係る通信方法は、他の通信装置とのセッションを確立して通信を実行することが可能な通信方法であって、前記他の通信装置のうち一である前記第一通信装置とのセッションを確立する為に必要な確立通信である第一確立通信を、前記第一通信装置との間で実行する第一通信ステップと、前記第一通信ステップによって前記第一確立通信が実行され、前記第一通信装置とのセッションが確立した場合に、前記第一通信装置から送信される情報であって、前記第一通信装置とセッションが確立している前記他の通信装置である第二通信装置を特定する装置特定情報と、前記第二通信装置が実行可能な前記確立通信である第二確立通信を特定可能な通信特定情報とのうち少なくとも一方を、前記第一通信装置から受信する受信ステップと、前記受信ステップによって前記装置特定情報及び前記通信特定情報が受信された場合に、受信された前記通信特定情報に基づいて、前記装置特定情報によって特定される前記第二通信装置との間で実行する確立通信である第三確立通信を決定する決定ステップと、前記決定ステップによって決定された前記第三確立通信を、前記装置特定情報によって特定される前記第二通信装置との間で実行する第二通信ステップとを備えている。
【0013】
第二態様によれば、第一通信装置と第二通信装置とは既にセッションが確立しているので、第一通信装置は、第二通信装置が実行可能な確立通信を、通信特定情報によって通知できる。通信装置は、第一通信装置から受信した通信特定情報に基づいて、自身と第二通信装置との両方が実行可能な確立通信を決定して実行できる。従って通信装置は、第二通信装置と最適な条件で確実にセッションを確立して通信を実行することができる。
【0014】
本発明の第三態様に係る通信プログラムは、他の通信装置とのセッションを確立して通信を実行することが可能な通信プログラムであって、前記他の通信装置のうち一である前記第一通信装置とのセッションを確立する為に必要な確立通信である第一確立通信を、前記第一通信装置との間で実行する第一通信ステップと、前記第一通信ステップによって前記第一確立通信が実行され、前記第一通信装置とのセッションが確立した場合に、前記第一通信装置から送信される情報であって、前記第一通信装置とセッションが確立している前記他の通信装置である第二通信装置を特定する装置特定情報と、前記第二通信装置が実行可能な前記確立通信である第二確立通信を特定可能な通信特定情報とのうち少なくとも一方を、前記第一通信装置から受信する受信ステップと、前記受信ステップによって前記装置特定情報及び前記通信特定情報が受信された場合に、受信された前記通信特定情報に基づいて、前記装置特定情報によって特定される前記第二通信装置との間で実行する確立通信である第三確立通信を決定する決定ステップと、前記決定ステップによって決定された前記第三確立通信を、前記装置特定情報によって特定される前記第二通信装置との間で実行する第二通信ステップとをコンピュータに実行させる。
【0015】
第三態様によれば、第一通信装置と第二通信装置とは既にセッションが確立しているので、第一通信装置は、第二通信装置が実行可能な確立通信を、通信特定情報によって通知できる。通信装置は、第一通信装置から受信した通信特定情報に基づいて、自身と第二通信装置との両方が実行可能な確立通信を決定して実行できる。従って通信装置は、第二通信装置と最適な条件で確実にセッションを確立して通信を実行することができる。
【図面の簡単な説明】
【0016】
【図1】通信システム1の概要、及び通信装置14の電気的構成を示す図である。
【図2】通信アプリケーションの版数と通信手順との関係を示す図である。
【図3】通信シーケンスの第一例を示す図である。
【図4】通信シーケンスの第二例を示す図である。
【図5】メイン処理を示すフローチャートである。
【図6】送信処理を示すフローチャートである。
【図7】受信処理を示すフローチャートである。
【図8】テーブル231を示す図である。
【発明を実施するための形態】
【0017】
以下、本発明の一実施形態について、図面を参照して説明する。これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている装置の構成、各種処理のフローチャート等は、それのみに限定する趣旨ではなく、単なる説明例である。
【0018】
図1を参照し、通信システム1について説明する。通信システム1は、サーバ10、通信装置11、12、13、及び14(以下、これらを区別しない場合、「通信装置15」と呼ぶ。)を備えている。サーバ10及び通信装置15は、ネットワーク3に接続している。サーバ10及び通信装置15は、ネットワーク3を介して通信を行うことができる。通信装置15は、呼制御通信によって他の通信装置15とのセッションを確立し、P2P(Peer to Peer)通信を開始することができる。通信装置15として、例えば周知のPCが使用される。呼制御通信のプロトコルとして、例えばSIP(Session Initiation Protocol)が使用される。サーバ10は、通信装置15間の呼制御通信を制御する。サーバ10として、SIPサーバが使用される。なお、通信装置15に付された符号(11、12、13及び14)は、其々の通信装置15のIDも示しているものとする。
【0019】
呼制御通信は、其々の通信装置15に実装された通信アプリケーションによって実行される。呼制御通信における通信手順は、実装された通信アプリケーションの版数(バージョン)によって異なっている。例えば図2に示すように、実装される通信アプリケーションの版数がVer.1である場合、通信装置15は、手順1に基づいて呼制御通信を行うことが可能である。実装される通信アプリケーションの版数がVer.2である場合、通信装置15は、手順1及び手順2に基づいて呼制御通信を行うことが可能である。実装されるアプリケーションの版数がVer.3である場合、通信装置15は、手順1、手順2、及び手順3に基づいて呼制御通信を行うことが可能である。このように、通信アプリケーションにおいて実行可能な呼制御通信の通信手順は、上位互換性がある。実行される呼制御通信は、手順1、手順2、及び手順3の順で高度且つ高性能になるので、手順1よりも手順2、手順2よりも手順3に基づいて呼制御通信が実行されることが好ましい。また、詳細は後述するが、其々の手順に基づいて呼制御通信が実行される場合に使用される要求パケットに格納される情報(ポート番号)も、通信アプリケーションの版数によって異なる。
【0020】
図1に示すように、通信装置12には、版数がVer.1である通信アプリケーションが実装されている。通信装置13には、版数がVer.2である通信アプリケーションが実装されている。通信装置11及び14には、版数がVer.3である通信アプリケーションが実装されている。従って例えば、通信装置11と通信装置12とが手順3に基づいて呼制御通信を行おうとした場合、通信装置11は手順3に基づいて呼制御通信を行うことが可能であるのに対し、通信装置12は手順3に基づいて呼制御通信を行うことができない。従って、通信装置11と通信装置12との呼制御通信は失敗し、通信装置11と通信装置12とはセッションを確立させることができない。
【0021】
上述のような場合に本実施形態では、通信装置11及び通信装置12は、双方が実行可能な呼制御通信の通信手順である手順1を効率的に把握する。そして手順1に基づいて、通信装置11と通信装置12とは呼制御通信を実行する。これによって通信装置11と通信装置12との呼制御通信は成功し、通信装置11と通信装置12とはセッションを確立させてP2P通信を開始することができる。このように本実施形態における通信装置15は、他の通信装置15との間で実行可能な呼制御通信の手順を効率的に把握し、迅速に呼制御通信を実行して確実にセッションを確立させることができる。
【0022】
通信装置14の電気的構成について説明する。通信装置11、12、及び13の電気的構成は、通信装置14と同一である。通信装置14は、通信装置14の制御を司るCPU21を備えている。CPU21は、ROM22、RAM23、ハードディスクドライブ(HDD)24、入力部25、出力部26、ドライブ装置27、及び通信部28と電気的に接続している。ROM22には、ブートプログラムやBIOS、OS等が記憶される。RAM23には、タイマやカウンタ、一時的なデータが記憶される。HDD24には、CPU21の制御プログラムが記憶される。入力部25は、ユーザからの入力を受け付けるキーボードやマウスである。出力部26は、所望の画像を表示させるディスプレイである。ドライブ装置27は、記憶媒体271に記憶された情報を読み出すことができる。例えば、通信装置14のセットアップ時、記憶媒体271に記憶された制御プログラムはドライブ装置27によって読み出され、HDD24に記憶される。通信部28は、ネットワーク3を介して他の通信装置15と通信を行う場合のタイミング制御を行う。
【0023】
図3を参照し、通信装置11、12、及び13間の通信シーケンスの第一例について説明する。なお、通信装置11、12、及び13間の呼制御通信は、サーバ10(図1参照)を介して実行されるが、図3ではサーバ10は省略されている。後述する図4も同様である。通信装置12と通信装置13とは、既に呼制御通信によってセッションを確立させ、P2P通信を行っている(S11)。通信装置12は、通信装置11との間のセッションを新たに確立しようとしている。
【0024】
通信装置12は、手順1に基づいて、通信装置11との呼制御通信を開始する。通信装置12は、通信装置11に対して、セッションの確立を要求する要求パケット(以下「INVITE要求」という。)を送信する。INVITE要求には、セッションの確立後、データがP2Pで送受信される場合に使用されるポート番号が格納される。図2に示すように、手順1に基づいて呼制御通信が実行される場合、INVITE要求には、音声データ及び映像データがP2Pで送受信される場合に使用されるポート番号が其々格納される。以下、音声データが送受信される場合に使用されるポート番号を「audio」と表記する。映像データが送受信される場合に使用されるポート番号を「video」と表記する。通信装置11は、INVITE要求を受信する(S13)。
【0025】
なお第一例では、通信装置12に実装されている通信アプリケーションの版数がVer.1であるので、通信装置12では、呼制御通信の通信手順として必然的に手順1が選択され、INVITE要求には「audio」及び「video」が格納されていた。これに対して本実施形態では、他の通信装置15において実行可能な呼制御通信の通信手順がわからない状態で、他の通信装置15とのセッションを確立させようとする場合、通信装置15は、常に手順1に基づいて呼制御通信を開始する。従ってこの場合、送信されるINVITE要求には、常に「audio」及び「video」が格納される。図2に示すように、手順1に基づいた呼制御通信は、通信装置15に実装される通信アプリケーションの版数に依らず、全ての通信装置15において実行することが可能である。このため通信装置15は、手順1に基づいてINVITE要求を他の通信装置15に送信することで、他の通信装置15において実行可能な呼制御通信の通信手順がわからない場合でも、円滑に以後の呼制御通信を実行することができる。
【0026】
通信装置11は、通信装置12から送信されたINVITE要求を受信した(S13)場合、INVITE要求に格納されているポート番号を抽出する。通信装置11は、INVITE要求に格納されているポート番号が「audio」及び「video」であることから、手順1に基づいた呼制御通信が開始されたことを認識する。通信装置11は、手順1に基づいて、通信装置12に対して許可パケット(以下「180RINGRING」という。)を送信する。通信装置12は、180RINGRINGを受信する(S15)。通信装置12は、手順1に基づいて、応答パケット(以下「200OK」という。)を通信装置11に対して送信する。通信装置11は200OKを受信する(S17)。通信装置11は、手順1に基づいて、通信装置12に対してACKを送信する。通信装置12はACKを受信する(S19)。以上で、手順1に基づいた一連の呼制御通信は終了し、通信装置11と通信装置12とのセッションは確立する。通信装置11と通信装置12とはP2P通信を開始する(S21)。
【0027】
通信装置12は、通信アプリケーションの版数を通知するための通知パケットを、通信装置11に対して送信する。通知パケットには、通信装置12に実装されている通信アプリケーションの版数「Ver.1」が、通信装置12のIDに対応付けられて格納される。また通知パケットには、通信装置12とのセッションが既に確立している通信装置13に実装されている通信アプリケーションの版数「Ver.2」が、通信装置13のIDに対応付けられて格納される。通信装置11は、通知パケットを受信する(S23)。
【0028】
通信装置11は、通知パケットに格納されたIDにて特定される通信装置12、及び13のうち、未だセッションが確立していない通信装置13を抽出する。通信装置11は、抽出した通信装置13とのセッションを確立させるための呼制御通信を開始する。ここで通信装置11は、S23で、通信装置13に実装されている通信アプリケーションの版数「Ver.2」を通信装置12から取得している。通信装置11は、通信装置12が実行可能な呼制御通信の通信手順が、手順1及び手順2であることを特定する。一方、通信装置11に実装されている通信アプリケーションの版数はVer.3であるので、通信装置11は、手順1、手順2、及び手順3に基づいて呼制御通信を行うことができる状態にある。通信装置11は、双方で重複する呼制御通信の通信手順である手順1、及び手順2のうち、より高度かつ高機能である手順2を、実行可能な呼制御通信の通信手順として決定する。
【0029】
通信装置11は、決定した手順2に基づいて、通信装置13との呼制御通信を開始する。通信装置11は、通信装置13に対してINVITE要求を送信する。手順2に基づいて呼制御通信が実行される場合、図2に示すように、INVITE要求には、「audio」「video」、及び、専用アプリケーションに基づいたデータが送受信される場合に使用されるポート番号が格納される。以下、専用アプリケーションに基づいたデータが送受信される場合に使用されるポート番号を「app」と表記する。通信装置13は、INVITE要求を受信する(S25)。
【0030】
通信装置13は、通信装置11から送信されたINVITE要求に格納されているポート番号が「audio」「video」及び「app」であることから、手順2に基づいた呼制御通信が開始されたことを認識する。通信装置13は、手順2に基づいて、通信装置11に対して180RINGRINGを送信する。通信装置11は180RINGRINGを受信する(S27)。通信装置11は、手順2に基づいて、PRACKを通信装置13に対して送信する。通信装置13はPRACKを受信する(S29)。通信装置13は、手順2に基づいて、PRACKに対する応答パケット(以下「200OK(PRACK)」という。)を通信装置11に対して送信する。通信装置11は、200OK(PRACK)を受信する(S31)。通信装置13は、手順2に基づいて、S25で受信したINVITE要求に対する応答パケット(以下「200OK(INVITE)」という。)を、通信装置11に対して送信する。通信装置11は、200OK(INVITE)を受信する(S33)。通信装置11は、手順2に基づいて、ACKを通信装置13に対して送信する。通信装置13はACKを受信する(S35)。以上で、手順2に基づいた一連の呼制御通信は終了し、通信装置11と通信装置13とのセッションは確立する。通信装置11と通信装置13とはP2P通信を開始する(S37)。通信装置13は、通信装置12及び13のID、及び、其々に実装された通信アプリケーションの版数が格納された通知パケットを、通信装置11に対して送信する。通信装置11は、通知パケットを受信する(S39)。通信装置11は、通信装置12及び13のいずれとも既にセッションが確立しているので、以後、新たに呼制御通信は行わない。
【0031】
以上のように、通信装置12は、セッションを確立させようとしている通信装置11において実行可能な呼制御通信の通信手順がわからない場合、手順1に基づいて呼制御通信を開始する。これによって、通信装置11に実装されたアプリケーションに依らず、通信装置12は通信装置11と呼制御通信を行ってセッションを確立させることができる。
【0032】
また通信装置11は、通信装置12から受信した通知パケットに格納されている情報(ID及び版数)に基づいて、通信装置13との呼制御通信における通信手順を選択できる。これによって通信装置11は、より高度で且つ高機能な通信手順を効率的に選択し、通信装置13と呼制御通信を行うことができる。
【0033】
図4を参照し、通信装置11、12、13及び14間の通信シーケンスの第二例について説明する。図3の第一例と同一の部分については、説明を省略し又は簡略化している。通信装置12、13、及び14は、既に呼制御通信によってセッションを確立させ、P2P通信を行っている(S51)。通信装置11は、通信装置12との間のセッションを確立しようとしている。
【0034】
通信装置11は、通信装置12において実行可能な呼制御通信の手順がわからないので、手順1に基づいて、通信装置12に対してINVITE要求を送信する。通信装置12はINVITE要求を受信する(S53)。通信装置12は、手順1に基づいて、通信装置11に対して180RINGRINGを送信する。通信装置11は、180RINGRINGを受信する(S55)。通信装置11は、手順1に基づいて、200OKを通信装置12に対して送信する。通信装置12は200OKを受信する(S57)。通信装置12は、手順1に基づいて、通信装置11に対してACKを送信する。通信装置11はACKを受信する(S59)。以上で、手順1に基づいた一連の呼制御通信は終了し、通信装置11と通信装置12とのセッションは確立する。通信装置11と通信装置12とはP2P通信を開始する(S61)。
【0035】
通信装置12は、通知パケットを通信装置11に対して送信する。通知パケットには、通信装置12に実装されている通信アプリケーションの版数「Ver.1」が、通信装置12のIDに対応付けて格納される。また通知パケットには、通信装置12とのセッションが既に確立している通信装置13及び14に実装されている通信アプリケーションの版数(通信装置13:Ver.2、通信装置14:Ver.3)が、通信装置13及び14のIDに其々対応付けられて格納される。通信装置11は、通知パケットを受信する(S63)。
【0036】
通信装置11は、通知パケットに格納されたIDにて特定される通信装置12、13、及び14のうち、未だセッションが確立していない通信装置13、及び14を抽出する。通信装置11は、はじめに、抽出した通信装置13とのセッションを確立させるための呼制御通信を開始する。通信装置13とのセッションを確立させるための呼制御通信は、手順2に基づいて実行される。実行される呼制御通信(S71、73、75、77、79、81、及び83)は、図3の第一例で示した呼制御通信(S25、27、29、31、33、35、及び37)と同一である。
【0037】
通信装置13は、通知パケットを通信装置11に対して送信する。通知パケットには、通信装置13に実装されている通信アプリケーションの版数「Ver.2」が、通信装置13のIDに対応付けて格納される。また通知パケットには、通信装置13とのセッションが既に確立している通信装置12及び14に実装されている通信アプリケーションの版数(通信装置12:Ver.1、通信装置14:Ver.3)が、通信装置12及び14のIDに其々対応付けて格納される。通信装置11は、通知パケットを受信する(S85)。
【0038】
通信装置11は、通知パケットに格納されたIDにて特定される通信装置12、13及び14のうち、未だセッションが確立していない通信装置14を抽出する。通信装置11は、抽出した通信装置14とのセッションを確立させるための呼制御通信を開始する。ここで通信装置11は、S85で、通信装置14に実装されている通信アプリケーションの版数「Ver.3」を通信装置13から取得している。通信装置11は、通信装置14が実行可能な呼制御通信の通信手順が、手順1、手順2、及び手順3であることを特定する。通信装置11は、自身が実行可能な呼制御通信の通信手順である手順1、手順2、及び手順3との間で重複する通信手順のうち、最も高度かつ高機能である手順3を、通信装置14との間で実行可能な呼制御通信の通信手順として決定する。
【0039】
通信装置11は、決定した手順3に基づいて、通信装置14との呼制御通信を開始する。通信装置11は、通信装置14に対してINVITE要求を送信する。手順3に基づいて呼制御通信が実行される場合、図2に示すように、INVITE要求には「app」が格納される。通信装置14はINVITE要求を受信する(S87)。通信装置14は、通信装置11から送信されたINVITE要求に格納されているポート番号が「app」であることから、手順3に基づいた呼制御通信が開始されたことを認識する。通信装置14は、手順3に基づいて、通信装置11に対して180RINGRINGを送信する。通信装置11は、180RINGRINGを受信する(S89)。通信装置11は、手順3に基づいて、200OK(INVITE)を通信装置14に対して送信する。通信装置14は200OK(INVITE)を受信する(S91)。通信装置14は、通信装置11に対してACKを送信する。通信装置11はACKを受信する(S93)。通信装置11と通信装置14とのセッションは確立し、P2P通信が開始される(S95)。通信装置11及び通信装置14は、互いの詳細なアドレス情報を交換するためのハンドシェイクの通信を実行する(S97)。
【0040】
通信装置14は、通信装置12、13、及び14のID及び通信アプリケーションの版数が格納された通知パケットを、通信装置11に対して送信する。通信装置11は、通知パケットを受信する(S98)。通信装置11は、通信装置12、13、及び14のいずれとも既にセッションが確立しているので、以後、新たに呼制御通信は行わない。通信装置11は、通信装置11、12、及び13のID及び通信アプリケーションの版数が格納された通知パケットを、通信装置14に対して送信する。通信装置14は、通知パケットを受信する(S99)。通信装置14は、通信装置11、12、及び13のいずれとも既にセッションが確立しているので、以後、新たに呼制御通信は行わない。
【0041】
以上のように、通信装置11は、受信した通知パケットに格納されている情報に基づいて最適な呼制御通信の通信手順を選択し、選択した通信手順に基づいて、通信装置12、13、及び14と呼制御通信を行うことができる。また、通信装置15は、既にセッションが確立した他の通信装置15とは呼制御通信を行わない。このため、重複する無駄な呼制御通信が実行されることが防止されるので、ネットワーク3のトラフィックは抑制される。
【0042】
なお上述では、INVITE要求に格納されているポート番号に基づいて、呼制御通信の通信手順を特定していたが、本発明はこれに限定されない。通信手順を示す情報が直接INVITE要求に格納されていてもよい。セッションが確立した状態の他の通信装置15に実装されている通信アプリケーションの版数は、P2P通信時に取得してもよい。
【0043】
図5から図7を参照し、通信装置15のCPU21において実行されるメイン処理、送信処理、及び受信処理について説明する。メイン処理は、通信装置15間でセッションを確立させるためのアプリケーションが起動された場合に、CPU21において起動され実行される。送信処理は、RAM23に記憶された送信フラグがOFFからONとなった場合に起動される。受信処理は、RAM23に記憶された受信フラグがOFFからONとなった場合に起動される。送信フラグ及び受信フラグのON/OFFは、メイン処理中で切り替えられる。送信フラグ及び受信フラグは、メイン処理の起動時にはOFFされている。CPU21によって実行される各処理は、OSによってスイッチングされる。これによって其々の処理は並列して実行される。
【0044】
図5を参照し、メイン処理について説明する。はじめに、送信フラグがONされ(S111)、続いて受信フラグがONされる(S113)。他の通信装置15とのセッションを確立させる旨の指示が、入力部25(図1参照)を介してユーザによって入力されたかが判断される(S115)。他の通信装置15とのセッションを確立させる旨の指示が入力された場合(S115:YES)、呼制御通信の通信手順として手順1が選択される(S117)。選択された手順1に基づいて、他の通信装置15との間で呼制御通信が実行される(S119)。一連の呼制御通信が終了した後、処理はS115に戻る。
【0045】
一方、他の通信装置15とのセッションを確立させる旨の指示が入力されていない場合(S115:NO)、他の通信装置15からINVITE要求を受信したかが判断される(S121)。他の通信装置15からINVITE要求を受信した場合(S121:YES)、INVITE要求に格納されているポート番号に基づいて、受信したINVITE要求を含む呼制御通信の通信手順が決定される(S123)。決定された手順に基づいて、呼制御通信が実行される(S125)。一連の呼制御通信が終了した後、処理はS115に戻る。
【0046】
他の通信装置15とのセッションを確立させる指示が入力されておらず、且つ、他の通信装置15からINVITE要求を受信していない場合(S115:NO、S121:NO)、セッションを中止させる旨の指示が入力部25を介してユーザによって入力されたかが判断される(S127)。セッションを中止させる旨の指示が入力された場合(S127:YES)、メイン処理は終了する。セッションを中止させる旨の指示が入力されていない場合(S127:NO)、処理はS115に戻る。
【0047】
図6を参照し、送信処理について説明する。メイン処理(図5参照)での呼制御通信(S119、S125、図5参照)によって、呼制御通信の相手方の通信装置15と新たにセッションが確立したかが判断される(S131)。呼制御通信の相手方の通信装置15とのセッションが新たに確立していない場合(S131:NO)、処理はS131に戻る。呼制御通信の相手方の通信装置15とのセッションが新たに確立した場合(S131:YES)、現時点でセッションが確立している他の通信装置15に実装されている通信アプリケーションの版数が取得される(S133)。取得された版数に、対応する通信装置15のIDが対応付けられ、通知パケットに格納される。また、自身のID、及び、自身に実装されている通信アプリケーションの版数が対応付けられ、通知パケットに格納される。通知パケットは、呼制御通信の相手方の通信装置15に対して送信される(S135)。処理はS131に戻る。
【0048】
図7を参照し、受信処理について説明する。他の通信装置15から通知パケットを受信したかが判断される(S141)。他の通信装置15から通知パケットを受信していない場合(S141:NO)、処理はS141に戻る。他の通信装置15から通知パケットを受信した場合(S141:YES)、通知パケットに格納されたID及び通信アプリケーションの版数が取得される。取得されたIDによって特定される通信装置15の中に、未だセッションが確立していない通信装置15があるかが判断される(S143)。取得されたIDによって特定される通信装置15の全てと既にセッションが確立している場合(S143:NO)、処理はS141に戻る。
【0049】
通知パケットから取得されたIDによって特定される通信装置15のうち、未だセッションが確立していない通信装置15がある場合(S143:YES)、セッションが確立していない通信装置15のIDは、対応する通信アプリケーションの版数と共に、RAM23に記憶されたテーブル231(図8参照)に格納される(S145)。図8に示すように、テーブル231には、IDと通信アプリケーションの版数とが対応付けて格納される。
【0050】
図7に示すように、テーブル231に格納されたIDが一つずつ選択される。選択されたIDに対応付けられている通信アプリケーションの版数から、該通信アプリケーションによって実行可能な呼制御通信の通信手順が特定される。自身に実装されている通信アプリケーションの版数から、該通信アプリケーションによって実行可能な呼制御通信の通信手順が特定される。双方で重複する通信手順が選択される。選択された通信手順のうち、より高度で且つ高機能な通信手順が、実行する呼制御通信の通信手順として決定される(S147)。このように通信手順を決定することで、確実に実行可能な呼制御通信の通信手順が決定される。決定された通信手順に基づいて、選択されたIDにて特定される通信装置15に対してINVITE要求が送信され、呼制御通信が実行される(S149)。一連の呼制御通信が終了した後、呼制御通信を行った通信装置のIDと、対応する通信アプリケーションの版数とが、テーブル231から削除され更新される(S151)。
【0051】
テーブル231にID及び版数が残存しているかが判断される(S153)。残存するID及び版数がある場合(S153:YES)、処理はS147に戻る。残存するIDが順に選択され、処理が繰り返される。テーブル231にID及び版数が残存しない場合(S153:NO)、処理はS141に戻る。
【0052】
以上説明したように、通信装置15は、セッションを確立させた他の通信装置15から通知パケットを受信する。そして、受信した通知パケットに格納されている情報を参照することで、新たに実行される呼制御通信の通信手順を決定し、確実に呼制御通信を実行できる。なお、他の通信装置15において実行可能な呼制御通信の通信手順がわからない場合は、全ての通信装置15で実行可能な呼制御通信の手順(手順1)に基づいて呼制御通信が開始されるので、確実に呼制御通信を実行してP2P通信を開始させることができる。
【0053】
本発明は、上述の実施形態に限定されるものではなく、種々の変更が可能である。本実施の形態では、ID及び通信アプリケーションの版数が通知パケットに常に格納されていた。例えば、通知パケットにIDのみ格納されている場合には、全ての通信装置15において実行可能な呼制御通信の通信手順である手順1が選択されてもよい。この場合、図7のS145において、通知パケットに格納されたIDがテーブル231に格納される。S147で呼制御通信の通信手順が決定される際、IDに対応する通信アプリケーションの版数がテーブル231に格納されていない場合には、呼制御通信の通信手順として手順1が決定される。そしてS149で、決定された手順1に基づいて、テーブル231に格納されたIDにて特定される通信装置15との間で呼制御通信が実行される。
【0054】
上述では、SIPに基づいて呼制御通信が実行される例を示したが、本発明はこれに限定されない。他の呼制御通信が実行されてもよい。又呼制御通信は、サーバ10を介さず、他の通信装置15との間で直接実行されてもよい。セッションが確立した後、通信装置15間でP2P通信が実行されていたが、セッション確立後の通信はP2P通信に限定されない。
【0055】
上述では、通知パケットが送信される際、自身のIDと版数、及び、セッションが確立している他の通信装置15のIDと版数が、通知パケットに格納されていたが、本発明はこれに限定されない。自身のID及び版数は、通知パケットに格納されなくてもよい。また、通信装置15から通知パケットを受信してから、次に呼制御通信を開始するまでの時間がランダムに決定されてもよい。これによって、呼制御通信の開始タイミングが一致してしまってINVITE要求が衝突してしまうことを防止できるので、通信装置15は、確実に呼制御通信を実行することができる。
【0056】
なお、図1の通信装置15が本発明の「通信装置」「第一通信装置」「第二通信装置」に相当する。通信装置15のIDが本発明の「装置特定情報」に相当し、通信アプリケーションの版数が本発明の「通信特定情報」に相当する。図2の手順1に基づいて行われる呼制御通信が、本発明の「第一確立通信」に相当する。図5のS119の処理を行うCPU21が本発明の「第一通信手段」に相当する。図7のS141の処理を行うCPU21が本発明の「受信手段」に相当し、S147の処理を行うCPU21が本発明の「決定手段」に相当し、S149の処理を行うCPU21が本発明の「第二通信手段」に相当する。図5のS119の処理が本発明の「第一通信ステップ」に相当する。図7のS141の処理が本発明の「受信ステップ」に相当し、S147の処理が本発明の「決定ステップ」に相当し、S149の処理が本発明の「第二通信ステップ」に相当する。
【符号の説明】
【0057】
1 通信システム
11、12、13、14、15 通信装置
21 CPU

【特許請求の範囲】
【請求項1】
他の通信装置とのセッションを確立して通信を実行することが可能な通信装置であって、
前記他の通信装置のうち一である第一通信装置とのセッションを確立する為に必要な確立通信である第一確立通信を、前記第一通信装置との間で実行する第一通信手段と、
前記第一通信手段によって前記第一確立通信が実行され、前記第一通信装置とのセッションが確立した場合に、前記第一通信装置から送信される情報であって、前記第一通信装置とセッションが確立している前記他の通信装置である第二通信装置を特定する装置特定情報と、前記第二通信装置が実行可能な前記確立通信である第二確立通信を特定可能な通信特定情報とのうち少なくとも一方を、前記第一通信装置から受信する受信手段と、
前記受信手段によって前記装置特定情報及び前記通信特定情報が受信された場合に、受信された前記通信特定情報に基づいて、前記装置特定情報によって特定される前記第二通信装置との間で実行する確立通信である第三確立通信を決定する決定手段と、
前記決定手段によって決定された前記第三確立通信を、前記装置特定情報によって特定される前記第二通信装置との間で実行する第二通信手段と
を備えたことを特徴とする通信装置。
【請求項2】
前記決定手段は、
自身が実行可能な前記確立通信と、前記受信手段によって受信された前記通信特定情報によって特定される前記第二確立通信とが重複する場合に、重複する前記確立通信を前記第三確立通信として決定することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記第一確立通信は、全ての前記通信装置が実行可能な前記確立通信であることを特徴とする請求項1又は2に記載の通信装置。
【請求項4】
前記決定手段は、
前記受信手段によって前記装置特定情報のみ受信された場合に、前記第一確立通信を前記第三確立通信として決定することを特徴とする請求項3に記載の通信装置。
【請求項5】
前記通信特定情報は、前記第二確立通信を実行するために前記第二通信装置に実装されるアプリケーションの版数であることを特徴とする請求項1から4のいずれかに記載の通信装置。
【請求項6】
他の通信装置とのセッションを確立して通信を実行することが可能な通信方法であって、
前記他の通信装置のうち一である第一通信装置とのセッションを確立する為に必要な確立通信である第一確立通信を、前記第一通信装置との間で実行する第一通信ステップと、
前記第一通信ステップによって前記第一確立通信が実行され、前記第一通信装置とのセッションが確立した場合に、前記第一通信装置から送信される情報であって、前記第一通信装置とセッションが確立している前記他の通信装置である第二通信装置を特定する装置特定情報と、前記第二通信装置が実行可能な前記確立通信である第二確立通信を特定可能な通信特定情報とのうち少なくとも一方を、前記第一通信装置から受信する受信ステップと、
前記受信ステップによって前記装置特定情報及び前記通信特定情報が受信された場合に、受信された前記通信特定情報に基づいて、前記装置特定情報によって特定される前記第二通信装置との間で実行する確立通信である第三確立通信を決定する決定ステップと、
前記決定ステップによって決定された前記第三確立通信を、前記装置特定情報によって特定される前記第二通信装置との間で実行する第二通信ステップと
を備えたことを特徴とする通信方法。
【請求項7】
他の通信装置とのセッションを確立して通信を実行することが可能な通信プログラムであって、
前記他の通信装置のうち一である第一通信装置とのセッションを確立する為に必要な確立通信である第一確立通信を、前記第一通信装置との間で実行する第一通信ステップと、
前記第一通信ステップによって前記第一確立通信が実行され、前記第一通信装置とのセッションが確立した場合に、前記第一通信装置から送信される情報であって、前記第一通信装置とセッションが確立している前記他の通信装置である第二通信装置を特定する装置特定情報と、前記第二通信装置が実行可能な前記確立通信である第二確立通信を特定可能な通信特定情報とのうち少なくとも一方を、前記第一通信装置から受信する受信ステップと、
前記受信ステップによって前記装置特定情報及び前記通信特定情報が受信された場合に、受信された前記通信特定情報に基づいて、前記装置特定情報によって特定される前記第二通信装置との間で実行する確立通信である第三確立通信を決定する決定ステップと、
前記決定ステップによって決定された前記第三確立通信を、前記装置特定情報によって特定される前記第二通信装置との間で実行する第二通信ステップと
をコンピュータに実行させるための通信プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−68890(P2012−68890A)
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【出願番号】特願2010−212968(P2010−212968)
【出願日】平成22年9月24日(2010.9.24)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】