(57)【要約】【課題】低コストで、かつ確実にNAT越え通信を実現できるようにする。【解決手段】  UPnP機能を有するルータ４１または４３の配下に接続されるローカル通信端末AまたはCは、UPnPのプロトコルに基づいて、ルータ４１または４３のNAT機能により変換されるIPアドレスとポート番号を取得し、NAT越えのための交換情報として中継サーバ６３に登録する。UPnP機能を有するルータ４２または４４の配下に接続されるローカル通信端末ＢまたはDは、STUNサーバ６１と６２から取得するパケットに基づいて、ルータ４１または４３のNAT機能により変換されるIPアドレスを特定し、ルータ４１または４３のNAT機能により変換されるポート番号を予測し、NAT越えのための交換情報として中継サーバ６３に登録する。本発明は、パーソナルコンピュータに適用できる。【選択図】図１
2005151142.tif 000002
【特許請求の範囲】
【請求項１】
第１のネットワークに接続されるとともに、アドレス情報を変換する第１のアドレス情報変換装置を介して第２のネットワークに接続される第１の情報処理装置と、第３のネットワークに接続されるとともに、アドレス情報を変換する第２のアドレス情報変換装置を介して前記第２のネットワークに接続される第２の情報処理装置と、前記第２のネットワークに接続され、前記第１の情報処理装置および前記第２の情報処理装置の前記第２のネットワーク上のアドレス情報を管理する情報管理装置と、前記第２ネットワークに接続され、前記第１の情報処理装置と前記第２の情報処理装置に前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置からなる情報通信システムであって、
前記第１の情報処理装置は、
前記第１のアドレス情報変換装置が前記第１の情報処理装置の前記第２のネットワーク上のアドレスを通知するアドレス通知機能を有しているか否かを判定する判定手段と、
前記判定手段により、前記第１のアドレス情報変換装置が前記アドレス通知機能を有していると判定された場合、前記アドレス通知機能により前記第１の情報処理装置の前記第２のネットワーク上のアドレス情報を取得して、取得した前記アドレス情報を前記情報管理装置に登録する第１の登録手段と、
前記判定手段により、前記第１のアドレス情報変換装置が前記アドレス通知機能を有していないと判定された場合、前記アドレス情報提供装置から提供される情報に基づいて、前記第１の情報処理装置の前記第２のネットワーク上のアドレス情報を予測して、予測した前記アドレス情報を前記情報管理装置に登録する第２の登録手段とを備え、
前記情報管理装置は、
前記第１または第２の情報処理装置の前記第２のネットワーク上の前記アドレス情報を受信する受信手段と、
前記受信手段により受信した前記アドレス情報を記憶する記憶手段と、
前記記憶手段に記憶された前記アドレス情報を前記第１または第２の情報処理装置に提供する提供手段と
を備え、
前記第１の情報処理装置は、前記情報管理装置から前記第２の情報処理装置の前記第２のネットワーク上のアドレス情報を取得して前記第２の情報処理装置と通信する
ことを特徴とする情報通信システム。
【請求項２】
第１のネットワークに接続されるとともに、アドレス情報を変換する第１のアドレス情報変換装置を介して第２のネットワークに接続される第１の情報処理装置と、第３のネットワークに接続されるとともに、アドレス情報を変換する第２のアドレス情報変換装置を介して前記第２のネットワークに接続される第２の情報処理装置と、前記第２のネットワークに接続され、前記第１の情報処理装置および前記第２の情報処理装置の前記第２のネットワーク上のアドレス情報を管理する情報管理装置と、前記第２ネットワークに接続され、前記第１の情報処理装置と前記第２の情報処理装置に前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置からなる情報通信システムの情報通信方法であって、
前記第１の情報処理装置は、
前記第１のアドレス情報変換装置が前記第１の情報処理装置の前記第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かを判定し、
前記第１のアドレス情報変換装置が前記アドレス情報通知機能を有していると判定された場合、前記アドレス情報通知機能により前記第１の情報処理装置の前記第２のネットワーク上のアドレス情報を取得し、取得した前記アドレス情報を前記情報管理装置に登録し、
前記第１のアドレス情報変換装置が前記アドレス情報通知機能を有していないと判定された場合、前記アドレス情報提供装置から提供される情報に基づいて、前記第１の情報処理装置の前記第２のネットワーク上のアドレス情報を予測し、予測した前記アドレス情報を前記情報管理装置に登録し、
前記情報管理装置は、
前記第１または第２の情報処理装置の前記第２のネットワーク上の前記アドレス情報を受信し、
受信した前記アドレス情報を記憶し、
記憶している前記アドレス情報を前記第１または第２の情報処理装置に提供し、
前記第１の情報処理装置は、前記情報管理装置から前記第２の情報処理装置の前記第２のネットワーク上のアドレス情報を取得して前記第２の情報処理装置と通信する
ことを特徴とする情報通信方法。
【請求項３】
第１のネットワークに接続されるとともに、アドレス情報を変換するアドレス情報変換装置を介して第２のネットワークに接続される情報処理装置であって、
前記アドレス情報変換装置が前記情報処理装置の前記第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かを判定する判定手段と、
前記判定手段により、前記アドレス情報変換装置が前記アドレス通知機能を有していると判定された場合、前記アドレス通知機能により前記情報処理装置の前記第２のネットワーク上のアドレス情報を取得し、取得した前記アドレス情報を前記第２のネットワークに接続される情報管理装置に登録する第１の登録手段と、
前記判定手段により、前記アドレス情報変換装置が前記アドレス通知機能を有していないと判定された場合、前記第２ネットワークに接続され、前記第１のネットワークに接続されている情報処理装置の前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置から提供される情報に基づいて、前記情報処理装置の前記第２のネットワーク上のアドレス情報を予測し、予測した前記アドレス情報を前記情報管理装置に登録する第２の登録手段と
を備えることを特徴とする情報処理装置。
【請求項４】
前記第１および第２の登録手段は、前記アドレス情報変換装置が前記アドレス情報通知機能を有するか否かを表す識別情報を設定する設定手段を備え、前記情報管理装置に、前記識別情報をさらに登録する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
第３のネットワークに接続されるとともに、他のアドレス情報変換装置を介して前記第２のネットワークに接続される他の情報処理装置と通信するとき、前記他の情報処理装置との通信に用いられるプロトコルを判定するプロトコル判定手段と、
前記プロトコル判定手段により前記他の情報処理装置との通信に用いられるプロトコルがTCPであると判定された場合、前記他の情報処理装置とTCP通信を行うTCP通信手段と、
前記プロトコル判定手段により前記他の情報処理装置との通信に用いられるプロトコルがUDPであると判定された場合、前記他の情報処理装置とUDP通信を行うUDP通信手段とをさらに備える
ことを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記TCP通信手段は、
前記情報管理装置から前記他の情報処理装置の前記第２のネットワーク上のアドレス情報および前記識別情報を取得する取得手段と、
前記取得手段により取得された前記第２のネットワーク上のアドレス情報および前記識別情報に基づいて、TCPコネクションを提供するコネクション提供手段と
を備えることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記コネクション提供手段は、
前記情報処理装置の前記識別情報に基づいて、前記アドレス情報変換装置が前記アドレス情報通知機能を有しているか否かを判定する第１の識別情報判定手段と、
前記他の情報処理装置の前記識別情報に基づいて、前記他のアドレス情報変換装置が前記アドレス情報通知機能を有しているか否かを判定する第２の識別情報判定手段とを備え、
前記第１と第２の識別情報判定手段の判定結果に基づいてTCPコネクションを提供する
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記UDP通信手段は、
前記情報管理装置から前記他の情報処理装置の前記第２のネットワーク上のアドレス情報および前記識別情報を取得する取得手段と、
前記取得手段により取得された前記第２のネットワーク上のアドレス情報および前記識別情報に基づいて、UDP通信の準備を行う通信準備手段と
を備えることを特徴とする請求項５に記載の情報処理装置。
【請求項９】
前記通信準備手段は、
前記情報処理装置の前記識別情報に基づいて、前記アドレス情報変換装置が前記アドレス情報通知機能を有しているか否かを判定する第１の識別情報判定手段と、
前記他の情報処理装置の前記識別情報に基づいて、前記他のアドレス情報変換装置が前記アドレス情報通知機能を有しているか否かを判定する第２の識別情報判定手段とを備え、
前記第１または第２の識別情報判定手段の判定結果に基づいて、UDP通信の準備を行う
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
第１のネットワークに接続されるとともに、アドレス情報を変換するアドレス情報変換装置を介して第２のネットワークに接続される情報処理装置の情報処理方法であって、
前記アドレス情報変換装置が前記情報処理装置の前記第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かを判定する判定ステップと、
前記判定ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していると判定された場合、前記アドレス通知機能により前記情報処理装置の前記第２のネットワーク上のアドレス情報を取得し、取得した前記アドレス情報を前記第２のネットワークに接続される情報管理装置に登録する第１の登録ステップと、
前記判定ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していないと判定された場合、前記第２ネットワークに接続され、前記第１のネットワークに接続されている情報処理装置の前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置から提供される情報に基づいて、前記情報処理装置の前記第２のネットワーク上のアドレス情報を予測し、予測した前記アドレス情報を前記情報管理装置に登録する第２の登録ステップと
を含むことを特徴とする情報処理方法。
【請求項１１】
第１のネットワークに接続されるとともに、アドレス情報を変換するアドレス情報変換装置を介して第２のネットワークに接続される情報処理装置のプログラムであって、
前記アドレス情報変換装置が前記情報処理装置の前記第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かの判定を制御する判定制御ステップと、
前記判定制御ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していると判定された場合、前記アドレス通知機能により前記情報処理装置の前記第２のネットワーク上のアドレス情報を取得し、取得した前記アドレス情報を前記第２のネットワークに接続される情報管理装置に登録するように制御する第１の登録制御ステップと、
前記判定制御ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していないと判定された場合、前記第２ネットワークに接続され、前記第１のネットワークに接続されている情報処理装置の前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置から提供される情報に基づいて、前記情報処理装置の前記第２のネットワーク上のアドレス情報を予測し、予測した前記アドレス情報を前記情報管理装置に登録するように制御する第２の登録制御ステップと
をコンピュータに実行させることを特徴とするプログラム。
【請求項１２】
第１のネットワークに接続されるとともに、アドレス情報を変換するアドレス情報変換装置を介して第２のネットワークに接続される情報処理装置のプログラムが記録されている記録媒体であって、
前記アドレス情報変換装置が前記情報処理装置の前記第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かの判定を制御する判定制御ステップと、
前記判定制御ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していると判定された場合、前記アドレス通知機能により前記情報処理装置の前記第２のネットワーク上のアドレス情報を取得し、取得した前記アドレス情報を前記第２のネットワークに接続される情報管理装置に登録するように制御する第１の登録制御ステップと、
前記判定制御ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していないと判定された場合、前記第２ネットワークに接続され、前記第１のネットワークに接続されている情報処理装置の前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置から提供される情報に基づいて、前記情報処理装置の前記第２のネットワーク上のアドレス情報を予測し、予測した前記アドレス情報を前記情報管理装置に登録するように制御する第２の登録制御ステップと
をコンピュータに実行させるプログラムが記録されることを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報通信システムおよび方法、情報処理装置および方法、プログラム並びに記録媒体に関し、特に、より確実にNAT越えを実現できるようにする情報通信システムおよび方法、情報処理装置および方法、プログラム並びに記録媒体に関する。
【背景技術】
【０００２】
現在インターネットではルーティングプロトコルとしてInternet Protocol（以下、IPと称する）が用いられている。もっとも普及しているIPのバージョンは、今のところ「４」となっており（以下、IPv4と称する）、このバージョンで利用される送信元アドレスや送信先アドレスのビット数は「３２」である。インターネット等に代表されるグローバルネットワークにおいて、そのIPv4に基づいて３２ビットのアドレス（以下、IPv4アドレスと称する）を、各通信端末に対してユニークに割り当てておくことにより、それらの装置間で行われる通信の通信データの送信元アドレスや送信先アドレスが絶対的に識別可能となるようになされている。
【０００３】
しかしながら、インターネット利用率の急増化から、IPv4アドレスが足りなくなる恐れが生じるようになった。そこで、これを解決するために、IETF（Internet Engineering Task Force）では、IPのバージョンとして「６」であるプロトコル（以下、IPv6と称する）を策定し、普及を開始し始めている。しかし、実際には、インターネットで利用するルーティングプロトコルをIPv6へ全面移行するためには、多大な時間やコストが必要であり、完全にこの問題を解決することは困難である。
【０００４】
そこで、既存のIPv4を利用しつつ、そのアドレスを拡大させる手法として、ローカル（プライベート）な性質を持つアドレス空間「プライベートアドレス」を用いる方法が提案された。
【０００５】
すなわち、プライベートアドレスは、IPv4アドレスのように、グローバルなネットワークにおける各端末装置に対して、ユニーク（唯一無二に）に割り振られるアドレス（以下、グローバルアドレスと称する）と違い、所定の限られた範囲のネットワーク（プライベートネットワーク）において各端末に対して割り当てられるアドレスである。このプライベートネットワークに接続され、プライベートアドレスが割り当てられた各通信端末が、そのプライベートネットワークに割り当てられた１つのグローバルアドレスを共有するのである。
【０００６】
従って、プライベートネットワークの通信端末装置が、このプライベートアドレスを用いてインターネットにあるグローバルアドレスを持つ他の通信端末装置と通信を行う場合、そのプライベートアドレスをグローバルアドレスに変換する処理が必要となる。それを実現する方法として、NAT（Network Address Translation）が考えられており、この場合、各通信端末は、NATを介してグローバルネットワークに接続される。
【０００７】
また、アドレスの下に設けられたサブ(補助)アドレスであるポートを利用し、プライベートネットワークの通信端末に割り当てられたプライベートアドレスと、通信に用いるポート（すなわち、ソケット）がグローバルアドレスとポートへ変換されるNAPT（Network Address Port Translation）による方法も考えられている。
【０００８】
しかし、プライベートネットワーク内のプライベートアドレスに接続されたユーザ端末を使って、ビデオチャットやオンラインゲームなどのようにユーザ同士が直接通信する必要があるアプリケーション（いわゆるＰ２Ｐ(Peer to Peer)アプリケーション）を実行する場合、ユーザ端末自身が、NAT（またはNAPT）により変換されたグローバルアドレスとポートを取得して通信する、いわゆるNAT越えが必要になる。
【０００９】
このNAT越えを解決するために、UPnP（Universal Plug and Play）という技術が考えられている。UPnPは、UPnPフォーラムにより標準化されたプロトコルに基づく機能であり、この機能を実装するNATの配下のプライベートネットワークに接続される通信端末は、UPnPで規定された通信を行うことによりNATにより変換されたグローバルアドレスとポートを取得することができる。
【００１０】
また、NAT越えを解決する他の方法として、STUN（Simple Traversal of UDP through NATs）という技術も考えられている。STUNによれば、NATの配下のローカルエリアネットワークに接続される通信端末は、グローバルネットワークに接続されるサーバ（STUNサーバ）から取得された情報に基づいて、NATにより変換されたグローバルアドレスを取得する。
【００１１】
また、グローバルアドレスで管理する端末と、プライベートアドレスで管理される端末が相互に通信を行う場合、NATとともに、リレーサーバとルータを併用することにより、Ｐ２Ｐ通信を提供する技術も提案されている（例えば、特許文献１参照）。
【００１２】
【特許文献１】特開２００１−３４５８４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、ルータとしてUPnPに対応したＮＡＴ（ルータ）を用いる場合、多大な時間やコストが必要と想定される。すなわち、UPnPに対応していないルータが既に多数存在するので、全てUPnPに対応したルータに交換させることによって、NAT越えを完全に解決しようとすることは現実的ではない。
【００１４】
また、STUNにより、NATにより変換されるグローバルアドレスとポート番号を取得することはできるが、NATの種類にかかわらず、適確にポート番号を予測することはできない。このためTCP通信に必要となるTCP（Transmission Control Protocol）のコネクションを提供することができず、場合によっては、Ｐ２Ｐの通信を提供できないおそれがあるという課題があった。
【００１５】
本発明はこのような状況に鑑みてなされたものであり、低コストで、かつ確実にNAT越えを実現できるようにするものである。
【課題を解決するための手段】
【００１６】
本発明の情報通信システムは、第１のネットワークに接続されるとともに、アドレス情報を変換する第１のアドレス情報変換装置を介して第２のネットワークに接続される第１の情報処理装置と、第３のネットワークに接続されるとともに、アドレス情報を変換する第２のアドレス情報変換装置を介して第２のネットワークに接続される第２の情報処理装置と、第２のネットワークに接続され、第１の情報処理装置および第２の情報処理装置の第２のネットワーク上のアドレス情報を管理する情報管理装置と、第２ネットワークに接続され、第１の情報処理装置と第２の情報処理装置に第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置からなる情報通信システムであって、第１の情報処理装置は、第１のアドレス情報変換装置が第１の情報処理装置の第２のネットワーク上のアドレスを通知するアドレス通知機能を有しているか否かを判定する判定手段と、判定手段により、第１のアドレス情報変換装置がアドレス通知機能を有していると判定された場合、アドレス通知機能により第１の情報処理装置の第２のネットワーク上のアドレス情報を取得して、取得したアドレス情報を情報管理装置に登録する第１の登録手段と、判定手段により、第１のアドレス情報変換装置がアドレス通知機能を有していないと判定された場合、アドレス情報提供装置から提供される情報に基づいて、第１の情報処理装置の第２のネットワーク上のアドレス情報を予測して、予測したアドレス情報を情報管理装置に登録する第２の登録手段とを備え、情報管理装置は、第１または第２の情報処理装置の第２のネットワーク上のアドレス情報を受信する受信手段と、受信手段により受信したアドレス情報を記憶する記憶手段と、記憶手段に記憶されたアドレス情報を第１または第２の情報処理装置に提供する提供手段とを備え、第１の情報処理装置は、情報管理装置から第２の情報処理装置の第２のネットワーク上のアドレス情報を取得して第２の情報処理装置と通信することを特徴とする。
【００１７】
本発明の情報通信方法は、第１のネットワークに接続されるとともに、アドレス情報を変換する第１のアドレス情報変換装置を介して第２のネットワークに接続される第１の情報処理装置と、第３のネットワークに接続されるとともに、アドレス情報を変換する第２のアドレス情報変換装置を介して第２のネットワークに接続される第２の情報処理装置と、第２のネットワークに接続され、第１の情報処理装置および第２の情報処理装置の第２のネットワーク上のアドレス情報を管理する情報管理装置と、第２ネットワークに接続され、第１の情報処理装置と第２の情報処理装置に第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置からなる情報通信システムの情報通信方法であって、第１の情報処理装置は、第１のアドレス情報変換装置が第１の情報処理装置の第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かを判定し、第１のアドレス情報変換装置がアドレス情報通知機能を有していると判定された場合、アドレス情報通知機能により第１の情報処理装置の第２のネットワーク上のアドレス情報を取得し、取得したアドレス情報を情報管理装置に登録し、第１のアドレス情報変換装置がアドレス情報通知機能を有していないと判定された場合、アドレス情報提供装置から提供される情報に基づいて、第１の情報処理装置の第２のネットワーク上のアドレス情報を予測し、予測したアドレス情報を情報管理装置に登録し、情報管理装置は、第１または第２の情報処理装置の第２のネットワーク上のアドレス情報を受信し、受信したアドレス情報を記憶し、記憶しているアドレス情報を第１または第２の情報処理装置に提供し、第１の情報処理装置は、情報管理装置から第２の情報処理装置の第２のネットワーク上のアドレス情報を取得して第２の情報処理装置と通信することを特徴とする。
【００１８】
本発明の情報通信システム及び方法においては、第１の情報処理装置により、第１のアドレス情報変換装置が第１の情報処理装置の第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かが判定され、第１のアドレス情報変換装置がアドレス情報通知機能を有していると判定された場合、アドレス情報通知機能により第１の情報処理装置の第２のネットワーク上のアドレス情報が取得され、取得されたアドレス情報が情報管理装置に登録され、第１のアドレス情報変換装置がアドレス情報通知機能を有していないと判定された場合、アドレス情報提供装置から提供される情報に基づいて、第１の情報処理装置の第２のネットワーク上のアドレス情報が予測され、予測されたアドレス情報が情報管理装置に登録される。また、情報管理装置により、第１または第２の情報処理装置の第２のネットワーク上のアドレス情報が受信され、受信されたアドレス情報が記憶され、記憶されているアドレス情報が第１または第２の情報処理装置に提供される。
【００１９】
本発明の情報処理装置は、第１のネットワークに接続されるとともに、アドレス情報を変換するアドレス情報変換装置を介して第２のネットワークに接続される情報処理装置であって、アドレス情報変換装置が情報処理装置の第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かを判定する判定手段と、判定手段により、アドレス情報変換装置がアドレス通知機能を有していると判定された場合、アドレス通知機能により情報処理装置の第２のネットワーク上のアドレス情報を取得し、取得したアドレス情報を第２のネットワークに接続される情報管理装置に登録する第１の登録手段と、判定手段により、アドレス情報変換装置がアドレス通知機能を有していないと判定された場合、第２ネットワークに接続され、第１のネットワークに接続されている情報処理装置の第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置から提供される情報に基づいて、情報処理装置の第２のネットワーク上のアドレス情報を予測し、予測したアドレス情報を情報管理装置に登録する第２の登録手段とを備えることを特徴とする。
【００２０】
前記第１および第２の登録手段は、アドレス情報変換装置がアドレス情報通知機能を有するか否かを表す識別情報を設定する設定手段を備え、情報管理装置に、識別情報をさらに登録するようにすることができる。
【００２１】
第３のネットワークに接続されるとともに、他のアドレス情報変換装置を介して第２のネットワークに接続される他の情報処理装置と通信するとき、他の情報処理装置との通信に用いられるプロトコルを判定するプロトコル判定手段と、プロトコル判定手段により他の情報処理装置との通信に用いられるプロトコルがTCPであると判定された場合、他の情報処理装置とTCP通信を行うTCP通信手段と、プロトコル判定手段により他の情報処理装置との通信に用いられるプロトコルがUDPであると判定された場合、他の情報処理装置とUDP通信を行うUDP通信手段とをさらに備えるようにすることができる。
【００２２】
前記TCP通信手段は、情報管理装置から他の情報処理装置の第２のネットワーク上のアドレス情報および識別情報を取得する取得手段と、取得手段により取得された第２のネットワーク上のアドレス情報および識別情報に基づいて、TCPコネクションを提供するコネクション提供手段とを備えるようにすることができる。
【００２３】
前記コネクション提供手段は、情報処理装置の識別情報に基づいて、アドレス情報変換装置がアドレス情報通知機能を有しているか否かを判定する第１の識別情報判定手段と、他の情報処理装置の識別情報に基づいて、他のアドレス情報変換装置がアドレス情報通知機能を有しているか否かを判定する第２の識別情報判定手段とを備え、第１と第２の識別情報判定手段の判定結果に基づいてTCPコネクションを提供するようにすることができる。
【００２４】
前記UDP通信手段は、情報管理装置から他の情報処理装置の第２のネットワーク上のアドレス情報および識別情報を取得する取得手段と、取得手段により取得された第２のネットワーク上のアドレス情報および識別情報に基づいて、UDP通信の準備を行う通信準備手段とを備えるようにすることができる。
【００２５】
前記通信準備手段は、情報処理装置の識別情報に基づいて、アドレス情報変換装置がアドレス情報通知機能を有しているか否かを判定する第１の識別情報判定手段と、他の情報処理装置の識別情報に基づいて、他のアドレス情報変換装置がアドレス情報通知機能を有しているか否かを判定する第２の識別情報判定手段とを備え、第１または第２の識別情報判定手段の判定結果に基づいて、UDP通信の準備を行うようにすることができる。
【００２６】
本発明の情報処理方法は、第１のネットワークに接続されるとともに、アドレス情報を変換するアドレス情報変換装置を介して第２のネットワークに接続される情報処理装置の情報処理方法であって、アドレス情報変換装置が情報処理装置の第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かを判定する判定ステップと、判定ステップの処理により、アドレス情報変換装置がアドレス通知機能を有していると判定された場合、アドレス通知機能により情報処理装置の第２のネットワーク上のアドレス情報を取得し、取得したアドレス情報を第２のネットワークに接続される情報管理装置に登録する第１の登録ステップと、判定ステップの処理により、アドレス情報変換装置がアドレス通知機能を有していないと判定された場合、第２ネットワークに接続され、第１のネットワークに接続されている情報処理装置の第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置から提供される情報に基づいて、情報処理装置の第２のネットワーク上のアドレス情報を予測し、予測したアドレス情報を情報管理装置に登録する第２の登録ステップとを含むことを特徴とする。
【００２７】
本発明のプログラムは、第１のネットワークに接続されるとともに、アドレス情報を変換するアドレス情報変換装置を介して第２のネットワークに接続される情報処理装置のプログラムであって、アドレス情報変換装置が情報処理装置の第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かの判定を制御する判定制御ステップと、判定制御ステップの処理により、アドレス情報変換装置がアドレス通知機能を有していると判定された場合、アドレス通知機能により情報処理装置の第２のネットワーク上のアドレス情報を取得し、取得したアドレス情報を第２のネットワークに接続される情報管理装置に登録するように制御する第１の登録制御ステップと、判定制御ステップの処理により、アドレス情報変換装置がアドレス通知機能を有していないと判定された場合、第２ネットワークに接続され、第１のネットワークに接続されている情報処理装置の第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置から提供される情報に基づいて、情報処理装置の第２のネットワーク上のアドレス情報を予測し、予測したアドレス情報を前記情報管理装置に登録するように制御する第２の登録制御ステップとをコンピュータに実行させる。
【００２８】
本発明の記録媒体は、第１のネットワークに接続されるとともに、アドレス情報を変換するアドレス情報変換装置を介して第２のネットワークに接続される情報処理装置のプログラムが記録されている記録媒体であって、アドレス情報変換装置が情報処理装置の第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かの判定を制御する判定制御ステップと、判定制御ステップの処理により、アドレス情報変換装置がアドレス通知機能を有していると判定された場合、アドレス通知機能により情報処理装置の第２のネットワーク上のアドレス情報を取得し、取得したアドレス情報を第２のネットワークに接続される情報管理装置に登録するように制御する第１の登録制御ステップと、判定制御ステップの処理により、アドレス情報変換装置がアドレス通知機能を有していないと判定された場合、第２ネットワークに接続され、第１のネットワークに接続されている情報処理装置の第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置から提供される情報に基づいて、情報処理装置の第２のネットワーク上のアドレス情報を予測し、予測したアドレス情報を前記情報管理装置に登録するように制御する第２の登録制御ステップとをコンピュータに実行させるプログラムが記録されることを特徴とする。
【００２９】
本発明の情報処理装置および方法、並びにプログラムにおいては、アドレス情報変換装置が情報処理装置の第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能を有しているか否かが判定され、アドレス情報変換装置がアドレス通知機能を有していると判定された場合、アドレス通知機能により情報処理装置の第２のネットワーク上のアドレス情報が取得され、取得されたアドレス情報が第２のネットワークに接続される情報管理装置に登録され、アドレス情報変換装置がアドレス通知機能を有していないと判定された場合、第２ネットワークに接続され、第１のネットワークに接続されている情報処理装置の第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置から提供される情報に基づいて、情報処理装置の第２のネットワーク上のアドレス情報が予測され、予測されたアドレス情報が情報管理装置に登録される。
【発明の効果】
【００３０】
本発明によれば、ＮＡＴ越えの通信を提供することができる。特に、低コストで、かつ確実にNAT越えの通信を実現できる。
【発明を実施するための最良の形態】
【００３１】
以下に本発明の実施の形態を説明するが、本明細書に記載した発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が明細書に記載されていることを確認するためのものである。従って、明細書には記載されているが、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００３２】
さらに、この記載は、明細書に記載されている発明が、全て請求されていることを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出願、または追加される発明の存在を否定するものではない。
【００３３】
本発明により情報通信システムが提供される。この情報通信システムは、第１のネットワーク（例えば、図１のプライベートネットワーク２１）に接続されるとともに、アドレス情報（例えば、IPアドレスとポート番号）を変換する第１のアドレス情報変換装置（例えば、図１のルータ４１）を介して第２のネットワーク（例えば、図１のインターネット１）に接続される第１の情報処理装置（例えば、図１のローカル通信端末Ａ）と、第３のネットワーク（例えば、図１のプライベートネットワーク２２）に接続されるとともに、アドレス情報を変換する第２のアドレス情報変換装置（例えば、図１のルータ４２）を介して前記第２のネットワークに接続される第２の情報処理装置（例えば、図１のローカル通信端末B）と、前記第２のネットワークに接続され、前記第１の情報処理装置および前記第２の情報処理装置の前記第２のネットワーク上のアドレス情報を管理する情報管理装置（例えば、図１の中継サーバ６３）と、前記第２ネットワークに接続され、前記第１の情報処理装置と前記第２の情報処理装置に前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置（例えば、図１のSTUNサーバ６１と６２）からなる情報通信システムであって、前記第１の情報処理装置は、前記第１のアドレス情報変換装置が前記第１の情報処理装置の前記第２のネットワーク上のアドレスを通知するアドレス通知機能（例えば、UPnP）を有しているか否かを判定する判定手段（例えば、図６のステップS３の処理を実行する図３のミドルウェア１５２）と、前記判定手段により、前記第１のアドレス情報変換装置が前記アドレス通知機能を有していると判定された場合、前記アドレス通知機能により前記第１の情報処理装置の前記第２のネットワーク上のアドレス情報を取得して、取得した前記アドレス情報を前記情報管理装置に登録する第１の登録手段（例えば、図６のステップS４の処理を実行する図３のUPnPモジュール１５４）と、前記判定手段により、前記第１のアドレス情報変換装置が前記アドレス通知機能を有していないと判定された場合、前記アドレス情報提供装置から提供される情報（例えば、STUNサーバ６１と６２からの応答パケットに記述されるNATのポート番号）に基づいて、前記第１の情報処理装置の前記第２のネットワーク上のアドレス情報を予測して、予測した前記アドレス情報を前記情報管理装置に登録する第２の登録手段（例えば、図６のステップS５の処理を実行する図３のSTUNモジュール１５３）とを備え、前記情報管理装置は、前記第１または第２の情報処理装置の前記第２のネットワーク上の前記アドレス情報を受信する受信手段（例えば、図１１のステップS６１の処理を実行する図５のCPU２０１）と、前記受信手段により受信した前記アドレス情報を記憶する記憶手段（例えば、図１１のステップS６２の処理を実行する図５のCPU２０１）と、前記記憶手段に記憶された前記アドレス情報を前記第１または第２の情報処理装置に提供する提供手段（例えば、図１５の交換情報提供処理を実行する図５のCPU２０１）とを備え、前記第１の情報処理装置は、前記情報管理装置から前記第２の情報処理装置の前記第２のネットワーク上のアドレス情報を取得して（例えば、図１４の��テップＳ１０３または図１７のステップＳ１６３の処理により取得して）前記第２の情報処理装置と通信する。
【００３４】
本発明により情報通信方法が提供される。この情報通信方法は、第１のネットワーク（例えば、図１のプライベートネットワーク２１）に接続されるとともに、アドレス情報（例えば、IPアドレスとポート番号）を変換する第１のアドレス情報変換装置（例えば、図１のルータ４１）を介して第２のネットワーク（例えば、図１のインターネット１）に接続される第１の情報処理装置（例えば、図１のローカル通信端末Ａ）と、第３のネットワーク（例えば、図１のプライベートネットワーク２２）に接続されるとともに、アドレス情報を変換する第２のアドレス情報変換装置（例えば、図１のルータ４２）を介して前記第２のネットワークに接続される第２の情報処理装置（例えば、図１のローカル通信端末B）と、前記第２のネットワークに接続され、前記第１の情報処理装置および前記第２の情報処理装置の前記第２のネットワーク上のアドレス情報を管理する情報管理装置（例えば、図１の中継サーバ６３）と、前記第２ネットワークに接続され、前記第１の情報処理装置と前記第２の情報処理装置に前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置（例えば、図１のSTUNサーバ６１と６２）からなる情報通信システムの情報通信方法であって、前記第１の情報処理装置は、前記第１のアドレス情報変換装置が前記第１の情報処理装置の前記第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能（例えば、UPnP）を有しているか否かを判定し（例えば、図６のステップS３）、前記第１のアドレス情報変換装置が前記アドレス情報通知機能を有していると判定された場合、前記アドレス情報通知機能により前記第１の情報処理装置の前記第２のネットワーク上のアドレス情報を取得し、取得した前記アドレス情報を前記情報管理装置に登録し（例えば、図６のステップS４）、前記第１のアドレス情報変換装置が前記アドレス情報通知機能を有していないと判定された場合、前記アドレス情報提供装置から提供される情報（例えば、STUNサーバ６１と６２からの応答パケットに記述されるNATのポート番号）に基づいて、前記第１の情報処理装置の前記第２のネットワーク上のアドレス情報を予測し、予測した前記アドレス情報を前記情報管理装置に登録し（例えば、図６のステップS５の処理を実行する図３のSTUNモジュール１５３）、前記情報管理装置は、前記第１または第２の情報処理装置の前記第２のネットワーク上の前記アドレス情報を受信し（例えば、図１１のステップS６１の処理を実行する図５のCPU２０１）、受信した前記アドレス情報を記憶し（例えば、図１１のステップS６２の処理を実行する図５のCPU２０１）、記憶している前記アドレス情報を前記第１または第２の情報処理装置に提供し（例えば、図１５の交換情報提供処理）、前記第１の情報処理装置は、前記情報管理装置から前記第２の情報処理装置の前記第２のネットワーク上のアドレス情報を取得して（例えば、図１４のステップＳ１０３または図１７のステップＳ１６３の処理により取得して）前記第２の情報処理装置と通信する。
【００３５】
本発明により情報処理装置が提供される。この情報処理装置は、第１のネットワーク（例えば、図１のプライベートネットワーク２１）に接続されるとともに、アドレス情報（例えば、IPアドレスとポート番号）を変換するアドレス情報変換装置（例えば、図１のルータ４１）を介して第２のネットワーク（例えば、図１のインターネット１）に接続される情報処理装置（例えば、図１のローカル通信端末Ａ）であって、前記アドレス情報変換装置が前記情報処理装置の前記第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能（例えば、UPnP）を有しているか否かを判定する判定手段（例えば、図６のステップS３の処理を実行する図３のミドルウェア１５２）と、前記判定手段により、前記アドレス情報変換装置が前記アドレス通知機能を有していると判定された場合、前記アドレス通知機能により前記情報処理装置の前記第２のネットワーク上のアドレス情報を取得し、取得した前記アドレス情報を前記第２のネットワークに接続される情報管理装置（例えば、図１の中継サーバ６３）に登録する第１の登録手段（例えば、図６のステップS４の処理を実行する図３のUPnPモジュール１５４）と、前記判定手段により、前記アドレス情報変換装置が前記アドレス通知機能を有していないと判定された場合、前記第２ネットワークに接続され、前記第１のネットワークに接続されている情報処理装置の前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置（例えば、図１のSTUNサーバ６１と６２）から提供される情報（例えば、STUNサーバ６１と６２からの応答パケットに記述されるNATのポート番号）に基づいて、前記情報処理装置の前記第２のネットワーク上のアドレス情報を予測し、予測した前記アドレス情報を前記情報管理装置に登録する第２の登録手段（例えば、図６のステップS５の処理を実行する図３のSTUNモジュール１５３）とを備える。
【００３６】
この情報処理装置は、前記第１および第２の登録手段が、前記アドレス情報変換装置が前記アドレス情報通知機能を有するか否かを表す識別情報（例えば、図８のモジュール識別子）を設定する設定手段（例えば、図７のステップS２５の処理を実行する図３のUPnPモジュール１５４または図１０のステップS４４の処理を実行する図３のSTUNモジュール１５３）を備え、前記情報管理装置に、前記識別情報をさらに登録するようにすることができる。
【００３７】
この情報処理装置は、第３のネットワーク（例えば、図１のプライベートネットワーク２２乃至２４のいずれか）に接続されるとともに、他のアドレス情報変換装置を介して前記第２のネットワークに接続される他の情報処理装置（例えば、図１のローカル通信端末Ｂ乃至Ｄのいずれか）と通信するとき、前記他の情報処理装置との通信に用いられるプロトコル（例えば、TCPまたはUDP）を判定するプロトコル判定手段（例えば、図１３のステップS８２の処理を実行する図３のミドルウェア１５２）と、前記プロトコル判定手段により前記他の情報処理装置との通信に用いられるプロトコルがTCPであると判定された場合、前記他の情報処理装置とTCP通信を行うTCP通信手段（例えば、図１３のステップS８３の処理を実行する図３のミドルウェア１５２）と、前記プロトコル判定手段により前記他の情報処理装置との通信に用いられるプロトコルがUDPであると判定された場合、前記他の情報処理装置とUDP通信を行うUDP通信手段（例えば、図１３のステップS８４の処理を実行する図３のミドルウェア１５２）とをさらに備えるようにすることができる。
【００３８】
この情報処理装置は、前記TCP通信手段が、前記情報管理装置から前記他の情報処理装置の前記第２のネットワーク上のアドレス情報および前記識別情報を取得する取得手段（例えば、図１４のステップS１０３の処理を実行する図３のミドルウェア１５２）と、前記取得手段により取得された前記第２のネットワーク上のアドレス情報および前記識別情報に基づいて、TCPコネクションを提供するコネクション提供手段（例えば、図１４のステップS１０４の処理を実行する図３のミドルウェア１５２）とを備えるようにすることができる。
【００３９】
この情報処理装置は、前記コネクション提供手段が、前記情報処理装置の前記識別情報に基づいて、前記アドレス情報変換装置が前記アドレス情報通知機能を有しているか否かを判定する第１の識別情報判定手段（図１６のステップS１４１の処理を実行する図３のミドルウェア１５２）と、前記他の情報処理装置の前記識別情報に基づいて、前記他のアドレス情報変換装置が前記アドレス情報通知機能を有しているか否かを判定する第２の識別情報判定手段（図１６のステップS１４２またはS１４５の処理を実行する図３のミドルウェア１５２）とを備え、前記第１と第２の識別情報判定手段の判定結果に基づいてTCPコネクションを提供するようにすることができる。
【００４０】
この情報処理装置は、前記UDP通信手段が、前記情報管理装置から前記他の情報処理装置の前記第２のネットワーク上のアドレス情報および前記識別情報を取得する取得手段（例えば、図１７のステップS１６３の処理を実行する図３のミドルウェア１５２）と、
前記取得手段により取得された前記第２のネットワーク上のアドレス情報および前記識別情報に基づいて、UDP通信の準備を行う通信準備手段（例えば、図１６のステップS１６４の処理を実行する図３のミドルウェア１５２）とを備えるようにすることができる。
【００４１】
この情報処理装置は、前記通信準備手段が、前記情報処理装置の前記識別情報に基づいて、前記アドレス情報変換装置が前記アドレス情報通知機能を有しているか否かを判定する第１の識別情報判定手段（図１８のステップS１８３の処理を実行する図３のミドルウェア１５２）と、前記他の情報処理装置の前記識別情報に基づいて、前記他のアドレス情報変換装置が前記アドレス情報通知機能を有しているか否かを判定する第２の識別情報判定手段（図１８のステップS１８１）とを備え、前記第１または第２の識別情報判定手段の判定結果に基づいて、UDP通信の準備を行うようにすることができる。
【００４２】
本発明により情報処理方法が提供される。この情報処理方法は、第１のネットワーク（例えば、図１のプライベートネットワーク２１）に接続されるとともに、アドレス情報（例えば、IPアドレスとポート番号）を変換するアドレス情報変換装置（例えば、図１のルータ４１）を介して第２のネットワーク（例えば、図１のインターネット１）に接続される情報処理装置（例えば、図１のローカル通信端末Ａ）の情報処理方法であって、前記アドレス情報変換装置が前記情報処理装置の前記第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能（例えば、UPnP）を有しているか否かを判定する判定ステップ（例えば、図６のステップS３）と、前記判定ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していると判定された場合、前記アドレス通知機能により前記情報処理装置の前記第２のネットワーク上のアドレス情報を取得し、取得した前記アドレス情報を前記第２のネットワークに接続される情報管理装置（例えば、図１の中継サーバ６３）に登録する第１の登録ステップ（例えば、図６のステップS４）と、前記判定ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していないと判定された場合、前記第２ネットワークに接続され、前記第１のネットワークに接続されている情報処理装置の前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置（例えば、図１のSTUNサーバ６１と６２）から提供される情報（例えば、STUNサーバ６１と６２からの応答パケットに記述されるNATのポート番号）に基づいて、前記情報処理装置の前記第２のネットワーク上のアドレス情報を予測し、予測した前記アドレス情報を前記情報管理装置に登録する第２の登録ステップ（例えば、図６のステップS５）とを含む。
【００４３】
本発明によりプログラムが提供される。このプログラムは、第１のネットワーク（例えば、図１のプライベートネットワーク２１）に接続されるとともに、アドレス情報（例えば、IPアドレスとポート番号）を変換するアドレス情報変換装置（例えば、図１のルータ４１）を介して第２のネットワーク（例えば、図１のインターネット１）に接続される情報処理装置（例えば、図１のローカル通信端末Ａ）のプログラムであって、前記アドレス情報変換装置が前記情報処理装置の前記第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能（例えば、UPnP）を有しているか否かの判定を制御する判定制御ステップ（例えば、図６のステップS３）と、前記判定制御ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していると判定された場合、前記アドレス通知機能により前記情報処理装置の前記第２のネットワーク上のアドレス情報を取得し、取得した前記アドレス情報を前記第２のネットワークに接続される情報管理装置（例えば、図１の中継サーバ６３）に登録するように制御する第１の登録制御ステップ（例えば、図６のステップS４）と、前記判定制御ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していないと判定された場合、前記第２ネットワークに接続され、前記第１のネットワークに接続されている情報処理装置の前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置（例えば、図１のSTUNサーバ６１と６２）から提供される情報（例えば、STUNサーバ６１と６２からの応答パケットに記述されるNATのポート番号）に基づいて、前記情報処理装置の前記第２のネットワーク上のアドレス情報を予測し、予測した前記アドレス情報を前記情報管理装置に登録するように制御する第２の登録制御ステップ（例えば、図６のステップS５）とをコンピュータに実行させる。
【００４４】
本発明により記録媒体が提供される。この記録媒体は、第１のネットワーク（例えば、図１のプライベートネットワーク２１）に接続されるとともに、アドレス情報（例えば、IPアドレスとポート番号）を変換するアドレス情報変換装置（例えば、図１のルータ４１）を介して第２のネットワーク（例えば、図１のインターネット１）に接続される情報処理装置（例えば、図１のローカル通信端末Ａ）のプログラムが記録されている記録媒体であって、前記アドレス情報変換装置が前記情報処理装置の前記第２のネットワーク上のアドレス情報を通知するアドレス情報通知機能（例えば、UPnP）を有しているか否かの判定を制御する判定制御ステップ（例えば、図６のステップS３）と、前記判定制御ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していると判定された場合、前記アドレス通知機能により前記情報処理装置の前記第２のネットワーク上のアドレス情報を取得し、取得した前記アドレス情報を前記第２のネットワークに接続される情報管理装置（例えば、図１の中継サーバ６３）に登録するように制御する第１の登録制御ステップ（例えば、図６のステップS４）と、前記判定制御ステップの処理により、前記アドレス情報変換装置が前記アドレス通知機能を有していないと判定された場合、前記第２ネットワークに接続され、前記第１のネットワークに接続されている情報処理装置の前記第２のネットワーク上のアドレス情報に関する情報を提供するアドレス情報提供装置（例えば、図１のSTUNサーバ６１と６２）から提供される情報（例えば、STUNサーバ６１と６２からの応答パケットに記述されるNATのポート番号）に基づいて、前記情報処理装置の前記第２のネットワーク上のアドレス情報を予測し、予測した前記アドレス情報を前記情報管理装置に登録するように制御する第２の登録制御ステップ（例えば、図６のステップS５）とをコンピュータに実行させるプログラムが記録される。
【００４５】
以下、図面を参照して、本発明の実施の形態について説明する。図１は、本発明を適用した情報通信システムの構成例を示すブロック図である。同図には、インターネット１に、NAT（またはNAPT）機能を有するルータ４１乃至４４が接続されている。ルータ４１乃至４４は、それぞれ自身の配下にプライベートネットワーク２１乃至２４をもっており、プライベートネットワーク２１乃至２４に接続されるローカル通信端末A乃至Dには、それぞれ、プライベートネットワーク２１乃至２４のアドレス体系に従って、それぞれの内部においてのみ有効なプライベートアドレスが割り当てられている。
【００４６】
ローカル通信端末A乃至Dは、ユーザの指令に基づいて、ビデオチャット、オンラインゲームなどのアプリケーションを実行し、ネットワークに接続された他の通信機器と通信を行う。ルータ４１乃至４４は、NAT機能により、ローカル通信端末A乃至Dが、インターネット１を介した通信を行う場合、ローカル通信端末A乃至Dがインターネット１に向けて送信するパケットに付されたプライベートネットワーク２１乃至２４上のIPアドレス（プライベートアドレス）とポート番号を、インターネット１上のIPアドレス（グローバルアドレス）と、所定のアルゴリズムにより設定されたポート番号に変換して、インターネット１に転送する。このとき、ローカル通信端末A乃至Dに割り当てられたプライベートアドレスおよびポート番号と、NAT機能により変換されたグローバルアドレスおよびポート番号を対応付けるテーブルがルータ４１乃至４４に記憶される。
【００４７】
また、ルータ４１乃至４４は、NAT機能により、インターネット１から受信したパケットに付されたIPアドレス（グローバルアドレス）とポート番号を、上述したテーブルを参照して、ローカル通信端末A乃至Dに割り当てられたプライベートアドレスおよびポート番号に変換し、プライベートネットワーク２１乃至２４に転送する。
【００４８】
ここで、ルータ４１乃至４４のNAT機能により変換されるグローバルアドレスは、ルータ４１乃至４４のそれぞれがインターネット１に接続されるインタフェース４１−１乃至４４−１に割り当てられたグローバルアドレスとなる。また、ポート番号は、ルータ４１乃至４４のそれぞれ実装する個々のアルゴリズムにより選択され、変換される。
【００４９】
例えば、ローカル通信端末Aがインターネット１に接続される通信機器（例えば、STUNサーバ６１）と通信する場合、ローカル通信端末Aは、通信機器に向けてパケットを送信する。このとき、ルータ４１は、ローカル通信端末Aが送信したパケットをインターネット１に転送するが、転送するパケットの送信元アドレスを、ローカル通信端末Aに割り当てられたプライベートアドレス（例えば、「aaa.aaa.aaa.aaa」）をインタフェース４１−１に割り当てられたグローバルアドレス（例えば、「qqq.qqq.qqq.qqq」）に変換する。また、ルータ４１は、転送するパケットの送信元ポート番号（例えば、「3000」）を、現在ルータ４１が使用していないポート番号（例えば、「3010」）に変換する。
【００５０】
そして、ローカル通信端末Aがインターネット１に接続される別の通信機器（例えば、STUNサーバ６２）と通信する場合、ルータ４１は、ローカル通信端末Aが送信したパケットをインターネット１に転送する。このとき、転送するパケットの送信元アドレスが、同様にグローバルアドレスに変換されるが、送信元ポート番号は、直近に使用したポート番号（「3010」）に「１」を加えた値が選択されて変換される（いまの場合、送信元ポート番号は「3011」に変換される）。
【００５１】
このように、ルータ４１は、ローカル端末Aがインターネット１に接続される通信機器と通信するとき、通信機器に対応してポート番号を１ずつ増やしていく。すなわち、ルータ４１のNAT機能は、送信先（通信相手）が変化すると、ポート番号を１だけインクリメントする機能を有している。
【００５２】
また、例えば、ローカル通信端末Bがインターネット１に接続される通信機器（例えば、STUNサーバ６１）と通信する場合、ローカル通信端末Bは、通信機器に向けてパケットを送信する。このとき、ルータ４２は、ローカル通信端末Ｂが送信したパケットをインターネット１に転送するが、転送するパケットの送信元アドレスを、ローカル通信端末Bに割り当てられたプライベートアドレス（例えば、「bbb.bbb.bbb.bbb」）をインタフェース４２−１に割り当てられたグローバルアドレス（例えば、「rrr.rrr.rrr.rrr」）に変換する。また、ルータ４２は、転送するパケットの送信元ポート番号（例えば、「3000」）を、現在ルータ４２が使用していないポート番号（例えば、「3020」）に変換する。
【００５３】
ローカル通信端末Bがインターネット１に接続される別の通信機器（例えば、STUNサーバ６２）と通信する場合、ルータ４２は、ローカル通信端末Ｂが送信したパケットをインターネット１に転送する。このとき、ルータ４２は、転送するパケットの送信元アドレスを、同様にグローバルアドレスに変換し、送信元ポート番号も、直近に使用したポート番号と同じ値を選択して変換する（いまの場合、送信元ポート番号を、やはり「3020」に変換する）。
【００５４】
このように、ルータ４２は、ルータ４１と異なるアルゴリズムを有し、送信先（通信相手）が変化しても、ポート番号をインクリメントさせない。
【００５５】
ルータ４３とルータ４４も、同様にインターネット１に転送するパケットの送信元アドレスとポート番号を変換するが、例えば、ルータ４３は、送信先（通信相手）が変化すると、ポート番号を２だけインクリメントする機能（アルゴリズム）を有しており、例えば、ルータ４4は、送信先（通信相手）が変化すると、ポート番号を１０だけインクリメントする機能（アルゴリズム）を有している。
【００５６】
このように、ルータ４１乃至４４は、それぞれ実装する個々のアルゴリズムによりポート番号を変換する。
【００５７】
さらに、ルータ４１とルータ４３はUPnPの機能を実装しており、ローカル通信端末Aまたはローカル通信端末Cから、UPnPのプロトコルに基づく所定の要求パケットを受信すると、ルータ４１とルータ４３のNAT機能により変換されるグローバルアドレスと、ポート番号をローカル通信端末Aまたはローカル通信端末Cに、それぞれ通知する。一方、ルータ４２とルータ４４は、UPnPの機能を実装していない。
【００５８】
また、インターネット１には、STUNサーバ６１、STUNサーバ６２、および中継サーバ６３が接続されている。
【００５９】
STUNサーバ６１と６２は、STUN（Simple Traversal of UDP through NATs）のプロトコルにより、インターネット１を介して受信したパケットの送信元アドレスと送信元ポート番号を記憶し、要求に対応して、記憶している送信元アドレスと送信元ポート番号を送信する。
【００６０】
ローカル通信端末Ａ乃至Ｄは、予めSTUNサーバ６１と６２のグローバルアドレスを記憶しており、STUNのプロトコルにより規定される所定の要求パケットをSTUNサーバ６１または６２に送信することにより、ルータ４１乃至４４のNAT機能により、自身のアドレスとポート番号がどのように変換されたのかを表す情報を取得することができる。
【００６１】
中継サーバ６３は、プライベートネットワーク２１乃至２４に接続されたローカル通信端末A乃至Dが、それぞれNAT越えによりP2P(Peer to Peer)通信を行うことをサポートするものである。また、中継サーバ６３は、例えばインスタントメッセージサービス（以下、IMサービスと称する）を提供し、予め登録されたユーザ（端末）を認証し、ローカル通信端末Ａ乃至Ｄによるアクセスを受け付ける。ローカル通信端末Ａ乃至Ｄは、STUNまたはUPnPの機能を利用して取得された、NATにより変換されたグローバルアドレスとポート番号を中継サーバ６３に送信する。中継サーバ６３は、ローカル通信端末Ａ乃至Ｄから送信されてきたグローバルアドレスとポート番号を記憶し、ローカル通信端末Ａ乃至Ｄからの要求に応じて、記憶しているグローバルアドレスとポート番号をローカル通信端末Ａ乃至Ｄに送信する。
【００６２】
これにより、ローカル通信端末Ａ乃至Ｄは、通信相手のグローバルアドレス（IPアドレス）とポート番号を取得して、P2P通信を行うことができる。
【００６３】
なお、この例では、プライベートネットワーク２１乃至２４には、それぞれ１つのローカル通信端末が接続されているが、実際には２以上のローカル通信端末が接続される。
【００６４】
図２は、ローカル通信端末A（ローカル通信端末B乃至Dも同様）の構成例を示すブロック図である。同図において、CPU（Central  Processing  Unit）１０１は、ROM（Read  Only  Memory）１０２に記憶されているプログラム、または記憶部１０８からRAM（Random  Access  Memory）１０３にロードされたプログラムに従って各種の処理を実行する。RAM１０３にはまた、CPU１０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【００６５】
CPU１０１、ROM１０２、およびRAM１０３は、バス１０４を介して相互に接続されている。このバス１０４にはまた、入出力インタフェース１０５も接続されている。
【００６６】
入出力インタフェース１０５には、キーボード、マウスなどよりなる入力部１０６、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなるディスプレイ（表示部）、並びにスピーカなどよりなる出力部１０７、ハードディスクなどより構成される記憶部１０８、モデム、ターミナルアダプタなどより構成される通信部１０９が接続されている。通信部１０９は、インターネット１などのネットワークを介しての通信処理を行う。
【００６７】
入出力インタフェース１０５にはまた、必要に応じてドライブ１１０が接続され、ドライブ１１０には、プログラムが記録された記録媒体として、例えば、リムーバブルメディア１１１が装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部１０８にインストールされる。
【００６８】
図３は、ローカル通信端末Ａ乃至Ｄに実装されるソフトウェア１３１の構成例を示すブロック図である。この例では、ソフトウェア１３１は、アプリケーション１５１、ミドルウェア１５２、STUNモジュール１５３、UPnPモジュール１５４、および制御モジュール１５５により構成されている。
【００６９】
アプリケーション１５１は、ユーザの指令に基づいて、ビデオチャット、オンラインゲームなどのアプリケーションを提供する。STUNモジュール１５３は、STUNのプロトコルに基づいて所定の動作を実行し、ルータ４１乃至４４のNAT機能により変換されるグローバルアドレスとポート番号の情報を取得する。UPnPモジュール１５４は、UPnPのプロトコルに基づいて所定の動作を実行し、ルータ４１乃至４４がUPnPの機能を実装しているか否かを判定するとともに、ルータがUPnPの機能を実装している場合、NAT機能により変換されるグローバルアドレスとポート番号の情報を取得する。
【００７０】
ミドルウェア１５２は、アプリケーション１５２からの要求に基づいて、STUNモジュール１５３、またはUPnPモジュール１５４を制御し、P2P通信を提供する。
【００７１】
制御モジュール１５５は、アプリケーション１５１、ミドルウェア１５２、STUNモジュール１５３、またはUPnPモジュール１５４からの要求に基づいて、例えば、通信部１０９、ドライブ１１０などの各部を制御する。
【００７２】
図４は、STUNサーバ６１（STUNサーバ６２も同様）の構成例を示すブロック図である。同図において、CPU１７１乃至リムーバブルメディア１８１は、図２のCPU１０１乃至リムーバブルメディア１１１と同様のものなので、その説明は省略する。
【００７３】
図５は中継サーバ６３の構成例を示すブロック図である。同図において、CPU２０１乃至リムーバブルメディア２１１は、やはり図２のCPU１０１乃至リムーバブルメディア１１１と同様のものなので、その説明は省略する。
【００７４】
次に、ローカル通信端末Aが、UPnPまたはSTUNの機能により取得した、NATにより変換されるグローバルアドレスとポート番号を交換情報として、中継サーバ６３に登録する交換情報登録処理について、図６のフローチャートを参照して説明する。この処理は、例えば、ユーザにより入力部１０６を構成するキーボードやマウスなど（図示せず）が操作されることにより指令され、実行されるようにしてよいし、ビデオチャットなどのP2P通信を行うアプリケーションを実行するとき、そのアプリケーションの実行に先立って自動的に実行されるようにしてもよい。
【００７５】
ステップS１において、ミドルウェア１５２は、UPnPモジュール１５４を起動し、自身が接続されているプライベートネットワーク（いまの場合、プライベートネットワーク２１）を、インターネット１に接続しているルータ（いまの場合、ルータ４１）に対して、UPnPにより規定される所定のパケットを送信することにより、自身が接続されているルータがUPnPの機能を有しているか否かをチェックする（UPnPのプロトコルについては、UPnPフォーラムのホームページ（「http://www.upnp.org」）にその詳細が記述されている）。
【００７６】
ステップＳ２において、ミドルウェア１５２は、通信部１０９を介してUPnPルータからの情報を受信する。UPnPのプロトコルでは、プライベートネットワーク２１の中に存在する、他のUPnP機器を発見するために、SSDP（Simple Service Discovery Protocol）というプロトコルが使用される。このプロトコルでは、UPnP機能を有する機器が、自身の情報をXML（eXtensible Markup Language）で記述したパケットを生成し、その機器が接続されているネットワーク（プライベートネットワーク２１）内の他の機器に送信する。UPnP機能を有するNAT（ルータ４１）では、このSSDPでアナウンスされるXMLのDevice Typeが、「InternetGatewayDevice (UPnPの用語で、NATのこと)」と設定されるので、ローカル通信端末Aは、この情報に基づいて、自身がUPnP機能を有するNATの配下にいるか否かを判定できる。なお、ルータ４１がUPnPの機能を実装していない場合、この情報は受信されない。
【００７７】
ステップS３において、ミドルウェア１５２は、UPnPルータからの情報が受信されたか否かを判定する。上述したように、ルータ４１がUPnPの機能を実装している場合、ルータ４１からの情報が、ステップS２の処理で受信されるので、処理はステップS４に進み、ミドルウェア１５２は、UPnPモジュール１５４に、図７を参照して後述するUPnP対応処理を実行させる。これにより、UPnPの機能により、NAT機能で変換されるポート番号が特定され、中継サーバ６３にグローバルアドレスとポート番号が送信される。
【００７８】
一方、所定の時間が経過してもルータからの情報が受信されない場合（ルータ４１がUPnPの機能を実装していない場合）、ステップS３において、情報が受信されなかったと判定され、処理は、ステップS５に進み、ミドルウェア１５２は、STUNモジュール１５３に、図１０を参照して後述するSTUN対応処理を実行させる。これにより、STUNの機能により、NAT機能で変換されるグローバルアドレスとポート番号が特定され、中継サーバ６３に送信される。
【００７９】
次に、図７を参照して、図６のステップS４のUPnP対応処理の詳細について説明する。
【００８０】
ステップS２１において、UPnPモジュール１５４は、NATのIPアドレスを取得する。このとき、例えば、UPnPのプロトコルにより規定される「GetExternalIPAddress」とよばれる一連の動作が実行される。これにより、ルータ４１がUPnPの機能を実装している場合、NAT機能により変換されるグローバルアドレス（いまの場合、インタフェース４１−１のグローバルアドレス）がルータ４１からの応答として、ローカル通信端末Ａに送信される。
【００８１】
ステップS２２において、UPnPモジュール１５４は、任意のポート番号を選択し、UPnPのプロトコルで規定される「GetSpecificPortMappingEntry」とよばれる一連の動作を実行する。これにより、ルータ４１において、ステップS２２で選択されたポート番号が既に使用されているか否かがチェックされ、その結果が、ルータ４１からローカル通信端末Aに応答される。
【００８２】
ステップS２３において、UPnPモジュール１５４は、ルータ４１からの応答に基づいて、ポート番号がルータ４１で既に使用されているか否かを判定し、既に使用されていると判定された場合、ステップS２２に戻り、新たにポート番号を選択する。こうして、既に使用されていないポート番号が選択されるまで、上述した処理が繰り返し実行される。
【００８３】
一方、ステップS２３において、ステップS２２で選択されたポート番号がルータ４１で使用されていないと判定された場合、UPnPモジュール１５４は、ステップS２４に進み、UPnPのプロトコルで規定される「AddPortMapping」とよばれる一連の動作を実行し、ポートを開放する設定を行う。これにより、ルータ４１において、ステップS２２で選択され、ステップS２３で使用されていないと判定されたポート番号（例えば、「3010」）が、ローカル通信端末Aのプライベートアドレスと対応付けられ、テーブルとして記憶される。これ以後、ルータ４１はインターネット１から送信先ポート番号が「3010」に設定されたパケットを受信した場合、そのパケットを、ローカル通信端末Aに転送する。
【００８４】
ステップS２５において、UPnPモジュール１５４は、ルータ４１がUPnP機能を実装しているか否かを表すモジュール識別子を「UPnP」に設定し、RAM１０３に記憶する。
【００８５】
ステップS２６において、UPnPモジュール１５４は、ステップS２５で設定したモジュール識別子、ステップS２１で取得されたNATのグローバルアドレス（IPアドレス）、ステップS２４で開放が設定されたポート番号（NATのポート番号）から交換情報を生成する。
【００８６】
このとき、生成される交換情報の構成例を、図８に示す。同図においては、交換情報を構成する項目の名称と、各項目に設定される値（項目値）の属性が示されている。項目「IP」は、上述したNATのIPアドレス（グローバルアドレス）であり、３２ビットのIPアドレスが８ビットからなる４つのセグメントに分割され、各セグメントのビット値（２進数）が１０進数で表わされて記述される。
【００８７】
項目「PORT」は、上述したNATのポート番号であり、例えば、「3010」が記述される。
【００８８】
項目「PROTOCOL」は、TCP (Transmission Control Protocol)またはUDP (User Datagram Protocol)による通信を指定するものであり、項目値は、「TCP」または「UDP」がユーザの指定に対応して記述される。なお、項目「PROTOCOL」は省略されるようにしてもよい。
【００８９】
項目「MODULE」は、上述したモジュール識別子に対応する項目であり、項目値は、処理したモジュールに対応して、「UPnP」または「STUN」が記述される。いまの場合、UPnPモジュール１５４による処理なので、「UPnP」が記述される。
【００９０】
図９は、実際に生成される交換情報の例を示す図である。同図においては、図８を参照して上述した各項目が記述され、項目に引き続き「＝」で項目値が記述されている。そして各項目と項目値のブロックが「＆」で接続されることにより交換情報が構成されている。すなわち、図９の例の場合、「IP」が「127.0.0.1」、「PORT」が「3010」、「PROTOCOL」が「TCP」、「MODULE」が「UPnP」とされている。
【００９１】
図７に戻って、ステップS２７において、UPnPモジュール１５４は、ステップS２６で作成された、図９に示されるような交換情報を、中継サーバ６３に送信する。
【００９２】
次に、図１０を参照して、図６のステップS５のSTUN対応処理の詳細について説明する。
【００９３】
ステップS４１において、STUNモジュール１５３は、STUNサーバ６１と６２にアクセスし、NATのIPアドレスとポート番号の取得を要求する。これにより、STUNサーバ６１と６２により、ローカル通信端末Aから送信されたパケットが取得されるが、このパケットの送信元アドレスと送信元ポート番号は、ルータ４１により変換されたグローバルアドレスとポート番号（NATのIPアドレスとポート番号）に設定されている。
【００９４】
例えば、ルータ４１は、STUNサーバ６１にパケットを転送するとき、そのパケットの送信元アドレスを、ローカル通信端末Aに割り当てられたプライベートアドレス（例えば、「aaa.aaa.aaa.aaa」）をインタフェース４１−１に割り当てられたグローバルアドレス（例えば、「qqq.qqq.qqq.qqq」）に変換し、そのパケットの送信元ポート番号（例えば、「3000」）を、例えば、「3010」に変換する。また、ルータ４１は、例えば、STUNサーバ６２にパケットを転送するとき、そのパケットの送信元アドレスを同様にグローバルアドレスに変換し、送信元ポート番号を「3011」に変換する。
【００９５】
そして、STUNサーバ６１と６２は、ローカル通信端末Aからの要求を受信すると、取得したパケットの送信元アドレスと送信元ポート番号（NATのIPアドレスとポート番号）を、ペイロード部分に記述したパケットを生成し、これを応答パケットとしてローカル通信端末Aに送信する。
【００９６】
ステップS４２において、STUNモジュール１５３は、STUNサーバ６１と６２のそれぞれから送信された応答パケットを受信し、それぞれの応答パケットからNATのIPアドレスとポート番号を取得する。
【００９７】
ステップS４３において、STUNモジュール１５３は、それぞれの応答パケットに記述されたポート番号に基づいて、次に使用されるNATのポート番号を予測する。このとき、NATのポート番号の予測は、例えば、次のようにして行われる。
【００９８】
ステップS４２で、STUNサーバ６１から受信した応答パケットには、NATのポート番号が、「3010」と記述されており、STUNサーバ６２から受信した応答パケットには、NATのポート番号が、「3011」と記述されている。ここで、STUNモジュール１５３は、２つのポート番号の差分（3011-3010=１）を演算することにより、ルータ４１のNAT機能は、送信先（通信相手）が変化すると、ポート番号を１だけインクリメントする機能を有しているものと認識する。そして、直近に送信されたパケット（いまの場合、STUNサーバ６２に送信されたパケット）のポート番号に上述したポート番号の差分を加算し、次に使用されるNATのポート番号を予測する。いまの場合、次に使用されるNATのポート番号は、「3012（＝3011+1）」と予測される。
【００９９】
ステップS４４において、STUNモジュール１５３は、上述したモジュール識別子を「STUN」に設定し、RAM１０３に記憶する。
【０１００】
ステップS４５において、STUNモジュール１５３は、ステップS４４で設定したモジュール識別子、ステップS４２で取得されたNATのグローバルアドレス（IPアドレス）、ステップS４３で予測したNATのポート番号から、上述した交換情報を生成する。
【０１０１】
ステップS４６において、STUNモジュール１５３は、中継サーバ６３に、ステップS４５で生成した交換情報を送信する。
【０１０２】
このようにして、NATにより変換されるグローバルアドレスとポート番号（NATのIPアドレスとポート番号）が交換情報として、中継サーバ６３に登録される。NATのIPアドレスとポート番号は、ルータ４１がUPnPの機能を有している場合は、UPnPのプロトコルに基づいて取得され、ルータ４１がUPnPの機能を有していない場合は、STUNのプロトコルに基づいて取得されるようにしたので、ルータ４１の機能に関わらず、交換情報を生成することができる。
【０１０３】
また、NATのポート番号は、UPnPの場合、ルータ４１が使用するNATのポート番号の開放が設定される（ポート番号が予約される）のに対して、STUNの場合、ルータ４１が次に使用するNATのポートは、予約されるものではなく、予測される。従って、UPnPの場合の方がより確実なNATのポート番号を取得することができる。上述した例（図６）においては、最初にルータ４１がUPnPの機能を有しているか否かが判定され（図６のステップS３）、ルータ４１がUPnPの機能を有している場合、UPnPのプロトコルに基づいてNATのIPアドレスとポート番号を取得し、ルータ４１がUPnPの機能を有していない場合は、STUNのプロトコルに基づいてNATのIPアドレスとポート番号を取得するようにしたので、結果としてより確実な、NATのIPアドレスとポート番号を取得することができる。
【０１０４】
なお、この例では、ローカル通信端末Aが、中継サーバ６３に交換情報を登録する処理の例について述べたが、ローカル通信端末B乃至Dにおいても同様の処理により、中継サーバ６３に適宜、交換情報が登録される。
【０１０５】
次に、中継サーバ６３における交換情報の蓄積処理について、図１１のフローチャートを参照して説明する。
【０１０６】
ステップS６１において、中継サーバ６３のCPU２０１は、通信部２０９を介して、ローカル通信端末A乃至Dから送信された交換情報を受信する。そして、ステップS６２において、CPU２０１は、ステップS６１で受信した交換情報を、記憶部２０８に記憶する。
【０１０７】
これにより、中継サーバ６３の記憶部２０８には、図１２に示されるような交換情報が蓄積される。同図において、蓄積される情報の項目として、「端末ID」、「IPアドレス」、「ポート番号」、「モジュール」が示されている。この他、「プロトコル」（TCPまたはUDPを示す情報）などが蓄積されるようにしてもよい。
【０１０８】
「IPアドレス」は上述したNATのIPアドレスであり、ローカル通信端末A乃至Dが接続されているルータ４１乃至４４のグローバルアドレスが記述されている。「モジュール」は、上述したモジュール識別子に対応する項目であり、ルータ４１と４３は、UPnPの機能を有しているので、「UPnP」と記述されている。ルータ４２と４４は、UPnPの機能を有していないので、「STUN」と記述されている。「ポート番号」は、上述したNATのポート番号であり、ローカル通信端末AとCの「ポート番号」は、UPnPの機能により開放が設定されたポート番号であり、ローカル通信端末ＢとＤの「ポート番号」は、STUNの機能により、予測されたポート番号である。
【０１０９】
このようにして、中継サーバ６３に交換情報が蓄積される。ローカル通信端末A乃至Dが、他のローカル通信端末と通信を行う場合、中継サーバ６３から通信相手の交換情報を取得することにより、NAT越えしたＰ２Ｐ通信を行うことができる。
【０１１０】
次に、図１３のフローチャートを参照して、ローカル通信端末Ａ乃至Ｄの通信処理について説明する。この処理は、ローカル通信端末Ａ乃至Ｄにおいて、Ｐ２Ｐ通信を行うアプリケーションが起動されたとき、実行される。
【０１１１】
ステップＳ８１において、ミドルウェア１５２は、アプリケーション１５１から通信開始要求があったか否かを判定し、通信開始要求があったと判定されるまで待機する。そして、通信開始要求があったと判定された場合、処理はステップS８２に進む。このとき、アプリケーション１５１から、通信相手の情報と通信の種類（例えば、TCP通信か否かなど）の情報がミドルウェア１５２に通知される。
【０１１２】
ステップＳ８２において、ミドルウェア１５２は、アプリケーション１５１からの通信開始要求は、TCP通信の通信開始要求か否かを判定し、TCP通信の通信開始要求であると判定された場合、ステップS８３に進み、図１４を参照して後述するTCP通信処理を実行する。一方、ステップＳ８２において、アプリケーション１５１からの通信開始要求は、TCP通信の通信開始要求ではないと判定された場合、ミドルウェア１５２は、ステップS８４に進み、図１７を参照して後述するUDP通信処理を実行する。
【０１１３】
ステップS８３またはS８４の処理の後、処理はステップS８５に進み、制御モジュール１５５は、通信の終了が指令されたか否かを判定し、通信の終了が指令されたと判定されるまで待機する。ステップS８５において、通信の終了が指令されたと判定された場合、処理は終了する。
【０１１４】
次に、図１４のフローチャートを参照して、図１３のステップS８３のTCP通信処理の詳細について説明する。
【０１１５】
ステップS１０１において、ミドルウェア１５２は、通信相手の交換情報を既に取得しているか否かを判定し、まだ通信相手の交換情報を取得していないと判定された場合、ステップS１０２に進む。
【０１１６】
ステップS１０２において、ミドルウェア１５２は、中継サーバ６３にアクセスし、交換情報の取得要求を送信する。このとき送信される交換情報取得要求には、通信相手の端末IDと、TCP通信であることを表す通信の種類の情報が含まれており、交換情報取得要求を受信した中継サーバ６３は、図１５を参照して後述する交換情報提供処理を実行する。
【０１１７】
ここで、図１５のフローチャートを参照して、中継サーバ６３の交換情報提供処理について説明する。ステップS１２１において、中継サーバ６３のCPU２０１は、通信部２０９を介して、ローカル通信端末A乃至Dから送信された交換情報取得要求を受信する。
【０１１８】
ステップS１２２において、CPU２０１は、記憶部２０８に記憶（蓄積）されている交換情報の中から、ステップS１２１で受信した交換情報取得要求に含まれている通信相手の端末IDに対応する交換情報を検索し、ステップS１２３において、ステップS１２２で検索した交換情報を、ローカル通信端末A乃至D（ステップS１２１で受信した要求を送信してきた端末）に送信する。ステップＳ１２４において、CPU２０１は、ステップS１２１で受信した交換情報取得要求に含まれている通信相手（の端末IDの端末）に対して、所定の情報を通知する。
【０１１９】
例えば、ローカル通信端末Aから、交換情報取得要求が送信され、その通信相手がローカル通信端末Cであった場合、ステップS１２２で、図１２に示されるような情報の中からローカル通信端末C（端末IDがC）の交換情報が検索され、ステップS１２３でローカル通信端末Aに送信される。
【０１２０】
また、ステップS１２４では、ローカル通信端末Cに対して、ローカル通信端末AからのTCP通信の開始要求があった旨を通知する情報が、ローカル通信端末Aの交換情報とともに送信される。ローカル通信端末Ｃによりこれが受信されると、ローカル通信端末Cのアプリケーション１５１は、ローカル通信端末Aとの通信を開始するために、ローカル通信端末Cのミドルウェア１５２に通信開始を要求する。そして、ローカル通信端末Cにおいても、図１３を参照して上述したように、通信処理が開始される。
【０１２１】
図１４に戻って、ステップS１０３において、ミドルウェア１５２は、図１５のステップS１２３で、中継サーバ６３から送信された交換情報を受信し、取得する。
【０１２２】
なお、ステップS１０１において、通信相手の交換情報を既に取得していると判定された場合、ステップS１０２とS１０３の処理はスキップされる。
【０１２３】
ステップS１０４において、ミドルウェア１５２は、図１６を参照して後述するTCPコネクション提供処理を実行する。これにより、交換情報に基づいて、TCPのコネクションが提供される。
【０１２４】
ステップS１０５において、制御モジュール１５５は、ステップS１０４で提供されたTCPのコネクションに基づいて、TCP通信を行う。
【０１２５】
このようにしてTCP通信が行われる。
【０１２６】
次に、図１６のフローチャートを参照して、図１４のステップS１０４のTCPコネクション提供処理の詳細について説明する。
【０１２７】
ステップS１４１において、ミドルウェア１５２は、自身のモジュール識別子はUPnPか否かを判定し、UPnPであると判定された場合、処理は、ステップS１４２に進む。ステップS１４２において、ミドルウェア１５２は、通信相手のモジュール識別子は、UPnPか否かを判定し、UPnPであると判定された場合、処理は、ステップS１４３に進む。ステップS１４３において、ミドルウェア１５２は、どちらか一方をサーバとして選択する。
【０１２８】
例えば、ローカル通信端末Aがローカル通信端末Cと通信する場合、図１２に示されるように、ローカル通信端末A（実際にはルータ４１）のモジュール識別子とローカル通信端末Ｃ（実際にはルータ４３）のモジュール識別子は、ともにUPnPなので、ローカル通信端末Ａにおいては、ステップS１４１で、自身（ローカル通信端末Ａ）のモジュール識別子はUPnPであると判定され、ステップＳ１４２で、通信相手（ローカル通信端末Ｃ）のモジュール識別子は、UPnPであると判定される。同様に、ローカル通信端末Ｃにおいては、ステップS１４１で、自身（ローカル通信端末Ｃ）のモジュール識別子はUPnPであると判定され、ステップＳ１４２で、通信相手（ローカル通信端末Ａ）のモジュール識別子は、UPnPであると判定される。
【０１２９】
ステップＳ１４３において、例えば、自身と通信相手のIPアドレス（実際にはルータ４１とルータ４３のＩＰアドレス）が比較され、IPアドレスが大きい方をサーバとして選択される。いまの場合、ローカル通信端末ＣのIPアドレスの方が、ローカル通信端末ＡのIPアドレスより大きいので、ローカル通信端末Ｃがサーバとして選択される。なお、サーバが選択される方法はこれに限られるものではなく、要はどちらか一方がサーバとして選択されればよい。これにより、ステップＳ１４８において、ローカル通信端末Ａにおいては、通信相手であるローカル通信端末ＣのIPアドレスとポート番号（実際にはルータ４３のIPアドレスとポート番号）をサーバのIPアドレスとポート番号として、制御モジュール１５５にTCPのコネクションが提供される。また、ローカル通信端末Ｃにおいては、自身のIPアドレスとポート番号（実際にはルータ４１のIPアドレスとポート番号）をサーバのIPアドレスとポート番号として、制御モジュール１５５にTCPのコネクションが提供される。
【０１３０】
一方、ステップＳ１４２において、通信相手のモジュール識別子は、UPnPではないと判定された場合、ステップＳ１４４に進み、ミドルウェア１５２は、自身をサーバとして選択する。
【０１３１】
また、ステップＳ１４１において、自身のモジュール識別子は、UPnPではないと判定された場合、ステップＳ１４５に進み、ミドルウェア１５２は、通信相手のモジュール識別子は、UPnPであるか否かを判定し、通信相手のモジュール識別子がUPnPであると判定された場合、ステップS１４６において、通信相手をサーバとして選択する。
【０１３２】
例えば、ローカル通信端末Aがローカル通信端末Ｂと通信する場合、図１２に示されるように、ローカル通信端末Aのモジュール識別子は、UPnPであり、ローカル通信端末Ｂのモジュール識別子は、UPnPではないので、ローカル通信端末Ａにおいては、ステップS１４１で、自身（ローカル通信端末Ａ）のモジュール識別子はUPnPであると判定され、ステップＳ１４２で、通信相手（ローカル通信端末Ｂ）のモジュール識別子は、UPnPではないと判定される。そして、ステップＳ１４４において、ローカル通信端末A自身がサーバとして選択される。これにより、ステップＳ１４８において、自身のIPアドレスとポート番号をサーバのIPアドレスとポート番号として、制御モジュール１５５にTCPのコネクションが提供される。
【０１３３】
一方、ローカル通信端末Ｂにおいては、ステップS１４１で、自身（ローカル通信端末Ｂ）のモジュール識別子はUPnPではないと判定され、ステップＳ１４２で、通信相手（ローカル通信端末Ａ）のモジュール識別子は、UPnPであると判定される。そして、ステップＳ１４６において、通信相手がサーバとして選択される。これにより、ステップＳ１４８において、ローカル通信端末ＡのIPアドレスとポート番号をサーバのIPアドレスとポート番号として、制御モジュール１５５にTCPのコネクションが提供される。
【０１３４】
ステップS１４５において、通信相手のモジュール識別子はUPnPではないと判定された場合、ステップS１４７に進み、ミドルウェア１５２はエラー処理を実行する。
【０１３５】
例えば、ローカル通信端末Ｂがローカル通信端末Ｄと通信する場合、図１２に示されるように、ローカル通信端末Bのモジュール識別子は、UPnPではなく、ローカル通信端末Ｄのモジュール識別子も、UPnPではないので、ローカル通信端末ＢとＤにおいて、ステップS１４１で、自身のモジュール識別子はUPnPではないと判定され、ステップＳ１４５で、通信相手のモジュール識別子は、UPnPではないと判定される。このような場合、ローカル通信端末ＢとＤのポート番号（実際にはルータ４２と４４のポート番号）は、STUNにより予測されたものであり、正確なポート番号を取得することができないので、TCPのコネクションを提供できない。このため、ステップS１４７においてエラー処理が実行され、通信が不可能である旨がアプリケーション１５１に通知され、ユーザに提示される。
【０１３６】
このようにして、ＴＣＰのコネクションが提供される。
【０１３７】
次に、図１７のフローチャートを参照して、図１３のステップＳ８４のUDP通信処理について説明する。
【０１３８】
ステップS１６１において、ミドルウェア１５２は、通信相手の交換情報を既に取得しているか否かを判定し、まだ通信相手の交換情報を取得していないと判定された場合、ステップS１６２に進む。
【０１３９】
ステップS１６２において、ミドルウェア１５２は、中継サーバ６３にアクセスし、交換情報の取得要求を送信する。このとき送信される交換情報取得要求には、通信相手の端末IDと、UDP通信であることを表す通信の種類の情報が含まれており、交換情報取得要求を受信した中継サーバ６３は、図１５を参照して上述した交換情報提供処理を実行する。
【０１４０】
ステップS１６３において、ミドルウェア１５２は、図１５のステップS１２３で、中継サーバ６３から送信された交換情報を受信し、取得する。
【０１４１】
なお、ステップS１６１において、通信相手の交換情報を既に取得していると判定された場合、ステップS１６２とS１６３の処理はスキップされる。
【０１４２】
ステップS１６４において、ミドルウェア１５２は、図１８を参照して後述するUDP通信準備処理を実行する。これにより、交換情報に基づいて、UDP通信で使用するIPアドレスとポート番号が設定される。
【０１４３】
ステップS１６５において、制御モジュール１５５は、ステップS１６４で準備されたIPアドレスとポート番号に基づいて、UDP通信を行う。
【０１４４】
このようにしてUDP通信が行われる。
【０１４５】
次に、図１８のフローチャートを参照して、図１７のステップS１６４のUDP通信準備処理について説明する。
【０１４６】
ステップS１８１において、ミドルウェア１５２は、通信相手のモジュール識別子は、UPnPか否かを判定し、通信相手のモジュール識別子がUPnPであると判定された場合、ステップS１８２において、送信するパケットの送信先IPアドレスと送信先ポート番号を、交換情報に記述されたIPアドレスとポート番号に設定する。
【０１４７】
例えば、ローカル通信端末Aがローカル通信端末Cと通信する場合、図１２に示されるように、ローカル通信端末A（実際にはルータ４１）のモジュール識別子とローカル通信端末Ｃ（実際にはルータ４３）のモジュール識別子は、ともにUPnPなので、ローカル通信端末Ａにおいては、ステップS１８１で、通信相手（ローカル通信端末Ｃ）のモジュール識別子はUPnPであると判定され、ステップＳ１８２で、通信相手であるローカル通信端末Ｃの交換情報に記述されたIPアドレスとポート番号が、送信するパケットの送信先IPアドレスと送信先ポート番号として設定される。同様に、ローカル通信端末Ｃにおいても、ステップS１８１で、通信相手（ローカル通信端末Ａ）のモジュール識別子はUPnPであると判定され、ステップＳ１８２で、通信相手であるローカル通信端末Ａの交換情報に記述されたIPアドレスとポート番号が、送信するパケットの送信先IPアドレスと送信先ポート番号として設定される。これ以降、ローカル通信端末ＡとＣは、NAT越えのUDP通信を行うことができる。
【０１４８】
一方、ステップS１８１で、通信相手のモジュール識別子がUPnPではないと判定された場合、ステップＳ１８３に進み、ミドルウェア１５２は、自身のモジュール識別子は、UPnPであるか否かを判定し、自身のモジュール識別子がUPnPであると判定された場合、ステップＳ１８４に進み、通信相手からのパケットを受信する。そして、ステップＳ１８５において、ミドルウェア１５２は、送信するパケットの送信先IPアドレスと送信先ポート番号を、ステップS１８４で受信したパケットの送信元IPアドレスと送信元ポート番号に記述されているIPアドレスとポート番号に設定する。
【０１４９】
例えば、ローカル通信端末Aとローカル通信端末Ｂが通信する場合、図１２に示されるように、ローカル通信端末Aのモジュール識別子は、UPnPであり、ローカル通信端末Ｂのモジュール識別子は、UPnPではないので、ローカル通信端末Ｂにおいては、ステップS１８１で、通信相手（ローカル通信端末Ａ）のモジュール識別子はUPnPであると判定され、ステップＳ１８２で、交換情報に記述された通信相手（ローカル通信端末Ａ）のIPアドレスとポート番号が送信するパケットの送信先IPアドレスと送信先ポート番号として設定する。ここで、交換情報に記述されているローカル通信端末Aのポート番号は、UPnPの機能により開放が設定され、予約されているポート番号なので、このポート番号を送信先ポート番号として設定すれば、これ以降、ローカル通信端末Bは、UDP通信により、ローカル通信端末Aに確実にパケットを送信することができる。
【０１５０】
一方、ローカル通信端末Ａにおいては、ステップS１８１で、通信相手（ローカル通信端末Ｂ）のモジュール識別子は、UPnPではないと判定され、ステップS１８３で、自身（ローカル通信端末Ａ）のモジュール識別子は、UPnPであると判定される。
【０１５１】
このとき、ローカル通信端末Aでは、交換情報に記述されているローカル通信端末ＢのIPアドレスとポート番号（実際にはルータ４２のIPアドレスとポート番号）が、送信先IPアドレスと送信先ポート番号として設定されるようにしてもよいが、交換情報に記述されたローカル通信端末Ｂのポート番号は、STUNにより予測されたものであり、不確実性を伴うのでそのポート番号を送信先ポート番号に設定した場合、通信ができないこともあり得る。そこで、ステップS１８４において、ミドルウェア１５２は、ローカル通信端末Bからのパケットを受信し、そのパケットの送信元IPアドレスと送信元ポート番号を、これから送信するパケットの送信先IPアドレスと送信先ポート番号として設定する。
【０１５２】
これにより、ローカル通信端末Aとローカル通信端末Ｂは、確実にUDP通信を行うことができる。
【０１５３】
また、ステップS１８３において、自身のモジュール識別子がUPnPではないと判定された場合、処理は、ステップS１８６に進み、ミドルウェア１５２は、STUNモジュール１５３を起動し、ステップS１８７において、STUNモジュール１５３は、送信するパケットの送信先IPアドレスと送信先ポート番号を後述するように設定する。
【０１５４】
例えば、ローカル通信端末Bとローカル通信端末Dが通信する場合、図１２に示されるように、ローカル通信端末Ｂとローカル通信端末Dのモジュール識別子は、ともにUPnPではないのでローカル通信端末ＢとＤにおいて、ステップS１８１で、通信相手のモジュール識別子は、UPnPではないと判定され、ステップS１８３で、自身のモジュール識別子は、UPnPではないと判定される。
【０１５５】
そして、ステップＳ１８６でSTUNモジュール１５３が起動され、ステップS１８７において、これから送信するパケットの送信先IPアドレスと送信先ポート番号が設定される。
【０１５６】
ステップS１８７では、交換情報に記述されているローカル通信端末Bまたはローカル通信端末DのIPアドレスとポート番号が、送信先IPアドレスと送信先ポート番号として設定されるようにしてもよいし、また、STUNモジュール１５３により、図１０を参照して上述した場合と同様に、NATのポート番号が予測され、予測されたローカル通信端末Bまたはローカル通信端末DのNATのポート番号が、ローカル通信端末Bまたはローカル通信端末Dの間で交換され、そのポート番号が送信先ポート番号として設定されるようにしてもよい。UPnPの場合と異なり、STUNでは、NATのポート番号が予約されていないので、通信を行う直前にNATのポート番号を予測した方が、より確実な通信を行うことができる。
【０１５７】
このようにして、UDP通信で使用されるIPアドレスとポート番号が設定される。
【０１５８】
以上のように、本発明によれば、UPnPまたはSTUNなどの従来のNAT越えの方法では提供できなかったP2P通信を提供することができる。図１９は、UPnPまたはSTUNにより提供できるP2P通信と、本発明により提供できるP2P通信のパターンを表す図である。
【０１５９】
同図において、NAT（ルータ）AとNAT（ルータ）Bは、P2P通信を行う２台の通信端末が接続されるルータ（ＮＡＴ）がUPnP機能を有しているか否かを表しており、UPnP機能を有している場合、「UPnP」と示され、UPnP機能を有していない場合、「NonUPnP」と示されている。また、プロトコルは、P2P通信で利用されるプロトコルがTCPか、またはUDPかを表している。プロトコルの右側には、UPnPモジュール１５４単独、STUNモジュール１５３単独、または本発明（UPnPモジュール１５４とSTUNモジュール１５３の両方を組み合わせて使う場合）によりP2P通信を提供できるか否かが、図中丸（三角）印、または×印で示されている。なお、図中の三角印は、P2P通信を提供できるが、不確実性を伴うことを表している。
【０１６０】
パターン１は、NAT（ルータ）Aが「UPnP」であり、NAT（ルータ）Bが「UPnP」であるルータに接続される通信端末がTCP通信によりNAT越えのP2P通信を行う場合であり、例えば、図１のローカル通信端末Aとローカル通信端末Cが、図１３の通信処理においてTCP通信を行う場合がこれに該当する。
【０１６１】
パターン２は、NAT（ルータ）Aが「UPnP」であり、NAT（ルータ）Bが「NonUPnP」であるルータに接続される通信端末がTCP通信によりNAT越えのP2P通信を行う場合であり、例えば、図１のローカル通信端末Aとローカル通信端末Bが、図１３の通信処理においてTCP通信を行う場合がこれに該当する。
【０１６２】
パターン１とパターン２の場合、STUNモジュール１５３だけでは、TCPコネクションを提供できないので、×印が記述されている。一方、UPnPモジュール１５４単独、または本発明によれば、TCPコネクションを提供できるので、丸印が記述されている。
【０１６３】
パターン３は、NAT（ルータ）Aが「NonUPnP」であり、NAT（ルータ）Bが「NonUPnP」であるルータに接続される通信端末がTCP通信によりNAT越えのP2P通信を行う場合であり、例えば、図１のローカル通信端末Bとローカル通信端末Dが、図１３の通信処理においてTCP通信を行う場合がこれに該当する。
【０１６４】
パターン３の場合、STUNモジュール１５３単独、UPnPモジュール１５４単独、または本発明のいずれでも、TCPコネクションを提供できないので、全て×印が記述されている。
【０１６５】
パターン４は、NAT（ルータ）Aが「UPnP」であり、NAT（ルータ）Bが「UPnP」であるルータに接続される通信端末がTCP通信によりNAT越えのP2P通信を行う場合であり、例えば、図１のローカル通信端末Aとローカル通信端末Cが、図１３の通信処理においてUDP通信を行う場合がこれに該当する。
【０１６６】
パターン５は、NAT（ルータ）Aが「UPnP」であり、NAT（ルータ）Bが「NonUPnP」であるルータに接続される通信端末がTCP通信によりNAT越えのP2P通信を行う場合であり、例えば、図１のローカル通信端末Aとローカル通信端末Bが、図１３の通信処理においてUDP通信を行う場合がこれに該当する。
【０１６７】
パターン４とパターン５の場合、STUNモジュール１５３単独でP2P通信を提供することができる。ただし、STUNモジュール１５３は、上述したように、使用するNATのポート番号を予測するものであり、不確実性を伴うので、三角が記述されている（従来のSTUNのように予測を行わない場合には、×印が記述されることになる）。一方、UPnPモジュール１５４単独、または本発明によれば、UPnPにより予約されたポート番号に基づいて、確実にP2P通信を提供することができるので、丸印が記述されている。
【０１６８】
パターン６は、NAT（ルータ）Aが「NonUPnP」であり、NAT（ルータ）Bが「NonUPnP」であるルータに接続される通信端末がUDP通信によりNAT越えのP2P通信を行う場合であり、例えば、図１のローカル通信端末Bとローカル通信端末Dが、図１３の通信処理においてUDP通信を行う場合がこれに該当する。
【０１６９】
パターン６の場合、STUNモジュール１５３単独では、（不確実性を伴うが）P2P通信を提供することができ、三角印が記述されている（予測機能がなければ×印となる）。一方、UPnPモジュール１５４単独では、通信相手のIPアドレスポート番号が特定できないので×印が記述されている。本発明では、このような場合、STUNモジュール１５３を利用して（図１８のステップS１８６またはS１８７）通信を行うので、不確実性を伴うものの、P2P通信を提供することができ、三角印が記述されている。
【０１７０】
以上のように、本発明は、予測機能を有するSTUNにUPnPを組み合わせてP2P通信を提供するようにしたので、パターン３を除く、全てのパターンにおいてP2P通信を提供することができる。また、パターン４またはパターン５の場合には、不確実性を伴うSTUNではなく、UPnPにより予約されたポート番号に基づいて、P2P通信が提供されるので、より確実にP2P通信を提供することができる。
【０１７１】
なお、上述した一連の処理をハードウェアで実現するか、ソフトウェアで実現するかは問わない。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０１７２】
また、本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１７３】
【図１】本発明を適用した情報通信システムの構成例を示す図である。
【図２】図１のローカル通信端末の構成例を示すブロック図である。
【図３】図２のローカル通信端末のソフトウェアの構成例を示す図である。
【図４】図１のSTUNサーバの構成例を示すブロック図である。
【図５】図１の中継サーバの構成例を示すブロック図である。
【図６】交換情報登録処理を説明するフローチャート図である。
【図７】UPnP対応処理を説明するフローチャートである。
【図８】交換情報の構成例を示す図である。
【図９】交換情報の記述例を示す図である。
【図１０】STUN対応処理を説明するフローチャートである。
【図１１】交換情報蓄積処理を説明するフローチャートである。
【図１２】中継サーバに蓄積される交換情報の例を示す図である。
【図１３】通信処理を説明するフローチャートである。
【図１４】TCP通信処理を説明するフローチャートである。
【図１５】交換情報提供処理を説明するフローチャートである。
【図１６】TCPコネクション提供処理を説明するフローチャートである。
【図１７】UDP通信処理を説明するフローチャートである。
【図１８】UDP通信準備処理を説明するフローチャートである。
【図１９】本発明により提供できるP2P通信のパターンを表す図である。
【符号の説明】
【０１７４】
２１乃至２４  プライベートネットワーク，  ４１乃至４４  ルータ，  ６１，６２  STUNサーバ，  ６３  中継サーバ，  １０１  CPU，  １０８  記憶部，  １０９  通信部，  １５１  アプリケーション，  １５２  ミドルウェア，  １５３  STUNモジュール，  １５４  UPnPモジュール，  ２０１  CPU，  ２０８  記憶部，  ２０９  通信部
【図１】
2005151142.tif 000003
【図２】
2005151142.tif 000004
【図３】
2005151142.tif 000005
【図４】
2005151142.tif 000006
【図５】
2005151142.tif 000007
【図６】
2005151142.tif 000008
【図７】
2005151142.tif 000009
【図８】
2005151142.tif 000010
【図９】
2005151142.tif 000011
【図１０】
2005151142.tif 000012
【図１１】
2005151142.tif 000013
【図１２】
2005151142.tif 000014
【図１３】
2005151142.tif 000015
【図１４】
2005151142.tif 000016
【図１５】
2005151142.tif 000017
【図１６】
2005151142.tif 000018
【図１７】
2005151142.tif 000019
【図１８】
2005151142.tif 000020
【図１９】
2005151142.tif 000021