(57)【要約】【課題】  NATの下に接続されているクライアントがIMサーバを利用して、他のクライアントと、他のクライアントが同一のNATの下に接続されているといないとに拘わらず、簡単に直接通信することができるようにする。【解決手段】  クライアント１１とクライアント１２は、IMサーバ２１に登録されている。クライアント１１は、NAT装置４１を介してIMサーバ２１にクライアント１１の登録アドレスとクライアント１２の登録アドレスが同一であるか否かの判定を要求する。IMサーバ２１は、両者のアドレスが同一であるか否かを調べ、その判定結果をクライアント１１に通知する。クライアント１１は、両アドレスが同一でない場合、クライアント１２とグローバルアドレスを用いて通信処理を行い、同一である場合、ローカルアドレスを用いて、通信処理を行う。本発明は、IMサーバを用いて通信を行うシステムに適用することが可能である。【選択図】  図５
2004173240.tif 000002
【特許請求の範囲】
【請求項１】
第１のネットワークに接続されるとともに、アドレスを変換するアドレス変換装置を介して第２のネットワークに接続される第１の情報処理装置と、前記第１の情報処理装置と通信を行う第２の情報処理装置と、前記第１の情報処理装置と前記第２の情報処理装置との通信を管理する、前記第２のネットワークに接続される第３の情報処理装置とを有する情報処理システムにおいて、
前記第１の情報処理装置は、前記第２の情報処理装置の接続に関する情報を前記第３の情報処理装置に対して要求し、
前記第３の情報処理装置は、前記第２の情報処理装置の接続に関する情報を前記第１の情報処理装置に通知し、
前記第１の情報処理装置は、前記第３の情報処理装置からの通知に基づいて、前記第２の情報処理装置が前記第１の情報処理装置と同一のネットワーク上に接続されているか否かを判断し、前記第２の情報処理装置が前記第１の情報処理装置と同一のネットワーク上に接続されていると判断された場合、前記第１のネットワーク上のアドレスに基づいて前記第２の情報処理装置と通信し、前記第２の情報処理装置が前記第１の情報処理装置と同一のネットワーク上に接続されていないと判断された場合、前記第２のネットワーク上のアドレスに基づいて前記第２の情報処理装置と通信する
ことを特徴とする情報処理システム。
【請求項２】
前記第１の情報処理装置は、前記接続に関する情報として、前記第２の情報処理装置の前記第２のネットワーク上でのアドレスを要求し、
前記第３の情報処理装置は、前記接続に関する情報として、前記第２の情報処理装置の前記第２のネットワーク上でのアドレスを通知し、
前記第１の情報処理装置は、前記第２の情報処理装置の前記第２のネットワーク上でのアドレスに基づいて、前記第２の情報処理装置が前記第１の情報処理装置と同一のネットワーク上に接続されているか否かを判断する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記第１の情報処理装置は、前記接続に関する情報として、前記第２の情報処理装置と前記第１の情報処理装置とが同一のネットワーク上に接続されているか否かの判定を要求し、
前記第３の情報処理装置は、前記第２の情報処理装置と前記第１の情報処理装置とが同一のネットワーク上に接続されているか否かを調査し、調査の結果を、前記接続に関する情報として通知し、
前記第１の情報処理装置は、前記第３の情報処理装置の調査結果の通知に基づいて、前記第２の情報処理装置が前記第１の情報処理装置と同一のネットワーク上に接続されているか否かを判断する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項４】
前記第３の情報処理装置は、前記第１の情報処理装置と前記第２の情報処理装置の前記第２のネットワーク上のアドレスに基づいて、前記第１の情報処理装置と前記第２の情報処理装置とが同一のネットワークに接続されているか否かを調査する
ことを特徴とする請求項３に記載の情報処理システム。
【請求項５】
前記第３の情報処理装置は、前記第２の情報処理装置が前記第１の情報処理装置と同一のネットワークに接続されているか否かを調査するために、同一のアドレス変換装置に接続されているか否かを調査する
ことを特徴とする請求項３に記載の情報処理システム。
【請求項６】
前記第３の情報処理装置は、前記第２の情報処理装置が前記第１の情報処理装置と同一のアドレス変換装置に接続されているか否かを調査するために、前記第１の情報処理装置と前記第２の情報処理装置の前記第２のネットワーク上でのアドレスが同一であるか否かを調査する
ことを特徴とする請求項５に記載の情報処理システム。
【請求項７】
第１のネットワークに接続されるとともに、アドレスを変換するアドレス変換装置を介して第２のネットワークに接続される第１の情報処理装置と、前記第１の情報処理装置と通信を行う第２の情報処理装置と、前記第１の情報処理装置と前記第２の情報処理装置との通信を管理する、前記第２のネットワークに接続される第３の情報処理装置とを有する情報処理システムの情報処理方法において、
前記第１の情報処理装置は、前記第２の情報処理装置の接続に関する情報を前記第３の情報処理装置に対して要求し、
前記第３の情報処理装置は、前記第２の情報処理装置の接続に関する情報を前記第１の情報処理装置に通知し、
前記第１の情報処理装置は、前記第３の情報処理装置からの通知に基づいて、前記第２の情報処理装置が前記第１の情報処理装置と同一のネットワーク上に接続されているか否かを判断し、前記第２の情報処理装置が前記第１の情報処理装置と同一のネットワーク上に接続されていると判断された場合、前記第１のネットワーク上のアドレスに基づいて前記第２の情報処理装置と通信し、前記第２の情報処理装置が前記第１の情報処理装置と同一のネットワーク上に接続されていないと判断された場合、前記第２のネットワーク上のアドレスに基づいて前記第２の情報処理装置と通信する
ことを特徴とする情報処理方法。
【請求項８】
他の情報処理装置と通信を行う情報処理装置であって、第１のネットワークに接続されるとともに、サーバが接続されている第２のネットワークに、アドレスを変換するアドレス変換装置を介して接続される情報処理装置において、
前記サーバに対して、前記他の情報処理装置の接続に関する情報を要求する要求手段と、
前記サーバから前記他の情報処理装置の接続に関する情報の通知を受信する受信手段と、
前記サーバからの通知に基づいて、前記他の情報処理装置が前記情報処理装置と同一のネットワーク上に接続されているか否かを判断し、前記他の情報処理装置が前記情報処理装置と同一のネットワーク上に接続されていると判断された場合、前記第１のネットワーク上のアドレスに基づいて前記他の情報処理装置と通信し、前記他の情報処理装置が前記情報処理装置と同一のネットワーク上に接続されていないと判断された場合、前記第２のネットワーク上のアドレスに基づいて前記他の情報処理装置と通信する通信手段と
を備えることを特徴とする情報処理装置。
【請求項９】
前記要求手段は、前記接続に関する情報として、前記他の情報処理装置の前記第２のネットワーク上でのアドレスを要求し、
前記通信手段は、前記他の情報処理装置の前記第２のネットワーク上でのアドレスに基づいて、前記他の情報処理装置が前記情報処理装置と同一のネットワーク上に接続されているか否かを判断する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記要求手段は、前記接続に関する情報として、前記他の情報処理装置と前記情報処理装置が同一のネットワーク上に接続されているか否かの判定を要求し、
前記通信手段は、前記サーバの判定結果の通知に基づいて、前記他の情報処理装置が前記情報処理装置と同一のネットワーク上に接続されているか否かを判断する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１１】
前記要求手段は、前記他の情報処理装置と前記情報処理装置が同一のネットワーク上に接続されているか否かの判定として、同一のアドレス変換装置に接続されているか否かの判定を要求する
ことを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記要求手段は、前記同一のアドレス変換装置に接続されているか否かの判定として、同一のアドレスを有するか否かの判定を要求する
ことを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記第１のネットワークは、LANであり、
前記第２のネットワークは、インターネットであり、
前記第１のネットワーク上のアドレスは、ローカルアドレスであり、
前記第２のネットワーク上のアドレスは、グローバルアドレスである
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１４】
前記要求手段は、前記他の情報処理装置が同一のネットワークに接続されていないと判定された場合、前記サーバに前記情報処理装置の前記第２のネットワーク上のアドレスの通知をさらに要求する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１５】
前記他の情報処理装置が同一のネットワークに接続されていないと判定された場合、前記通信手段は、前記情報処理装置の前記第２のネットワーク上のアドレスを前記他の情報処理装置に前記サーバを介して送信するとともに、前記他の情報処理装置の前記第２のネットワーク上のアドレスを、前記サーバを介して受信する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１６】
前記他の情報処理装置が同一のネットワークに接続されていると判定された場合、前記通信手段は、前記情報処理装置の前記第１のネットワーク上のアドレスを前記他の情報処理装置に前記サーバを介して送信するとともに、前記他の情報処理装置の前記第１のネットワーク上のアドレスを、前記サーバを介して受信する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１７】
他の情報処理装置と通信を行う情報処理装置であって、第１のネットワークに接続されるとともに、サーバが接続されている第２のネットワークに、アドレスを変換するアドレス変換装置を介して接続される情報処理装置の情報処理方法において、
前記サーバに対して、前記他の情報処理装置の接続に関する情報を要求する要求ステップと、
前記サーバから前記他の情報処理装置の接続に関する情報の通知を受信する受信ステップと、
前記サーバからの通知に基づいて、前記他の情報処理装置が情報処理装置と同一のネットワーク上に接続されているか否かを判断し、前記他の情報処理装置が情報処理装置と同一のネットワーク上に接続されていると判断された場合、前記第１のネットワーク上のアドレスに基づいて前記他の情報処理装置と通信し、前記他の情報処理装置が情報処理装置と同一のネットワーク上に接続されていないと判断された場合、前記第２のネットワーク上のアドレスに基づいて前記他の情報処理装置と通信する通信ステップと
を含むことを特徴とする情報処理方法。
【請求項１８】
他の情報処理装置と通信を行う情報処理装置であって、第１のネットワークに接続されるとともに、サーバが接続されている第２のネットワークに、アドレスを変換するアドレス変換装置を介して接続される情報処理装置のプログラムであって、
前記サーバに対して、前記他の情報処理装置の接続に関する情報を要求する要求ステップと、
前記サーバから前記他の情報処理装置の接続に関する情報の通知を受信する受信ステップと、
前記サーバからの通知に基づいて、前記他の情報処理装置が情報処理装置と同一のネットワーク上に接続されているか否かを判断し、前記他の情報処理装置が情報処理装置と同一のネットワーク上に接続されていると判断された場合、前記第１のネットワーク上のアドレスに基づいて前記他の情報処理装置と通信し、前記他の情報処理装置が情報処理装置と同一のネットワーク上に接続されていないと判断された場合、前記第２のネットワーク上のアドレスに基づいて前記他の情報処理装置と通信する通信ステップと
をコンピュータに実行させることを特徴とするプログラム。
【請求項１９】
第１のネットワークに接続されるとともに、アドレスを変換するアドレス変換装置を介して第２のネットワークに接続される第１の装置と、前記第１の装置と通信する第２の装置との通信を管理する、前記第２のネットワークに接続される情報処理装置において、
前記第２の装置が、前記第１の装置と同一のネットワークに接続されているか否かの判定の要求を、前記第１の装置から受信する受信手段と、
前記第２の装置が、前記第１の装置と同一のネットワークに接続されているか否かを調査する調査手段と、
前記調査手段による調査の結果を前記第１の装置に通知する通知手段と
を備えることを特徴とする情報処理装置。
【請求項２０】
前記調査手段は、前記第２の装置が前記第１の装置と同一のネットワークに接続されているか否かを調査するために、同一のアドレス変換装置に接続されているか否かを調査する
ことを特徴とする請求項１９に記載の情報処理装置。
【請求項２１】
前記調査手段は、前記第２の装置が前記第１の装置と同一のアドレス変換装置に接続されているか否かを調査するために、同一のアドレスを有するか否かを調査する
ことを特徴とする請求項２０に記載の情報処理装置。
【請求項２２】
前記第１のネットワークは、LANであり、
前記第２のネットワークは、インターネットであり、
前記第１のネットワーク上のアドレスは、ローカルアドレスであり、
前記第２のネットワーク上のアドレスは、グローバルアドレスである
ことを特徴とする請求項１９に記載の情報処理装置。
【請求項２３】
前記通知手段は、前記調査手段による調査の結果を、１ビットのデータとして、前記第１の装置に通知する
ことを特徴とする請求項１９に記載の情報処理装置。
【請求項２４】
第１のネットワークに接続されるとともに、アドレスを変換するアドレス変換装置を介して第２のネットワークに接続される第１の装置と、前記第１の装置と通信する第２の装置との通信を管理する、前記第２のネットワークに接続される情報処理装置の情報処理方法において、
前記第２の装置が、前記第１の装置と同一のネットワークに接続されているか否かの判定の要求を、前記第１の装置から受信する受信ステップと、
前記第２の装置が、前記第１の装置と同一のネットワークに接続されているか否かを調査する調査ステップと、
前記調査ステップの処理による調査の結果を前記第１の装置に通知する通知ステップと
を含むことを特徴とする情報処理方法。
【請求項２５】
第１のネットワークに接続されるとともに、アドレスを変換するアドレス変換装置を介して第２のネットワークに接続される第１の装置と、前記第１の装置と通信する第２の装置との通信を管理する、前記第２のネットワークに接続される情報処理装置のプログラムであって、
前記第２の装置が、前記第１の装置と同一のネットワークに接続されているか否かの判定の要求を、前記第１の装置から受信する受信ステップと、
前記第２の装置が、前記第１の装置と同一のネットワークに接続されているか否かを調査する調査ステップと、
前記調査ステップの処理による調査の結果を前記第１の装置に通知する通知ステップと
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置および方法、並びにプログラムに関し、特に、NATを介してインターネットに接続されている場合においても、IMサーバを利用して、他の装置と通信することができるようにした情報処理システム、情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
図１は、従来の情報処理システムの構成例を表している。この構成例においては、インターネット１に、クライアント１１とクライアント１２が接続されているとともに、サーバ１３が接続されている。通常、クライアント１１とクライアント１２は、サーバ１３のインターネット１上のグローバルアドレスとしてのIPアドレスを予め知っているため、サーバ１３と通信することが可能である。従って、クライアント１１やクライアント１２は、サーバ１３から各種の情報の提供を受けることができる。
【０００３】
しかしながら、一般ユーザが利用するクライアント１１とクライアント１２は、それぞれ相手側のインターネット１上のグローバルアドレス（IPアドレス）を知らないので、例えば、クライアント１２がクライアント１１に、インターネット１を介して直接接続することができない。
【０００４】
そこで、例えば、図２に示されるように、インスタントメッセージ機能を有するIM（インスタントメッセージング）サーバ２１が登場してきた。クライアント１１とクライアント１２は、それぞれお互いをIMサーバ２１のバディリスト上に予め登録しておく。IMサーバ２１は、予め登録されているクライアントがインターネット１を介して接続された場合（ログオンしてきた場合）、バディリスト上に登録されている他のクライアントに対して、ログオンしてきたクライアントをその都度通知する。このようにして、IMサーバ２１に接続している各クライアントは、その時点において、ログオンしている他のクライアントを知ることができる。
【０００５】
例えば、クライアント１１とクライアント１２がIMサーバ２１にログオンしている場合において、クライアント１２がクライアント１１に、IMサーバ２１を介してクライアント１２の登録されているアドレス（インターネット１上のグローバルアドレス（IPアドレス））を通知する。また、クライアント１１も登録されているグローバルアドレス（IPアドレス）をIMサーバ２１を介してクライアント１２に通知する。このように、クライアント１１とクライアント１２は、それぞれIMサーバ２１を介して、お互いのグローバルアドレスとしてのIPアドレスを知ることができるので、以後、IMサーバ２１を介さずに、ピアツーピアで、インターネット１を介してセッションを張り、相互に通信することができる。
【０００６】
各ユーザ（クライアント）のグローバルアドレスとしてのIPアドレスは、個人情報に属し、必要以上に他のユーザに知られたくない情報であるが、IMサーバ２１を介して通信を行う場合においては、各ユーザが、自分自身でバディリスト上に登録を認めた他のユーザに対してのみ、グローバルアドレスとしてのIPアドレスの通知が行われるため、プライバシーを確保することが可能となる。そこで、IMサーバの利用が増加しつつある。このようなインスタントメッセージング機能に関しては、雑誌、本などにも紹介されている（例えば、非特許文献１）。
【非特許文献１】神田陽治著、「わかる！インスタントメッセージング」、第５頁乃至第１８頁、平成１４年１月２５日発行、発行者（株）オーム社
【発明の開示】
【発明が解決しようとする課題】
【０００７】
クライアントが、例えば、図３に示されるように、NAT(Network Address Translation)を介して、インターネット１に接続されている場合、他のクライアントと双方向の通信を行うには、グローバスアドレスだけでなく、ローカルアドレスも必要になる。
【０００８】
例えば、図３に示されるシステムにおいては、クライアント１１，５１，５２は、LAN(Local Area Network)３１において、相互に接続されている。そして、このLAN３１に接続されているクライアント１１，５１，５２は、いずれもNAT装置４１を介してインターネット１に接続されている。このNAT装置４１は、インターネット１側のグローバルアドレスとしてのIPアドレスと、ローカルアドレスとしてのLAN３１のアドレス（LAN３１内においてインターネットプロトコルを用いて通信が行われる場合等、LAN３１内においてのみ有効なIPアドレスが使用されることもある）との変換機能を有するものである。
【０００９】
従って、例えば、クライアント１１がIMサーバ２１に接続する場合、クライアント１１は、自分自身のローカルアドレスをソースアドレスとし、IMサーバ２１のIPアドレスをデスティネーションアドレスとしてパケットを送信する。NAT装置４１は、このパケットのソースアドレスを、自分自身のグローバルアドレスとしてのIPアドレスとクライアント１１が接続されているポート番号の組で置き換え、インターネット１を介してIMサーバ２１に送信する。
【００１０】
IMサーバ２１は、クライアント１１にパケットを送信するとき、そのソースアドレスとして、自分自身のグローバルアドレスとしてのIPアドレスを記述し、デスティネーションアドレスに、NAT装置４１から送信されてきたパケットのソースアドレスに記述されていたIPアドレス、すなわちNAT装置４１のグローバルアドレスとしてのIPアドレスを記述する。NAT装置４１は、インターネット１を介してIMサーバ２１からのパケットを受信すると、そのデスティネーションアドレスに記述されているグローバルアドレスとしてのIPアドレスに基づいて、そのパケットが自分自身宛のパケットであることを確認し、取り込むと、さらに、そのデスティネーションアドレスに記述されているポート番号に接続されているクライアント１１にそのパケットを転送する。
【００１１】
このようにして、LAN３１内の各クライアント１１，５１，５２は、それぞれ独自のIPアドレスを有していないが、NAT装置４１が有する１つのグローバルアドレスとしてのIPアドレスを共通に利用することで、インターネット１を介して他の装置と通信することが可能となる。
【００１２】
IMサーバ２１は、各クライアントを登録する場合、そのグローバルアドレスとしてのIPアドレスを登録する。従って、インターネット１に直接（NAT装置を介さずに）接続されているクライアント１２を登録する場合、クライアント１２のグローバルアドレスとしてのIPアドレスが登録されるが、NAT装置４１を介してインターネット１に接続されているクライアント１１を登録する場合、クライアント１１は、グローバルアドレスとしてのIPアドレスを直接保持しているわけではないので、NAT装置４１のグローバルアドレスとしてのIPアドレスと、それに付属するポート番号がIMサーバ２１に登録されることになる。
【００１３】
従って、クライアント１１は、クライアント１２とピアツーピアで通信する場合、IMサーバ２１からクライアント１２のグローバルアドレスとしてのIPアドレスを通知してもらい、クライアント１２はクライアント１１（NAT装置４１）のグローバルアドレスとしてのIPアドレスと、それに付属するポート番号を通知してもらえば、両者はそれらのグローバルアドレスを用いてピアツーピアの通信が可能になる。
【００１４】
しかしながら、図４に示されるように、クライアント１２がクライアント１１と同一のLAN３１内に接続されていた場合、クライアント１１とクライアント１２は、いずれも同一のNAT装置４１を介してインターネット１に接続されていることになる。この場合、クライアント１２とクライアント１１がピアツーピアで通信するのに必要なアドレスは、グローバルアドレスとしてのIPアドレスではなく、LAN３２内のローカルアドレスということになる。
【００１５】
従って、NAT装置４１の下に接続されているクライアント１１のユーザは、ピアツーピアの通信先のクライアント１２が同一のNAT装置４１の下に接続されている場合と接続されていない場合とで、ローカルアドレスとグローバルアドレスを使い分けなければならず、操作性が悪い課題があった。
【００１６】
本発明は、このような状況に鑑みてなされたものであり、NAT装置を介して接続されているクライアントが他のクライアントとピアツーピアで容易に通信することができるようにするものである。
【課題を解決するための手段】
【００１７】
本発明の情報処理システムは、第１の情報処理装置は、第２の情報処理装置の接続に関する情報を第３の情報処理装置に対して要求し、第３の情報処理装置は、第２の情報処理装置の接続に関する情報を第１の情報処理装置に通知し、第１の情報処理装置は、第３の情報処理装置からの通知に基づいて、第２の情報処理装置が第１の情報処理装置と同一のネットワーク上に接続されているか否かを判断し、第２の情報処理装置が第１の情報処理装置と同一のネットワーク上に接続されていると判断された場合、第１のネットワーク上のアドレスに基づいて第２の情報処理装置と通信し、第２の情報処理装置が第１の情報処理装置と同一のネットワーク上に接続されていないと判断された場合、第２のネットワーク上のアドレスに基づいて第２の情報処理装置と通信することを特徴とする。
【００１８】
前記第１の情報処理装置は、接続に関する情報として、第２の情報処理装置の第２のネットワーク上でのアドレスを要求し、第３の情報処理装置は、接続に関する情報として、第２の情報処理装置の第２のネットワーク上でのアドレスを通知し、第１の情報処理装置は、第２の情報処理装置の第２のネットワーク上でのアドレスに基づいて、第２の情報処理装置が第１の情報処理装置と同一のネットワーク上に接続されているか否かを判断するようにすることができる。
【００１９】
前記第１の情報処理装置は、接続に関する情報として、第２の情報処理装置と第１の情報処理装置とが同一のネットワーク上に接続されているか否かの判定を要求し、第３の情報処理装置は、第２の情報処理装置と第１の情報処理装置とが同一のネットワーク上に接続されているか否かを調査し、調査の結果を、接続に関する情報として通知し、第１の情報処理装置は、第３の情報処理装置の調査結果の通知に基づいて、第２の情報処理装置が第１の情報処理装置と同一のネットワーク上に接続されているか否かを判断するようにすることができる。
【００２０】
前記第３の情報処理装置は、第１の情報処理装置と第２の情報処理装置の第２のネットワーク上のアドレスに基づいて、第１の情報処理装置と第２の情報処理装置とが同一のネットワークに接続されているか否かを調査するようにすることができる。
【００２１】
前記第３の情報処理装置は、第２の情報処理装置が第１の情報処理装置と同一のネットワークに接続されているか否かを調査するために、同一のアドレス変換装置に接続されているか否かを調査するようにすることができる。
【００２２】
前記第３の情報処理装置は、第２の情報処理装置が第１の情報処理装置と同一のアドレス変換装置に接続されているか否かを調査するために、第１の情報処理装置と第２の情報処理装置の第２のネットワーク上でのアドレスが同一であるか否かを調査するようにすることができる。
【００２３】
本発明の第１の情報処理方法は、第１の情報処理装置は、第２の情報処理装置の接続に関する情報を第３の情報処理装置に対して要求し、第３の情報処理装置は、第２の情報処理装置の接続に関する情報を第１の情報処理装置に通知し、第１の情報処理装置は、第３の情報処理装置からの通知に基づいて、第２の情報処理装置が第１の情報処理装置と同一のネットワーク上に接続されているか否かを判断し、第２の情報処理装置が第１の情報処理装置と同一のネットワーク上に接続されていると判断された場合、第１のネットワーク上のアドレスに基づいて第２の情報処理装置と通信し、第２の情報処理装置が第１の情報処理装置と同一のネットワーク上に接続されていないと判断された場合、第２のネットワーク上のアドレスに基づいて第２の情報処理装置と通信することを特徴とする。
【００２４】
本発明の第１の情報処理装置は、サーバに対して、他の情報処理装置の接続に関する情報を要求する要求手段と、サーバから他の情報処理装置の接続に関する情報の通知を受信する受信手段と、サーバからの通知に基づいて、他の情報処理装置が情報処理装置と同一のネットワーク上に接続されているか否かを判断し、他の情報処理装置が情報処理装置と同一のネットワーク上に接続されていると判断された場合、第１のネットワーク上のアドレスに基づいて他の情報処理装置と通信し、他の情報処理装置が情報処理装置と同一のネットワーク上に接続されていないと判断された場合、第２のネットワーク上のアドレスに基づいて他の情報処理装置と通信する通信手段とを備えることを特徴とする。
【００２５】
前記要求手段は、接続に関する情報として、他の情報処理装置の第２のネットワーク上でのアドレスを要求し、通信手段は、他の情報処理装置の第２のネットワーク上でのアドレスに基づいて、他の情報処理装置が情報処理装置と同一のネットワーク上に接続されているか否かを判断するようにすることができる。
【００２６】
前記要求手段は、接続に関する情報として、他の情報処理装置と情報処理装置が同一のネットワーク上に接続されているか否かの判定を要求し、通信手段は、サーバの判定結果の通知に基づいて、他の情報処理装置が情報処理装置と同一のネットワーク上に接続されているか否かを判断するようにすることができる。
【００２７】
前記要求手段は、他の情報処理装置と情報処理装置が同一のネットワーク上に接続されているか否かの判定として、同一のアドレス変換装置に接続されているか否かの判定を要求するようにすることができる。
【００２８】
前記要求手段は、同一のアドレス変換装置に接続されているか否かの判定として、同一のアドレスを有するか否かの判定を要求するようにすることができる。
【００２９】
前記第１のネットワークは、LANであり、第２のネットワークは、インターネットであり、第１のネットワーク上のアドレスは、ローカルアドレスであり、第２のネットワーク上のアドレスは、グローバルアドレスでとするようにすることができる。
【００３０】
前記要求手段は、他の情報処理装置が同一のネットワークに接続されていないと判定された場合、サーバに情報処理装置の第２のネットワーク上のアドレスの通知をさらに要求するようにすることができる。
【００３１】
他の情報処理装置が同一のネットワークに接続されていないと判定された場合、通信手段は、情報処理装置の第２のネットワーク上のアドレスを他の情報処理装置にサーバを介して送信するとともに、他の情報処理装置の第２のネットワーク上のアドレスを、サーバを介して受信するようにすることができる。
【００３２】
他の情報処理装置が同一のネットワークに接続されていると判定された場合、通信手段は、情報処理装置の第１のネットワーク上のアドレスを他の情報処理装置にサーバを介して送信するとともに、他の情報処理装置の第１のネットワーク上のアドレスを、サーバを介して受信するようにすることができる。
【００３３】
本発明の第２の情報処理方法は、サーバに対して、他の情報処理装置の接続に関する情報を要求する要求ステップと、サーバから他の情報処理装置の接続に関する情報の通知を受信する受信ステップと、サーバからの通知に基づいて、他の情報処理装置が情報処理装置と同一のネットワーク上に接続されているか否かを判断し、他の情報処理装置が情報処理装置と同一のネットワーク上に接続されていると判断された場合、第１のネットワーク上のアドレスに基づいて他の情報処理装置と通信し、他の情報処理装置が情報処理装置と同一のネットワーク上に接続されていないと判断された場合、第２のネットワーク上のアドレスに基づいて他の情報処理装置と通信する通信ステップとを含むことを特徴とする。
【００３４】
本発明の第１のプログラムは、サーバに対して、他の情報処理装置の接続に関する情報を要求する要求ステップと、サーバから他の情報処理装置の接続に関する情報の通知を受信する受信ステップと、サーバからの通知に基づいて、他の情報処理装置が情報処理装置と同一のネットワーク上に接続されているか否かを判断し、他の情報処理装置が情報処理装置と同一のネットワーク上に接続されていると判断された場合、第１のネットワーク上のアドレスに基づいて他の情報処理装置と通信し、他の情報処理装置が情報処理装置と同一のネットワーク上に接続されていないと判断された場合、第２のネットワーク上のアドレスに基づいて他の情報処理装置と通信する通信ステップとをコンピュータに実行させることを特徴とする。
【００３５】
本発明の第２の情報処理装置は、第２の装置が、第１の装置と同一のネットワークに接続されているか否かの判定の要求を、第１の装置から受信する受信手段と、第２の装置が、第１の装置と同一のネットワークに接続されているか否かを調査する調査手段と、調査手段による調査の結果を第１の装置に通知する通知手段とを備えることを特徴とする。
【００３６】
前記調査手段は、第２の装置が第１の装置と同一のネットワークに接続されているか否かを調査するために、同一のアドレス変換装置に接続されているか否かを調査するようにすることができる。
【００３７】
前記調査手段は、第２の装置が第１の装置と同一のアドレス変換装置に接続されているか否かを調査するために、同一のアドレスを有するか否かを調査するようにすることができる。
【００３８】
前記第１のネットワークは、LANであり、第２のネットワークは、インターネットであり、第１のネットワーク上のアドレスは、ローカルアドレスであり、第２のネットワーク上のアドレスは、グローバルアドレスとするようにすることができる。
【００３９】
前記通知手段は、調査手段による調査の結果を、１ビットのデータとして、第１の装置に通知するようにすることができる。
【００４０】
本発明の第３の情報処理方法は、第２の装置が、第１の装置と同一のネットワークに接続されているか否かの判定の要求を、第１の装置から受信する受信ステップと、第２の装置が、第１の装置と同一のネットワークに接続されているか否かを調査する調査ステップと、調査ステップの処理による調査の結果を第１の装置に通知する通知ステップとを含むことを特徴とする。
【００４１】
本発明の第２のプログラムは、第２の装置が、第１の装置と同一のネットワークに接続されているか否かの判定の要求を、第１の装置から受信する受信ステップと、第２の装置が、第１の装置と同一のネットワークに接続されているか否かを調査する調査ステップと、調査ステップの処理による調査の結果を第１の装置に通知する通知ステップとをコンピュータに実行させることを特徴とする。
【００４２】
第１の本発明においては、第３の情報処理装置は、第２の情報処理装置の接続に関する情報を第１の情報処理装置に通知する。第１の情報処理装置は、その通知に基づいて、第２の情報処理装置が同一のネットワークに接続されているか否かを判定し、同一のネットワークに接続されている場合、第１のネットワーク上のアドレスに基づいて第２の情報処理装置と通信し、第２の情報処理装置が同一のネットワークに接続されていない場合、第２のネットワーク上のアドレスに基づいて第２の情報処理装置と通信する。
【００４３】
第２の本発明においては、サーバに対して、他の情報処理装置が情報処理装置と同一のネットワークに接続されているか否かの判定が要求され、サーバの判定結果に基づいて、他の情報処理装置が同一のネットワークに接続されている場合、第１のネットワーク上のアドレスに基づいて、他の情報処理装置との通信が行われ、他の情報処理装置が同一のネットワークに接続されていない場合、第２のネットワーク上のアドレスに基づいて、他の情報処理装置と通信が行われる。
【００４４】
第３の本発明おいては、第１の他の情報処理装置が第２の他の情報処理装置と同一のネットワークに接続されているか否かの判定の要求が、第１の他の情報処理装置から受信されると、その調査が行われ、調査結果が第１の他の情報処理に通知される。
【発明の効果】
【００４５】
第１の本発明によれば、第１の情報処理装置と第２の情報処理装置が直接通信することが可能なシステムを実現することが可能となる。特に、アドレス変換装置を介して第２のネットワークに接続されている第１の情報処理装置が、第２の情報処理の第１のネットワークのアドレスを直接管理することなく、第２の情報処理装置が第１のネットワークと第２のネットワークのいずれに接続されている場合においても、簡単に直接通信することが可能なシステムを実現することができる。
【００４６】
第２の本発明によれば、他の情報処理装置と直接通信することが可能となる。特に、アドレス変換装置を介して第２のネットワークに接続されている場合において、他の情報処理装置が第１のネットワークと第２のネットワークのいずれに接続されている場合においても、簡単に直接通信することが可能となる。他の情報処理装置の第１のネットワーク上のアドレスを直接管理する必要もない。
【００４７】
第３の本発明によれば、第１の他の情報処理装置と第２の他の情報処理装置を、第１のネットワークを介して通信させることが可能となる。特に、第２の他の情報処理装置がアドレス変換装置を介して第２のネットワークに接続されている場合において、第２の他の情報処理装置が、第１のネットワークと第２のネットワークのいずれに接続されている場合においても、第１の情報処理装置に第２の情報処理装置の第１のネットワーク上のアドレスを管理させることなく、簡単に直接通信させることが可能となる。
【発明を実施するための最良の形態】
【００４８】
図５は、本発明を適用した情報処理システムの構成例を表しており、図１乃至図４における場合と対応する部分には、対応する符号を付してある。
【００４９】
図５の状態においては、インターネット１にIMサーバ２１が接続されており、クライアント１２はNAT装置４１の外部に接続されている。これに対してクライアント１１は、クライアント５１，５２とともに、LAN３１内に接続されているとともにNAT装置４１を介してインターネット１に接続されている。
【００５０】
クライアント１２は、NAT装置を介さずに、インターネット１に直接接続されているため、IMサーバ２１は、インターネット１から見たクライアント１２のポイントＢのアドレスを、クライアント１２のアドレスとして登録する。このポイントＢは、クライアント１２のグローバルアドレスとしてのIPアドレスである。
【００５１】
一方、クライアント１１は、NAT装置４１を介して接続されているため、クライアント１１がIMサーバ２１に自分自身を登録した場合、IMサーバ２１が登録するアドレスは、インターネット１からクライアント１１を見た場合におけるアドレスであるポイントＡのアドレスである。このポイントＡのアドレスは、NAT装置４１のグローバルアドレスとしてのIPアドレスである。
【００５２】
なお、本発明においても、接続状態そのものは、従来の場合と同様であるため、クライアント１１の通信相手としてのクライアント１２が、同じNAT装置の下に接続される場合には、その接続状態は、図４に示されるようになる。
【００５３】
図６は、クライアント１１をパーソナルコンピュータとした場合の構成例を表している。図６において、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)などよりなるディスプレイ、並びにスピーカなどよりなる出力部１２７、ハードディスクなどより構成される記憶部１２８、モデムなどより構成される通信部１２９が接続されている。通信部１２９は、インターネット１やLAN３１を含む各種のネットワークを介しての通信処理を行う。
【００５６】
入出力インタフェース１２５にはまた、必要に応じてドライブ１３０が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア１３１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部１２８にインストールされる。
【００５７】
図７は、クライアント１２をパーソナルコンピュータとした場合の構成例を表している。その構成は、基本的に図６におけるクライアント１１と同様の構成とされている。すなわち、クライアント１２も、クライアント１１のCPU１２１乃至リムーバブルメディア１３１に対応するCPU２２１乃至リムーバブルメディア２３１を有している。
【００５８】
図８は、IMサーバ２１の構成例を表している。このIMサーバ２１も、図６のクライアント１１と基本的に同様の構成とされている。すなわち、図８のIMサーバ２１は、図６のクライアント１１のCPU１２１乃至レムーバブルメディア１３１に対応するCPU３２１乃至リムーバブルメディア３３１を有している。
【００５９】
次に、NAT装置４１の下に接続されているクライアント１１が他のクライアントとピアツーピアで通信する場合における処理について、図９のフローチャートを参照して説明する。なお、IMサーバ２１には、クライアント１１，１２，５１，５２が既に登録されており、クライアント１１のバディリストには、クライアント１２が登録されており、また、クライアント１２のバディリストには、クライアント１１が既に登録されているものとする。クライアント１１の登録アドレスは、NAT装置４１のポイントＡのIPアドレスであり、クライアント１２の登録アドレスは、ポイントＢのIPアドレスである。
【００６０】
ステップＳ１において、クライアント１１のCPU１２１は、通信部１２９を制御し、IMサーバ２１にアクセスさせる。ステップＳ２において、CPU１２１は、これから通信しようとする他のクライアント（いまの場合、クライアント１２）の接続に関する情報として、そのアドレスが、自分自身（クライアント１１）のアドレスと同一であるか否かの判定を要求する。IMサーバ２１のCPU３２１は、通信部３２９を介して、クライアント１１からの要求を受け付けると、登録されているクライアント１２のアドレスを調査して、そのアドレスがクライアント１１の登録されているアドレスと同一であるか否かを判定して、その判定結果を通知してくる（後述する図１０のステップＳ２４）。
【００６１】
クライアント１１のCPU１２１は、インターネット１を介して、IMサーバ２１から送信されてきた判定結果の通知をステップＳ３において、通信部１２９を介して受信する。ステップＳ４において、CPU１２１は、ステップＳ３の処理で受信した判定結果に基づいて、クライアント１２（クライアント１１のバディリストに登録されている他のユーザであって、クライアント１１のユーザがこれから通信しようとするユーザのクライアント）が、クライアント１１と同一のネットワーク上に接続されているか否か、具体的には、そのIMサーバ２１に登録されているアドレスが、クライアント１１のIMサーバ２１に登録されているアドレスと同一であるか否かを判定する。IMサーバ２１からの判定結果は、１ビットのデータとして伝送されてくるので、CPU１２１は、この判定を、迅速かつ確実に、行うことができる。すなわち、例えば、両者のアドレスが同一である場合には、そのビットは論理１とされ、同一でなければ（異なっていれば）論理０とされる。
【００６２】
ステップＳ４において、両者のアドレスが同一であると判定された場合、クライアント１２は、クライアント１１と同一のLAN３１内に接続されている装置である（図５に示される接続状態ではなく、図４に示されるような接続状態である）ということになる。すなわち、図３を参照して説明したように、グローバルアドレスとしてのIPアドレスが同一であるということは、同一のNAT装置を介してIMサーバ２１と通信していることになるので、２つのクライアントは、同一のNAT装置に接続されていること、換言すれば、同一のLAN内に接続されていることになる。そこで、この場合、ステップＳ５において、CPU１２１は、これから通信しようとする他のクライアントを、ローカルアドレスを利用して通信する相手と判定する。そして、ステップＳ６において、CPU１２１は、ローカルアドレスに基づく通信処理を行う。このローカルアドレスに基づく通信処理の詳細については、図１１のフローチャートを参照して後述するが、この処理により、クライアント１１は、クライアント１２とLAN３１におけるローカルアドレスを利用して、ピアツーピアの通信を行う。
【００６３】
また、ステップＳ４において、両者のアドレスが同一ではないと判定された場合、クライアント１２は、クライアント１１が属するLAN３１には接続されていない、例えば、図５に示されるような状態であるということになる。そこで、ステップＳ４において、両者のアドレスが同一ではないと判定された場合（異なっていると判定された場合）、ステップＳ７において、CPU１２１は、他のクライアントを、グローバルアドレスを利用して通信する相手と判定する。そして、ステップＳ８において、CPU１２１は、グローバルアドレスに基づく通信処理を実行する。このグローバルアドレスに基づく通信処理の詳細は、図１３のフローチャートを参照して後述するが、この処理により、CPU１２１は、クライアント１２とグローバルアドレスを利用して通信することになる。
【００６４】
以上のようなクライアント１１の処理に対応して、IMサーバ２１は図１０のフローチャートに示される処理を実行する。
【００６５】
すなわち、IMサーバ２１のCPU３２１は、ステップＳ２１において、クライアント１１からのアクセスを受け付けると、ステップＳ２２において、クライアント１１がステップＳ２の処理で発行した他のクライアント（いまの場合、クライアント１２）の登録アドレスが、クライアント１１と同一の登録アドレスであるか否かの判定の要求を受け付ける。
【００６６】
ステップＳ２３において、CPU３２１は、記憶部３２８に記憶されているクライアント１２の登録アドレス（ポイントＢのグローバルアドレスとしてのIPアドレス）と、クライアント１１の登録アドレス（ポイントＡのグローバルアドレスとしてのIPアドレス）を読み取る（調査する）。そして、CPU３２１は、読み取った２つの登録アドレスが同一であるか否かを判定する。
【００６７】
なお、図１０のステップＳ２３において、LAN３１に複数の連続するIPアドレスが割り付けられている場合には、そのアドレスの下位の部分をマスクすることで、両者を同一のアドレスと判定させるようにすることもできる。同一の装置が複数のグローバルアドレスを有する場合、その複数のグローバルアドレスは、上位のアドレスが一致し、下位のアドレスのみが異なることが多いので、２つのクライアントが、上位のアドレスが同一のグローバルアドレスを用いてIMサーバ２１と通信しているということは、例えば、複数のグローバルアドレスを有する同一のNAT装置を介して通信している、すなわち同一のLAN内に接続されていると判断できるからである。すなわち、クライアント１１はIMサーバ２１に対して、クライアント１２が、同一のNAT装置に接続されているか否かの調査を要求し、IMサーバ２１はこの調査を、両者のグローバルアドレスが同一であるか否かを調べることで行うものということができる。
【００６８】
CPU３２１は、ステップＳ２４において、ステップＳ２３の処理の判定結果を１ビットのデータとして、通信部３２９を介してクライアント１１に通知する。
【００６９】
この判定結果は、例えば、両者のアドレスが同一である場合、論理１とされ、異なっている場合、論理０とされる。このように、判定結果を１ビットのデータとして送信すると、インターネット１におけるトラフィック量を軽減することができる。また、クライアント１１が、例えば、携帯電話機、PDA(Personal Digital Assistants)などの携帯型の情報処理装置のように、比較的軽い処理しか実行できないような装置においても、容易に処理することが可能となる。
【００７０】
次に、図１１のフローチャートを参照して、図９のステップＳ６におけるローカルアドレスに基づく通信処理の詳細について説明する。なお、上述したように、この場合、クライアント１１とクライアント１２は、図４に示されるように、同一のLAN内に（同一のNAT装置の下に）接続されていることになる。
【００７１】
ステップＳ５１において、クライアント１１のCPU１２１は、通信部１２９を制御して、IMサーバ２１を介してローカルアドレスに基づく通信を行うクライアント１２に、自分自身（クライアント１１）のローカルアドレス（LAN３１におけるクライアント１１のアドレス）を通知する。クライアント１１は、LAN３１内に接続されているので、クライアント１１は、LAN３１内における自分自身のローカルアドレスを知ることができる。
【００７２】
IMサーバ２１は、クライアント１１からこの通知を受信すると、これをクライアント１２に転送する。これにより、クライアント１２は、クライアント１１のローカルアドレスを知ることができる。
【００７３】
ステップＳ５２において、CPU１２１は、IMサーバ２１を介して、ローカルアドレスに基づく通信を行うクライアント（いまの場合、クライアント１２）にクライアント１２のローカルアドレスの通知を要求する。IMサーバ２１は、クライアント１１からこの要求を受信すると、この要求をクライアント１２に転送する。クライアント１２は、この要求を受信すると、自分自身のローカルアドレスを通知してくる（後述する図１２のステップＳ７３）。
【００７４】
そこで、ステップＳ５３において、CPU１２１は、IMサーバ２１を介してクライアント１２から送信されてきたローカルアドレスに基づく通信を行うクライアント（クライアント１２）から、そのローカルアドレスの通知を受信する。
【００７５】
以上の処理により、クライアント１１のCPU１２１は、クライアント１２のローカルアドレスを知ることができ、また、クライアント１２もクライアント１１のローカルアドレスを知ることができたので、ステップＳ５４において、CPU１２１は、LAN３１内で、クライアント１２のローカルアドレスに直接セッションを結び、IMサーバ２１を介さずに、ピアツーピアで直接通信を行う。
【００７６】
なお、クライアント１２からクライアント１１への片方向の通信が行われる場合、ステップＳ５２，Ｓ５３の処理は省略される。また、双方向で通信が行われる場合、ステップＳ５２でのクライアント１１からのアドレスの通知の要求に対する返信を、IMサーバ２１を介さずに、ピアツーピアでクライアント１２から通知させ、ステップＳ５３でクライアント１１にこれを受信させるようにしてもよい。あるいはまた、ステップＳ５１で出された通知を受けたクライアント１２はクライアント１１のローカルアドレスを既に知ったことになるので、クライアント１１からのステップＳ５２の要求を待たずに（換言すれば、ステップＳ５１の通知に、ステップＳ５２の通知も含められているとして）、クライアント１２からローカルアドレスをピアツーピアまたはIMサーバ２１を介して通知させ、クライアント１１で受信するようにしてもよい。
【００７７】
この図１１のクライアント１１の処理に対応して、クライアント１２は、図１２のフローチャートに示される処理を実行する。
【００７８】
すなわち、ステップＳ７１において、クライアント１２のCPU２２１は、通信部２２９を介して、クライアント１１がステップＳ５１の処理で出力した通知を受信する。この通知は、クライアント１１のローカルアドレスをクライアント１２に知らせるための通知であり、IMサーバ２１を介してクライアント１１からクライアント１２に送信されてくる。この通知からクライアント１２のCPU２２１は、クライアント１１のローカルアドレスを知ることができる。
【００７９】
ステップＳ７２において、CPU２２１は、通信部２２９を制御し、IMサーバ２１を介してローカルアドレスに基づく通信を行うクライアント（いまの場合、クライアント１１）から、クライアント１２のローカルアドレスの通知の要求を受信する。この要求は、図１１のステップＳ５２の処理により、クライアント１１から発行されたものである。この要求を受信すると、ステップＳ７３において、CPU２２１は、IMサーバ２１を介して、ローカルアドレスに基づく通信を行うクライアント（要求を発行したクライアントであり、いまの場合、クライアント１１）に対して、自分自身（クライアント１２）のローカルアドレスを通知する。この通知は、図１１のステップＳ５３において、クライアント１１により受信される。
【００８０】
これにより、クライアント１２は、クライアント１１のローカルアドレスを知り、クライアント１１もクライアント１２のローカルアドレスを知ることができたので、ステップＳ７４において、CPU２２１は、LAN３１内で、クライアント１１のローカルアドレスに基づいて、クライアント１１とセッションを張り、IMサーバ２１を介さずに、ピアツーピアで通信を行う。
【００８１】
なお、クライアント１２からクライアント１１への片方向の通信が行われる場合、ステップＳ７２，Ｓ７３の処理は省略される。また、双方向で通信が行われる場合、ステップＳ７３では、クライアント１１に、ピアツーピアでローカルアドレスを通知するようにしてもよい。さらに、ステップＳ７１で通知を受信したとき、その後、ステップＳ７２で通知を受信するのを待たずに（換言すれば、ステップＳ７１の通知にステップＳ７２の通知の内容が実質的に含まれているものとして）、ステップＳ７２，Ｓ７３の処理に代えて、クライアント１２からクライアント１１に、クライアント１１からのアドレスの通知に対する返信として、IMサーバ２１を介して、または、ピアツーピアで、クライアント１２のアドレスを通知するようにしてもよい。
【００８２】
次に、図９のステップＳ８におけるグローバルアドレスに基づく通信処理の詳細について、図１３のフローチャートを参照して説明する。この場合には、図５に示されるように、クライアント１２は、クライアント１１が接続されているLAN３１内には接続されていない。
【００８３】
ステップＳ１０１において、クライアント１１のCPU１２１は、IMサーバ２１に自分自身のグローバルアドレスの通知を要求する。すなわち、クライアント１１は、NAT装置４１を介してインターネット１に接続されているため、CPU１２１は、NAT装置４１のポイントＡのグローバルアドレス（IPアドレス）を直接知ることができない。そこで、CPU１２１は、クライアント１１が接続されているNAT装置４１のポイントＡのIPアドレスの通知を、IMサーバ２１に要求する。IMサーバ２１は、この要求に基づいて、クライアント１１（NAT装置４１）のグローバルアドレス（IPアドレス）を送信してくる（後述する図１５のステップＳ１４３）。そこで、ステップＳ１０２において、CPU１２１は、IMサーバ２１から送信されてきた自分自身のグローバルアドレスの通知を受信する。これにより、CPU１２１は、ポイントＡのグローバルアドレス（IPアドレス）を知ることができたことになる。
【００８４】
そこで、ステップＳ１０３において、CPU１２１は、通信部１２９を制御し、ステップＳ１０２の処理で受信した自分自身のグローバルアドレスを、グローバルアドレスに基づく通信処理を行うクライアント（いまの場合、クライアント１２）にIMサーバ２１を介して通知する。これにより、クライアント１２に自分自身（クライアント１１）のグローバルアドレスを知らせることができる。
【００８５】
ステップＳ１０４において、CPU１２１は、グローバルアドレスに基づく通信処理を行うクライアント（いまの場合、クライアント１２）に、そのグローバルアドレスの通知をIMサーバ２１を介して要求する。クライアント１２は、この要求に基づいて、IMサーバ２１を介してクライアント１２のグローバルアドレスを通知してくる（後述する図１４のステップＳ１２３）。そこで、ステップＳ１０５において、CPU１２１は、グローバルアドレスに基づく通信処理を行うクライアント（いまの場合、クライアント１２）からIMサーバ２１を介して送信されてきたグローバルアドレスを受信する。これにより、CPU１２１は、クライアント１２のポイントＢのグローバルアドレスとしてのIPアドレスを知ることができたことになる。
【００８６】
そこで、ステップＳ１０６において、CPU１２１は、インターネット１を介して、クライアント１２とグローバルアドレスに基づいてセッションを張り、IMサーバ２１を介さずに、ピアツーピアで直接通信する処理を行う。
【００８７】
図１３のクライアント１１の処理に対応して、クライアント１２は、図１４のフローチャートに示される処理を実行する。
【００８８】
すなわち、ステップＳ１２１において、クライアント１２のCPU２２１は、グローバルアドレスに基づく通信処理を行うクライアント（いまの場合、クライアント１１）からIMサーバ２１を介してグローバルアドレスを受信する。このグローバルアドレスは、図１３のステップＳ１０３の処理で、クライアント１１からIMサーバ２１を介して送信されてきたものである。
【００８９】
次に、ステップＳ１２２において、CPU２２１は、グローバルアドレスに基づく通信を行うクライアント（いまの場合、クライアント１１）からIMサーバ２１を介してグローバルアドレスの通知の要求を受信する。この要求は、図１３のステップＳ１０４の処理で発行されたものである。ステップＳ１２３において、CPU２２１は、ステップＳ１２２の処理で受信した要求に基づいて、グローバルアドレスに基づく通信処理を行うクライアント（いまの場合、クライアント１１）に、自分自身（クライアント１２）のグローバルアドレス（ポイントＢのIPアドレス）をIMサーバ２１を介して通知する。これにより、クライアント１１とクライアント１２は、いずれもお互いのIPアドレスを知ることができたので、ステップＳ１２４において、CPU２２１は、お互いのグローバルアドレスに基づいて、IMサーバ２１を介さずに、インターネット１上で、ピアツーピアでセッションを張り、通信する処理を行う。
【００９０】
ローカルアドレスに基づく通信処理における場合と同様に、片方向通信の場合、ステップＳ１０４，Ｓ１０５、ステップＳ１２２，Ｓ１２３の処理は省略される。双方向通信の場合、クライアント１１からのアドレスの通知に対する返信として、IMサーバ２１を介さずに、ピアツーピアで、クライアント１２からクライアント１１に、クライアント１２のアドレスを通知するようにしてもよい。また、ステップＳ１０４の処理を実質的にステップＳ１０３に含め、ステップＳ１０３の通知を受けたクライアント１２が、そのグローバルアドレスを、IMサーバ２１を介して、またはピアツーピアで、クライアント１１に通知させるようにしてもよい。
【００９１】
一方、図１３のクライアント１１のグローバルアドレスに基づく通信処理に対応して、IMサーバ２１は、図１５のフローチャートに示される処理を実行する。
【００９２】
ステップＳ１４１において、CPU３２１は、通信部３２９を介してクライアント１１からグローバルアドレスの通知の要求を受信する。この要求は、図１３のステップＳ１０１の処理で発行されたものである。ステップＳ１４２において、CPU３２１は、ステップＳ１４１の処理で受信した要求に基づいて、クライアント１１のグローバルアドレス（登録されているIPアドレス）を調べる。このアドレスは、記憶部３２８に記憶されている。そして、ステップＳ１４３において、CPU３２１は、ステップＳ１４２の処理で調べたグローバルアドレスをクライアント１１に送信する。
【００９３】
IMサーバ２１が、STUN(Simple Traversal of UDP(User Datagram Protocol) through NAT)機能を有している場合、この機能を利用してグローバルアドレスをクライアントに通知することもできることになる。
【００９４】
この場合、CPU３２１は、クライアント１１からグローバルアドレスの通知の要求を受信したとき、そのパケットのソースアドレスに記述されているアドレスを応答用のパケットのデータ部に記述して、その応答用のパケットを送信する。
【００９５】
すなわち、NAT装置４１は、クライアント１１からIMサーバ２１宛のグローバルアドレスの通知の要求のパケットのソースアドレスに、ポイントＡのグローバルアドレスとしてのIPアドレスとクライアント１１のポート番号とを記述する。そこで、IMサーバ２１は、このポイントＡのグローバルアドレスとしてのIPアドレスとクライアント１１のポート番号とをデータ部に記述した、応答用パケットを生成する。
【００９６】
応答用パケットのソースアドレスには、IMサーバ２１のグローバルアドレスとしてのIPアドレスが記述されており、デスティネーションアドレスには、NAT装置４１のポイントＡのIPアドレスとポート番号が記述されている。
【００９７】
NAT装置４１は、IMサーバ２１からの応答パケットを受信すると、そのデスティネーションアドレスがポイントＡの自分自身のグローバルアドレスとしてのIPアドレスであることを確認して、その応答パケットを取り込み、その応答パケットのソースアドレスを、自分自身のLAN３１におけるローカルアドレスに書き換え、デスティネーションアドレスを、クライアント１１のLAN３１におけるローカルアドレスに書き換えて、クライアント１１に送信する。クライアント１１は、その応答パケットのデータ部から、NAT装置４１のポイントＡのグローバルアドレスとしてのIPアドレスを知ることができる。
【００９８】
以上においては、IMサーバ２１において、クライアント１１とクライアント１２の登録アドレスが同一であるか否かを比較判定させるようにしたが、図１６に示されるように、クライアント１１からIMサーバ２１に対して、クライアント１２のIPアドレスの通知を要求させ、IMサーバ２１から送信されてきたクライアント１２のIPアドレスを、クライアント１１において、自分自身のIPアドレスと比較させるようにすることも可能である。
【００９９】
この場合におけるクライアント１１の処理について、図１７のフローチャートを参照して説明する。
【０１００】
ステップＳ２０１において、クライアント１１のCPU１２１は、IMサーバ２１にアクセスする。ステップＳ２０２において、CPU１２１は、IMサーバ２１に、自分自身（クライアント１１）のグローバルアドレス（IPアドレス）の通知を要求する。この要求に基づいて、IMサーバ２１は、クライアント１１（NAT装置４１のグローバルアドレス）を通知してくる（後述する図１８のステップＳ２２４）。そこで、ステップＳ２０３において、CPU１２１は、IMサーバ２１から送信されてくる自分自身（クライアント１１）のグローバルアドレスの通知を受信する。
【０１０１】
ステップＳ２０４において、CPU１２１は、通信相手としての他のクライアント（いまの場合、クライアント１２）の登録アドレスの通知を要求する。この要求に基づいて、IMサーバ２１は、クライアント１２の登録アドレスを通知してくる（後述する図１８のステップＳ２２７）。そこで、ステップＳ２０５において、CPU１２１は、他のクライアント（クライアント１２）の登録アドレスの通知を受信する。
【０１０２】
ステップＳ２０６において、CPU１２１は、ステップＳ２０３の処理で受信した自分自身のグローバルアドレス（IPアドレス）と、ステップＳ２０５の処理で受信した他のクライアント（クライアント１２）の登録アドレス（IPアドレス）とを比較する。ステップＳ２０７において、CPU１２１は、比較の結果、両者のアドレスが同一であるか否かを判定し、同一である場合には、ステップＳ２０８において、他のクライアントをローカルアドレスを利用して通信する相手と判定し、ステップＳ２０９において、ローカルアドレスに基づく通信処理を行う。
【０１０３】
ステップＳ２０７において、アドレスが同一ではないと判定された場合、ステップＳ２１０において、CPU１２１は、他のクライアントをグローバルアドレスを利用して通信する相手と判定し、ステップＳ２１１において、グローバルアドレスに基づく通信処理を行う。
【０１０４】
ステップＳ２０７乃至２１１の処理は、図９のステップＳ４乃至ステップＳ８の処理と同様の処理となる。
【０１０５】
このようなクライアント１１の処理に対応して、IMサーバ２１は、図１８のフローチャートに示される処理を実行する。
【０１０６】
ステップＳ２２１において、IMサーバ２１のCPU３２１は、クライアント１１からのアクセスを受け付ける。ステップＳ２２２において、CPU３２１は、クライアント１１からの要求を受け付ける。この要求は、図１７のステップＳ２０２の処理で発行された要求であり、クライアント１１のグローバルアドレス（IPアドレス）の通知を要求するものである。そこで、ステップＳ２２３において、CPU３２１は、記憶部３２８に記憶されているクライアント１１の登録アドレスを調べる。そして、ステップＳ２２４において、調べた結果得られたクライアント１１の登録アドレス（IPアドレス）を、クライアント１１に通知する。
【０１０７】
なお、以上のステップＳ２２２乃至Ｓ２２４の処理は、図１５のステップＳ１４１乃至Ｓ１４３の処理と同様の処理であり、IMサーバ２１のSTUN機能を利用することもできる。
【０１０８】
ステップＳ２２５において、CPU３２１は、クライアント１１からの要求を受け付ける。この要求は、図１７のステップＳ２０４の処理で発行された要求であり、他のクライアント（いまの場合、クライアント１２）のアドレスの通知を要求するものである。そこで、ステップＳ２２６において、CPU３２１は、記憶部３２８に記憶されている他のクライアント（いまの場合、クライアント１２）の登録アドレス（IPアドレス）を調べ、ステップＳ２２７において、その調べた結果のアドレスをクライアント１１に通知する。
【０１０９】
図１６乃至図１８を参照して説明したようにして、クライアント１１側において、クライアント１１とクライアント１２のIPアドレスを比較させるようにすることも可能である。しかしながら、このようにするには、インターネット１を介して、クライアント１２のプライバシーに属するIPアドレスを、インターネット１を介して伝送する必要が生じる。従って、図５を参照して説明した場合のように、IMサーバ２１側において判定し、判定結果だけをクライアント１１に送信する場合に比べて、インターネット１における転送データのトラフィック量が増加するだけでなく、プライバシーの保護の観点からも、あまり好ましくはない。従って、図５における場合と同様の効果を奏することが可能ではあるが、判定結果だけをIMサーバ２１からクライアント１１に転送させるようにする方が好ましい。
【０１１０】
なお、以上におけるNAT装置４１は、専用の装置として構成される場合は元より、ファイヤウォール、その他の装置に組み込まれるようにしてもよい。また、クライアントは、パーソナルコンピュータの他、携帯電話機、PDAなどにより構成することもできる。
【０１１１】
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０１１２】
この記録媒体は、図６乃至図８に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フロッピディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（ＭＤ（Mini-Disk）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア１３１，２３１，３３１により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM１２２，２２２，３２２や、記憶部１２８，２２８，３２８に含まれるハードディスクなどで構成される。
【０１１３】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１１４】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０１１５】
【図１】従来の情報処理システムの構成例を示す図である。
【図２】従来の情報処理システムの構成例を示す図である。
【図３】従来の情報処理システムの構成例を示す図である。
【図４】従来の情報処理システムの構成例を示す図である。
【図５】本発明を適用した情報処理システムの構成例を示す図である。
【図６】図５のクライアントの構成例を示す図である。
【図７】図５の他のクライアントの構成例を示すブロック図である。
【図８】図５のIMサーバの構成例を示すブロック図である。
【図９】図５のクライアントの処理を説明するフローチャートである。
【図１０】図５のIMサーバの処理を説明するフローチャートである。
【図１１】図９のステップＳ６のローカルアドレスに基づく通信処理を説明するフローチャートである。
【図１２】図１１のローカルアドレスに基づく通信処理に対応して実行される他のクライアントのローカルアドレスに基づく通信処理を説明するフローチャートである。
【図１３】図９のステップＳ８のグローバルアドレスに基づく通信処理を説明するフローチャートである。
【図１４】図１３のグローバルアドレスに基づく通信処理に対応して実行される他のクライアントにおいて実行されるグローバルアドレスに基づく通信処理を説明するフローチャートである。
【図１５】図１３のクライアントのグローバルアドレスに基づく通信処理に対応して実行されるIMサーバの処理について説明するフローチャートである。
【図１６】他の情報処理システムの構成を示す図である。
【図１７】図１６のクライアントの処理を説明するフローチャートである。
【図１８】図１６のIMサーバの処理を説明するフローチャートである。
【符号の説明】
【０１１６】
１  インターネット，  １１，１２  クライアント，  ２１  IMサーバ，  ３１  LAN，  ４１  NAT装置
【図１】
2004173240.tif 000003
【図２】
2004173240.tif 000004
【図３】
2004173240.tif 000005
【図４】
2004173240.tif 000006
【図５】
2004173240.tif 000007
【図６】
2004173240.tif 000008
【図７】
2004173240.tif 000009
【図８】
2004173240.tif 000010
【図９】
2004173240.tif 000011
【図１０】
2004173240.tif 000012
【図１１】
2004173240.tif 000013
【図１２】
2004173240.tif 000014
【図１３】
2004173240.tif 000015
【図１４】
2004173240.tif 000016
【図１５】
2004173240.tif 000017
【図１６】
2004173240.tif 000018
【図１７】
2004173240.tif 000019
【図１８】
2004173240.tif 000020