(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024028039
(43)【公開日】2024-03-01
(54)【発明の名称】プログラム、通信方法、コンピュータ、および通信システム
(51)【国際特許分類】
H04L 12/66 20060101AFI20240222BHJP
H04L 12/22 20060101ALI20240222BHJP
【FI】
H04L12/66
H04L12/22
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022131351
(22)【出願日】2022-08-19
(71)【出願人】
【識別番号】506113602
【氏名又は名称】株式会社コナミデジタルエンタテインメント
(74)【代理人】
【識別番号】110000338
【氏名又は名称】弁理士法人 HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】佐藤 元彦
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA15
5K030HD03
5K030LC13
5K030MA04
5K030MB09
5K030MC08
(57)【要約】
【課題】コンピュータ上のアプリケーションが通信に使用するIPアドレスを当該コンピュータのOSやファームウェア等から取得できない場合であっても、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータを介したP2P通信を実現する。
【解決手段】コンピュータ(10)に、第1信号をサーバ(50)に送信する送信ステップ(S100)と、第1返答を受信する受信ステップ(S106)と、コンピュータ(10)が第1信号の送信に使用したIPアドレスを特定する特定ステップ(S108)と、特定したIPアドレスに宛てた第2信号をルータ(70)が制限しないようにする制限回避ステップ(S110)と、を実行させるプログラム。
【選択図】
図1
【特許請求の範囲】
【請求項1】
IPアドレスに基づいて通信を制限するプロテクション機能を有するルータに接続された第1コンピュータ上で動作するプログラムであって、前記第1コンピュータに、
第1信号を前記ルータを介して第1サーバに送信する送信ステップと、
前記第1信号に対する第1返答を、前記第1サーバから前記ルータを介して受信する受信ステップと、
受信した前記第1返答に基づいて、前記第1コンピュータが前記第1信号の送信に使用したIPアドレスを特定する特定ステップと、
前記ルータを介して第2コンピュータとP2P通信するために、前記第2コンピュータから特定したIPアドレスに宛てた第2信号を前記ルータが制限しないようにする制限回避処理を実行する制限回避ステップと、
を実行させるプログラム。
【請求項2】
前記第1コンピュータは、複数のIPアドレスを有し、当該複数のIPアドレスのうちの何れか1つを通信に使用する、
請求項1に記載のプログラム。
【請求項3】
前記制限回避処理では、前記第1コンピュータに、前記特定したIPアドレス宛の信号を通過させるように前記ルータを設定させる、
請求項1または2に記載のプログラム。
【請求項4】
前記プロテクション機能は、前記第1コンピュータが前記ルータを介して前記第2コンピュータに信号を送信するまで、前記第2コンピュータから送信された信号を前記ルータを介して前記第1コンピュータが受信することを制限する機能であり、
前記制限回避処理では、前記第1コンピュータに、前記第2コンピュータが通信に使用するIPアドレスに宛てた第3信号を、前記第2信号の送信タイミングと同じタイミングで送信させる、
請求項1または2に記載のプログラム。
【請求項5】
前記第1コンピュータが、前記制限回避ステップを実行した後、前記第2コンピュータに何も送信しない期間が閾値を越えた場合に、前記第1コンピュータに、前記第2コンピュータが通信に使用するIPアドレスに宛てた第4信号を送信させる、
請求項4に記載のプログラム。
【請求項6】
前記第1コンピュータが通信に使用するIPアドレスは、任意のタイミングで変更され、
前記第1コンピュータが、前記送信ステップ、前記受信ステップ、前記特定ステップおよび前記制限回避ステップを実行した後、前記第2コンピュータからの信号を所定期間受信しなかった場合に、前記第1コンピュータに、前記送信ステップ、前記受信ステップ、前記特定ステップおよび前記制限回避ステップを再度実行させる、
請求項1または2に記載のプログラム。
【請求項7】
前記第1コンピュータに、
前記第2コンピュータとの通信に基づいてゲームを進行させる進行ステップを実行させ、
前記第2コンピュータとの通信内容、および、前記ゲームの結果情報の少なくとも一方を、前記特定したIPアドレスとともに第2サーバに送信させる、
請求項1または2に記載のプログラム。
【請求項8】
IPアドレスに基づいて通信を制限するプロテクション機能を有するルータに接続された第1コンピュータ上で実行される通信方法であって、
第1信号を前記ルータを介して第1サーバに送信する送信ステップと、
前記第1信号に対する第1返答を、前記第1サーバから前記ルータを介して受信する受信ステップと、
受信した前記第1返答に基づいて、前記第1コンピュータが前記第1信号の送信に使用したIPアドレスを特定する特定ステップと、
前記ルータを介して第2コンピュータとP2P通信するために、前記第2コンピュータから特定したIPアドレスに宛てた第2信号を前記ルータが制限しないようにする制限回避処理を実行する制限回避ステップと、
を含む通信方法。
【請求項9】
IPアドレスに基づいて通信を制限するプロテクション機能を有するルータに接続された第1コンピュータであって、
第1信号を前記ルータを介して第1サーバに送信する送信部と、
前記第1信号に対する第1返答を、前記第1サーバから前記ルータを介して受信する受信部と、
受信した前記第1返答に基づいて、前記第1コンピュータが前記第1信号の送信に使用したIPアドレスを特定する特定部と、
前記ルータを介して第2コンピュータとP2P通信するために、前記第2コンピュータから特定したIPアドレスに宛てた第2信号を前記ルータが制限しないようにする制限回避処理を実行する制限回避部と、
を備えるコンピュータ。
【請求項10】
IPアドレスに基づいて通信を制限するプロテクション機能を有するルータに接続された第1コンピュータと、当該第1コンピュータと前記ルータを介して通信する第1サーバとを備える通信システムであって、
前記第1コンピュータは、
第1信号を前記ルータを介して第1サーバに送信するコンピュータ送信部と、
前記第1信号に対する第1返答を、前記第1サーバから前記ルータを介して受信するコンピュータ受信部と、
受信した前記第1返答に基づいて、前記第1コンピュータが前記第1信号の送信に使用したIPアドレスを特定する特定部と、
前記ルータを介して第2コンピュータとP2P通信するために、前記第2コンピュータから特定したIPアドレスに宛てた第2信号を前記ルータが制限しないようにする制限回避処理を実行する制限回避部と、
を備え、
前記第1サーバは、
前記第1信号を前記第1コンピュータから受信する第1サーバ受信部と、
第1信号に基づいて、前記第1コンピュータが前記第1信号の送信に使用したIPアドレスを示す情報を含む第1返答を前記第1コンピュータに送信する第1サーバ送信部と、
を備える通信システム。
【請求項11】
前記通信システムはさらに、前記第1コンピュータと前記ルータを介して通信する第2サーバを備え、
前記第1コンピュータは、
前記第2コンピュータとの通信に基づいてゲームを進行させる進行部と、
前記コンピュータ送信部は、前記第2コンピュータとの通信内容、および、前記ゲームの結果情報の少なくとも一方を、前記特定したIPアドレスとともに第2サーバに送信し、
前記第2サーバは、
前記第1コンピュータから、前記通信内容および前記結果情報の少なくとも一方と、前記IPアドレスを受信する第2サーバ受信部と、
前記IPアドレスが、前記第1コンピュータが通信に使用するIPアドレスと一致するか否かを判定する管理部と、
を備える
請求項10に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はプログラム、通信方法、通信端末、および通信システムに関する。
【背景技術】
【0002】
コンピュータ上で動作するアプリ―ケーションがP2P(Peer to Peer)通信を行うために、当該コンピュータが通信に使用するIP(Internet Protocol)アドレスを取得する技術が知られている。
【0003】
特許文献1には、DMVPN(Dynamic Multipoint Virtual Private Network)を構成するスポークとして機能し、NAT(Network Address Translation)アドレス変換を行う中継装置の配下に配置される通信装置が開示されている。当該通信装置は、中継装置の外側のアドレス空間からアクセスすることが可能な外部アドレスポート情報を返信する機能を持つアドレス情報提供装置から外部アドレスポート情報を取得する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述のような従来技術では、通信装置が使用しているIPアドレスを取得することはできない。そのため、例えば、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータに上述の通信装置が接続されている場合、通信装置が使用するIPアドレスが必要になるP2P通信ができない場合がある。
【0006】
通信装置のアプリケーションは、通常、通信装置が通信に使用するIPアドレスを、当該通信装置のOS(Operating System)やファームウェア等から、API(Application Programming Interface)等を介して取得する。しかしながら、OSやファームウェアの仕様によっては、アプリケーションが、通信装置のOSやファームウェア等から当該通信装置が通信に使用するIPアドレスを取得できない場合がある。
【0007】
アプリケーションが、通信装置が通信に使用するIPアドレスを取得できない場合、ルータのプロテクション機能によるP2P通信の制限を回避することができず、正常にP2P通信できないという問題がある。
【0008】
本発明の一態様は、コンピュータ上のアプリケーションが、通信に使用するIPアドレスを当該コンピュータのOSやファームウェア等から取得できない場合であっても、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータを介したP2P通信を実現することを目的とする。
【課題を解決するための手段】
【0009】
上記の課題を解決するために、本発明の一態様に係るプログラムは、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータに接続された第1コンピュータ上で動作するプログラムであって、前記第1コンピュータに、第1信号を前記ルータを介して第1サーバに送信する送信ステップと、前記第1信号に対する第1返答を、前記第1サーバから前記ルータを介して受信する受信ステップと、受信した前記第1返答に基づいて、前記第1コンピュータが前記第1信号の送信に使用したIPアドレスを特定する特定ステップと、前記ルータを介して第2コンピュータとP2P通信するために、前記第2コンピュータから特定したIPアドレスに宛てた第2信号を前記ルータが制限しないようにする制限回避処理を実行する制限回避ステップと、を実行させる。
【0010】
上記の課題を解決するために、本発明の一態様に係る通信方法は、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータに接続された第1コンピュータ上で実行される通信方法であって、第1信号を前記ルータを介して第1サーバに送信する送信ステップと、前記第1信号に対する第1返答を、前記第1サーバから前記ルータを介して受信する受信ステップと、受信した前記第1返答に基づいて、前記第1コンピュータが前記第1信号の送信に使用したIPアドレスを特定する特定ステップと、前記ルータを介して第2コンピュータとP2P通信するために、前記第2コンピュータから特定したIPアドレスに宛てた第2信号を前記ルータが制限しないようにする制限回避処理を実行する制限回避ステップと、を含む。
【0011】
上記の課題を解決するために、本発明の一態様に係るコンピュータは、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータに接続された第1コンピュータであって、第1信号を前記ルータを介して第1サーバに送信する送信部と、前記第1信号に対する第1返答を、前記第1サーバから前記ルータを介して受信する受信部と、受信した前記第1返答に基づいて、前記第1コンピュータが前記第1信号の送信に使用したIPアドレスを特定する特定部と、前記ルータを介して第2コンピュータとP2P通信するために、前記第2コンピュータから特定したIPアドレスに宛てた第2信号を前記ルータが制限しないようにする制限回避処理を実行する制限回避部と、を備える。
【0012】
上記の課題を解決するために、本発明の一態様に係る通信システムは、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータに接続された第1コンピュータと、当該第1コンピュータと前記ルータを介して通信する第1サーバとを備える通信システムであって、前記第1コンピュータは、第1信号を前記ルータを介して第1サーバに送信するコンピュータ送信部と、前記第1信号に対する第1返答を、前記第1サーバから前記ルータを介して受信するコンピュータ受信部と、受信した前記第1返答に基づいて、前記第1コンピュータが前記第1信号の送信に使用したIPアドレスを特定する特定部と、前記ルータを介して第2コンピュータとP2P通信するために、前記第2コンピュータから特定したIPアドレスに宛てた第2信号を前記ルータが制限しないようにする制限回避処理を実行する制限回避部と、を備え、前記第1サーバは、前記第1信号を前記第1コンピュータから受信する第1サーバ受信部と、第1信号に基づいて、前記第1コンピュータが前記第1信号の送信に使用したIPアドレスを示す情報を含む第1返答を前記第1コンピュータに送信する第1サーバ送信部と、を備える。
【発明の効果】
【0013】
本発明の一態様によれば、コンピュータ上のアプリケーションが、通信に使用するIPアドレスを当該コンピュータのOSやファームウェア等から取得できない場合であっても、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータを介したP2P通信を実現することができる。
【図面の簡単な説明】
【0014】
【
図1】本発明の第1実施形態に通信システムの構成の一例を示すブロック図である。
【
図2】本発明の第1実施形態に係るコンピュータのハードウェア構成の一例を示す図である。
【
図3】本発明の第1実施形態に係るサーバのハードウェア構成の一例を示す図である。
【
図4】本発明の第1実施形態に係るコンピュータの機能構成の一例を示すブロック図である。
【
図5】本発明の第1実施形態に係るサーバの機能構成の一例を示すブロック図である。
【
図6】本発明の第1実施形態に係るルータの動作の一例を示す図である。
【
図7】本発明の第1実施形態に係るルータの動作の他の例を示す図である。
【
図8】本発明の第1実施形態に係るルータの動作のさらに他の例を示す図である。
【
図9】本発明の第1実施形態に係る通信システムにおいて実行される通信方法の処理手順を示すフロー図である。
【
図10】本発明の第1変形例に係る制限回避部が実行する制限回避処理手順の一例を示すフローチャートである。
【
図11】本発明の第2実施形態に係る通信システムの構成の一例を示すブロック図である。
【
図12】本発明の第2実施形態に係るコンピュータの機能構成の一例を示すブロック図である。
【
図13】本発明の第2実施形態に係るサーバの機能構成の一例を示すブロック図である。
【発明を実施するための形態】
【0015】
〔実施形態1〕
以下、本発明の一実施形態について、詳細に説明する。
【0016】
(通信システム1の構成)
図1は、本実施形態に係る通信システム1の構成の一例を示すブロック図である。通信システム1は、
図1に示すように、コンピュータ10(第1コンピュータ)、コンピュータ30(第2コンピュータ)、サーバ50(第1サーバ)、およびルータ70を備えている。これらの装置は、インターネットを含むネットワークNWを介して接続される。
【0017】
通信システム1では、コンピュータ10は、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータ70に接続されている。そのため、通信システム1では、コンピュータ10上で動作するアプリケーションは、ルータ70を介してサーバ50と通信し、コンピュータ30からの信号を通過させる制限回避処理を行う。なお、本明細書では、コンピュータ10上で動作するアプリケーションが、コンピュータ10を制御してサーバ50等と通信を行うことを、コンピュータ10上で動作するアプリケーションが、サーバ50等と通信を行うと表記する。コンピュータ10上で動作するアプリケーションは、制限回避処理を行うことにより、コンピュータ30上で動作するアプリケーションとP2P通信をすることができる。
【0018】
コンピュータ10とサーバ50との通信方法は特に限定されないが、一例として、コンピュータ10上で動作するアプリケーションはURL(Uniform Resource Locator)を使ってサーバ50と通信する方法が挙げられる。
【0019】
コンピュータ10およびコンピュータ30は、ユーザが利用するコンピュータである。コンピュータ10およびコンピュータ30の例として、PC(Personal Computer)、タブレットPC、スマートフォンおよびフィーチャーフォン等の携帯電話機、携帯情報端末(PDA:Personal Digital Assistant)、据え置き型ゲーム機、および携帯ゲーム機等が挙げられる。
【0020】
また、コンピュータ10およびコンピュータ30が通信に使用するIPアドレスは、IPv6であってもよいし、IPv4であってもよいし、これらの派生であってもよい。
【0021】
また、コンピュータ10およびコンピュータ30は、複数のIPアドレスを有し、複数のIPアドレスのうちの何れか1つを通信に使用してもよい。コンピュータ10およびコンピュータ30が複数のIPアドレスを有する例として、IPv6を使用した場合、および複数のネットワークカードを備える場合が挙げられる。
【0022】
なお、コンピュータ30は一般的なコンピュータであるため、以下では詳細な構成、機能の説明は省略する。
【0023】
サーバ50は、ネットワーク上の1以上のコンピュータで動作するソフトウェアサービスであって、他のコンピュータ(クライアント)から要求や指示などを受け、情報や処理結果などを返すソフトウェアサービスを指す。サーバ50は、実マシンによって実行されてもよく、ハイパーバイザー上で動作する仮想マシンによって実行されてもよい。また、サーバ50は、1つのサーバによって構成されてもよいし、複数のサーバによって構成されてもよい。
【0024】
ルータ70は、コンピュータ10と、コンピュータ30およびサーバ50との通信を仲介するルーティング装置である。また、ルータ70は、上述したように、送信を行った送信先以外のコンピュータからの信号の受信を、IPアドレスに基づいて制限するプロテクション機能を有している。ルータ70のプロテクション機能の例については、後述する。
【0025】
(コンピュータ10のハードウェア構成)
図2は、本実施形態に係るコンピュータ10のハードウェア構成の一例を示す図である。コンピュータ10は、例えば、CPU(Central Processing Unit)11、通信部12、入力部13、記憶部14、および表示部15を備えている。これらの構成要素は、バス16を介して相互に通信可能に接続されている。CPU11は、記憶部14に記憶された各種プログラムを実行し、コンピュータ10の各部を制御する。
【0026】
通信部12は、例えば、イーサネット(登録商標)ポートやUSB等のデジタル入出力ポート、WiFi(登録商標)等の無線通信等を含んで構成される。入力部13は、例えば、タッチパネルとしてディスプレイと一体に構成されており、ユーザの操作により各種の指示が入力される。また、入力部13は、キーボードやマウス、タッチパッドや、音声により各種の指示が入力されるマイクロホンなど、その他の入力装置であってもよい。
【0027】
記憶部14は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read-Only Memory、登録商標)、ROM(Read Only Memory)、およびRAM(Random Access Memory)などを含み、コンピュータ10が処理する各種情報および画像、ならびにアプリケーションを実行するためのプログラム(ゲーム制御プログラムを含む)等を記憶する。なお、記憶部14は、コンピュータ10に内蔵されるものに限らず、USB等のデジタル入出力ポート等によって接続された外付け型の記憶装置でもよい。また、コンピュータ10は、不図示のスピーカ、音声出力端子、カメラ、ジャイロセンサ、GPS(Global Positioning System)受信モジュールなどのハードウェア構成を含んで構成されてもよい。
【0028】
ここで、アプリケーションとは、コンピュータのOSやファームウェア上で動作する、特定の機能や目的のために設計または使用される1または複数のプロセスである。特定の機能や目的の一例として、ゲームが挙げられる。コンピュータが備える少なくとも1つの制御装置(例えばプロセッサ)がアプリケーションを実行するためのプログラムを実行することにより、アプリケーションがコンピュータのOSやファームウェア上で動作する。
【0029】
表示部15は、画像やテキスト等の情報を表示するディスプレイであり、例えば、液晶ディスプレイパネルまたは有機EL(Electro Luminescence)ディスプレイパネルなどを含んで構成される。
【0030】
(サーバ50のハードウェア構成)
図3は、本実施形態に係るサーバ50のハードウェア構成の一例を示す図である。サーバ50は、例えば、CPU51、通信部52、入力部53、および記憶部54を備える。これらの構成要素は、バス55を介して相互に通信可能に接続されている。CPU51は、記憶部54に記憶された各種プログラムを実行し、サーバ50の各部を制御する。
【0031】
通信部52は、例えば、イーサネット(登録商標)ポートやUSB等のデジタル入出力ポート、WiFi(登録商標)等の無線通信等を含んで構成され、CPU51による制御に基づいて、ネットワークNWを介してコンピュータ10や他の装置と通信を行う。
【0032】
入力部53は、例えば、キーボードやマウス、タッチパッドや、音声により各種の指示が入力されるマイクロホンなど、その他の入力装置である。
【0033】
記憶部54は、例えば、HDD、EEPROM、RAMなどを含み、制御プログラム、アプリケーションプログラム、ゲームに必要な各種設定情報および履歴情報などを記憶する。なお、記憶部54は、サーバ50に内蔵されるものに限らず、USB等のデジタル入出力ポート等によって接続された外付け型の記憶装置でもよい。また、記憶部54は、サーバ50とは物理的に離れた外部の記憶装置であってもよく、サーバ50とインターネットなどの通信網を介して接続されてもよい。また、サーバ50は、不図示の表示部、スピーカ、音声出力端子などのハードウェア構成を含んで構成されてもよい。
【0034】
(コンピュータ10の機能構成)
図4は、本実施形態に係るコンピュータ10の機能構成の一例を示すブロック図である。
図4に示すように、コンピュータ10は、記憶部14に記憶されている、アプリケーションを実行するための各種プログラムをCPU11が実行することにより実現される機能構成として、入力受付部110、送信部120、受信部130、特定部140、および制限回避部150を備えている。
【0035】
入力受付部110は、入力部13に対するユーザの操作を受け付ける。
【0036】
送信部120は、ルータ70を介して信号を送信する。送信部120は、例えば、第1信号をルータ70を介してサーバ50に送信する。第1信号の一例として、コンピュータ10が当該第1信号の送信に使用したIPアドレスを通知するよう要求するパケットが挙げられる。また、第1信号は、HTTP(HyperText Transfer Protocol)通信におけるリクエストであってもよい。
【0037】
受信部130は、ルータ70を介して信号を受信する。受信部130は、例えば、第1信号に対する第1返答を、サーバ50からルータ70を介して受信する。第1返答の一例として、コンピュータ10が第1信号の送信に使用したIPアドレスを示すパケットが挙げられる。また、第1返答は、HTTP通信におけるレスポンスであってもよい。
【0038】
特定部140は、コンピュータ10が第1信号の送信に使用したIPアドレスを特定する。例えば、特定部140は、受信部130が受信した第1返答に基づいて、コンピュータ10が第1信号の送信に使用したIPアドレスを特定する。
【0039】
制限回避部150は、ルータ70の制限を回避する制限回避処理を実行する。制限回避部150は、例えば、ルータ70を介してコンピュータ30とP2P通信するために、コンピュータ30から特定したIPアドレスに宛てた第2信号をルータ70が制限しないようにする制限回避処理を実行する。
【0040】
(サーバ50の機能構成)
図5は、本実施形態に係るサーバ50の機能構成の一例を示すブロック図である。
図5に示すように、サーバ50は、記憶部54に記憶されている各種プログラムをCPU51が実行することにより実現される機能構成として、送信部510および受信部520を備えている。
【0041】
送信部510は、ルータ70を介して信号を送信する。送信部510は、例えば、第1信号に基づいて、コンピュータ10が第1信号の送信に使用したIPアドレスを示す情報を含む第1返答をコンピュータ10に送信する。
【0042】
受信部520は、ルータ70を介して信号を受信する。受信部520は、例えば、第1信号をコンピュータ10から受信する。
【0043】
(ルータ70が有するプロテクション機能の例1)
ルータ70が有するプロテクション機能の一例として、コンピュータ10がコンピュータ30に信号を送信するまで、コンピュータ30から送信された信号をコンピュータ10が受信することを制限する機能について、
図6および
図7を参照して説明する。
図6は、本実施形態に係るルータ70の動作の一例を示す図である。
図7は、本実施形態に係るルータ70の動作の他の例を示す図である。
図6および
図7に示す例では、コンピュータ10にはIPアドレス「11111」が設定され、コンピュータ30にIPアドレス「99999」が設定されている。
【0044】
ルータ70は、コンピュータ10が含まれるネットワークから他のネットワークに送信された信号は、制限せずに通過させる。例えば、
図6のAR1に示すように、IPアドレス「11111」のコンピュータ10からIPアドレス「99999」のコンピュータ30へ送信された信号を、ルータ70は通過させる。そして、ルータ70は、IPアドレス「11111」のコンピュータ10から、IPアドレス「99999」のコンピュータ30へ信号の送信があったことを示す送信履歴を記憶する。
【0045】
次に、他のネットワークからコンピュータ10が含まれるネットワークに送信された信号について説明する。一例として、IPアドレス「99999」のコンピュータ30から、ルータ70を介してIPアドレス「11111」のコンピュータ10へ送信された信号について説明する。
【0046】
この場合、ルータ70は、記憶している送信履歴を参照する。そして、IPアドレス「11111」のコンピュータ10からIPアドレス「99999」のコンピュータ30への送信があったことを示す送信履歴があった場合、ルータ70は、
図6のAR2に示すように、IPアドレス「99999」のコンピュータ30からIPアドレス「11111」のコンピュータ10へ送信された信号を通過させる。
【0047】
一方、IPアドレス「11111」のコンピュータ10からIPアドレス「99999」のコンピュータ30への送信があったことを示す送信履歴がなかった場合、ルータ70は、
図7のAR3に示すように、IPアドレス「99999」のコンピュータ30からIPアドレス「11111」のコンピュータ10へ送信された信号を通過させない。
【0048】
ルータ70がこのようなプロテクション機能を有する場合、IPアドレス「99999」のコンピュータ30からIPアドレス「11111」のコンピュータ10へ送信された信号をルータ70が通過させるには、IPアドレス「11111」のコンピュータ10からIPアドレス「99999」のコンピュータ30へ送信した履歴が必要である。
【0049】
但し、コンピュータ10上で動作するアプリケーションが、コンピュータ30から、コンピュータ10が信号を送信するために使用するIPアドレスに宛てた信号を、ルータ70が制限しないようにする後述するような制限回避処理を実行することにより、IPアドレス「99999」のコンピュータ30からIPアドレス「11111」のコンピュータ10へ送信された信号をルータ70に通過させることができる。この制限回避処理を実行するためには、コンピュータ10上で動作するアプリケーションが、コンピュータ10が信号を送信するために使用するIPアドレスを知る必要がある。
【0050】
しかしながら、コンピュータ10上で動作するアプリケーションは、通常、送信元アドレスをセットせずに信号の送信処理を通信ライブラリやOS等を介して行う。そして、通信ライブラリやOS等が送信元アドレスをセットすることにより、コンピュータ10による送信が実行される。そのため、コンピュータ10上で動作するアプリケーションは、通常、コンピュータが信号を送信するために使用したIPアドレスを知ることができない仕様になっている場合がある。
【0051】
他の例として、IPv6環境では、コンピュータ10に設定され得るIPアドレスは複数存在する。さらに、当該複数のIPアドレスには、使用期間が限定された一時アドレスが含まれる。しかしながら、OSやファームウェア等によっては、アプリケーションは当該複数のIPアドレスを取得できても、コンピュータ10がどのIPアドレスを信号の送信に使用するかは、アプリケーションからは知ることができない場合がある。
【0052】
さらに他の例として、コンピュータ10がSTUN(Session Traversal of User Datagram Protocol [UDP] through Network Address Translators [NATs])サーバからクライアントのパブリックアドレスを取得した場合が挙げられる。この場合、コンピュータ10が取得したパブリックアドレスは、コンピュータ10のIPアドレスではなく、ルータ70のゲートウェイのアドレスの場合がある。
【0053】
そのため、コンピュータ10上で動作するアプリケーションは、IPアドレス「99999」のコンピュータ30からIPアドレス「11111」のコンピュータ10へ送信された信号を、ルータ70を通過させることができないため、P2P通信が正常にできないという問題がある。
【0054】
(ルータ70が有するプロテクション機能の例2)
ルータ70が有するプロテクション機能の他の例として、予め定められた送信先および送信元のIPアドレス以外のIPアドレスから送信された信号の受信を制限する機能について、
図8を参照して説明する。
図8は、本実施形態に係るルータ70の動作のさらに他の例を示す図である。
図8に示す例においても、コンピュータ10にはIPアドレス「11111」が設定され、コンピュータ30にIPアドレス「99999」が設定されている。なお、本例においても、ルータ70は、コンピュータ10が含まれるネットワークから他のネットワークに送信された信号は、制限せずに通過させる。
【0055】
ルータ70は、他のネットワークからコンピュータ10が含まれるネットワークに信号が送信されると、送信先および送信元のコンピュータのIPアドレスが予め定めされたIPアドレスであるか否かを判定する。例えば、
図8に示すように、IPアドレス「99999」のコンピュータ30からIPアドレス「11111」のコンピュータ10に信号が送信された場合、ルータ70は、送信先のIPアドレス「11111」および送信元のIPアドレス「99999」が予め定められたIPアドレスであるか否かを判定する。
【0056】
送信先のIPアドレス「11111」および送信元のIPアドレス「99999」が予め定められたIPアドレスであると判定された場合、
図8のAR4に示すように、ルータ70は、IPアドレス「99999」のコンピュータ30からIPアドレス「11111」のコンピュータ10に送信された信号を通過させる。
【0057】
一方、送信先のIPアドレス「11111」および送信元のIPアドレス「99999」の何れか一方が予め定められたIPアドレスではないと判定された場合、ルータ70は、IPアドレス「99999」のコンピュータ30からIPアドレス「11111」のコンピュータ10に送信された信号を通過させない。
【0058】
当該プロテクション機能においても、ルータ70には、コンピュータ10が使用しているIPアドレスを予め登録する必要があるため、コンピュータ10は、通信に使用するIPアドレスを知る必要がある。しかしながら、上述したように、コンピュータ10は、OSやファームウェア等によっては、通信に使用するIPアドレスを取得できなかったり、複数のIPアドレスを有している場合、当該複数のIPアドレスしか取得できなかったりするという問題がある。
【0059】
(通信方法の詳細)
図9は、本実施形態に係る通信システム1において実行される通信方法の処理手順を示すフロー図である。
図9に示す処理は、一例として、コンピュータ10の入力受付部110が、P2P通信を伴う処理を開始することを示す操作をユーザから受け付けた場合に実行される処理である。
【0060】
(ステップS100:送信ステップ)
ステップS100において、コンピュータ10の送信部120は、IPアドレスを通知するよう要求する信号である第1信号を、ルータ70を介してサーバ50に送信する。
【0061】
(ステップS102)
ステップS102において、サーバ50の受信部520は、コンピュータ10から送信された第1信号を受信する。
【0062】
(ステップS104)
ステップS104において、送信部510は、コンピュータ10が第1信号を送信するために使用したIPアドレスを示す情報を含む第1返答をコンピュータ10に送信する。
【0063】
(ステップS106:受信ステップ)
ステップS106において、受信部130は、第1信号に対する返答であって、コンピュータ10が第1信号の送信に使用したIPアドレスを示すパケットを含む第1返答を、サーバ50から受信する。
【0064】
(ステップS108:特定ステップ)
ステップS108において、特定部140は、第1返答に基づいて、コンピュータ10が第1信号の送信に使用したIPアドレスを特定する。
【0065】
(ステップS110:制限回避ステップ)
ステップS110において、制限回避部150は、ルータ70を介してコンピュータ30とP2P通信するために、コンピュータ30から、特定したIPアドレスに宛てた第2信号をルータ70が制限しないようにする制限回避処理を実行する。ここで、第2信号とは、サーバを介さないP2P通信のための信号である。第2信号は特に限定されず、例えば、ゲーム用のネットコード、VoIP(Voice over Internet Protocol)等も含まれる。
【0066】
例えば、制限回避処理では、制限回避部150は、特定したIPアドレス宛の信号を通過させるように、ルータ70を設定する。制限回避部150がルータ70を設定する方法の一例として、制限回避部150が、許可するIPアドレスと、コンピュータ10が第1信号の送信に使用したIPアドレスとを含む情報である設定情報をルータ70に送信する構成が挙げられる。ルータ70は、設定情報を受信し、送信された設定情報が示す許可するIPアドレスから、コンピュータ10が第1信号の送信に使用したIPアドレス宛の信号を制限しないように設定する。なお、設定情報は、許可するIPアドレスとして、特定のIPアドレスを指定してもよいが、複数のIPアドレスを指定してもよいし、許可するIPアドレスが満たす条件を指定してもよいし、任意のIPアドレスが許可されると指定してもよい。
【0067】
(実施形態1の効果)
コンピュータ上で実行されるアプリケーションは、コンピュータが通信に使用するIPアドレスが分からない場合がある。特に、IPv6に対応したコンピュータや、ネットワークカードを複数枚実装されたコンピュータでは、コンピュータが使用できるIPアドレスが複数存在し、どのIPアドレスを使用するのか、アプリケーションからは分からない場合がある。また、OSやファームウェアによっては、アプリケーションから、コンピュータが通信に使用するIPアドレスを取得できない場合がある。
【0068】
実施形態1に係る通信システム1では、サーバ50からの第1返答に基づいて、コンピュータ10が通信に使用するIPアドレスを特定することができるため、コンピュータ30から特定したIPアドレスに宛てた信号をルータ70が制限しないようにする制限回避処理を実行することができる。
【0069】
したがって、実施形態1に係る通信システム1では、コンピュータ10上のアプリケーションが、通信に使用するIPアドレスをコンピュータ10のOSやファームウェア等から取得できない場合であっても、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータ70を介したP2P通信をすることができる。
【0070】
また、実施形態1に係る通信システム1では、サーバ50からの第1返答に基づいて、コンピュータ10が使用するIPアドレス特定する。そのため、実施形態1に係る通信システム1では、コンピュータ10が複数のIPアドレスを有し、複数のIPアドレスのうちの何れか1つを通信に使用する場合であっても、好適にP2P通信をすることができる。
【0071】
[変形例]
本実施形態は、以下のように変形することができる。これらの変形例は、後述する変形例および実施形態にも等しく適用される。
【0072】
(変形例1)
制限回避部150は、ステップS108において実行する制限回避処理として、
図10に示す制限回避処理を実行してもよい。
図10は、本変形例に係る制限回避部150が実行する制限回避処理手順の一例を示すフローチャートである。
【0073】
図10に示す処理は、ルータ70の有するプロテクション機能が、コンピュータ10がルータ70を介してコンピュータ30に信号を送信するまで、コンピュータ30から送信された信号をルータ70を介してコンピュータ10が受信することを制限する機能である場合に実行される。
【0074】
(ステップS1100)
ステップS1100において、送信部120は、第3信号の送信を要求する信号をサーバ50に送信する。ここで、送信部120が送信する信号には、送信部120が第3信号を送信するタイミングと同じタイミングで、コンピュータ30がコンピュータ10に第2信号を送信することを要求する情報が含まれている。
【0075】
(ステップS1102)
ステップS1102において、サーバ50の受信部520は、送信部120から送信された信号を受信する。
【0076】
(ステップS1104)
ステップS1104において、送信部510は、コンピュータ10およびコンピュータ30が同じタイミングでデータを送信できるように、第3信号の送信タイミングを指示する信号をコンピュータ10に送信する。
【0077】
ここで、送信部510は、コンピュータ10が第3信号を送信する送信タイミングと同じタイミングで、コンピュータ30が第2信号を送信するよう指示する信号を、コンピュータ30に送信する。
【0078】
(ステップS1106)
ステップS1106において、コンピュータ10の受信部130は、データの送信タイミングを指示する信号をサーバ50から受信する。
【0079】
(ステップS1108)
ステップS1110において、コンピュータ10の制限回避部150は、ステップS1106において受信した指示に基づき、データをコンピュータ30に送信する。すなわち、制限回避処理では、制限回避部150は、コンピュータ30が通信に使用するIPアドレスに宛てたデータ(第3信号)を、コンピュータ30が送信するデータ(第2信号)の送信タイミングと同じタイミングで送信する。
【0080】
(変形例1の効果)
変形例1に係る通信システム1では、サーバ50からの指示に基づいて、コンピュータ10とコンピュータ30とが同じタイミングで互いにデータを送信する。すなわち、本変形例に係る通信システム1では、サーバ50はスーパーノードと呼ばれる、複数のコンピュータの送信タイミングを指示する機能を有している。そして、コンピュータ10およびコンピュータ30は、同じタイミングで信号を送信するホールパンチングと呼ばれる方法にて、ルータ70の制限を回避することができる。
【0081】
(変形例2)
通常、ルータ70には、送信履歴を記憶している期間を示す保持期間がある。ルータ70は、当該保持期間が経過した送信履歴を削除する。コンピュータ10がコンピュータ30に送信した信号の送信履歴が削除されると、ルータ70の有するプロテクション機能によって、コンピュータ10とコンピュータ30とがP2P通信できなくなる。
【0082】
そのため、コンピュータ10上で動作するアプリケーションは、制限回避ステップを実行した後、コンピュータ30に何も送信しない期間が閾値を越えた場合に、コンピュータ30が通信に使用するIPアドレスに宛てた第4信号を送信してもよい。第4信号は、どのような信号であってもよく、例えば、意味のあるデータを含まないパケット、シーケンス番号のみを含むパケットが挙げられる。また、閾値も特に限定されず、数ms~数10ms等とすることができる。
【0083】
また、コンピュータ10上で動作するアプリケーションは、第4信号を周期的にコンピュータ30にデータを送信する構成であってもよい。当該構成について、コンピュータ10上で動作するアプリケーションが第4信号として、シーケンス番号(連番)を付したパケットを周期的にコンピュータ30に送信する場合を例に挙げて説明する。この場合、コンピュータ30は、コンピュータ10上で動作するアプリケーションから送信されたシーケンス番号を付したパケットを、コンピュータ10に送り返す。コンピュータ30は、データが存在する場合は、コンピュータ10上で動作するアプリケーションから送信されたシーケンス番号を付したパケットにデータを格納し、コンピュータ10に送り返してもよい。コンピュータ30は、データが存在しない場合は、コンピュータ10上で動作するアプリケーションから送信されたシーケンス番号を付したパケットにデータを格納せずに、コンピュータ10に送り返してもよい。送信の周期は特に限定されず、数ms~数10ms等とすることができる。
【0084】
当該構成において、コンピュータ10上で動作するアプリケーションは、コンピュータ30から送り返されたパケットに付されたシーケンス番号を確認し、コンピュータ30に送信したシーケンス番号と同じであれば、コンピュータ10上で動作するアプリケーションからコンピュータ30への送信は正常であったと判断する。
【0085】
一方、コンピュータ10上で動作するアプリケーションは、コンピュータ30からシーケンス番号を付したパケットが送り返されなかった場合、再度同じシーケンス番号を付したパケットをコンピュータ30に送信する。
【0086】
コンピュータ30は、同じシーケンス番号が付されたパケットを複数回受信した場合、最初に受信したパケットを真としてもよいし、次の異なるシーケンス番号を受信するまでは、最後に受信したパケットを真としてもよく、他のパケットは無視してもよい。
【0087】
また、コンピュータ30は、通常のデータ送信とは別に、第4信号を周期的にコンピュータ30にデータを送信する構成であってもよい。この場合、第4信号には、意味のあるデータは含まれていなくともよい。
【0088】
(変形例2の効果)
変形例2に係る通信システム1では、コンピュータ10上で動作するアプリケーションは、制限回避処理を実行した後、ルータ70の送信履歴が削除されないように、コンピュータ30に第4信号を送信する。したがって、変形例2に係る通信システム1では、ルータの履歴が消滅することを防ぎ、継続して、コンピュータ10とコンピュータ30とが正常にP2P通信することができる。
【0089】
(変形例3)
上述したように、コンピュータ10が通信に使用するIPアドレスには、使用期間が限定された一時アドレスが含まれてもよい。換言すると、コンピュータ10が通信に使用するIPアドレスは、任意のタイミングで変更される。コンピュータ10が通信に使用するIPアドレスが任意のタイミングで変更された場合、ルータ70の有するプロテクション機能によって、コンピュータ10とコンピュータ30とがP2P通信できなくなる。
【0090】
具体的には、コンピュータ10が通信に使用するIPアドレスが変更されると、コンピュータ10上で動作するアプリケーションが通信に使用する変更後のIPアドレスをコンピュータ30に通知するまでは、コンピュータ10上で動作するアプリケーションはコンピュータ30からのデータを受信できなくなる。また、コンピュータ10から送信されるデータの送信元IPアドレスも変更されるため、ルータ70の履歴にない送信元IPアドレスからデータを送信することになる。この場合、上述したように、ルータ70が有するプロテクション機能によって、コンピュータ10とコンピュータ30とがP2P通信できなくなる。
【0091】
そのため、コンピュータ10上で動作するアプリケーションは、送信ステップ、受信ステップ、特定ステップおよび制限回避ステップを実行した後、コンピュータ30からの信号を所定期間受信しなかった場合に、送信ステップ、受信ステップ、特定ステップおよび制限回避ステップを再度実行してもよい。
【0092】
コンピュータ10上で動作するアプリケーションが再度実行する制限回避ステップでは、コンピュータ10上で動作するアプリケーションが特定したIPアドレス宛の信号を通過させるようにルータ70を設定する処理が実行されてもよいし、ホールパンチングが実行されてもよい。
【0093】
(変形例3の効果)
変形例3に係る通信システム1では、コンピュータ10上で動作するアプリケーションは、IPアドレスが変更されてもルータ70のプロテクション機能が働かないように、送信ステップ、受信ステップ、特定ステップおよび制限回避ステップを再度実行する。したがって、変形例3に係る通信システム1では、例えば、コンピュータ10が使用するIPアドレスの寿命が尽きても、再度、コンピュータ30と正常にP2P通信をすることができる。
【0094】
〔実施形態2〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を繰り返さない。
【0095】
(通信システム1Aの構成)
図11は、本実施形態に係る通信システム1Aの構成の一例を示すブロック図である。通信システム1Aは、
図11に示すように、コンピュータ10A(第1コンピュータ)、コンピュータ30A(第2コンピュータ)、サーバ50A(第2サーバ)、ルータ70を備えている。これらの装置は、インターネットを含むネットワークNWを介して接続される。
【0096】
通信システム1Aでは、上述した実施形態における通信システム1の機能に加えて、コンピュータ10Aおよびコンピュータ30Aは、互いにP2P通信に基づいてゲームを進行する。
【0097】
なお、コンピュータ10Aおよびサーバ50Aのハードウェア構成は、上述した実施形態におけるコンピュータ10およびサーバ50のハードウェア構成と同じであるため、説明は省略する。
【0098】
(コンピュータ10Aの機能構成)
図12は、本実施形態に係るコンピュータ10Aの機能構成の一例を示すブロック図である。
図12に示すように、コンピュータ10Aは、記憶部14に記憶されている、アプリケーションを実行するための各種プログラムをCPU11が実行することにより実現される機能構成として、入力受付部110、送信部120(コンピュータ送信部)、受信部130(コンピュータ受信部)、特定部140、制限回避部150、および進行部160を備えている。入力受付部110、受信部130、特定部140、および制限回避部150については、上述した通りであるため説明を省略する。
【0099】
送信部120は、ルータ70を介して信号を送信する。送信部120は、例えば、第1信号をルータ70を介してサーバ50に送信する。また、送信部120は、コンピュータ30との通信内容、および、ゲームの結果情報の少なくとも一方を、特定部140が特定したIPアドレスと共にサーバ50Aに送信する。送信部120がIPアドレスを送信する構成は限定されず、一例として、送信元のIPアドレスに設定する構成、IPアドレスを示す情報を、コンピュータ30との通信内容、および、ゲームの結果情報の少なくとも一方に含める構成、が挙げられる。
【0100】
進行部160は、コンピュータ30Aとの通信に基づいてゲームを進行させる(進行ステップ)。進行部160は、例えば、入力受付部110が受け付けた入力に基づく操作をゲームにおいて反映させて、ゲームを進行させる。
【0101】
(サーバ50Aの機能構成)
図13は、本実施形態に係るサーバ50Aの機能構成の一例を示すブロック図である。
図13に示すように、サーバ50Aは、記憶部54に記憶されている各種プログラムをCPU51が実行することにより実現される機能構成として、送信部510(第1サーバ送信部)、受信部520(第1サーバ受信部、第2サーバ受信部)、ゲーム管理部530(管理部)、およびマッチング部540を備えている。送信部510については、上述した通りであるため説明を省略する。
【0102】
受信部520は、ルータ70を介して信号を受信する。受信部520は、例えば、第1信号をコンピュータ10Aから受信する。また、受信部520は、コンピュータ10Aから、コンピュータ30Aとの通信内容、および、ゲームの結果情報の少なくとも一方と、コンピュータ10Aが通信に使用するIPアドレスを受信する。
【0103】
ゲーム管理部530は、コンピュータ10Aとコンピュータ30Aとが進行させているゲームを管理する。ゲーム管理部530は、例えば、受信部520が受信した通信内容またはゲームの結果情報と共に受信したIPアドレスが、コンピュータ10Aが通信に使用するIPアドレスと一致するか否かを判定する。
【0104】
受信部520が受信した通信内容またはゲームの結果情報と共に受信したIPアドレスが、コンピュータ10Aが通信に使用するIPアドレスと一致する場合、ゲーム管理部530は、受信部520が受信した通信内容またはゲームの結果情報を管理する。一方、受信部520が受信した通信内容またはゲームの結果情報と共に受信したIPアドレスが、コンピュータ10Aが通信に使用するIPアドレスと一致しない場合、ゲーム管理部530は、受信部520が受信した通信内容またはゲームの結果情報を管理しない。
【0105】
マッチング部540は、コンピュータ10Aとコンピュータ30AとがP2P通信するために、コンピュータ10Aおよびコンピュータ30Aのそれぞれに相手のIPアドレスを通知する。
【0106】
なお、上述したように、サーバ50Aは1つのサーバによって構成されてもよいし、複数のサーバによって構成されてもよい。例えば、サーバ50Aは、送信部510、および第1信号をコンピュータ10Aから受信する受信部520(第1サーバ受信部)を備える第1サーバと、コンピュータ10Aから、コンピュータ30Aとの通信内容、および、ゲームの結果情報の少なくとも一方と、コンピュータ10Aが通信に使用するIPアドレスを受信する受信部520(第2サーバ受信部)、ゲーム管理部530、マッチング部540を備える第2サーバと、によって構成されてもよい。
【0107】
また、コンピュータ10Aがコンピュータ30Aから所定期間データを受信しなかった場合、コンピュータ10A上で動作するアプリケーションは、上述した実施形態と同様に、送信ステップ、受信ステップ、特定ステップおよび制限回避ステップを再度実行する。
【0108】
そして、コンピュータ10Aは、コンピュータ30Aに再接続すると、再度実行した特定ステップにおいて特定したIPアドレスを、サーバ50Aに送信する。そして、サーバ50Aのゲーム管理部530は、受信部520が受信した通信内容またはゲームの結果情報と共に受信したIPアドレスが、再度コンピュータ10Aから送信されたIPアドレスと一致するか否かを判定する。
【0109】
換言すると、コンピュータ10Aがコンピュータ30Aと再接続し、コンピュータ10Aが使用するIPアドレスが変更になった場合、コンピュータ10Aは、変更後のIPアドレスをサーバ50Aに送信する。サーバ50Aのゲーム管理部530は、変更後のIPアドレスを真として、変更前のIPアドレスから届いたデータは真としない。
【0110】
(実施形態2の効果)
実施形態2に係る通信システム1Aでは、サーバ50Aは、受信した通信内容またはゲームの結果情報と共に受信したIPアドレスが、コンピュータ10Aが通信に使用するIPアドレスと一致するか否かを判定する。そして、サーバ50Aは、受信した通信内容またはゲームの結果情報と共に受信したIPアドレスが、コンピュータ10Aが通信に使用するIPアドレスと一致しない場合、コンピュータ10Aから受信した通信内容またはゲームの結果情報を管理しない。
【0111】
すなわち、サーバ50Aは、コンピュータ10Aが通信に使用するIPアドレス以外のIPアドレスから通信内容またはゲームの結果情報を取得した場合、当該通信内容またはゲームの結果情報はチートであると判断し、管理しない。そのため、実施形態2に係る通信システム1Aでは、不正なコンピュータによるデータの割り込みを防ぐことができる。
【0112】
〔ソフトウェアによる実現例〕
コンピュータ10、10A、サーバ50、50Aの機能は、当該装置としてコンピュータを機能させるためのプログラムであって、当該装置の各制御ブロックとしてコンピュータを機能させるためのプログラムにより実現することができる。
【0113】
この場合、上記装置は、上記プログラムを実行するためのハードウェアとして、少なくとも1つの制御装置(例えばプロセッサ)と少なくとも1つの記憶装置(例えばメモリ)を有するコンピュータを備えている。この制御装置と記憶装置により上記プログラムを実行することにより、上記各実施形態で説明した各機能が実現される。一例として、上記プログラムにおけるアプリケーションプロセスを、複数のCPUに並列に処理させてもよい。
【0114】
上記プログラムは、一時的ではなく、コンピュータ読み取り可能な、1または複数の記録媒体に記録されていてもよい。この記録媒体は、上記装置が備えていてもよいし、備えていなくてもよい。後者の場合、上記プログラムは、有線または無線の任意の伝送媒体を介して上記装置に供給されてもよい。
【0115】
また、上記各制御ブロックの機能の一部または全部は、論理回路により実現することも可能である。例えば、上記各制御ブロックとして機能する論理回路が形成された集積回路も本発明の範疇に含まれる。この他にも、例えば量子コンピュータにより上記各制御ブロックの機能を実現することも可能である。さらに、上記各制御ブロックの機能の一部または全部は、1つの装置に構築された複数のVM上で実現することも可能である。
【0116】
また、上記各実施形態で説明した各処理は、AI(Artificial Intelligence:人工知能)に実行させてもよい。この場合、AIは上記制御装置で動作するものであってもよいし、他の装置(例えばエッジコンピュータまたはクラウドサーバ等)で動作するものであってもよい。
【0117】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【0118】
〔まとめ〕
以上に例示した形態から、例えば以下の構成が把握される。なお、各態様の理解を容易にするために、以下では、図面の参照符号を便宜的に括弧書で付記するが、本発明を図示の態様に限定する趣旨ではない。
【0119】
本発明の一態様に係るプログラムは、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータ(70)に接続された第1コンピュータ(10)上で動作するプログラムであって、前記第1コンピュータ(10)に、第1信号を前記ルータ(70)を介して第1サーバ(50)に送信する送信ステップ(S100)と、前記第1信号に対する第1返答を、前記第1サーバ(50)から前記ルータ(70)を介して受信する受信ステップ(S106)と、受信した前記第1返答に基づいて、前記第1コンピュータ(10)が前記第1信号の送信に使用したIPアドレスを特定する特定ステップ(S108)と、前記ルータ(70)を介して第2コンピュータ(30)とP2P通信するために、前記第2コンピュータ(30)から特定したIPアドレスに宛てた第2信号を前記ルータ(70)が制限しないようにする制限回避処理を実行する制限回避ステップ(S110)と、を実行させる。
【0120】
前記の構成によれば、第1サーバからの第1返答に基づいて、第1コンピュータが通信に使用するIPアドレスを特定することができるため、第2コンピュータから特定したIPアドレスに宛てた信号をルータが制限しないようにする制限回避処理を実行することができる。
【0121】
したがって、本発明の一態様に係るプログラムは、第1コンピュータが通信に使用するIPアドレスを第1コンピュータのOSやファームウェア等から取得できない場合であっても、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータを介したP2P通信をすることができる。
【0122】
上述したプログラムにおいて、前記第1コンピュータ(10)は、複数のIPアドレスを有し、当該複数のIPアドレスのうちの何れか1つを通信に使用することが好ましい。
【0123】
前記の構成によれば、本発明の一態様に係るプログラムは、第1コンピュータが複数のIPアドレスを有し(例えば、IPv6)、複数のIPアドレスのうちの何れか1つを通信に使用する場合であっても、好適にP2P通信をすることができる。
【0124】
上述したプログラムにおいて、前記制限回避処理では、前記第1コンピュータ(30)に、前記特定したIPアドレス宛の信号を通過させるように前記ルータ(70)を設定させることが好ましい。
【0125】
前記の構成によれば、本発明の一態様に係るプログラムは、特定したIPアドレス宛の信号をルータに通過させるので、好適にP2P通信をすることができる。
【0126】
上述したプログラムにおいて、前記プロテクション機能は、前記第1コンピュータ(10)が前記ルータ(70)を介して前記第2コンピュータ(30)に信号を送信するまで、前記第2コンピュータ(30)から送信された信号を前記ルータ(70)を介して前記第1コンピュータ(10)が受信することを制限する機能であり、前記制限回避処理では、前記第1コンピュータ(10)に、前記第2コンピュータ(30)が通信に使用するIPアドレスに宛てた第3信号を、前記第2信号の送信タイミングと同じタイミングで送信させることが好ましい。
【0127】
前記の構成によれば、本発明の一態様に係るプログラムは、ホールパンチングと呼ばれる方法にて、ルータの制限を回避することができる。
【0128】
上述したプログラムにおいて、前記第1コンピュータ(10)が、前記制限回避ステップを実行した後、前記第2コンピュータ(30)に何も送信しない期間が閾値を越えた場合に、前記第1コンピュータ(10)に、前記第2コンピュータ(30)が通信に使用するIPアドレスに宛てた第4信号を送信させることが好ましい。
【0129】
前記の構成によれば、本発明の一態様に係るプログラムは、ルータの履歴が消滅することを防ぎ、継続して、第1コンピュータと第2コンピュータとに正常にP2P通信させることができる。
【0130】
上述したプログラムにおいて、前記第1コンピュータ(10)が通信に使用するIPアドレスは、任意のタイミングで変更され、前記第1コンピュータ(10)が、前記送信ステップ(S100)、前記受信ステップ(S106)、前記特定ステップ(S108)および前記制限回避ステップ(S110)を実行した後、前記第2コンピュータ(30)からの信号を所定期間受信しなかった場合に、前記第1コンピュータ(10)に、前記送信ステップ(S100)、前記受信ステップ(S106)、前記特定ステップ(S108)および前記制限回避ステップ(S110)を再度実行させることが好ましい。
【0131】
前記の構成によれば、本発明の一態様に係るプログラムは、第1コンピュータが使用するIPアドレスの寿命が尽きても、第2コンピュータと正常にP2P通信をさせることができる。
【0132】
上述したプログラムにおいて、前記第1コンピュータ(10A)に、前記第2コンピュータ(30A)との通信に基づいてゲームを進行させる進行ステップを実行させ、前記第2コンピュータ(30A)との通信内容、および、前記ゲームの結果情報の少なくとも一方を、前記特定したIPアドレスとともに第2サーバ(50A)に送信させることが好ましい。
【0133】
前記の構成によれば、本発明の一態様に係るプログラムは、第1コンピュータと第2コンピュータとによって行われるゲームにおいて、不正なコンピュータによるデータの割り込みを防ぐことができる。
【0134】
本発明の一態様に係る通信方法は、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータ(70)に接続された第1コンピュータ(10)上で実行される通信方法であって、第1信号を前記ルータ(70)を介して第1サーバ(50)に送信する送信ステップ(S100)と、前記第1信号に対する第1返答を、前記第1サーバ(50)から前記ルータ(70)を介して受信する受信ステップ(S106)と、受信した前記第1返答に基づいて、前記第1コンピュータ(10)が前記第1信号の送信に使用したIPアドレスを特定する特定ステップ(S108)と、前記ルータ(70)を介して第2コンピュータ(30)とP2P通信するために、前記第2コンピュータ(30)から特定したIPアドレスに宛てた第2信号を前記ルータ(70)が制限しないようにする制限回避処理を実行する制限回避ステップ(S110)と、を含む。
【0135】
前記の構成によれば、上述したプログラムと同様の作用効果を奏する。
【0136】
本発明の一態様に係るコンピュータ(10)は、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータ(70)に接続された第1コンピュータ(10)であって、第1信号を前記ルータ(70)を介して第1サーバ(50)に送信する送信部(120)と、前記第1信号に対する第1返答を、前記第1サーバ(50)から前記ルータ(70)を介して受信する受信部(130)と、受信した前記第1返答に基づいて、前記第1コンピュータ(10)が前記第1信号の送信に使用したIPアドレスを特定する特定部(140)と、前記ルータ(70)を介して第2コンピュータ(30)とP2P通信するために、前記第2コンピュータ(30)から特定したIPアドレスに宛てた第2信号を前記ルータ(70)が制限しないようにする制限回避処理を実行する制限回避部(150)と、を備える。
【0137】
前記の構成によれば、上述したプログラムと同様の作用効果を奏する。
【0138】
本発明の一態様に係る通信システム(1)は、IPアドレスに基づいて通信を制限するプロテクション機能を有するルータ(70)に接続された第1コンピュータ(10)と、当該第1コンピュータ(10)と前記ルータ(70)を介して通信する第1サーバ(50)とを備える通信システム(1)であって、前記第1コンピュータ(10)は、第1信号を前記ルータ(70)を介して第1サーバ(50)に送信するコンピュータ送信部(120)と、前記第1信号に対する第1返答を、前記第1サーバ(50)から前記ルータ(70)を介して受信するコンピュータ受信部(130)と、受信した前記第1返答に基づいて、前記第1コンピュータ(10)が前記第1信号の送信に使用したIPアドレスを特定する特定部(140)と、前記ルータ(70)を介して第2コンピュータ(30)とP2P通信するために、前記第2コンピュータ(30)から特定したIPアドレスに宛てた第2信号を前記ルータ(70)が制限しないようにする制限回避処理を実行する制限回避部(150)と、を備え、前記第1サーバ(50)は、前記第1信号を前記第1コンピュータ(10)から受信する第1サーバ受信部(520)と、第1信号に基づいて、前記第1コンピュータ(10)が前記第1信号の送信に使用したIPアドレスを示す情報を含む第1返答を前記第1コンピュータ(10)に送信する第1サーバ送信部(510)と、を備える。
【0139】
前記の構成によれば、上述したプログラムと同様の作用効果を奏する。
【0140】
上述した通信システム(1A)はさらに、前記第1コンピュータ(10A)と前記ルータ(70)を介して通信する第2サーバ(50A)を備え、前記第1コンピュータ(10A)は、前記第2コンピュータ(30A)との通信に基づいてゲームを進行させる進行部(160)と、前記コンピュータ送信部(130)は、前記第2コンピュータ(30)との通信内容、および、前記ゲームの結果情報の少なくとも一方を、前記特定したIPアドレスとともに第2サーバ(50)に送信し、前記第2サーバ(50)は、前記第1コンピュータ(10)から、前記通信内容および前記結果情報の少なくとも一方と、前記IPアドレスを受信する第2サーバ受信部(520)と、前記IPアドレスが、前記第1コンピュータが通信に使用するIPアドレスと一致するか否かを判定する管理部(530)と、を備える。
【0141】
前記の構成によれば、本発明の一態様に係る通信システムは、第1コンピュータと第2コンピュータとによって行われるゲームにおいて、不正なコンピュータによるデータの割り込みを防ぐことができる。
【符号の説明】
【0142】
1、1A 通信システム
10、10A コンピュータ
50、50A サーバ
70 ルータ
110 入力受付部
120、510 送信部
130、520 受信部
140 特定部
150 制限回避部
160 進行部
530 ゲーム管理部
540 マッチング部