IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヤマハ株式会社の特許一覧

特許7559642通信のためのプログラム、ルータ、サーバ及び通信システム
<>
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図1
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図2
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図3
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図4
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図5
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図6
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図7
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図8
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図9
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図10
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図11
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図12
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図13
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図14
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図15
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図16
  • 特許-通信のためのプログラム、ルータ、サーバ及び通信システム 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-24
(45)【発行日】2024-10-02
(54)【発明の名称】通信のためのプログラム、ルータ、サーバ及び通信システム
(51)【国際特許分類】
   H04L 45/74 20220101AFI20240925BHJP
   H04L 12/46 20060101ALI20240925BHJP
【FI】
H04L45/74
H04L12/46 E
【請求項の数】 13
(21)【出願番号】P 2021051905
(22)【出願日】2021-03-25
(65)【公開番号】P2022149654
(43)【公開日】2022-10-07
【審査請求日】2024-01-25
(73)【特許権者】
【識別番号】000004075
【氏名又は名称】ヤマハ株式会社
(74)【代理人】
【識別番号】110000408
【氏名又は名称】弁理士法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】原 貴洋
【審査官】宮島 郁美
(56)【参考文献】
【文献】特開2015-156593(JP,A)
【文献】特許第6671676(JP,B1)
【文献】特開2011-142455(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00-69/00
(57)【特許請求の範囲】
【請求項1】
第1ルータの使用可能なポート番号の範囲を取得し、
第2端末に前記第1ルータのポート番号を取得させるために、取得した前記第1ルータの使用可能なポート番号の範囲を前記第1ルータを介して第1サーバに送信し、
第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて選択される所定の第2ルータのポート番号を特定するための情報を前記第1サーバから取得し、
前記第2ルータのポート番号を宛先ポート番号として前記第1ルータを介して前記第2端末への接続を試行する、
処理を第1端末に実行させるためのプログラム。
【請求項2】
前記第1端末に、前記第1ルータに前記第1ルータの使用可能なポート番号の範囲を問い合わせる処理を実行させ、
前記第1ルータから前記第1ルータの使用可能なポート番号の範囲を取得する、請求項1に記載のプログラム。
【請求項3】
前記第1端末に、第2サーバに前記第1ルータの使用可能なポート番号の範囲を問い合わせる処理を実行させ、
前記第2サーバから前記第1ルータの使用可能なポート番号の範囲を取得する、請求項1に記載のプログラム。
【請求項4】
前記所定の第2ルータのポート番号を特定するための情報は、前記第2ルータの送信元ポート番号と前記第2ルータの使用可能なポート番号の範囲とに基づいて前記第1サーバによって選択された所定の第2ルータのポート番号である、請求項1乃至3の何れか一項に記載のプログラム。
【請求項5】
前記所定の第2ルータのポート番号を特定するための情報に含まれる、前記第2ルータの送信元ポート番号と前記第2ルータの使用可能なポート番号の範囲とに基づいて前記所定の第2ルータのポート番号を選択することを含む、請求項1乃至3の何れか一項に記載のプログラム。
【請求項6】
前記第1ルータの使用可能なポート番号の範囲は、インターネット接続のためのポート番号の範囲である、請求項1乃至5の何れか一項にプログラム。
【請求項7】
前記インターネット接続の接続方式は、IPv4 over IPv6である、請求項6に記載のプログラム。
【請求項8】
前記第2端末への接続は、P2P接続である、請求項1乃至7の何れか一項に記載のプログラム。
【請求項9】
第1端末から使用可能なポート番号の範囲の問い合わせを受信する受信部と、
前記問い合わせに応答して、前記使用可能なポート番号の範囲を前記第1端末に送信する送信部と、
を備え、
前記送信部は、前記第1端末からのリクエストに基づいて、前記使用可能なポート番号の範囲と自身の外部ポート番号を外部に送信する、ルータ。
【請求項10】
宛先アドレスが変更されると、送信元として使用するポート番号を前記使用可能なポート番号の範囲から選択された別のポート番号に変更するポート変更部をさらに備える、請求項9に記載のルータ。
【請求項11】
端末からルータの使用可能なポート番号の範囲を受信する受信部と、
前記ルータから受信した送信元ポート番号と前記ルータの使用可能なポート番号の範囲とに基づいて、所定のルータのポート番号を選択するポート選択部と、
前記所定のルータのポート番号を予め決められた別の端末に送信する送信部と、
を備えるサーバ。
【請求項12】
第1ルータの配下にある第1端末と、第2ルータの配下にある第2端末と、ルータの配下にないサーバとから成り、前記第1端末及び前記第2端末が、送信元アドレス、送信元ポート番号、宛先アドレス及び宛先ポート番号を使って、前記第1ルータ及び前記第2ルータを介して互いに通信する通信システムにおいて、
前記第1端末は、
前記第1ルータの使用可能なポート番号の範囲を取得する第1取得部と、
取得した前記第1ルータの使用可能なポート番号の範囲を前記第1ルータを介して前記サーバに送信する第1送信部と、
前記第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて選択された所定の第2ルータのポート番号を前記サーバから受信する第1受信部と、
前記第2ルータのポート番号を宛先ポート番号として前記第1ルータを介して前記第2端末への接続を試行する第1通信部と、を備え、
前記第2端末は、
前記第2ルータの使用可能なポート番号の範囲を取得する第1取得部と、
取得した前記第2ルータの使用可能なポート番号の範囲を前記第2ルータを介して前記サーバに送信する第2送信部と、
前記第1ルータの送信元ポート番号と第1ルータの使用可能なポート番号の範囲とに基づいて選択された所定の第1ルータのポート番号を前記サーバから受信する第2受信部と、
前記第1ルータのポート番号を宛先ポート番号として前記第2ルータを介して前記第1端末への接続を試行する第2通信部と、を備え、
前記サーバは、
前記第1端末から前記第1ルータの使用可能なポート番号の範囲と、第1送信元ポート番号とを受信し、且つ前記第2端末から前記第2ルータの使用可能なポート番号の範囲と、第2送信元ポート番号とを受信し、
前記第1ルータの送信元ポート番号と前記第1ルータの使用可能なポート番号の範囲とに基づいて選択される所定の第1ルータのポート番号を特定するための情報を前記第2受信部に送信し、且つ前記第2ルータの送信元ポート番号と前記第2ルータの使用可能なポート番号の範囲とに基づいて選択される所定の第2ルータのポート番号を特定するための情報を前記第1受信部に送信する、通信システム。
【請求項13】
前記第1端末は、前記サーバから受信した前記所定の第2ルータのポート番号を特定するための情報に含まれる、前記第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて所定の第2ルータのポート番号を選択する第1ポート選択部を備え、
前記第2端末は、前記サーバから受信した前記所定の第1ルータのポート番号を特定するための情報に含まれる、前記第1ルータの送信元ポート番号と第1ルータの使用可能なポート番号の範囲とに基づいて所定の第1ルータのポート番号を選択する第2ポート選択部を備える、請求項12に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信のためのプログラム、ルータ、サーバ及び通信システムに関する。
【背景技術】
【0002】
従来より、インターネットなどの通信ネットワークを介した楽器の演奏(合奏)、及び合唱などの音楽的なセッションを可能としたネットワークセッションシステムが知られている。このセッションシステムは、2つ以上の端末が、自端末での演奏に基づく演奏情報を広域通信ネットワークを介して他端末に互いに送信し合って、各端末で自端末を含めた2つ以上の端末の演奏音を発音させようというものである。ネットワークを介して演奏情報を送受信する場合、演奏情報が各端末に届くまでに遅延が発生する虞がある。このような遅延を減少させるために、2つ以上の端末間で直接通信を行うP2P接続が試みられている。
【0003】
NATルータは、LAN(Local Area Network)側の通信装置から、WAN(Wide Area Network)側の通信装置へのパケットが送信されてくると、このパケットを上位ネットワークに転送する。この際、NATルータは、通信パケット内の送信元IPアドレス及び送信元ポートを、NATルータのWAN側IPアドレスと、新たに割り当てるポート番号とに変換する。そして、その返信として戻ってくるパケットは、NATルータによって、LAN側の宛先IPアドレスとポート番号に変換されて、LAN側の通信装置へ転送される。例えば、特許文献1及び特許文献2には、宛先ポートが変わると異なる送信元ポート番号に変換するNATルータが介在しても2つの端末間で直接通信を行うことができる通信システムが開示されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2015-119217号公報
【文献】特開2015-142217号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1及び特許文献2では、データの送信に使用された送信元ポート番号に基づく推測ポート番号を用いて2つの端末は互いに直接通信の接続を試行する。データの送信に使用された送信元ポート番号に基づいて生成された推測ポート番号が、ルータが使用可能なポート番号に含まれていない場合、2つの端末は互いに直接通信を行うことができない。
【0006】
本発明の目的の一つは、端末同士で直接通信を容易に行うことができる通信ためのプログラム、及び通信システムなどを提供することを目的とする。
【課題を解決するための手段】
【0007】
一実施形態によるプログラムは、第1ルータの使用可能なポート番号の範囲を取得し、第2端末に前記第1ルータのポート番号を取得させるために、取得した前記第1ルータの使用可能なポート番号の範囲を前記第1ルータを介して第1サーバに送信し、第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて選択される所定の第2ルータのポート番号を特定するための情報を前記第1サーバから取得し、前記第2ルータのポート番号を宛先ポート番号として前記第1ルータを介して前記第2端末への接続を試行する、処理を第1端末に実行させる。
【0008】
一実施形態によるプログラムは、第1ルータの使用可能なポート番号の範囲を取得し、第2端末に前記第1ルータのポート番号を取得させるために、取得した前記第1ルータの使用可能なポート番号の範囲を前記第1ルータを介して第1サーバに送信し、第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて選択された所定の第2ルータのポート番号を取得し、前記第2ルータのポート番号を宛先ポート番号として前記第1ルータを介して前記第2端末への接続を試行する、処理を第1端末に実行させる。
【0009】
一実施形態によるルータは、第1端末から使用可能なポート番号の範囲の問い合わせを受信する受信部と、前記問い合わせに応答して、前記使用可能なポート番号の範囲を前記第1端末に送信する送信部と、を備え、前記送信部は、前記第1端末からのリクエストに基づいて、前記使用可能なポート番号の範囲と自身の外部ポート番号を外部に送信する。
【0010】
一実施形態によるサーバは、端末からルータの使用可能なポート番号の範囲を受信する受信部と、前記ルータから受信した送信元ポート番号と前記ルータの使用可能なポート番号の範囲とに基づいて、所定のルータのポート番号を選択するポート選択部と、前記所定のルータのポート番号を予め決められた別の端末に送信する送信部と、を備える。
【0011】
一実施形態による通信システムは、第1ルータの配下にある第1端末と、第2ルータの配下にある第2端末と、ルータの配下にないサーバとから成り、前記第1端末及び前記第2端末が、送信元アドレス、送信元ポート番号、宛先アドレス及び宛先ポート番号を使って、前記第1ルータ及び前記第2ルータを介して互いに通信する通信システムにおいて、前記第1端末は、前記第1ルータの使用可能なポート番号の範囲を取得する第1取得部と、取得した前記第1ルータの使用可能なポート番号の範囲を前記第1ルータを介して前記サーバに送信する第1送信部と、前記第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて選択された所定の第2ルータのポート番号を前記サーバから受信する第1受信部と、前記第2ルータのポート番号を宛先ポート番号として前記第1ルータを介して前記第2端末への接続を試行する第1通信部と、を備え、前記第2端末は、前記第2ルータの使用可能なポート番号の範囲を取得する第1取得部と、取得した前記第2ルータの使用可能なポート番号の範囲を前記第2ルータを介して前記サーバに送信する第2送信部と、前記第1ルータの送信元ポート番号と第1ルータの使用可能なポート番号の範囲とに基づいて選択された所定の第1ルータのポート番号を前記サーバから受信する第2受信部と、前記第1ルータのポート番号を宛先ポート番号として前記第2ルータを介して前記第1端末への接続を試行する第2通信部と、を備え、前記サーバは、前記第1端末から前記第1ルータの使用可能なポート番号の範囲と、第1送信元ポート番号とを受信し、且つ前記第2端末から前記第2ルータの使用可能なポート番号の範囲と、第2送信元ポート番号とを受信し、前記第1ルータの送信元ポート番号と前記第1ルータの使用可能なポート番号の範囲とに基づいて選択される所定の第1ルータのポート番号を特定するための情報を前記第2受信部に送信し、且つ前記第2ルータの送信元ポート番号と前記第2ルータの使用可能なポート番号の範囲とに基づいて選択される所定の第2ルータのポート番号を特定するための情報を前記第1受信部に送信する。
【発明の効果】
【0012】
本発明によれば、端末同士で直接通信を容易に行うことができる通信のためのプログラム、及び通信システムなどを提供することができる。
【図面の簡単な説明】
【0013】
図1】本発明の一実施形態に係る通信システムの構成を説明する図である。
図2】本発明の一実施形態に係る、端末間で直接通信に到るまでの手順及び動作の一例を説明するための図である。
図3】本発明の一実施形態に係る、端末間で直接通信に到るまでの手順及び動作の一例を説明するための図である。
図4】本発明の一実施形態に係る、端末間で直接通信に到るまでの手順及び動作の一例を説明するための図である。
図5】本発明の一実施形態に係る、端末間で直接通信に到るまでの手順及び動作の一例を説明するための図である。
図6】本実施形態による端末側の接続処理の一例を示すフローチャートである。
図7】本実施形態による端末側の接続処理の一例を示すフローチャートである。
図8】本実施形態による端末側の接続処理の一例を示すフローチャートである。
図9】本実施形態による端末側の接続処理の一例を示すフローチャートである。
図10】本実施形態によるルータ側の接続支援処理の一例を示すフローチャートである。
図11】本実施形態によるルータ側の接続支援処理の一例を示すフローチャートである。
図12】本実施形態によるサーバ側の接続支援処理の一例を示すフローチャートである。
図13】本発明の一実施形態に係る端末の機能構成を示すブロック図である。
図14】本発明の一実施形態に係るサーバの機能構成を示すブロック図である。
図15】本発明の一実施形態に係るルータの機能構成を示すブロック図である。
図16】本発明の一変形例に係る、端末間で直接通信に到るまでの手順及び動作の一部を説明するための図である。
図17】本発明の一変形例に係る、端末の機能構成を示すブロック図である。
【発明を実施するための形態】
【0014】
以下、本発明の各実施形態について、図面等を参照しつつ説明する。但し、本発明は、その要旨を逸脱しない範囲において様々な態様で実施することができ、以下に例示する実施形態の記載内容に限定して解釈されるものではない。
【0015】
本明細書と各図において、既出の図に関して説明したものと同様の機能を備えた要素には、同一の符号を付して、重複する説明を省略することがある。
【0016】
[第1実施形態]
<通信システムの構成>
図1は、本発明の一実施形態に係る通信システム10の構成を説明する図である。図1を参照して、通信システム10の構成について説明する。
【0017】
通信システム10は、第1端末101、第2端末103、第1ルータ105、第2ルータ107、及びサーバ109を含む。第1端末101、第2端末103、第1ルータ105、第2ルータ107、及びサーバ109は、インターネットのような広域通信ネットワークNWを介して通信可能に接続されている。
【0018】
第1端末101及び第2端末103はそれぞれ、ネットワークNWを介して他の機器と通信可能な端末である。第1端末101及び第2端末103はそれぞれ、オーディオデータをリアルタイムで送受信することができる装置であってもよい。このような装置から送信されるオーディオデータは、例えば、外部のマイクから受信したオーディオデータ、外部の電子装置から受信したオーディオデータ、入力された演奏操作に応じて生成したオーディオデータであってもよい。図1においては、一例として、2つの端末、第1端末101及び第2端末103のみを示している。しかしながら、端末の数は2つに限定されるわけではなく、2つ以上であってもよい。
【0019】
第1端末101は、制御部111及び記憶部113を含む。制御部111は、CPUなどの演算処理回路を含む。記憶部113は、RAM、ROMなどの記憶装置を含む。記憶部113には、命令が記述された制御プログラムが記憶されている。制御部111は、記憶部113に記憶された制御プログラムをCPUにより実行して、各種機能を第1端末101において実現する。同様に、第2端末103も、制御部115及び記憶部117を含む。制御部115及び記憶部117それぞれの機能は、制御部111及び記憶部113と同様であるので、重複する説明は省略する。
【0020】
第1ルータ105及び第2ルータ107はそれぞれ、NATルータである。第1ルータ105は、第1端末101を配下に備える。第2ルータ107は、第2端末103を配下に備える。第1ルータ105及び第2ルータ107はそれぞれ、図1に示された端末の外に、複数のホスト機器を配下に備え、これらの機器で構成されるローカルネットワークと広域通信ネットワークNWとの間でデータを中継し、両ネットワーク間でアドレス及びポート番号を変換するNAT機能を備える。すなわち、第1ルータ105及び第2ルータ107は、プライベートIPアドレスのようなローカルネットワークでのみ通用するローカルなアドレス及びポート番号と、グローバルIPアドレスのようなネットワークNW上のグローバルなアドレス及びポート番号とを自動的に相互変換する。
【0021】
第1ルータ105が備えるNAT機能は、ルータの配下から、過去の通信で用いたものと同じ送信元アドレス及び同じ送信元ポート番号を使ってパケットを送信する場合、宛先アドレスが変わると、過去の通信で用いたものとは異なるポート番号に変換する。第2ルータ107も、第1ルータ105と同一の機能を有する。
【0022】
第1ルータ105は、制御部119及び記憶部121を含む。制御部119は、CPUなどの演算処理回路を含む。記憶部121は、RAM、ROMなどの記憶装置を含む。記憶部121には、命令が記述された制御プログラムが記憶されている。制御部119は、記憶部121に記憶された制御プログラムをCPUにより実行して、上述したNAT機能を第1ルータ105において実現する。同様に、第2ルータ107も、制御部123及び記憶部125を含む。制御部123及び記憶部125それぞれの機能は、制御部119及び記憶部121と同様であるので、重複する説明は省略する。
【0023】
サーバ109は、第1ルータ105又は第2ルータ107の配下にはない。サーバ109は、第1端末101及び第2端末103間の接続支援、例えば、セッションの開始に先立って行われる第1端末101及び第2端末103同士の接続手続きなどを行う。第1端末101及び第2端末103間で接続が成立した後は、サーバ109を介在することなく、第1端末101及び第2端末103間において、第1ルータ105及び第2ルータ107を介して、オーディオデータなどの演奏情報が直接送受信される。
【0024】
サーバ109は、制御部127及び記憶部129を含む。制御部127は、CPUなどの演算処理回路を含む。記憶部129は、RAM、ROMなどの記憶装置を含む。記憶部129には、命令が記述された制御プログラムが記憶されている。制御部127は、記憶部129に記憶された制御プログラムをCPUにより実行して、上述した、セッションの開始に先立って行われる第1端末101及び第2端末103同士の接続手続きなどの各種機能をサーバ109において実行する。
【0025】
[通信の手順]
本実施形態による通信システム10は、互いに異なるっ第1ルータ105及び第2ルータ107の配下にある複数の端末(ここでは、第1端末101及び第2端末103)と、第1ルータ105又は第2ルータ103の配下にないサーバ109から構成される。第1端末101及び第2端末103の各々は、送信元アドレス、送信元ポート番号、宛先アドレス及び宛先ポート番号を使って、第1端末101及び第2端末103がそれぞれ属している第1ルータ105及び第2ルータ103を介して直接通信を行う。以下、図2図5を参照して、本実施形態による2つの端末間が直接通信に到るまでの手順及び動作例を説明する。なお、以下においては、第1端末101及び第2端末103間で通信を確立する場合を例にして説明する。
【0026】
図2図5は、本実施形態による第1端末101及び第2端末103間が直接通信に到るまでの手順及び動作の一例を説明するための図である。
【0027】
図2に示すように、まず、第1端末101及び第2端末103間の直接通信に先立って、第1端末101は、第1ルータ105に第1ルータ105が使用可能なポート番号の範囲を問い合わせる。ここで、使用可能なポート番号の範囲とは、第1ルータ105が使用可能な、グローバルIPに対応付けられた全てのポート番号を指す。以下、第1ルータ105が使用可能なポート番号の範囲を、第1ポート範囲情報という。第1ポート範囲情報は、記憶部121に記憶されている。第1ルータ105は、配下の第1端末101から問い合わせを受ける。第1ルータ105は、第1端末101からの問い合わせに応じて、第1ポート範囲情報を第1端末101に送信する。図2では、一例として、第1ポート範囲情報が1024~1156,4096~4224,59000~60000である場合を示す。
【0028】
同様に、第2端末103は、第2ルータ107に第2ルータ107が使用可能なポート番号の範囲を問い合わせる。以下、第2ルータ107が使用可能なポート番号の範囲を、第2ポート範囲情報という。第2ポート範囲情報は、記憶部125に記憶されている。第2ルータ107は、配下の第2端末103から問い合わせを受ける。第2ルータ107は、問い合わせに応じて、第2ポート範囲情報を第2端末103に送信する。図2では、一例として、第2ポート範囲情報が1224~1256,5096~5224,61000~62000である場合を示す。
【0029】
次に、図3に示すように、第1端末101は、「送信元アドレス:192.168.0.100.10」及び「送信元ポート番号:5000」を使用して、「宛先アドレス:2.2.2.2」及び「宛先ポート番号:7000」、即ち、サーバ109にデータをパケット化して送信する。この際、データには、第1ポート範囲情報が含まれる。
【0030】
同様に、第2端末103は、「送信元アドレス:192.168.100.20」及び「送信元ポート番号:6000」を使用して、「宛先アドレス:2.2.2.2」及び「宛先ポート番号:7000」、即ちサーバ109にデータをパケット化して送信する。この際、データには、第2ポート範囲情報が含まれる。
【0031】
サーバ109は、第1ルータ105を介して第1端末101からパケットを受信する。サーバ109は、第1端末101を配下とする第1ルータ105による変換結果である「送信元アドレス:1.1.1.1」、「送信元ポート番号:60000」、及び「第1ポート範囲情報:1024~1156,4096~4224,59000~60000」を確認する。
【0032】
同様にサーバ109は、第2ルータ107を介して第2端末103からパケットを受信する。サーバ109は、第2端末103を配下とする第2ルータ107による変換結果である「送信元アドレス:3.3.3.3」、「送信元ポート番号:5224」、及び「第2ポート範囲情報:1224~1256,5096~5224,61000~62000」を確認する。
【0033】
次に、サーバ109は、確認した第1端末101に関する「送信元アドレス:1.1.1.1」を第1端末101のアドレスとして決定するとともに、確認した第1端末101に関する「送信元ポート番号:60000」と「第1ポート範囲情報:1024~1156,4096~4224,59000~60000」とに基づいて、第2端末103が第1端末101に通信を試みる際に用いられると推測されるポート番号を選択する。
【0034】
ここで、サーバ109が、第2端末103が第1端末101に通信を試みる際に用いられると推測されるポート番号を選択する手順について簡単に説明する。まず、サーバ109は、受信したパケットの送信元ポート番号の次の番号、即ち、受信したパケットの送信元ポート番号に「+1」を加算したポート番号が第1ポート範囲情報に含まれているか否かを確認する。受信したパケットの送信元ポート番号に「+1」を加算したポート番号が第1ポート範囲情報に含まれていれば、サーバ109は、「送信元ポート番号」に「+1」を加算したポート番号を、第2端末103が第1端末101に通信を試みる際に用いられると推測されるポート番号として選択する。一方、受信したパケットの送信元ポート番号に「+1」を加算したポート番号が第1ポート範囲情報に含まれていない場合、サーバ109は、第1ポート範囲情報のうち、受信したパケットの送信元ポート番号よりも大きな1つ以上のポート番号の中から、最小のポート番号を、第2端末103が第1端末101に通信を試みる際に用いられると推測されるポート番号として選択する。さらに、受信したパケットの送信元ポート番号に「+1」を加算したポート番号が第1ポート範囲情報に含まれておらず、且つ、受信したパケットの送信元ポート番号よりも大きなポート番号が第1ポート範囲情報の中に存在しない場合、サーバ109は、第1ポート範囲情報の中から、最小のポート番号を、第2端末103が第1端末101に通信を試みる際に用いられると推測されるポート番号として選択する。
【0035】
図3図4を参照して具体的に説明する。サーバ109は、確認した第1端末101に関する「送信元ポート番号」に「+1」を加算したポート番号を第2端末103が第1端末101に通信を試みる際に用いられるポート番号として選択する。第1端末101に関する「送信元ポート番号:60000」の場合、「+1」を加算したポート番号は「60001」である。しかしながら、「60001」は、第1ポート範囲情報に含まれていない。このように、選択されたポート番号、即ち、「送信元ポート番号」に「+1」を加算されたポート番号が、第1ポート範囲情報に含まれていない場合、サーバ109は、「第1ポート範囲情報:1024~1156,4096~4224,59000~60000」の中から、第2端末103が第1端末101に通信を試みる際に用いられると推測される所定のポート番号を選択する。「送信元ポート番号:60000」は、「第1ポート範囲情報:1024~1156,4096~4224,59000~60000」における最大のポート番号である。そのため、サーバ109は、「第1ポート範囲情報:1024~1156,4096~4224,59000~60000」における最小のポート番号「1024」を第2端末103が第1端末101に通信を試みる際に用いられると推測されるポート番号として選択する。そして、サーバ109は、第2端末103に対して、第1端末101のアドレスが「1.1.1.1」であり、第1端末101のポート番号は「1024」であることを通知する。
【0036】
同様に、サーバ109は、確認した第2端末103に関する「送信元アドレス:3.3.3.3」を第2端末103のアドレスとして決定するとともに、確認した第2端末103に関する「送信元ポート番号:5224」と「第2ポート範囲情報:1224~1256,5096~5224,61000~62000」とに基づいて、第1端末101が第2端末103に通信を試みる際に用いられると推測されるポート番号を選択する。サーバ109は、確認した第2端末103に関する「送信元ポート番号」に「+1」を加算したポート番号を第1端末101が第2端末103に通信を試みる際に用いられると推測されるポート番号として選択する。第2端末103に関する「送信元ポート番号:5224」の場合、「+1」を加算したポート番号は「5225」である。しかしながら、「5225」は、第2ポート範囲情報に含まれていない。このように、選択されたポート番号、即ち、「送信元ポート番号」に「+1」を加算されたポート番号が、第2ポート範囲情報に含まれていない場合、サーバ109は、「第2ポート範囲情報:1224~1256,5096~5224,61000~62000」の中から、第1端末101が第2端末103に通信を試みる際に用いられると推測される所定のポート番号を選択する。「第2ポート範囲情報:1224~1256,5096~5224,61000~62000」において、「送信元ポート番号:5224」よりも大きなポート番号:61000~62000のうち、最小のポート番号は61000である。そのため、サーバ109は、「第2ポート範囲情報:1224~1256,5096~5224,61000~62000」のなかから、ポート番号「61000」を第1端末101が第2端末103に通信を試みる際に用いられると推測されるポート番号として選択する。そして、サーバ109は、第1端末101に対して、第2端末103のアドレスが「3.3.3.3」であり、第2端末103のポート番号は「61000」であることを通知する。
【0037】
第1端末101は、サーバ109から、第2端末103のアドレスが「3.3.3.3」であり、第2端末103のポート番号が「61000」であるという通知を取得する。同様に、第2端末103は、サーバ109から、第1端末101のアドレスが「1.1.1.1」であり、第1端末101のポート番号が「1024」であるという通知を取得する。
【0038】
図5に示すように、第1端末101は、最初にサーバ109にパケットを送信したときに使った「送信元ポート番号:5000」とは異なる「送信元ポート番号:5001」を確保する。そして、第1端末101は、「送信元アドレス:192.168.100.10」及び「送信元ポート番号:5001」を使用して、サーバ109から通知された「宛先アドレス:3.3.3.3」及び「宛先ポート番号:61000」、即ち、第2端末103にパケットを送信する。
【0039】
同様に、第2端末103は、最初にサーバ109にパケットを送信したときに使った「送信元ポート番号:6000」とは異なる「送信元ポート番号:6001」を確保する。そして、第2端末103は、「送信元アドレス:192.168.100.20」及び「送信元ポート番号:6001」を使用して、サーバ109から通知された「宛先アドレス:1.1.1.1」及び「宛先ポート番号:1024」、即ち、第1端末101にパケットを送信する。
【0040】
[動作]
次に、具体的な通信フローの一例について説明する。図6図9は、本実施形態による端末側の接続処理の一例を示す。ここで、端末は、第1端末101であってもよく、第2端末103であってもよい。図10及び図11は、本実施形態によるルータ側の接続支援処理の一例を示す。ここで、ルータは、第1ルータ105であってもよく、第2ルータ107であってもよい。図12は、本実施形態によるサーバ(サーバ109)側の接続支援処理の一例を示す。図6図9に示す処理例は、端末のCPUによって実行される接続処理に係るコンピュータプログラムのフローチャートを示している。図10及び図11に示す処理例は、ルータのCPUによって実行される、接続支援処理に係るコンピュータプログラムのフローチャートを示している。また、図12に示す処理例は、サーバ(サーバ109)のCPUによって実行される、接続支援処理に係るコンピュータプログラムのフローチャートを示している。
【0041】
以下の説明では、便宜上、一つの端末のサーバ109に対する接続の通知について説明する。しかしながら、相互に通信する他の端末も、同様に図6図9に示すプログラム処理をそれぞれ実行する。
【0042】
端末は、ユーザ操作による接続開始の指示があると、図6に示すプログラムの実行を開始する。端末は、まず、自身が属するルータに、該ルータが使用可能なポート番号の範囲、即ち、該ルータに対応するポート範囲情報を問い合わせる(S101)。
【0043】
一方、ルータは、配下の端末からポート範囲情報の問い合わせを受けると、図10に示すプログラムの実行を開始する。ルータは、配下の端末からの問い合わせに応答して、自身がポート範囲情報を、該端末に通知する(S301)。
【0044】
再び図6を参照すると、端末は、ルータから通知された、該ルータに対応するポート範囲情報を取得する(S102)。そして、端末は、サーバ109に対して接続を行うことを通知する(S103)。次に、端末は、サーバ109から接続開始の指示が届いたか否か、すなわち、他の参加者が現れたかどうかを判定する(S104)。サーバ109から接続開始の指示が届いていない場合(S104;No)には、端末は、S104の処理を繰り返し実行して接続開始の指示を待つ。
【0045】
一方、サーバ109は、前述のS103の処理により、端末から接続の通知が届くと、図12に示すプログラムの実行を開始する。サーバ109は、まず、接続待ちの端末TMが2つ以上存在するか否か(つまり、他の参加者が現れたどうか)を判定する(S201)。接続待ちの端末が2つ以上存在しなければ(S201;No)、サーバ109は、接続待ちの端末TMが2つ以上になるまで待つ。なお、本実施形態の場合、2つの端末、即ち、第1端末101及び第2端末103からの接続の通知が届くと、接続待ちの端末TMが2つ以上存在する(S201;Yes)と判定される。
【0046】
接続待ちの端末TMが2つ以上存在する(S201;Yes)と判定されると、サーバ109は、接続待ちの全ての端末に対して接続開始の指示を送信する(S202)。次に、サーバ109は、接続開始を指示した全ての端末からポート番号P1へのパケットを受信したか否かを判定する(S203)。全ての端末からポート番号P1へのパケットを受信していない状態(S203;No)では、サーバ109は、全ての端末からのパケットの受信を待つ。
【0047】
一方、図6に示すように、接続開始の指示待ちの各端末は、S104の処理の待機中、サーバ109から接続開始の指示が送信される(S104;Yes)と、S105の処理に進む。端末は、所定の送信元アドレス及び送信元ポート番号を使って、サーバ109に対してポート番号P1宛てにパケットを送信する(S105)。そして、端末は、サーバ109から接続先のポート番号とアドレスの通知が届いたかを判定する(S106)。接続先のポート番号とアドレスの通知が届いていない場合(S106;No)、端末は、接続先のポート番号とアドレスの通知を待つ。
【0048】
一方、前述のS105の処理により、ルータは、端末からサーバ109に対してポート番号P1宛てにパケットを受信すると、図11に示すプログラムの実行を開始する。ルータは、受信したパケットの送信元IPアドレス及び送信元ポート番号を変換して、ポート番号P1宛てにパケットを送信する(S302)。
【0049】
再び、図12を参照する。パケットの受信を待っているサーバ109は、S203の処理において、端末からパケットの送信があるごとに、送信されたパケットを受信する。そして、サーバ109は、接続が通知された全ての端末からポート番号P1へのパケットを受信すると(S203;Yes)、S204の処理に進む。サーバ109は、各端末から受信したパケットの送信元ポート番号、及びパケットを送信した端末が属するルータに対応するポート範囲情報に基づいて、各端末が接続しようとする端末に通信を試みる際に用いられると推測されるポート番号を選択する。具体的には、サーバ109は、各端末から受信したパケットの送信元ポート番号に「+1」を加算することにより得られたポート番号を、該端末が通信相手となる端末に通信を試みる際に用いられると推測されるポート番号として選択する。しかしながら、受信したパケットの送信元ポート番号に「+1」を加算することにより得られたポート番号が、接続しようとする端末が属するルータに対応するポート範囲情報に含まれていない場合、サーバ109は、そのポート範囲情報のなかから所定のポート番号を、該端末が接続しようとする端末に通信を試みる際に用いられると推測されるポート番号として選択する。サーバ109は、受信したパケットの送信元アドレス及び選択されたポート番号を全ての端末に送信する(S205)。
【0050】
次に、サーバ109は、端末から、「接続完了」、「接続のリトライ通知」及び「接続失敗」の何れかのパケットが届いたか否かを判定する(S206)。パケットが届いていなければ(S206;No)、サーバ109はパケットが届くのを待つ。尚、S206の判定における「接続完了」に関しては、S205の処理により接続開始の指示を送信した全ての端末から通知があったか否かを判定する。一方、「接続のリトライ通知」及び「接続失敗」に関しては、全ての端末のうちのいずれか一つの端末からの通知があったか否かを判定する。
【0051】
再び図6を参照する。接続先のポート番号とアドレスの通知を待っている端末は、端末が属するルータを介して、サーバ109からの接続先アドレスとポート番号が届くと(S106;Yes)、S107の処理に進む。尚、ここで、サーバ109から受信されたポート番号は、サーバ109が各端末から受信したパケットの送信元ポート番号、及び各端末が属するルータに対応するポート範囲情報に基づいて選択されたポート番号である。端末は、S105の処理を実行する際に使用した送信元ポート番号、即ち、サーバ109にパケットを送信した際に使った送信元ポート番号とは異なる新たな送信元ポート番号を設定する(S107)。この場合、サーバ109にパケットを送信した際に使った送信元ポート番号に「+1」を加算することにより新たな送信元ポート番号を設定してもよい。しかしながらこれに限定されるわけではなく、端末は、サーバ109にパケットを送信した際に使った送信元ポート番号と異なれば、他のポート番号を送信元ポート番号として設定してもよい。
【0052】
次に、端末は、S105の処理と同じ所定の送信元アドレス、及び新たに設定した送信元ポート番号を使い、サーバ109から通知された通信相手となる端末のポート番号及びアドレスへ試行パケットを送信することにより、通信相手の端末との接続を試行する(S108)。
【0053】
尚、端末は、サーバ109から通知された通信相手となる端末のポート番号及びアドレスのみを使って接続しようとする端末との接続を試行するだけではなく、サーバ109から通知された通信相手の端末のポート番号の前後の複数のポート番号を使って接続を試行してもよい。前後のポート番号とは、例えば、通知されたポート番号に「+1」、「+2」、「+3」・・・をそれぞれ加算した数個のポート番号及び通知されたポート番号から「+1」、「+2」、「+3」・・・をそれぞれ減算した数個のポート番号である。接続しようとする相手の端末が属するルータが別の通信で使用中の場合、該ルータは、サーバ109から通知されたポート番号の前後のポートに変更することがある。この結果、サーバ109から通知されたポート番号の試行だけでは、試行パケットは接続しようとする端末に届かないこともある。この場合、端末は、サーバ109から通知された通信相手の端末のポート番号の前後の複数のポート番号を使って接続を試行する。
【0054】
S108の処理後、端末は、接続しようとする相手の端末からの試行パケットが届いたか否かを判定する(S109)。相手端末からの試行パケットが届かない状態(S109;No)では、端末は、S110の処理に進む。端末は、接続しようとする相手端末からのパケットを待つ最大時間が経過したか否かを判定する(S110)。そして、最大時間が経過していない間(S110;No)は、端末は、S109の処理に戻り、接続しようとする相手端末からの試行パケットが届くまで或いは最大時間が経過するまで、S109~S110の処理を繰返し実行する。
【0055】
接続しようとする相手の端末から試行パケットが届くと(S109;Yes)、端末は、図8に示す、S111の処理に進む。この場合、端末は、サーバ109に接続完了したことを通知する(S111)。これにより、接続しようとする相手端末から試行パケットを受け取った端末は、相手端末との直接的な接続が確立し、この接続動作を終了する。なお、受け取った試行パケットは、相手端末に関する送信元アドレス及び送信元ポート番号を含むため、試行パケットを受け取った端末は、相手端末のアドレスとポート番号を認識することができる。この後、2つの端末間でパケットの送受信が直接行われる。
【0056】
一方、接続しようとする相手端末からの試行パケットが届かない状態(S109;No)で、最大時間が経過すると(S110;Yes)、端末は、S108の処理によるパケット送信の試行を最大試行回数行ったか否かを判定する(S112)。最大試行回数行っていないとき(S112;No)には、端末は、図7に示す、S113の処理に進む。最大試行回数行っていない場合(S112;No)、端末は、サーバ109に接続のリトライを通知して(S113)、S105に戻り、前述した処理S105~S110、S112、S113からなる接続の再試行を繰返し実行する。そして、パケット送信の試行を最大試行回数行ったとき(S112;Yes)には、端末は、図9に示すように、サーバ109に接続が失敗したことを通知して接続を断念し、この接続動作を終了する(S114)。この場合、端末は、接続しようとする相手端末と接続ができなかったことになる。
【0057】
再び図12を参照する。S206の処理を繰り返し中のサーバ109は、端末から、「接続完了」、「接続のリトライ通知」及び「接続失敗」の何れかのパケットが届くと(S206;Yes)、端末から届いた「接続完了」、「接続のリトライ通知」又は「接続失敗」に応じて分岐処理を実行する(S207)。
【0058】
「接続完了」のパケットを受信した場合、サーバ109は、S208の処理に進み、接続完了とし、パケットを受信した端末を接続待ちの端末から削除する。また、「接続のリトライ通知」のパケットを受信した場合、サーバ109は、S202の処理に戻って、前述した処理S202~S207の処理を繰り返し実行する。さらに、「接続失敗」のパケットを受信した場合、サーバ109は、S209の処理に進み、接続失敗とし、パケットを受信した端末を接続待ちの端末から削除する。そして、S208又はS209の処理後は、元の待機状態に戻る。
【0059】
[端末の構成]
図13は、第1端末101及び第2端末103における接続処理を実行するための機能構成を示すブロック図である。図13を参照して、第1端末101及び第2端末103の機能構成について説明する。
【0060】
第1端末101は、第1取得部203、第1送信部205、第1受信部207、及び第1通信部209を含む。
【0061】
第1取得部203は、第1ルータ105から第1ポート範囲情報を取得する。第1取得部203は、第1ルータ105に第1ポート範囲情報を問い合わせて、第1ルータ105から通知された第1ポート範囲情報を取得してもよい。インターネット接続の接続方式は、IPv4 over IPv6方式であってもよい。
【0062】
第1送信部205は、第1ルータ105を介してサーバ109にデータをパケット化して送信する。この際、データには、取得された第1ルータ105の第1ポート範囲情報が含まれる。
【0063】
第1受信部207は、第2端末103への通信を試みるための第2端末103のIPアドレス、及びポート番号、即ち、第2端末103が属する第2ルータ107のIPアドレス、及び、第2ルータ107のポート番号(以下、第2ルータ107の送信元ポート番号ともいう)と第2ルータ107に対応する第2ポート範囲情報とに基づいて選択された所定の第2ルータ107のポート番号の通知をサーバ109から受信する。
【0064】
第1通信部209は、サーバ109から通知された、第2ルータ107のIPアドレス及び選択された所定の第2ルータ107のポート番号を、宛先アドレス及び宛先ポート番号として、第2端末103への接続を試行する。
【0065】
第2端末103は、第2取得部213、第2送信部215、第2受信部217、及び第2通信部219を含む。
【0066】
第2取得部213は、第2ルータ107から第2ポート範囲情報を取得する。第2取得部213は、第2ルータ107に第2ポート範囲情報を問い合わせ、第2ルータ107から通知された第2ポート範囲情報を取得してもよい。インターネット接続の接続方式は、IPv4 over IPv6方式であってもよい。
【0067】
第2送信部207は、第2ルータ107を介してサーバ109にデータをパケット化して送信する。この際、データには、取得された第2ルータ107の第2ポート範囲情報が含まれる。
【0068】
第2受信部217は、第1端末101への通信を試みるための第1端末101のIPアドレス、及びポート番号、即ち、第1端末101が属する第1ルータ105のIPアドレス、及び、第1ルータ105のポート番号(以下、第1ルータ105の送信元ポート番号ともいう)と第1ルータ105に対応する第1ポート範囲情報とに基づいて選択された所定の第1ルータ105のポート番号の通知をサーバ109から受信する。
【0069】
第2通信部219は、サーバ109から通知された、第1ルータ105のIPアドレス、及び選択された所定の第1ルータ105のポート番号を、宛先アドレス及び宛先ポート番号として、第1端末101への接続を試行する。
【0070】
[サーバの構成]
図14は、サーバ109における接続支援処理を実行するための機能構成を示すブロック図である。図3を参照して、サーバ109の機能構成を説明する。サーバ109は、受信部303、ポート選択部305、及び送信部307を含む。
【0071】
受信部303は、第1ルータ105を介して第1端末101からパケットを受信する。同様に、受信部303は、第2ルータ107を介して第2端末103からもパケットを受信する。第1端末101から送られたデータには、第1ルータ105に対応する第1ポート範囲情報が含まれる。第2端末103から送られたデータには、第2ルータ107に対応する第2ポート範囲情報が含まれる。
【0072】
ポート選択部305は、第1ルータ105の送信元ポート番号、及び第1ポート範囲情報に基づいて、第1ポート範囲情報のなかから、所定の第1ルータ105のポート番号を選択する。選択されるポート番号は、宛先アドレスが変更される際に使用される、新に設定されるポート番号である。ここでは、選択されるポート番号は、第1端末101からサーバ109にパケットを送信した際に使用されたポート番号とは異なるポート番号であり、第1端末101が第2端末103に接続を試行する際に使用される、新に設定されるポート番号である。
【0073】
同様に、ポート選択部305は、第2ルータ107の送信元ポート番号、及び第2ポート範囲情報に基づいて、第2ポート範囲情報のなかから、所定の第2ルータ107のポート番号を選択する。選択されるポート番号は、宛先アドレスが変更される際に使用される、新に設定されるポート番号である。ここでは、選択されるポート番号は、第2端末103からサーバ109にパケットを送信した際に使用されたポート番号とは異なるポート番号であり、第2端末103が第1端末101に接続を試行する際に使用される、新に設定されるポート番号である。ポート選択部305によって実行されるポート番号の選択手順は、前述のとおりであり、重複する説明は省略する。
【0074】
送信部307は、ポート選択部305において選択されたポート番号を、予め決められた端末に送信する。例えば、送信部307は、第1ルータ105の送信元ポート番号、及び第1ポート範囲情報に基づいて選択されたポート番号を、第2ルータ107を介して第2端末103に送信する。同様に、送信部307は、第2ルータ107の送信元ポート番号、及び第2ポート範囲情報に基づいて選択されたポート番号を、第1ルータ105を介して第1端末101に送信する。
【0075】
第1端末101は、サーバ109から取得した第2ルータ107の送信元ポート番号、及び第2ポート範囲情報のなかから選択された所定のポート番号を用いて、第2端末103への接続を試行する。同様に、第2端末103は、サーバ109から取得した第1ルータ105の送信元ポート番号、及び第1ポート範囲情報のなかから選択された所定のポート番号を用いて、第1端末101への接続を試行する。第1端末101及び第2端末103間での接続方式は、P2P接続である。
【0076】
[ルータの構成]
図15は、第1ルータ105における接続支援処理を実行するため機能構成を示すブロック図である。図15を参照して、第1ルータ105の機能構成を説明する。尚、第2ルータ107は、第1ルータ105と略同一の機能構成を有するため、図示と詳細な説明はここでは省略する。
【0077】
第1ルータ105は、受信部401、送信部403、ポート変更部405を含む。受信部401は、配下の第1端末101から、第1ルータ105に対応する第1ポート範囲情報を通知するようリクエストする問い合わせを受信する。
【0078】
この問い合わせに応答して、送信部403は、第1ポート範囲情報を第1端末105に通知する。送信部403は、記憶部121に記憶された第1ポート範囲情報を読みだしてもよい。また、第1端末101からサーバ109にパケットが送信される際、送信部403は、第1ポート範囲情報とともに、自身の、即ち、第1ルータ105のIPアドレス及びポート番号を送信元アドレス及び送信元ポートとしてサーバ109に送信する。
【0079】
ポート変更部405は、宛先IPアドレスが変更されると、送信元として使用するポート番号を、自身が使用可能なポート番号の範囲から選択された別のポート番号に変更する。
【0080】
以上に説明したように、本実施形態においては、2つの端末(第1端末101及び第2端末103)の直接通信に先立って、まず、第1端末101及び第2端末103からサーバ109に、第1ポート範囲情報又は第2ポート範囲情報を含む、パケット化されたデータが送信される。サーバ109は、パケット送信に使われた送信元ポート番号と、第1ポート範囲情報及び第2ポート範囲情報とに基づいて、それぞれの端末が接続しようとする試みる相手端末の所定のポート番号を選択して、各端末に通知する。その後、第1端末101及び第2端末103は、サーバ109への送信時に使った送信元ポート番号とは異なる送信元ポート番号と、サーバ109から通知された相手端末のIPアドレス及び選択されたポート番号を使って、互いに直接通信し合うことができる。すなわち、本実施形態においては、宛先アドレスが変更されると、第1ルータ105及び第2ルータ107は、送信元ポート番号をシーケンシャルに変更するという性質を用いることにより、第1端末101を支配する第1ルータ105、及び第2端末103を支配する第2ルータ107のタイプとは無関係に、第1端末101及び第2端末103は直接通信できるようになる。したがって、本実施形態によれば、第1ルータ105及び第2ルータ107がどのようなタイプのNATルータであっても、第1端末101及び第2端末103は、サーバ109への送信に使った送信元ポート番号を変更するだけで、互いに直接通信することができるようになる。
【0081】
[変形例1]
上記の実施形態では、第1端末101及び第2端末103間の直接通信に先立って、第1端末101は、第1ルータ105に第1ポート範囲情報を問い合わせている。同様に、第2端末103は、第2ルータ107に第2ポート範囲情報を問い合わせている。しかしながら、各端末は、該端末が属するルータに対応するポート範囲情報を、前述のサーバ109とは異なる別のサーバに問い合わせてもよい。このようなサーバは、IPv6アドレスからIPv4アドレスに割り当てられたポート番号の範囲、即ち、ポート範囲情報を所定の演算方法により算出することが可能である。サーバは、算出したポート範囲情報を、各端末に通知する。
【0082】
[変形例2]
上記の実施形態では、サーバ109は、第1端末101から受信したパケットの、送信元ポート番号、及び第1ポート範囲情報に基づいて、第1ポート範囲情報のなかから、宛先アドレスが変更される際に使用される、所定の第1ルータ105のポート番号を選択している。同様に、サーバ109は、第2端末103から受信したパケットの送信元ポート番号、及び第2ポート範囲情報に基づいて、第2ポート範囲情報のなかから、宛先アドレスが変更される際に使用される、所定の第2ルータ107のポート番号を選択している。しかしながら、端末が別の端末に通信を試みる際に用いられるポート番号は、端末側で選択されてもよい。
【0083】
図16は、変形例2による第1端末101及び第2端末103間が直接通信に到るまでの手順及び動作の一部を説明するための図である。図3を参照して説明したように、サーバ109は、第1ルータ105を介して第1端末101からパケットを受信する。サーバ109は、第1端末101を配下とする第1ルータ105による変換結果である「送信元アドレス:1.1.1.1」、「送信元ポート番号:60000」、及び「第1ポート範囲情報:1024~1156,4096~4224,59000~60000」を受信する。また、サーバ109は、第2ルータ107を介して第2端末103からパケットを受信する。サーバ109は、第2端末103を配下とする第2ルータ107による変換結果である「送信元アドレス:3.3.3.3」、「送信元ポート番号:5224」、及び「第2ポート範囲情報:1224~1256,5096~5224,61000~62000」を受信する。
【0084】
図16に示すように、サーバ109は、受信した第1端末101の「送信元アドレス:1.1.1.1」、「送信元ポート番号:60000」、及び「第1ポート範囲情報:1024~1156,4096~4224,59000~60000」を第2端末103に送信する。同様に、サーバ109は、受信した第2端末の「送信元アドレス:3.3.3.3」、「送信元ポート番号:5224」、及び「第2ポート範囲情報:1224~1256,5096~5224,61000~62000」を第1端末に送信する。
【0085】
第1端末101は、受信した第2端末の「送信元ポート番号:5224」及び「第2ポート範囲情報:1224~1256,5096~5224,61000~62000」に基づいて、第2ポート範囲情報のなかから、宛先アドレスが変更される際に使用される、所定の第2ルータ107のポート番号を選択してもよい。同様に、第2端末103は、受信した第1端末の「送信元ポート番号:60000」及び「第1ポート範囲情報:1024~1156,4096~4224,59000~60000」に基づいて、第1ポート範囲情報のなかから、宛先アドレスが変更される際に使用される、所定の第1ルータ107のポート番号を選択してもよい。ポート番号の選択手順は、サーバ109によって実行されるポート番号の選択手順と同様であってもよい。
【0086】
図17は、変形例2に係る第1端末101A及び第2端末103Aの機能構成を説明するための図である。
【0087】
第1端末101Aは、第1取得部203、第1送信部205、第1受信部207、第1通信部209及び第1ポート選択部221を含む。図17に示した第1取得部203、第1送信部205、第1受信部207及び第1通信部209は、図13を参照して説明した第1取得部203、第1送信部205、第1受信部207及び第1通信部209と同様である。
【0088】
第1ポート範囲選択部221は、受信した第2端末の「送信元ポート番号:5224」及び「第2ポート範囲情報:1224~1256,5096~5224,61000~62000」に基づいて、第2ポート範囲情報のなかから、宛先アドレスが変更される際に使用される、所定の第2ルータ107のポート番号を選択する。ポート番号の選択手順は、サーバ109によって実行されるポート番号の選択手順と同様である。
【0089】
第2端末103Aは、第2取得部213、第2送信部215、第2受信部217、第2通信部219及び第2ポート選択部223を含む。第2端末103Aは、第2取得部213、第2送信部215、第2受信部217、第2通信部219及び第2ポート選択部223に機能は、第1取得部203、第1送信部205、第1受信部207、第1通信部209及び第1ポート選択部221と同様であるため、重複する説明は省略する。
【0090】
[変形例3]
上記の実施形態では、サーバ109が、第1端末101から受信したパケットの、送信元ポート番号、及び第1ポート範囲情報に基づいて、第1ポート範囲情報のなかから所定の第1ルータ105のポート番号を選択して、選択された第1ルータ105のポート番号を第2端末103に送信している。同様に、サーバ109が、第2端末103から受信したパケットの送信元ポート番号、及び第2ポート範囲情報に基づいて、第2ポート範囲情報のなかから、所定の第2ルータ107のポート番号を選択して、選択された第2ルータ107のポート番号を第1端末101の送信している。しかしながら、サーバ109は、サーバ109と通信可能な別のサーバに第1端末101から受信したパケットの、送信元ポート番号、及び第1ポート範囲情報を送信してもよい。別のサーバは、受信した送信元ポート番号、及び第1ポート範囲情報に基づいて、第1ポート範囲情報のなかから所定の第1ルータ105のポート番号を選択して、選択された第1ルータ105のポート番号を第2端末103に送信してもよい。同様に、サーバ109は、サーバ109と通信可能な別のサーバに第2端末103から受信したパケットの、送信元ポート番号、及び第2ポート範囲情報を送信してもよい。別のサーバは、受信した送信元ポート番号、及び第2ポート範囲情報に基づいて、第2ポート範囲情報のなかから所定の第2ルータ107のポート番号を選択して、選択された第2ルータ107のポート番号を第1端末101に送信してもよい。尚、上記別のサーバに代えて、サーバ109は、サーバ109の接続可能な別の端末(第3の端末)に受信した第1端末101から受信したパケットの、送信元ポート番号、及び第1ポート範囲情報を送信し、該端末が受信した送信元ポート番号、及び第1ポート範囲情報に基づいて、第1ポート範囲情報のなかから所定の第1ルータ105のポート番号を選択して、選択された第1ルータ105のポート番号を第2端末103に送信してもよい。同様に、サーバ109は、サーバ109の該端末(第3の端末)に受信した第2端末103から受信したパケットの、送信元ポート番号、及び第2ポート範囲情報を送信し、該端末が受信した送信元ポート番号、及び第2ポート範囲情報に基づいて、第2ポート範囲情報のなかから所定の第2ルータ107のポート番号を選択して、選択された第2ルータ107のポート番号を第1端末101に送信してもよい。
【0091】
以上が変形例に関する説明である。
【0092】
以上のとおり、本発明の一実施形態によれば、第1ルータの使用可能なポート番号の範囲を取得し、第2端末に第1ルータのポート番号を取得させるために、取得した第1ルータの使用可能なポート番号の範囲を第1ルータを介して第1サーバに送信し、第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて選択される所定の第2ルータのポート番号を特定するための情報を第1サーバから取得し、第2ルータのポート番号を宛先ポート番号として第1ルータを介して第2端末への接続を試行する、処理を第1端末に実行させるためのプログラムが提供される。該プログラムは、以下のように構成することもできる。
【0093】
第1ルータに第1ルータの使用可能なポート番号の範囲を問い合わせる処理を第1端末に実行させ、第1ルータから第1ルータの使用可能なポート番号の範囲を取得する。
【0094】
第2サーバに第1ルータの使用可能なポート番号の範囲を問い合わせる処理を第1端末に実行させ、第2サーバから第1ルータの使用可能なポート番号の範囲を取得する。
【0095】
所定の第2ルータのポート番号を特定するための情報は、第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて第1サーバによって選択された所定の第2ルータのポート番号である。
【0096】
所定の第2ルータのポート番号を特定するための情報に含まれる、第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて所定の第2ルータのポート番号を選択することを含む。
【0097】
第1ルータの使用可能なポート番号の範囲は、インターネット接続のためのポート番号の範囲である。
【0098】
インターネット接続の接続方式は、IPv4 over IPv6である。
【0099】
第2端末への接続は、P2P接続である。
【0100】
また、本発明の一実施形態によれば、第1端末から使用可能なポート番号の範囲の問い合わせを受信する受信部と、問い合わせに応答して、使用可能なポート番号の範囲を第1端末に送信する送信部と、を備え、送信部は、第1端末からのリクエストに基づいて、使用可能なポート番号の範囲と自身の外部ポート番号を外部に送信する、ルータが提供される。該ルータは、以下のように構成することもできる。
【0101】
宛先アドレスが変更されると、送信元として使用するポート番号を前記使用可能なポート番号の範囲から選択された別のポート番号に変更するポート変更部をさらに備える。
【0102】
また、本発明の一実施形態によれば、端末からルータの使用可能なポート番号の範囲を受信する受信部と、ルータからした送信元ポート番号とルータの使用可能なポート番号の範囲とに基づいて、所定のルータのポート番号を選択するポート選択部と、所定のルータのポート番号を予め決められた別の端末に送信する送信部と、を備えるサーバが提供される。
【0103】
また、本発明の一実施形態によれば、第1ルータの配下にある第1端末と、第2ルータの配下にある第2端末と、ルータの配下にないサーバとから成り、第1端末及び第2端末が、送信元アドレス、送信元ポート番号、宛先アドレス及び宛先ポート番号を使って、第1ルータ及び第2ルータを介して互いに通信する通信システムにおいて、第1端末は、第1ルータの使用可能なポート番号の範囲を取得する第1取得部と、取得した第1ルータの使用可能なポート番号の範囲を第1ルータを介してサーバに送信する第1送信部と、第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて選択された所定の第2ルータのポート番号をサーバから受信する第1受信部と、第2ルータのポート番号を宛先ポート番号として第1ルータを介して第2端末への接続を試行する第1通信部と、を備え、第2端末は、第2ルータの使用可能なポート番号の範囲を取得する第1取得部と、取得した第2ルータの使用可能なポート番号の範囲を第2ルータを介してサーバに送信する第2送信部と、第1ルータの送信元ポート番号と第1ルータの使用可能なポート番号の範囲とに基づいて選択された所定の第1ルータのポート番号をサーバから受信する第2受信部と、第1ルータのポート番号を宛先ポート番号として第2ルータを介して第1端末への接続を試行する第2通信部と、を備え、サーバは、第1端末から第1ルータの使用可能なポート番号の範囲と、第1送信元ポート番号とを受信し、且つ第2端末から第2ルータの使用可能なポート番号の範囲と、第2送信元ポート番号とを受信し、第1ルータの送信元ポート番号と第1ルータの使用可能なポート番号の範囲とに基づいて選択される所定の第1ルータのポート番号を特定するための情報を第2受信部に送信し、且つ第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて選択される所定の第2ルータのポート番号を特定するための情報を第1受信部に送信する、通信システムが提供される。
【0104】
第1端末は、サーバから受信した所定の第2ルータのポート番号を特定するための情報に含まれる、第2ルータの送信元ポート番号と第2ルータの使用可能なポート番号の範囲とに基づいて所定の第2ルータのポート番号を選択する第1ポート選択部を備え、第2端末は、サーバから受信した所定の第1ルータのポート番号を特定するための情報に含まれる、第1ルータの送信元ポート番号と第1ルータの使用可能なポート番号の範囲とに基づいて所定の第1ルータのポート番号を選択する第2ポート選択部を備える。
【符号の説明】
【0105】
10…通信システム、101,101A…第1端末、103,103A…第2端末、105…第1ルータ、107…第2ルータ、109…サーバ、111…制御部、113…記憶部、115…制御部、117…記憶部、119…制御部、121…記憶部、123…制御部、125…記憶部、127…制御部、129…記憶部、203…第1取得部、205…第1送信部、207…第1受信部、209…第1通信部、213…第2取得部、215…第2送信部、217…第2受信部、219…第2通信部、221…第1ポート選択部、223…第2ポート選択部、303…受信部、305…ポート選択部、401…受信部、403…送信部、405…ポート変更部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17