(57)【要約】【課題】多様なネットワーク環境におけるピア・ツー・ピア通信において、NATを越えて通信をする際に、通信を行う端末やその他の端末の通信負荷をなるべく少なくし、また目的のデータ通信の確立までに要する時間を軽減する。【解決手段】  上記課題の少なくとも一部は、第２の端末へ第１の端末からの通信接続要求及び当該第１の端末のNAT環境を示すNAT情報を送信し、第２の端末から当該第２の端末のNAT越え情報を受信し、受信した第２の端末のNAT越え情報に基づいて、第１の端末のNAT越え情報を決定することにより解決される。これにより例えば、通信を行う２端末が、NAT環境下であってもデータ通信を確立することができ、トライアンドエラーを繰り返すよりもデータ通信を開始するまでにかかる時間を短縮又は通信回線への負荷を低減するなどが期待できる。【選択図】図４
2008236278.tif 000002
【特許請求の範囲】
【請求項１】
第１の端末と第２の端末との通信接続方法であって、
前記第２の端末へ前記第１の端末からの通信接続要求及び当該第１の端末のNAT環境を示すNAT情報を送信し、
前記第２の端末から当該第２の端末のNAT越え情報を受信し、
前記受信した第２の端末のNAT越え情報に基づいて、前記第１の端末のNAT越え情報を決定する通信接続方法。
【請求項２】
請求項１の通信接続方法であって、さらに、
前記決定した前記第１の端末のNAT越え情報に応じて、前記第２の端末へ送信するデータ通信用アドレスを決定する。
【請求項３】
請求項２の通信接続方法であって、さらに、
前記決定した前記第１の端末のNAT越え情報と、前記決定したデータ通信用アドレスとを前記第２の端末に送信する。
【請求項４】
請求項１の通信接続方法であって、
前記第２の端末へ前記第１の端末からの通信接続要求及び当該第１の端末のNAT情報と共に、当該第１の端末に対応するIPアドレス及びMACアドレスを送信し、
前記第２の端末から前記IPアドレス宛の通信に対して当該第１の端末のMACアドレスを応答する。
【請求項５】
請求項１の通信接続方法であって、
前記第２の端末へ前記第１の端末からの通信接続要求及び当該第１の端末のNAT情報と共に、第１のデータ通信用アドレスを送信し、
前記決定した前記第１の端末のNAT越え情報に応じて、前記第２の端末へ送信するデータ通信用アドレスを変更する。
【請求項６】
請求項１から５のいずれかの通信接続方法であって、さらに、
前記決定した前記第１の端末のNAT越え情報に応じて、前記第１の端末から前記第２の端末へダミーパケットを送信する。
【請求項７】
請求項１から６のいずれかの通信接続方法であって、
前記第１の端末のNAT情報がリモートでポートフォワード設定不可なNATの環境下にあるとき、前記第２の端末のNAT越え情報が端末自身のデータ通信用アドレスを通知する旨又はNATへリモートでのポートフォワード設定を行い設定したNATのグローバルなアドレスを通知する旨又は中継サーバから割当てられるグローバルなアドレスを通知する旨であるときには、前記第１の端末のNAT越え情報をデータ通信前のダミーパケット送信によるグローバルな通信用アドレスを通知する旨に決定する。
【請求項８】
請求項１から６のいずれかの通信接続方法であって、
前記第１の端末のNAT情報がリモートでポートフォワード設定不可なコーン型NATの環境下にあるとき、前記第２の端末のNAT越え情報がアドレス問合せサーバから取得したグローバルなアドレスを通知する旨であるときには、前記第１の端末のNAT越え情報をアドレス問合せサーバから取得したグローバルなアドレスを通知する旨に決定する。
【請求項９】
請求項１から６のいずれかの通信接続方法であって、
前記第１の端末のNAT情報がリモートでポートフォワード設定不可な対称型NATの環境下にあるとき、前記第２の端末のNAT越え情報がアドレス問合せサーバから取得したグローバルなアドレスを通知する旨であるときには、前記第１の端末のNAT越え情報を中継サーバから割当てられるグローバルなアドレスを通知する旨に決定する。
【請求項１０】
第１の端末と第２の端末との通信接続方法であって、
前記第１の端末からの通信接続要求及び当該第１の端末のNAT環境を示すNAT情報を受信し、
当該受信した第１の端末のNAT情報と前記第２の端末のNAT環境を示すNAT情報とに基づいて当該第２の端末のNAT越え情報を決定し、
当該決定した前記第２の端末のNAT越え情報を送信する通信接続方法。
【請求項１１】
請求項１０の通信接続方法であって、さらに、
前記第１の端末からの通信接続要求及び当該第１の端末のNAT情報と共に、前記第１の端末に対応するIPアドレス及びMACアドレスを受信し、
当該IPアドレスが前記第２の端末に対応するIPアドレスと一致するかを判断する。
【請求項１２】
請求項１１の通信接続方法であって、さらに、
前記IPアドレスが一致する場合には、当該IPアドレス宛の通信を送信し、
前記IPアドレスが一致しない場合には、前記受信した第１の端末のNAT情報と前記第２の端末のNAT情報とに基づいて当該第２の端末のNAT越え情報を決定する。
【請求項１３】
請求項１２の通信接続方法であって、さらに、
前記IPアドレス宛の通信に対する応答に含まれるMACアドレスと、前記第１の端末からの通信接続要求及び当該第１の端末のNAT情報と共に受信したMACアドレスとが一致するかを判断する。
【請求項１４】
請求項１３の通信接続方法であって、さらに、
前記MACアドレスが一致する場合には、前記第２の端末のプライベートアドレスを前記第１の端末へ送信し、
前記MACアドレスが一致しない場合には、前記受信した第１の端末のNAT情報と前記第２の端末のNAT情報とに基づいて当該第２の端末のNAT越え情報を決定する。
【請求項１５】
請求項１０から１４のいずれかの通信接続方法であって、
前記送信した前記第２の端末のNAT越え情報に応じて、前記第１の端末のNAT越え情報を受信する。
【請求項１６】
請求項１０から１５のいずれかの通信接続方法であって、
前記受信した第１の端末のNAT情報がリモートでポートフォワード設定不可なNAT環境下であるとき、前記第２の端末のNAT情報がリモートでポートフォワード設定可能なNATであるときには前記第２の端末のNAT越え情報をNATへリモートでのポートフォワード設定を行い設定したNATのグローバルなアドレスを通知すると決定し、前記第２の端末のNAT情報がリモートでポートフォワード設定不可なコーン型NATであるときには前記第２の端末のNAT越え情報をアドレス問合せサーバから取得したグローバルなアドレスを通知すると決定し、前記第２の端末のNAT情報がリモートでポートフォワード設定不可な対象型NATであるときには中継サーバから割当てられるグローバルなアドレスを通知すると決定する。
【請求項１７】
第１の端末と第２の端末との通信接続方法であって、
前記第１の端末から前記第２の端末への通信接続要求及びNAT越え情報を前記第２の端末へ送信し、
前記第２の端末から当該第２の端末のデータ通信用アドレスを受信し、
前記第１の端末へ前記NAT越え情報と前記第２の端末のデータ通信用アドレスとを送信する通信接続方法。
【請求項１８】
請求項１７の通信接続方法であって、
前記第１の端末から前記第２の端末への通信接続要求を前記第１の端末から受信し、
前記第１の端末のNAT環境を示すNAT情報と前記第２の端末のNAT環境を示すNAT情報とを比較して、前記NAT越え情報を決定する。
【請求項１９】
請求項１から１５のいずれかの通信接続方法であって、
前記NAT情報は、NATなしである旨、リモートでポートフォワード設定可能なNATである旨、リモートでポートフォワード設定不可なコーン型NATである旨、リモートでポートフォワード設定不可な対象型NATである旨のうち一つを含む。
【請求項２０】
請求項１から１９のいずれかの通信接続方法であって、
前記NAT越え情報は、データ通信用アドレスの通知方法を含む。
【請求項２１】
請求項２０の通信接続方法であって、
前記NAT越え情報は、端末自身のデータ通信用アドレスを通知する旨、NATへリモートでのポートフォワード設定を行い設定したNATのグローバルなアドレスを通知する旨、データ通信前のダミーパケット送信によるグローバルな通信用アドレスを通知する旨、アドレス問合せサーバから取得したグローバルなアドレスを通知する旨、中継サーバから割当てられるグローバルなアドレスを通知する旨のうち一つを含む。
【請求項２２】
通信装置であって、
ネットワーク上に存在するサーバを介する第１の通信方法により前記通信装置の第１のNAT情報と他の通信装置の第２のNAT情報とを交換するNAT情報交換部と、
前記NAT情報交換部で交換したNAT情報に基づき、前記他の通信装置が前記サーバを介さない第２の通信方法で前記通信装置へ通信可能なデータ通信用アドレスを通知する方法を決定するデータ通信用アドレス通知方法決定部とを有する通信装置。
【請求項２３】
請求項２２の通信装置であって、
前記データ通信用アドレス通知方法決定部で決定した前記データ通信用アドレス通知方法で前記他の通信装置へ第１のデータ通信用アドレスを通知するデータ通信用アドレス通知部と、
前記他の通信装置が決定したデータ通信用アドレス通知方法で前記他の通信装置から通知された第２のデータ通信用アドレスを受信するデータ通信用アドレス受信部と、
第１のデータ通信用アドレス及び前記第２のデータ通信用アドレスを用いてデータ通信を開始するデータ通信開始部とを有する通信装置。
【請求項２４】
請求項２２又は２３の通信装置であって、
前記NAT情報交換部は、前記他の通信装置との通信開始要求において前記第１のNAT情報を前記第１の通信方法により前記他の通信装置へ送信し、前記他の通信端末が送信する前記通信開始要求に対する通信開始応答において前記第２のNAT情報を取得する。
【請求項２５】
請求項２２又は２３の通信装置であって、
前記NAT情報交換部は、前記他の通信装置からの通信開始要求において前記第１の通信方法により前記第２のNAT情報を取得し、前記他の通信装置からの前記通信開始要求に対する通信開始応答で前記第１のNAT情報を送信する。
【請求項２６】
請求項２２から２５のいずれかの通信装置であって、
前記データ通信用アドレス通知方法決定部は、前記NAT情報交換部により取得した前記第１のNAT情報と、前記第２のNAT情報と、データ通信用アドレス通知方法の優先順位と、からデータ通信用アドレス通知方法を決定する。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野は、NATの存在するネットワーク環境にある端末同士が、そのNATを越えて通信を行うための通信接続技術に関する。
【背景技術】
【０００２】
現在、ネットワーク通信として広く普及しているTＣＰＵDP/IP（Transmission Control Protocol / User Datagram Protocol / Internet Protocol）ネットワーク通信において、IP層で主流となっているプロトコルは、32bitのアドレス値を利用するIPv4（Internet Protocol version 4）である。しかし、世界中のすべてのノードにユニークなグローバルIPアドレスを割当てることは不可能であるため、NAT（Network Address Translation）装置が利用されている。NAT装置の配下にある端末は、同一LAN（Local Area Network）内でのみ通信可能なプライベートIPアドレスのみをもつ場合でも、インターネットへの通信時にNAT装置からNAT装置のもつグローバルIPアドレスを動的に割当てられることでインターネット通信が可能である。このNAT装置はルータ等に含まれることが多い。
【０００３】
しかし、NATの配下にありプライベートIPアドレスのみをもつ端末に対し、同一LAN以外の端末は、一般にNATを越えて通信を開始することができない。
【０００４】
このNAT越えの問題を解決するための手段としてUPnP（商標） （Universal Plug and Play）のIGD（Internet Gateway Device）やSTUN（Simple Traversal of UDP through NATs）などの各NAT越え方法（以後、データ通信用アドレス通知方法）が提案されている。
【０００５】
しかし、これらのデータ通信用アドレス通知方法はそれぞれ適用可能な環境が異なり、一般に単独の方法によってはあらゆるNAT環境下での通信には対応できない。
【０００６】
例えば特許文献１には、「複雑にネットワークが構成されている通信環境においても、Ｐ２Ｐ通信を実現することができる通信装置を提供すること。」を課題とし、その解決手段として「通信装置は、グローバルアドレス情報取得部１０１と、NAT設定要求部１０２と、WAN側アドレス情報取得部１０３と、ローカルアドレス情報取得部１０４と、通信相手に対して、取得した第１のグローバルアドレス情報、第１のWAN側アドレス情報、および第１のローカルアドレス情報を通知するアドレス情報通知部１０５と、通信相手に割当てられている第２のグローバルアドレス情報、第２のWAN側アドレス情報、および第２のローカルアドレス情報を取得するアドレス情報取得部１０６とを備える。本発明の通信装置は、第１および第２のグローバルアドレス情報、WAN側アドレス情報、ならびにローカルアドレス情報に基づいて、Ｐ２Ｐ通信が可能な方法を判断する。」と記載されている。
【０００７】
【特許文献１】特開２００５−３２３３４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１に記載の方法では、端末に接続されているルータがUPnPのIGDを利用できることを前提としている。特に２段NAT環境において、ルータのWAN側アドレスを取得するにはUPnPのIGDを用いるか、上記２段NATのNAT間のネットワークに第三のサーバを設置する必要がある。しかし、UPnPのIGDに対応していないルータは現在でも多数存在する。よってこれらのルータ全てをUPnPのIGDに対応させたルータに交換させるのは現実的ではない。また上記第三のサーバを全ての２段NAT環境に設置するのも現実的ではない。
【０００９】
また、データ通信を行う２端末は、通信する端末がお互いに提示した複数のデータ通信用アドレス情報のうち一つを宛先としてデータ通信を行うが、上記データ通信用アドレスは必ずしも通信可能とは限らないため、使用したデータ通信用アドレスが通信不可能かどうかを見極めるのに十分なタイムアウト時間を設ける必要がある。さらに通信途中のパケットロスを考慮し、一度で通信が確立できない場合でも同一アドレスへ複数回通信試行を行う必要がある。この場合、最初に提示されたデータ通信用アドレスで通信不可能である場合には、通信確立されるまでに時間がかかるという問題が生じる。
【００１０】
なお、TURN（Traversal Using Relay NAT）のように、グローバルIPアドレスをもつサーバを介してデータ通信を行うことであらゆるNAT環境下でも通信を行うことができる方法（中継サーバ方法）も存在する。しかし、全ての端末がデータ通信をサーバ経由で行うと、サーバには非常に高い負荷が要求される。よって、いかに中継サーバを用いないでデータ通信を行うかが問題である。
【課題を解決するための手段】
【００１１】
上記課題の少なくとも一部は、第２の端末へ第１の端末からの通信接続要求及び当該第１の端末のNAT環境を示すNAT情報を送信し、第２の端末から当該第２の端末のNAT越え情報を受信し、受信した第２の端末のNAT越え情報に基づいて、第１の端末のNAT越え情報を決定することにより解決される。
【発明の効果】
【００１２】
上記手段によれば例えば、通信を行う２端末が、NAT環境下であってもデータ通信を確立することができ、トライアンドエラーを繰り返すよりもデータ通信を開始するまでにかかる時間を短縮又は通信回線への負荷を低減するなどが期待できる。
【００１３】
また、データ通信を確立するために必要なデータ通信用アドレス通知方法を、あらかじめ定めた優先順位に従い決定し適用することで、通信処理の負荷が少なく処理時間が短いデータ通信用アドレス通知方法が優先的に適用されることなどが期待できる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照しながら、本発明の実施に好適な形態例を説明する。
【実施例１】
【００１５】
本実施例は、TＣＰＵDP/IPのネットワーク上に存在する端末同士のデータ通信に関する。
【００１６】
まず、通信システムの構成を説明する。
【００１７】
図１は、通信システムの構成の一例を示す。図１のように、システム構成には、通信回線４を介して接続されたセッション管理サーバ３ａ、NAT情報問合せサーバ３ｂ、データ通信用中継サーバ３ｃ、NAT機能付きルータ２ａ〜２ｄ、端末１ａ〜１ｇが含まれる。
【００１８】
通信回線４は、例えば光回線、ＣＡＴＶ、電話回線等で構成された有線回線、または、無線回線を用いて構成された公衆通信ネットワーク、または、専用通信ネットワークであり、通信回線４に接続された装置間で所定の通信プロトコルにしたがってデータのやり取りを行うことを可能とする。
【００１９】
端末１ａ〜１ｇは、TＣＰＵDP/IPネットワークで通信できる機能を持ち、それぞれの目的に合わせデータ通信を行う。また、目的のデータ通信を行うにあたり、SIP（Session Initiation Protocol）やH.323などのセッション制御に係る通信プロトコルの使用若しくはその他独自のセッション制御通信ができるものとする。セッション制御で通信する内容としては、データ通信用アドレスの通知、ユーザ認証、暗号化通信を行う場合における暗号情報の交換、メディア通信におけるメディアの決定やパラメータの決定などがある。
【００２０】
セッション制御を行うことで、データ通信用のアドレスを通信相手の端末に通知することができるが、各端末がプライベートIPアドレスしか持たない場合には、データ通信用アドレスを通信する端末に通知しても、同一LAN内にない限り目的のデータ通信が確立できない。この問題を解決するため、端末１ａ〜１ｇにはNAT越え機能が実装されている。当該機能の詳細は後述する。
【００２１】
ルータ２ａ〜２ｄは、NAT機能を持つルータであり、パケットのルーティング機能をもつと共にLANを構成する。このLANに接続する各端末はプライベートIPアドレスをもち、同一LAN内に存在する端末同士ではプライベートIPアドレスを用いて通信を行うことができる。
【００２２】
また、ルータ２ａ〜２ｄは、インターネット側で使用するIPアドレス（WAN側IPアドレス）と、自身が構成するLAN内で使用するIPアドレス（LAN側IPアドレス）の少なくとも２つ以上のIPアドレスを保持する。配下にある端末がインターネットにパケットを送信する場合には、ルータがもつインターネット側（WAN側）のIPアドレスに送信元IPアドレス情報を書き換える。また、送信元ポート番号についても同様に、当該ルータがアクセスの転送処理（ポートフォワード）で使用したポート番号に書き換える。書き換えたIPアドレスとポート番号の組は、ルータが保持する通信キャッシュに一時保存される。ルータによって書き換えたIPアドレスとポート番号は通信キャッシュに記録されている限り端末へポートフォワードを行うので、パケットを受信した他の端末は、IPアドレスとポート番号を用いてルータのNATを透過し端末へデータを送信することができる。なお通信キャッシュでの記録の保持には通常有効期限があり、一定時間経過した通信情報はキャッシュから消去される。
【００２３】
セッション管理サーバ３ａは、端末１ａ〜１ｇがデータ通信前のセッション制御の通信を相互に行う場合に、セッション制御通信の転送処理を行う。転送処理を行うにあたって、各端末はセッション制御通信用アドレスをセッション管理サーバ３ａに事前に登録し、セッション管理サーバ３ａはアドレス情報を保存し、管理する。
【００２４】
NAT情報問合せサーバ３ｂは、端末１ａ〜１ｇがNATを越えてデータ通信を行うためのNAT情報を取得するためのサーバである。具体的には、端末から送信されるアドレス取得要求に対し、アドレス要求のパケットのIPヘッダ及びTCP/UDPのヘッダ情報を解析し、ヘッダ情報のうち、送信元IPアドレス及び送信元ポート番号の情報を取得し、取得情報を、アドレス取得要求を送信した端末に対し送信する。
【００２５】
例えば、ルータ２ａが管理するLAN上でプライベートIPアドレスをもつ端末１ａがグローバルIPアドレスを持つNAT情報問合せサーバ３ｂにアドレス取得要求のパケットを送信したとする。送信されたパケットはルータ２ａを通過時にルータ２ａのNAT機能により送信元IPアドレス及び送信元ポート番号がルータ２ａの情報に書き換えられる。そして、パケットがルータ２ｂを通過時にルータ２ｂのNAT機能により送信元IPアドレス及び送信元ポート番号がルータ２ｂの情報に書き換えられる。アドレス取得要求のパケットを受信したNAT情報問合せサーバ３ｂは送信元IPアドレス及び送信元ポート番号を記した応答パケットを端末１ａに送信する。応答パケットの宛先は、パケットの送信元IPアドレス及び送信元ポート番号である。応答パケットは宛先のIPアドレス及びポート番号に従いルータ２ｂに到達し、ルータ２ｂは応答パケットを受信後、ルータ２ｂ自身がもつ通信キャッシュを参照し、宛先のIPアドレス及びポート番号に対応するアドレス変換履歴を確認することで、ルータ２ａに転送すべきと判断し送信する。ルータ２ａも同様に通信キャッシュを参照することで端末１ａに応答パケットを伝送する。端末１ａは、応答パケットを参照することで、インターネット上のNAT情報問合せサーバ３ｂへ通信する際にルータ２ｂのNAT機能によって付与されたグローバルIPアドレスとポート番号の組の値を取得することができる。
【００２６】
データ通信用中継サーバ３ｃは、端末１ａ〜１ｇからのデータ通信用アドレスの割当て要求に応じて要求をした端末のプライベートIPアドレスにグローバルIPアドレスとポート番号の組を割当てた上で通知する。そして、グローバルIPアドレスとポート番号宛のデータを受信した場合、データ通信用中継サーバ３ｃはこのグローバルIPアドレスとポート番号とが割当てられた端末のプライベートIPアドレスへ転送処理する。これにより端末は、プライベートIPアドレスしか持たない場合であっても、同一LANにない他の端末からデータ通信用中継サーバ３ｃを介してデータを受信することができる。データ通信用中継サーバ３ｃを実現するための技術としては、TURNやRSIP（Realm Specific IP）などがある。
【００２７】
次に、端末１ａ〜１ｇ（端末１）のハードウェア構成を説明する。
【００２８】
図３は、端末１ａ〜１ｇのハードウェア構成の一例を示す。端末は、ソフトウェアを実行可能な通常のハードウェア構成を有する情報処理端末装置により実現可能である。具体的には図３のように、端末には、ＣＰＵ（演算処理装置）２０１と、主記憶装置２０２と、通信制御装置２０３と、外部記憶装置２０５と、入力装置２０６と、出力装置２０７と、が含まれる。各装置は、バス２０８を介して相互に接続され、各装置間で必要な情報が伝送可能に構成されている。
【００２９】
ＣＰＵ２０１は、主記憶装置２０２や外部記憶装置２０５にあらかじめ格納されているプログラムによって所定の動作を行う。主記憶装置２０２は、ワークエリアとして機能したり、必要なプログラムを格納したりするための要素であり、例えば、前者に対してはＲＡＭ、後者に対してはＲＯＭ等によって実現できる。通信制御装置２０３は、通信回線００３に接続される装置と情報（データ）を送受信するための要素であり、例えばモデム、ネットワークアダプタ、無線送受信装置等によって実現される。外部記憶装置２０５は、当該端末の動作を制御するためのプログラムを保存したり、当該端末の動作に必要な情報を保持したりするためのものであり、例えば、半導体ディスク、ハードディスク（HDD）、光ディスク等によって実現できる。入力装置２０６は、装置利用者（ユーザ）が当該端末に対して必要な命令や情報を入力するための要素である。入力装置２０６は、例えばＴＶ受信機で使用されるリモートコントローラや、ＰＣで使用されるキーボード、マウス等によって実現できる。出力装置２０７は、ユーザの操作に応答するための情報を出力表示するための要素である。出力装置２０７は、例えばブラウン管、ＣＲＴ、液晶ディスプレイ、ＰＤＰ、有機EL、プロジェクタ、スピーカ、ヘッドフォン等によって実現できる。
【００３０】
なお、図３に示されたハードウェア構成は一例であり、端末１ａ〜１ｇのハードウェア構成は、必ずしも、この通りのものである必要はない。例えば、出力装置２０７は、当該端末とは異なる装置（テレビジョン等）で実現してもよい。この場合、当該端末には別途Ｄ/Ａコンバータ等のテレビジョン信号生成装置を具備し、当該端末と出力装置２０７とはＡＶケーブルや同軸ケーブル等で接続される。
【００３１】
次に、端末１の機能を説明する。
【００３２】
図２は、端末１の機能ブロックの一例を示す。各部は、例えば端末１の主記憶装置２０２若しくは外部記憶装置２０５に格納されたプログラム又は当該プログラムによって実行する処理を実行するＣＰＵの一部である。
【００３３】
データ通信処理部１０２は、端末１の通信目的に合わせ、通信相手である他の端末と通信制御装置２０３を用いて目的のデータ通信を行う。データ通信として、例えばメディア配信、IP電話、ビデオチャット、テレビ会議、その他データ転送が含まれる。データ通信処理部１０２は、セッション処理部１０４若しくはダミーパケット処理部１１０から伝送される他の端末のデータ通信用アドレスを取得することで、目的のデータ通信を行う。なお、データ通信処理部１０２は、セッション処理部１０４から伝送された暗号情報を用いて暗号化処理や復号処理を必要に応じて行う。
【００３４】
サーバ問合せ処理部１０３は、インターネット上に存在するNAT情報問合せサーバ３ｂに対し、NATによって変換されるIPアドレス及びポート番号のアドレス変換情報について、問合せのパケットを通信制御装置２０３で送信し、その応答を受信することで取得する。なお、送信の際には、直後のデータ通信で使用するIPアドレスとポート番号を用いる。データ通信で使用するIPアドレスとポート番号との組ではないアドレスを使用すると、NATが後述するコーン型NATであっても異なるアドレス変換を行うためである。端末１は、問合せの結果と、後述するルータ制御処理部１０８のNATへの処理結果により、NATの型を判別することが可能となる。NATの型の判別方法についても後述する。
【００３５】
セッション処理部１０４は、セッション処理部１０４の起動と同時に、セッション管理サーバ３ａへ端末１の位置情報を登録するメッセージを通信制御装置２０３で送信する。位置情報として、具体的には端末１のIPアドレス及びセッション処理部１０４が使用するポート番号を最低限登録する。登録する情報は、利用する通信システムにより異なる。そして、他の端末とデータ通信を開始する場合若しくは他の端末からデータ通信をする旨の要求を、セッション管理サーバ３ａから受信した場合には、他の端末とデータ通信を行うために必要な制御情報についてセッション管理サーバ３ａを介して他の端末と交換する。制御情報として、データ通信用アドレスやNAT情報、暗号情報等を交換する。
【００３６】
また、他の端末へのデータ通信用アドレスの通知方法を、交換したNAT情報と主記憶装置２０２若しくは外部記憶装置２０５で保持する図７、図８の対応表とから決定する。図７、図８については後述する。決定したデータ通信用アドレスの通知方法も制御情報として他の端末へ送信する。
そして、他の端末から通知されたデータ通信用アドレスや暗号情報等をデータ通信処理部１０２へ伝送する。また、NAT情報の交換により、他の端末とのデータ通信の前にダミーパケットを送受信する必要があると判断した場合には、後述するダミーパケット処理部１１０にダミーパケットの処理を依頼する。
【００３７】
ルータ制御処理部１０８は、通信制御装置２０３を用いてNAT機能付きルータへのWAN側IPアドレスの取得、及び外部から端末１へのポートフォワード設定の要求をルータに対し行う。WAN側IPアドレス取得、及びポートフォワード設定の実現方法として、例えばUPnPのIGDによって行うことが可能である。UPnPのIGDを使用する場合には、NATがUPnPのIGDに対応している必要がある。
【００３８】
中継サーバ問合せ処理部１０６は、セッション処理部１０４が中継サーバ方法によるNAT越え以外にNAT透過ができないと判断した場合に呼び出され、データ通信用中継サーバ３ｃにグローバルアドレスの割り当て要求を通信制御装置２０３により行い、割当てられたグローバルアドレスを取得する。取得したグローバルアドレスはデータ通信を行う他の端末に通知するため、セッション処理部１０４へ伝送する。中継サーバ方法として、TURNやRSIPなどを使用することが考えられる。
【００３９】
ダミーパケット処理部１１０は、端末１が他の端末とNATを透過してデータ通信を行うのに先立ち、ダミーパケットを送信する必要があるとセッション処理部１０４が判断したときに、通信制御装置２０３によりダミーパケットの送信を行う。また、データ通信を行う他の端末からダミーパケットを受信した時には、ダミーパケットのヘッダ情報のうち、送信元IPアドレス及び送信元ポート番号の各値を参照し、適宜データ通信処理部１０２に各値を伝送する。
【００４０】
図１の端末１ａ〜１ｇのように、各NAT環境にある端末がデータ通信を開始するまでのNAT越えの処理フローを説明する。
【００４１】
図４は、データ通信を開始しようとする端末（マスタ端末）と、データ通信の開始を受け付ける端末（スレーブ端末）が実行する処理のフローチャート例を示す。また、マスタ端末及びスレーブ端末はそれぞれ、図２に示した機能ブロックを備えるものとする。
【００４２】
まず、マスタ端末及びスレーブ端末は、データ通信に先立ち、各端末がWANへの通信の際に使用するNATの情報についてサーバ問合せ処理部１０３及びルータ制御処理部１０８を用いてＳ３００及びＳ３１０で取得する。NATの情報及びNAT情報取得の処理の詳細については、後述する。
【００４３】
なお、Ｓ３００、Ｓ３１０の各処理は、マスタ端末、スレーブ端末がネットワーク接続時または電源起動時に行うことも可能であり、この場合、NATの情報取得の処理によってデータ通信の開始時間に影響を与えない。
【００４４】
次に、Ｓ３０１にてマスタ端末のセッション処理部１０４が、セッション管理サーバ３ａ経由でスレーブ端末に対し通信開始要求のメッセージを送信する。このとき、メッセージには、マスタ端末に係るNAT情報を付加させる。SIPプロトコルを使用した場合、通信開始要求のメッセージはINVITEメッセージに該当し、NAT情報はSIPメッセージのヘッダ部やボディ部に付加させることが考えられる。NAT情報の内容は、例えば図５の表の通知番号の中から選択する。
【００４５】
図５は、NATの種類に対応する通知番号の例を示す。
【００４６】
図５において、「リモートポートフォワード設定可能なNAT」とは、マスタ端末のルータ制御処理部１０８にてUPnPのIGDなどを用いてポートフォワード設定を行い、設定したグローバルなデータ通信用アドレスを取得することができるNATを意味する。「コーン型NAT」とは、同一のLAN側IPアドレス及びポート番号からの全てのリクエストが同一のWAN側IPアドレス及びポート番号にマッピングされるNATを意味する。「対称型NAT」とは、同一のLAN側IPアドレス及びポート番号から特定の宛先IPアドレス及びポート番号への全てのリクエストが、同一のWAN側IPアドレス及びポートにマッピングされるNATを意味する。
【００４７】
スレーブ端末のセッション処理部１０４は、Ｓ３１１で、Ｓ３０１でマスタ端末から送信された通信開始要求及びNAT情報をセッション管理サーバ３ａ経由で受信する。
【００４８】
なお、このとき、スレーブ端末がNAT機能付きルータのLAN側に接続しており、プライベートIPアドレスしか持たない場合には、セッション管理サーバ３ａからスレーブ端末への通信ができない場合がある。この場合の対処方法の例としてSIPプロトコルを使用する場合を説明する。SIPプロトコルの場合、各機器が通信を行う前にセッション管理サーバ３ａに所定の情報を登録するメッセージ（REGISTERメッセージ）を送信する。そして、メッセージ送信後一定時間はNAT機能付きルータの通信キャッシュに通信記録が残されているため、REGISTERメッセージのヘッダ情報にある送信元アドレス情報を参照することでセッション管理サーバ３ａからスレーブ端末へ通信をすることができる。また、一定時間後ルータの通信キャッシュから通信記録が消去された場合には、ルータの実装によってはセッション管理サーバ３ａからの通信がNATで遮断されるが、例えばスレーブ端末がREGISTERメッセージ送信後一定時間ごとにダミーのパケットをセッション管理サーバ３ａに送信することでルータの通信キャッシュの通信記録を保持することができる。
【００４９】
Ｓ３１２において、Ｓ３１１で受信したマスタ端末のNAT情報とＳ３１０で取得したスレーブ端末自身のNAT情報とから例えば図８に従って、スレーブ端末がデータ通信（データチャネル）用アドレスの通知方法（NAT越え方法）を決定する。データ通信用アドレスの通知方法を決定する理由は、スレーブ端末がNAT環境下にある場合、スレーブ端末自身がもつプライベートIPアドレスをマスタ端末にデータ通信用アドレスとして通知してもこのアドレスではデータ通信できないためである。
【００５０】
図８は、Ｓ３１１で受信したマスタ端末のNAT情報に係る通知番号と、Ｓ３１０で取得したスレーブ端末のNAT情報とから、データ通信用アドレスの通知方法の番号を決定するため表の例を示す。
【００５１】
図６は、図８の通知番号の内容を示し、マスタ端末に通知するデータ通信用アドレスの通知方法について４つに分類し番号付けをした例を示している。通知方法には優先順位があり、番号の数字が小さい通知方法を優先し使用する。優先順位は、通知方法の通信時間若しくは通信処理負担の小さい順になっている。
【００５２】
図６の「＃１」の方法は、スレーブ端末自身がもつデータ通信用アドレスを通知する方法であり、スレーブ端末がグローバルIPアドレスを保持している場合に選択する。
【００５３】
「＃２」の方法は、ルータ制御処理部１０８によってNAT機能付きルータにデータ通信用アドレスの割当て処理を行い、割当てられたデータ通信用アドレスを通知するもので、同一LAN内にあるNAT機能付きルータに対する通信処理のみであり、通信時間は殆どかからないため２番目の優先順位となる。
【００５４】
「＃３」の方法は、Ｓ３１４ではデータ通信用アドレスをマスタ端末に通知せず、ダミーパケット処理部１１０にてダミーパケットを送信することによりマスタ端末にデータ通信用アドレスを通知するので、WANでの通信を含むため３番目の優先順位になっている。
【００５５】
「＃４」の方法は、スレーブ端末のサーバ問合せ処理部１０３がデータ通信の際に使用するポート番号でNAT情報問合せサーバ３ｂにNATのアドレス変換情報を問い合わせ、通知されたアドレスをデータ通信用アドレスとしてマスタ端末に通知するものであり、NAT情報問合せサーバ３ｂを使用する必要があることと、データ通信の際に通過するNAT（ルータ）の種類によってはデータ通信時にNATの通信キャッシュに通信記録を作成するためにダミーパケットを送信する必要が生じることから４番目の優先順位となる。「＃５」の方法は、データ通信用中継サーバ３ｃからグローバルなデータ通信用アドレスを割当ててもらい、データ通信用アドレスをマスタ端末に通知する方法であり、データ通信にあたってデータ通信用中継サーバ３ｃが転送処理を行うことから通信処理負担が高く、よって優先順位が一番低い。
【００５６】
例えば図８の事例番号＃３、＃４では、スレーブ端末のNAT情報がリモートポートフォワード設定不可なNATであり、スレーブ端末は図６の＃１や＃２の方法は使用できない。しかし、マスタ端末のNAT情報がNAT無し若しくはリモートポートフォワード設定可能なNATであることにより、スレーブ端末はマスタ端末がＳ３０５で通知するグローバルなデータ通信用アドレスにダミーのパケットを送信することで、パケットのヘッダ情報により、マスタ端末に対しグローバルなデータ通信用アドレスを通知することができるので、図６の＃３の方法が選択される。
【００５７】
図４に説明を戻して、次にＳ３１３では、Ｓ３１２で決定したデータ通信用アドレスの通知方法を示す通知番号に従い、必要であればNATの持つグローバルIPアドレス及びポート番号の組を取得する。例えば、通知番号が図６の＃２の場合には、UPnPのIGD等によるNATへのポートフォワード設定を行い、通知番号が＃４の場合には、NAT情報問合せサーバ３ｂからNATによって変換されたアドレス情報を取得する。そして通知番号が＃５の場合には中継サーバへデータ通信用アドレスの割当て要求を行い、データ通信用アドレスを確保する。なお、通知番号が＃３の場合にはＳ３１３では処理を行わず、Ｓ３１６にてマスタ端末にダミーパケットを送信することでデータ通信用アドレスを通知する。
【００５８】
そしてＳ３１４で、Ｓ３１２で決定した通知方法の通知番号を通知する。また、通知番号が＃１、＃２、＃４、＃５である場合は、Ｓ３１３で取得したデータ通信用アドレスも合わせて通知する。なお、SIPプロトコルを用いた場合、Ｓ３１４で送信する情報は、マスタ端末からのINVITEメッセージに対する2000Kメッセージと共に通知することが考えられる。
【００５９】
マスタ端末のセッション処理部１０４は、Ｓ３０２で、スレーブ端末からスレーブ端末がＳ３１４で送信した情報を受信する。
【００６０】
Ｓ３０３で、情報のうち図６の通知番号とＳ３０１で通知したNAT情報とから、例えば図７に従って、スレーブ端末に通知するデータ通信用アドレスの通知方法を決定する。
【００６１】
図７は、Ｓ３０１での通知番号と、Ｓ３１４での通知番号の情報とから、図６で示したデータ通信用アドレス通知方法を、優先順位を考慮して選択するための表の例を示す。
【００６２】
そしてＳ３０４で、Ｓ３０３で決定したデータ通信用アドレスの通知方法に従い、マスタ端末は必要であればNATの持つグローバルIPアドレス及びポート番号の組を取得する。
【００６３】
次に、Ｓ３０５でスレーブ端末がＳ３１４で実行した処理と同様、マスタ端末は、Ｓ３０３で決定した図６の通知番号と、Ｓ３０４で取得したデータ通信用アドレスを通知する。なお、SIPプロトコルを用いた場合、Ｓ３０４で送信する情報は、マスタ端末からの2000Kメッセージに対するACKメッセージと共に送信することが考えられる。
【００６４】
Ｓ３０６、Ｓ３１５では、必要に応じてマスタ端末とスレーブ端末が互いにダミーパケットを送受信する。ダミーパケットの送受信の目的として、一つはデータ通信用アドレスを通知することであり、もう一つはNAT機能付きルータの通信キャッシュに通信記録を残すことにより通信相手からのパケット送信を可能にすることである。図６の＃３の方法を選択したマスタ端末若しくはスレーブ端末は、前者の目的としてＳ３０６、Ｓ３１５にてダミーパケットの送信を行う。そして図６の＃４を選択したマスタ端末若しくはスレーブ端末は、後者の目的としてＳ３０６、Ｓ３１５にてダミーパケットの送信を行う。図６の＃４の方法の場合、マスタ端末とスレーブ端末との通信記録がNATの通信キャッシュにないことにより、データ通信がNATで遮断される可能性があることから実行している。
【００６５】
以上の処理の実行により、Ｓ３０７とＳ３１７でマスタ端末とスレーブ端末との間でデータ通信が開始することができる。
【００６６】
次にＳ３００及びＳ３１０でのNAT情報の取得の処理手順について説明する。
【００６７】
図９は、Ｓ３００及びＳ３１０の詳細として、端末とNAT機能付きルータとNAT情報問合せサーバ３ｂとの間でのNAT情報取得の処理シーケンスを示す。なお、図９では端末とNAT情報問合せサーバとの間にNAT機能付きルータは一つしか記載していないが、多段にある場合であっても以下の処理は変更なく実行できる。以下図９を用いて処理を説明する。
【００６８】
まず、Ｓ５００で端末は自身が持つIPアドレスがグローバルIPアドレスかどうかを判定する。判定はIPアドレスの数値から判定することができる。判定によりグローバルIPアドレスと判定した場合には、端末のNAT情報は図５の＃１に該当すると判断し、図９の処理を終了する。
【００６９】
Ｓ５０１、Ｓ５０２、Ｓ５０３、Ｓ５１２、Ｓ５１３は、NAT情報が図５の＃２に該当するかどうかを判断するための処理である。具体的には、Ｓ５０１で端末がUPnPにより同一LAN内にあるNAT機能付きルータに対しWAN側のIPアドレス情報の問合せを行い、NAT機能付きルータはUPnPのIGDに対応している場合にはＳ５１２、Ｓ５１３にてWAN側のIPアドレスを端末に通知する。情報をＳ５０１で受信した端末は、通知されたWAN側のIPアドレスがグローバルIPアドレスかどうかを判定する。そしてグローバルIPアドレスであれば端末のNAT情報は図５の＃２に該当すると判断し、処理を終了する。逆にＳ５０１でNAT機能付きルータがUPnPのIGDに対応しておらず応答がない場合や、WAN側のIPアドレスがプライベートIPアドレスである場合には、端末のNAT情報は図５の＃２には該当しないと判断し、Ｓ５０４の処理に移る。
【００７０】
次にＳ５０４からＳ５０７では、NAT機能付きルータがコーン型NATか対称型NATか（図５の＃３か＃４か）を判定するための処理を行う。具体的には端末が同じIPアドレスとポート番号を用いて異なる２つの宛先に通信を行う場合に、NAT機能付きルータでのアドレス変換に差異があるかどうかで判断する。差異がない場合にはNAT機能付きルータをコーン型NATとし、差異が生じる場合にはNAT機能付きルータを対称型NATとする。そのため図９では、Ｓ５０４でまずNAT情報問い合わせサーバのもつIPアドレスＤに対しポート番号ｐｄでＳ５１０のアドレス変換情報を問合せ、NAT情報問合せサーバ３ｂはＳ５２０、Ｓ５２１でＳ５１０のアドレスの変換情報を端末へ通知する。そしてＳ５０６で端末はNAT情報問合せサーバ３ｂに対し、Ｓ５０４とは別のIPアドレスＥに対しポート番号ｐｄでアドレス変換Ｓ５１１の情報を問合せるパケットを送信し、NAT情報問合せサーバ３ｂは、Ｓ５２２、Ｓ５２３において、パケットのヘッダを参照することにより、Ｓ５１１のアドレス変換情報を取得し、アドレス変換情報を端末へ送信する。端末はＳ５０５とＳ５０７で受信したアドレス変換Ｓ５１０とＳ５１１とで差異があるかどうかを確かめ、差異がない場合には端末のNAT情報は図５の＃３に該当すると判断し、差異がある場合には端末のNAT情報は図５の＃４に該当すると判断する。
【００７１】
以上によりマスタ端末、スレーブ端末の両端末がＳ３００とＳ３１０とでNAT情報を取得することができる。
【００７２】
実施例１によれば、スレーブ端末とマスタ端末とで互いのNAT情報を交換することで、通信処理負担や通信時間の観点から事前に決定したデータ通信用アドレス通知方法（NAT越え方法）の優先順位に従い、通信を行うネットワーク環境に適用可能な優先度の高いNAT越え方法を選択し、通信試行をすることなくデータ通信を確立することができる。
【実施例２】
【００７３】
実施例１では、マスタ端末及びスレーブ端末が同一LAN内に存在するかどうかによる処理の場合分けを行わなかった。しかし、例えば図１の端末１ａと端末１ｂのようにマスタ端末とスレーブ端末が同一LAN内に存在する場合には、両端末がプライベートIPアドレス同士であっても通信可能である。場合において、実施例１の処理を適用すると、端末１ａと端末１ｂとのデータ通信がルータ２ａ、ルータ２ｂ、そして場合によりデータ通信用中継サーバ３ｃを介してのデータ通信となり、処理負担や通信時間が多くかかる。よって、実施例２ではマスタ端末とスレーブ端末とが同一LAN上にあるかの判定処理を実施例１の処理に含め、判定処理によりマスタ端末とスレーブ端末とが同一LAN内である場合、マスタ端末及びスレーブ端末は、各端末がもつプライベートIPアドレスを用いてデータ通信を開始する。
【００７４】
実施例２の処理フローを図１０に示す。以後、図１０を用いて実施例２で必要な処理を説明する。ステップ番号が図４と共通の処理については説明を省略する。
【００７５】
Ｓ６０１でマスタ端末は、通信開始要求メッセージにＳ３００で取得したNAT情報を含めると同時に、マスタ端末自身の持つIPアドレスとMACアドレスも含めスレーブ端末へ送信する。なお、NAT情報は、図５の通知番号の他に、Ｓ３００で行う図９のＳ５０２、Ｓ５０５、Ｓ５０６のいずれかの処理で取得したNAT機能付きルータのグローバルIPアドレスも通知する。なお、Ｓ５００でマスタ端末自身がグローバルIPアドレスを持つと判断した場合には、Ｓ６０１の処理は行わず図４のＳ３０１の処理に移行する。
【００７６】
Ｓ６１１でマスタ端末のIPアドレス及びMACアドレス、図５のNAT情報に係る通知番号、そしてNAT機能付きルータのグローバルIPアドレスを取得したスレーブ端末は、Ｓ６１２でグローバルIPアドレスと、Ｓ３１０で取得したグローバルIPアドレスとの値を比較し、異なる場合には同一LAN内ではないと判断し、実施例１のＳ３１２の処理へ移行する。逆にグローバルIPアドレスが一致する場合は同一LAN内である可能性があるとみなしＳ６１３へ処理を移行する。
【００７７】
次にＳ６１３で、スレーブ端末はマスタ端末が同一LAN内にいるか確かめるため、Ｓ６１１で受信したマスタ端末のIPアドレス宛にARPパケットを同一LAN上にブロードキャストで送信する。そしてマスタ端末が同一LAN内にあればＳ６０２、Ｓ６０３でマスタ端末がMACアドレスをARPパケットの応答として送信する。
【００７８】
Ｓ６１４でMACアドレスをマスタ端末から受信したスレーブ端末は、Ｓ６１１でマスタ端末から受信したMACアドレスと比較し、同一であればマスタ端末は同一LAN内に存在すると判断する。
【００７９】
Ｓ６１４でマスタ端末と同一LANにいると判断したスレーブ端末は、Ｓ６１５でスレーブ端末自身が持つプライベートIPアドレスとポート番号の組をデータ通信用アドレスとしてデータ通信用アドレス通知方法と共にマスタ端末に通知する。マスタ端末も同様にＳ６０５でマスタ端末自身が持つプライベートIPアドレスとポート番号の組をデータ通信用アドレスとして後述するデータ通信用アドレス通知方法と共に送信する。
【００８０】
実施例２で使用するデータ通信用アドレス通知方法の通知番号は、図１１の中から選択する。
【００８１】
図１１は、図６に記載のアドレス通知方法に、同一LAN内であった場合のアドレス通知方法を＃２として加えたものである。同一LAN内であった場合のアドレス通知方法は、データ通信用アドレスを取得する処理が必要ないので、UPnPのIGDなどを用いてNAT機能付きルータにリモートポートフォワード設定を行う図１１の＃３（図６の＃２）の方法よりも優先して適用する。
【００８２】
なお、同一LANでなかった場合のデータ通信用アドレス通知方法の決定方法については、実施例１と同様に図７、図８の対応表を用いる。ただし、図１１の＃３、＃４、＃５、＃６については、図６にある各方法に振られた番号＃２、＃３、＃４、＃５に読み替えて図７、図８を用いる。
【００８３】
以上により、本実施例２によれば、データ通信を行う２端末が同一LAN内であった場合に、２端末が持つプライベートIPアドレスを含むデータ通信用アドレスを交換することにより、データ通信用中継サーバ３ｃやNAT情報問合せサーバ３ｂなどの他の端末に負担をかけることなくデータ通信を行うことができる。
【実施例３】
【００８４】
実施例３では、セッション管理サーバ３ａが各端末のNAT情報を保持することにより、適切なNAT越え方法を決定する。これにより、実施例１、実施例２とは異なりマスタ端末やスレーブ端末がデータ通信用アドレスの通知方法の決定処理を行うことなくセッション管理サーバ３ａで一括して決定することができる。
【００８５】
実施例３の処理シーケンスを図１２に示す。以後図１２を用いて本実施例の処理手順を説明する。ステップ番号が図４と共通の処理については説明を省略する。
【００８６】
Ｓ７０１とＳ７２１にて、マスタ端末およびスレーブ端末はNAT情報をそれぞれセッション管理サーバ３ａに登録する。登録するNAT情報は図５に示した内容と同等のものを登録する。なお、登録するNAT情報は、例えばSIPプロトコルを用いた場合には、位置情報を登録する際に送信するREGISTERメッセージの中に含めてセッション管理サーバ３ａに通知してもよい。
【００８７】
Ｓ７０２でマスタ端末がスレーブ端末へ通信の開始要求メッセージをセッション処理部１０４から送信する。セッション管理サーバ３ａは、Ｓ７０１の要求を受信後、Ｓ７１０で保存したマスタ端末とスレーブ端末のNAT情報を用いることで、スレーブ端末で行うべきデータ通信用アドレスの通知方法を、実施例１と同様に図８の対応表に従い決定し、マスタ端末で行うデータ通信用アドレスの通知方法もマスタ端末のNAT情報及びスレーブ端末で行うデータ通信用アドレスの通知方法とから図７の対応表に従い決定する。
【００８８】
Ｓ７１２でスレーブ端末のアドレス取得方法の情報とマスタ端末からのダミーパケット送受信の有無をＳ７０２でマスタ端末が送信した開始要求メッセージに追加しスレーブ端末へ転送する。ダミーパケット送受信の有無は、マスタ端末及びスレーブ端末で行うデータ通信用アドレスの通知方法が図６の番号３、番号４の場合は、通知方法を実行する端末がダミーパケットを送信することから判断可能である。
【００８９】
Ｓ７２２でデータ通信用アドレス通知方法等の情報を受信したスレーブ端末は、通知方法に従い、Ｓ７２３で実施例１のＳ３１３と同様、データ通信用アドレスの取得処理を行う。そしてＳ３１４と同様、スレーブ端末はＳ７２４にて通信開始応答と共にデータ通信用アドレスを通知する。ただし、Ｓ３１４で通知したデータ通信用アドレスの通知方法の情報は含める必要はない。
【００９０】
Ｓ７１３でセッション管理サーバ３ａは、スレーブ端末がＳ７２４で送信した情報をマスタ端末へ転送する。転送の際、Ｓ７１２と同様に、セッション管理サーバ３ａはＳ７２４で送信した情報にマスタ端末が行うべきデータ通信用アドレスの通知方法とダミーパケット送受信の有無に関する情報を追加し転送する。
【００９１】
マスタ端末はＳ７０３でセッション管理サーバがＳ７１３で送信した情報を取得し、情報のうちデータ通信用アドレスの通知方法の情報に従いＳ７２３と同様にデータ通信用アドレスの取得処理を行う。そして、必要であればスレーブ端末の通信開始応答に対するACKメッセージの送信処理をマスタ端末が送信しスレーブ端末が受信する（Ｓ７０５、Ｓ７１４、Ｓ７２５）。
【００９２】
Ｓ７２２及びＳ７０３にてセッション管理サーバ３ａから通知されたダミーパケット送受信の有無に関する情報に基づき、Ｓ３０６及びＳ３１６でマスタ端末とスレーブ端末が必要に応じダミーパケットの送受信処理を行う。
【００９３】
実施例３によれば、マスタ端末及びスレーブ端末にてNAT情報等の通知処理を行わず、またデータ通信用のアドレス通知方法の決定処理をマスタ端末とスレーブ端末とで行うことなく、実施例１と同様、NATを透過してデータ通信を行うことができる。なお、実施例３に実施例２で加えた処理を追加することにより、実施例２と実施例３とを組み合わせて実施することも可能である。
【実施例４】
【００９４】
実施例１では、データ通信前の制御情報交換において、マスタ端末からの通信開始要求メッセージに対する応答メッセージ（図４におけるＳ３１４）でスレーブ端末はデータ通信用のアドレスをマスタ端末に通知し、応答メッセージに対するACKメッセージ（図４におけるＳ３０５）でマスタ端末はデータ通信用アドレスをスレーブ端末に通知した。
【００９５】
しかし、通信するアプリケーションによっては、マスタ端末からの通信開始要求メッセージ（図４におけるＳ３０１）においてマスタ端末がデータ通信用のアドレスを通知する必要がある場合もあり得る。このような場合に対応するため、本実施例では通信開始要求メッセージにてマスタ端末のデータ通信用アドレスを通知する場合への対処を実施例４として述べる。
【００９６】
実施例４の処理シーケンスを図１３に示す。以後図１３を用いて本実施例の処理手順を説明する。ステップ番号が図４と共通の処理については説明を省略する。
【００９７】
マスタ端末はＳ３００で取得したNAT情報からデータ通信用アドレス通知方法を暫定的に決める（Ｓ８０１）。具体的には取得したNAT情報が、図５の＃１に該当する場合には図６の＃１を選択、図５の３２に該当する場合には図６の＃２を選択、図５の＃３に該当する場合には図６の＃４を選択、図５の＃４に該当する場合には図６の＃５を選択する。
【００９８】
Ｓ８０２において、マスタ端末は、Ｓ８０１で決定したデータ通信用アドレス通知方法に従い、データ通信用アドレスの取得処理を行う。そしてＳ８０３でマスタ端末はスレーブ端末に対し通信開始要求のメッセージ中に、Ｓ３００で取得したNAT情報とＳ８０２で取得したデータ通信用アドレスとの情報を含め送信する。
【００９９】
Ｓ８０４にてスレーブ端末のデータ通信用アドレス通知方法の情報を取得したマスタ端末は、Ｓ８０５でデータ通信用アドレスの通知方法を決定する。決定方法は実施例１のＳ３０３と同様に図７を用いることで決定する。Ｓ８０４で決定したデータ通信用アドレス通知方法とＳ８０１で暫定したデータ通信用アドレス通知方法が異なる場合には、Ｓ８０４で決定したデータ通信用アドレス通知方法を優先する。
【０１００】
具体的に例えば図７の＃９の場合には、マスタ端末はＳ３００で取得したNAT情報に従いＳ８０２でデータ通信用中継サーバ３ｃからデータ通信用アドレスの取得を行い、Ｓ８０３でアドレスをスレーブ端末に通知する。しかしこの場合、Ｓ８０４で決定したデータ通信用アドレス通知方法は図６の＃３の方法であるので、データ通信においては、Ｓ３０６にて送信するダミーパケット送信によってスレーブ端末へ通知するデータ通信用アドレスを用いる。
【０１０１】
実施例４によれば、スレーブ端末の通信開始要求メッセージ送信時にデータ通信用アドレスを同時に通知するようなアプリケーションであっても、優先順位に従い適用可能な優先度の高いデータ通信用アドレスの通知方法（NAT越え方法）を選択し、かつ通信試行をすることなく必ずデータ通信を確立することができる。
【図面の簡単な説明】
【０１０２】
【図１】ネットワーク構成例を示すブロック図。
【図２】端末の機能ブロック構成例を示すブロック図。
【図３】端末のハードウェア構成例を示すブロック図。
【図４】実施例１の処理の流れの例を示すフローチャート。
【図５】図４のＳ３０１でマスタ端末が送信するNATの種類と対応する通知番号の例を示す表。
【図６】図４のＳ３０５及びＳ３１４でスレーブ端末とマスタ端末が通知するデータ通信用アドレスの通知方法と対応する通知番号の例を示す表。
【図７】図４のＳ３０１とＳ３１４との情報からマスタ端末がデータ通信用アドレスの通知方法に係るＳ３０５で通知する通知番号を決定するための対応例を示す表。
【図８】図４のＳ３１０とＳ３１１とで取得した情報からスレーブ端末がＳ３１４で通知する通知番号を決定するための対応例を示す表。
【図９】図３のＳ３００又はＳ３１０の処理の詳細例を示すフローチャート。
【図１０】実施例１の処理の流れの例を示すフローチャート。
【図１１】図１０のＳ６１５とＳ６０５において、スレーブ端末とマスタ端末が通知するデータ通信用アドレスの通知方法と対応する通知番号の例を示す表。
【図１２】実施例３の処理の流れの例を示すフローチャート。
【図１３】実施例４の処理の流れの例を示すフローチャート。
【符号の説明】
【０１０３】
１ａ〜１ｇ：端末、２ａ〜２ｄ：NAT機能付きルータ、３ａ：セッション管理サーバ、３ｂ：NAT情報問合せサーバ、３ｃ：データ通信用中継サーバ、４：通信回線、１０１：端末、１０２：データ通信処理部、１０３：サーバ問合せ処理部、１０４：セッション処理部、１０６：中継サーバ問合せ処理部、１０８：ルータ制御処理部、１１０：ダミーパケット処理部、２０１：ＣＰＵ、２０２：主記憶装置、２０３：通信制御装置、２０５：外部記憶装置、２０６：入力装置、２０７：出力装置、２０８：バス。
【図１】
2008236278.tif 000003
【図２】
2008236278.tif 000004
【図３】
2008236278.tif 000005
【図４】
2008236278.tif 000006
【図５】
2008236278.tif 000007
【図６】
2008236278.tif 000008
【図７】
2008236278.tif 000009
【図８】
2008236278.tif 000010
【図９】
2008236278.tif 000011
【図１０】
2008236278.tif 000012
【図１１】
2008236278.tif 000013
【図１２】
2008236278.tif 000014
【図１３】
2008236278.tif 000015