JP6331421B2 - Communication system and server - Google Patents
Communication system and server Download PDFInfo
- Publication number
- JP6331421B2 JP6331421B2 JP2014013497A JP2014013497A JP6331421B2 JP 6331421 B2 JP6331421 B2 JP 6331421B2 JP 2014013497 A JP2014013497 A JP 2014013497A JP 2014013497 A JP2014013497 A JP 2014013497A JP 6331421 B2 JP6331421 B2 JP 6331421B2
- Authority
- JP
- Japan
- Prior art keywords
- port number
- terminal
- server
- nat router
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004891 communication Methods 0.000 title claims description 54
- 230000005540 biological transmission Effects 0.000 claims description 197
- 230000008859 change Effects 0.000 claims description 26
- 238000000034 method Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 description 24
- 238000013507 mapping Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 8
- 230000001419 dependent effect Effects 0.000 description 7
- 230000007423 decrease Effects 0.000 description 5
- 238000004080 punching Methods 0.000 description 5
- 230000010365 information processing Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 2
- 241001342895 Chorus Species 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- HAORKNGNJCEJBX-UHFFFAOYSA-N cyprodinil Chemical compound N=1C(C)=CC(C2CC2)=NC=1NC1=CC=CC=C1 HAORKNGNJCEJBX-UHFFFAOYSA-N 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Description
この発明は、インターネットのような広域通信ネットワークに接続された別々のNATルータの配下にある端末装置の間で直接通信を行う通信システム及びサーバに関する。 The present invention relates to a communication system and a server for performing direct communication between terminal devices under the control of separate NAT routers connected to a wide area communication network such as the Internet.
従来より、インターネットなどの広域通信ネットワークを介した楽器の演奏(合奏)やデュエット等の合唱などの音楽的なセッションを可能としたネットワークセッションシステムは知られている。このセッションシステムは、自端末での演奏に基づく演奏情報を広域通信ネットワークを介して他端末に送信し合って各端末で両端末の演奏楽音を発音させようというものであるが、各端末が夫々のNAT(Network Address Translation)ルータの配下(ローカル側)にある場合に、複数の端末間で、サーバを介することなく、直接、演奏情報を交信するには、NATルータを超えなければならないという問題がある。 2. Description of the Related Art Conventionally, network session systems that enable musical sessions such as musical instrument performance (ensemble) and duet chorus via a wide-area communication network such as the Internet are known. In this session system, performance information based on the performance of its own terminal is transmitted to other terminals via a wide-area communication network so that each terminal can play musical sounds of both terminals. When the performance information is communicated directly between a plurality of terminals without going through a server when it is under the network address translation (NAT) router (local side), the NAT router must be exceeded. There is.
NAT技術については、下記非特許文献1の「RFC4787」に記載されている。RFC4787は、IETF( Internet Engineering Task Force)が公表する技術仕様であり、ユニキャストUDPでのNAT越えに関連するNAT特性について解説されている。NATルータの振舞いとしては、エンドポイント非依存マッピング、アドレス依存マッピング及びアドレス&ポート番号依存マッピングという3つのパターンが、一般的によく知られている。ここで、これら3つのNATルータの振舞いのパターンについて説明しておく。図1A乃至図1Cは、NATルータの振舞いパターンを説明するための図であり、上述した3つのNATルータの内部では、このNATルータの配下にあるPC(パーソナルコンピュータ)などの送信元端末から、同じ「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」の組を使って送信した場合、図1A乃至図1Cのように、送信元アドレスと送信元ポート番号が変換される。
The NAT technology is described in “RFC 4787” of Non-Patent
図1Aのパターン1は、NATルータの配下から同じ送信元アドレス及び送信元ポート番号を使ってパケットを送信する場合には、どの宛先アドレス及び宛先ポート番号に送信しても、同じポート番号変換を行うタイプのNATルータの振舞いを示しており、RFC4787では「エンドポイント非依存マッピング」と定義されている。このパターン1では、図示左側の場合には、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、「宛先アドレス:2.2.2.2」及び「宛先ポート番号:5000」にパケット1を送信することにより、PC1からサーバにパケット1を送信した例を示している。図示中央の場合には、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、「宛先アドレス:2.2.2.2」及び「宛先ポート番号:5001」にパケット2を送信することにより、PC1からサーバにパケット2を送信した例を示している。図示右側の場合には、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、「宛先アドレス:3.3.3.3」及び「宛先ポート番号:5000」にパケット3を送信することにより、PC1からPC2にパケット3を送信した例を示している。これらの場合、PC1を配下とするNATルータは、宛先アドレス及び宛先ポート番号が異なっていても、同じ送信元アドレス及び送信元ポート番号を使っているために、同じ送信元ポート番号の変換を行い、全てのパケット1〜3の送信において、例えば「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」は、「送信元アドレス:1.1.1.1及び送信元ポート番号:20000」にそれぞれ変換される。なお、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」はローカルアドレスであり、「送信元アドレス:1.1.1.1」及び「送信元ポート番号:20000」、「宛先アドレス:2.2.2.2」及び「宛先ポート番号:5000」、「宛先アドレス:2.2.2.2」及び「宛先ポート番号:5001」、並びに「宛先アドレス:3.3.3.3」及び「宛先ポート番号:5000」はグローバルアドレスである。ローカルアドレス及びグローバルアドレスに関しては、後述する場合も同様である。
In
図1Bのパターン2は、NATルータの配下から同じ送信元アドレス及び送信元ポート番号を使ってパケットを送信する場合、宛先アドレスが変わると、異なるポート番号変換を行うタイプのNATルータの振舞いを示しており、RFC4787では「アドレス依存マッピング」と定義されている。この場合、送信元ポート番号は、シーケンシャルに変換される(すなわち、一つ前の変換結果に「+1」が加算される)。このパターン2では、図示左側の場合には、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、「宛先アドレス:2.2.2.2」及び「宛先ポート番号5000」にパケット1を送信することにより、PC1からサーバにパケット1を送信した例を示している。図示中央の場合には、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、「宛先アドレス:2.2.2.2」及び「宛先ポート番号:5001」にパケット2を送信することにより、PC1からサーバにパケット2を送信した例を示している。図示右側の場合には、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、「宛先アドレス:3.3.3.3」及び「宛先ポート番号:5000」にパケット3を送信することにより、PC1からPC2にパケット3を送信した例を示している。これらの場合、PC1を配下とするNATルータは、宛先アドレスが異なると、同じ送信元アドレス及び送信元ポート番号を使っていても、異なる送信元ポート番号の変換を行い、例えば、パケット1,2の送信においては「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」は「送信元アドレス:1.1.1.1及び送信元ポート番号:20000」にそれぞれ変換され、パケット3の送信においては「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」は「送信元アドレス:1.1.1.1及び送信元ポート番号:20001」に変換される。
図1Cのパターン3は、NATの配下から同じ送信元アドレスと送信元ポート番号を使って送信する場合、宛先アドレス及び宛先ポート番号の一方のみが変わるだけで、異なるポート番号変換を行うタイプのNATルータの振舞いを示しており、RFC4787では「アドレス&ポート番号依存マッピング」と定義されている。この場合も、送信元ポート番号は、シーケンシャルに変換される(すなわち、一つ前の変換結果に「+1」が加算される)。このパターン3では、図示左側の場合には、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、「宛先アドレス:2.2.2.2」及び「宛先ポート番号5000」にパケット1を送信することにより、PC1からサーバにパケット1を送信した例を示している。図示中央の場合には、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、「宛先アドレス:2.2.2.2」及び「宛先ポート番号:5001」にパケット2を送信することにより、PC1からサーバにパケット2を送信した例を示している。図示右側の場合には、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、「宛先アドレス:3.3.3.3」及び「宛先ポート番号:5000」にパケット3を送信することにより、PC1からPC2にパケット3を送信した例を示している。これらの場合、PC1を配下とするNATルータは、宛先アドレス及び宛先ポート番号の一方が異なると、同じ送信元アドレス及び送信元ポート番号を使っていても、異なる送信元ポート番号の変換を行い、例えば、パケット1の送信においては「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」は「送信元アドレス:1.1.1.1及び送信元ポート番号:20000」に変換され、パケット2の送信においては「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」は「送信元アドレス:1.1.1.1及び送信元ポート番号:20001」に変換され、パケット3の送信においては「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」は「送信元アドレス:1.1.1.1及び送信元ポート番号:20002」に変換される。なお、前記パターン2及びパターン3のようなシーケンシャルに変更される送信元ポート番号の変更分(前記例では「+1」)が、本発明における、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分に対応する。
Pattern 3 in FIG. 1C is a type of NAT that performs different port number conversion only when either the destination address or the destination port number changes when transmitting using the same source address and source port number from under the NAT. This shows the behavior of the router, and is defined as “address & port number dependent mapping” in RFC4787. Also in this case, the source port number is converted sequentially (that is, “+1” is added to the previous conversion result). In this pattern 3, in the case of the left side of the figure, “destination address: 2.2.2.2” using “source address: 192.168.0.1” and “source port number: 5000”. In the example,
ところで、このようにNATルータの配下にある2つの端末同士で直接の通信を行おうとすると、上述した夫々のNATルータによる送信元アドレス及び送信元ポート番号の変換の影響を受けて、変換後のアドレス及びポート番号を何らかの方法で知らなければ両端末の接続を行うことができない。 By the way, when direct communication is performed between two terminals under the NAT router in this way, the conversion is performed under the influence of the source address and source port number conversion by each NAT router described above. Both terminals cannot be connected without knowing the address and port number in some way.
例えば、NATルータ1の配下にある端末PC1及びNATルータ2の配下にある端末PC2が、お互いの外部(グローバル)の「IPアドレス:3.3.3.3;1.1.1.1」を知っており、「ポート番号:5000」での通信を行おうとして、図2のように、同じ「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使うとともに、PC1からは「宛先アドレス:3.3.3.3」及び「宛先ポート番号:5000」にパケットを送信し、PC2からは「宛先アドレス:1.1.1.1」及び「宛先ポート番号:5000」にパケットを送信して通信しようとしても、NATルータ1,2で変換された「送信元ポート番号:20000,30000」は、それぞれ、NATルータ2,1の「宛先ポート番号:5000」と一致しないので、NATルータ2,1を通過することができない。
For example, the terminal PC1 under the
このような場合、一般的に「UDPホールパンチング」として知られる手法を使うことで、パターン1及びパターン2での通信を行うことができるようになる。例えば、NATルータの配下にないサーバを用意し、PC1,PC2は、NATルータ1,2を通じてこのサーバへ通信を行うと、サーバは、それぞれのNATルータ1,2で変換された後のアドレス及びポート番号を知ることができるので、PC1には「PC2のアドレスと変換後のポート番号は3.3.3.3の30000番です」と、PC2には「PC1のアドレスと変換後のポート番号は、1.1.1.1の20000番です」というように、PC1,PC2に通知する。NATルータ1,2がパターン1のルータであれば、PC1,PC2は、サーバから通知された相手PC2,PC1側のアドレス及びポート番号を宛先にして送信すると、NATルータを通過することができる。なお、図2中のPC1のアドレスとPC2のアドレスは共に「192.168.0.1」であるが、これらのアドレスはローカルアドレスであるので同じであってもよいし、異なっていてもよい。この点に関しては、他の図面においても同様である。
In such a case, by using a technique generally known as “UDP hole punching”, it is possible to perform communication using the
また、NATルータ1,2がパターン2のルータである場合には、サーバから通知されたポート番号を使っても通過できないが、NATによる変換後の送信元ポート番号は、多くの場合、「30000」→「30001」のようなシーケンシャルな変化なので、ポート番号スキャンのように前後のポート番号を連続的に試すことで通過することができる。前述の例では、PC1は、「30000」が駄目であると「30001」を試し、PC2は、「20000」が駄目であると「20001」を試すことで通過することができる。つまり、パターン2のルータでは、同じ宛先アドレスに対してであれば、次のように、宛先ボート番号を変化させても送信元ポート番号は変わらないので、前後のポート番号を試すことにより、そのうち通過する組み合わせが現れることが期待できる。
(PC1側)NAT変換後の送信元ポート番号 あて先ポート番号
20001 → 30000
20001 → 30001 ◎
20001 → 30002
… …
(PC2側)NAT変換後の送信元ポート番号 あて先ポート番号
30001 → 20000
30001 → 20001 ◎
30001 → 20002
… …
If the
(PC1 side) Source port number after NAT conversion Destination port number
20001 → 30000
20001 → 30001 ◎
20001 → 30002
……
(PC2 side) Source port number after NAT conversion Destination port number
30001 → 20000
30001 → 20001 ◎
30001 → 20002
……
このように、UDPホールパンチング手法を使うことによって、図1Aのようなパターン1及び図1Bのようなパターン2のタイプのNATルータでの通信を行うことができるようになる。しかしながら、図1Cのように、NATルータ1,2が共にパターン3のルータの場合、即ち、同じ送信元アドレス及び送信元ポート番号から同じ宛先アドレスに送信されていても、宛先ポート番号が変わるだけで異なるポート変換をするタイプのNATルータである場合には、それらのNATルータへの対応はできない。つまり、前記パターン2のように前後のポート番号を連続的に試しても、今度は試すたびにNATルータによるポート変換後の送信元ポート番号が変化してしまうため、次のように、いつまでたっても追いつけず、通過することができない。なお、NATルータ1,2の一方がパターン1又はパターン2であれば、パターン1又はパターン2のNATルータによる変換後の送信元ポート番号は変化しないので、前記UDPホールパンチング手法を使うことにより、通信を行うことができる。
(PC1側)NAT変換後の送信元ポート番号 あて先ポート番号
20001 → 30000
20002 → 30001
20003 → 30002
20004 → 30003
… …
(PC2側)NAT変換後の送信元ポート番号 あて先ポート番号
30001 → 20000
30002 → 20001
30003 → 20002
30004 → 20003
… …
As described above, by using the UDP hole punching method, it is possible to perform communication using the NAT router of the
(PC1 side) Source port number after NAT conversion Destination port number
20001 → 30000
20002 → 30001
20003 → 30002
20004 → 30003
……
(PC2 side) Source port number after NAT conversion Destination port number
30001 → 20000
30002 → 20001
30003 → 20002
30004 → 20003
……
この発明は、このような事情に鑑み、別々のNATルータ配下にある2つの端末の間で、送信元アドレス、送信元ポート番号、宛先アドレス及び宛先ポート番号を使って通信を行う際に、宛先ポート番号が変わっただけで異なる送信元ポート番号の変換を行うNATルータが介在しても、両端末間で直接通信を行うことができる通信システム、サーバなどを提供することを目的とする。なお、下記本発明の各構成要件の記載においては、本発明の理解を容易にするために、実施形態の対応箇所の符号を括弧内に記載しているが、本発明の構成要件は、実施形態の符号によって示された対応箇所の構成に限定解釈されるべきものではない。 In view of such circumstances, the present invention provides a destination address when performing communication between two terminals under different NAT routers using a source address, a source port number, a destination address, and a destination port number. It is an object of the present invention to provide a communication system, a server, and the like that can perform direct communication between both terminals even if a NAT router that converts different source port numbers is present only by changing the port number. In the description of each constituent element of the present invention below, the reference numerals of corresponding portions of the embodiment are shown in parentheses in order to facilitate understanding of the present invention. The present invention should not be construed as being limited to the configurations of the corresponding portions indicated by the reference numerals of the forms.
本発明の特徴は、第1NATルータ(NRa)の配下にある第1端末(TMa)と、第2NATルータ(NRb)の配下にある第2端末(TMb)と、NATルータの配下にないサーバ(SV)とから成り、第1端末及び第2端末が第1NATルータ及び第2NATルータを介して互いに通信する通信システムにおいて、第1端末は、送信元ポート番号をサーバを介して第2端末に通知するために、第1NATルータを介してサーバにデータを送信する第1送信手段(C3)を備え、第2端末は、送信元ポート番号をサーバを介して第1端末に通知するために、第2NATルータを介してサーバにデータを送信する第2送信手段(C3)を備え、サーバは、第1送信手段及び第2送信手段によってサーバへそれぞれ送信されたデータを受信するデータ受信手段(S4)と、データ受信手段によって受信された第1送信手段によるデータの送信に使われた送信元ポート番号から第1端末に関する第1推測ポート番号を推測して、前記推測した第1推測ポート番号を第2NATルータを介して第2端末に通知するとともに、データ受信手段によって受信された第2送信手段によるデータの送信に使われた送信元ポート番号から第2端末に関する第2推測ポート番号を推測して、前記推測した第2推測ポート番号を第1NATルータを介して第1端末に通知するポート番号推測手段(S5)とを備え、第1端末は、さらに、ポート番号推測手段によって通知された第2推測ポート番号を受信する第1ポート番号受信手段(C4)と、第1送信手段によるサーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、第1ポート番号受信手段により受信した第2推測ポート番号に基づく第2試行ポート番号であって、第2送信手段によるサーバへのデータの送信に使われた送信元ポート番号とは、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なる第2試行ポート番号を宛先ポート番号として、第1NATルータ及び第2NATルータを介して第2端末にデータを送信することにより第2端末への接続を試行し、かつ第2試行ポート番号を宛先ポート番号とする第2端末への接続の試行後、さらに、第1送信手段によるサーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、第1ポート番号受信手段により受信した第2推測ポート番号に基づく第4試行ポート番号であって、第2送信手段によるサーバへのデータの送信に使われた送信元ポート番号と等しい第4試行ポート番号を宛先ポート番号として、第1NATルータ及び第2NATルータを介して第2端末にデータを送信することにより第2端末への接続を試行する第1試行手段(C5)とを備え、第2端末は、さらに、ポート番号推測手段によって通知された第1推測ポート番号を受信する第2ポート番号受信手段(C4)と、第2送信手段によるサーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、第2ポート番号受信手段により受信した第1推測ポート番号に基づく第1試行ポート番号であって、第1送信手段によるサーバへのデータの送信に使われた送信元ポート番号とは、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なる第1試行ポート番号を宛先ポート番号として、第2NATルータ及び第1NATルータを介して第1端末にデータを送信することにより第1端末への接続を試行し、かつ第1試行ポート番号を宛先ポート番号とする第1端末への接続の試行後、さらに、第2送信手段によるサーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、第2ポート番号受信手段により受信した第1推測ポート番号に基づく第3試行ポート番号であって、第1送信手段によるサーバへのデータの送信に使われた送信元ポート番号と等しい第3試行ポート番号を宛先ポート番号として、第2NATルータ及び第1NATルータを介して第1端末にデータを送信することにより第1端末への接続を試行する第2試行手段(C5)とを備えたことにある。 The feature of the present invention is that a first terminal (TMa) under the first NAT router (NRa), a second terminal (TMb) under the second NAT router (NRb), and a server (not under the NAT router) SV), in which the first terminal and the second terminal communicate with each other via the first NAT router and the second NAT router, the first terminal notifies the second terminal via the server of the source port number. In order to do so, a first transmission means (C3) for transmitting data to the server via the first NAT router is provided, and the second terminal transmits the source port number to the first terminal via the server. A second transmission means (C3) for transmitting data to the server via the 2NAT router, wherein the server receives the data transmitted to the server by the first transmission means and the second transmission means, respectively; A first estimated port number related to the first terminal is estimated from the data receiving means (S4) and the source port number used for data transmission by the first transmitting means received by the data receiving means, and the estimated first The first guess port number is notified to the second terminal via the second NAT router, and the second guess for the second terminal is determined from the source port number used for data transmission by the second sending means received by the data receiving means. Port number estimating means (S5) for estimating the port number and notifying the estimated second estimated port number to the first terminal via the first NAT router, the first terminal further comprising port number estimating means The first port number receiving means (C4) for receiving the second guessed port number notified by, and the data sent to the server by the first transmitting means A second trial port number based on the second estimated port number received by the first port number receiving means, using the same source port number as the source port number, and for transmitting data to the server by the second transmitting means The source port number used is a first NAT router and a second NAT router, with a second trial port number that is different from the source port number when the source port number is changed by the NAT router as a destination port number. After attempting to connect to the second terminal by transmitting data to the second terminal via the network , and after attempting to connect to the second terminal using the second trial port number as the destination port number, the first transmission is further performed. The second estimated port received by the first port number receiving means using the same source port number as the source port number used for transmitting data to the server by the means A first trial router number and a second NAT port, with a fourth trial port number based on the number and a fourth trial port number equal to the transmission source port number used for data transmission to the server by the second transmission means. First trial means (C5) for trying to connect to the second terminal by transmitting data to the second terminal via the router, and the second terminal is further notified by the port number estimating means. The second port number using the same source port number as the source port number used for transmitting the data to the server by the second port number receiving means (C4) for receiving the 1 guess port number and the second sending means What is the first trial port number based on the first estimated port number received by the receiving means, and is the source port number used for transmitting data to the server by the first transmitting means? Data is transmitted to the first terminal via the second NAT router and the first NAT router, with the first trial port number that is different by the change of the source port number when the source port number is changed by the NAT router as the destination port number. Then, after attempting to connect to the first terminal and attempting to connect to the first terminal with the first trial port number as the destination port number, the second transmission means is further used for data transmission to the server. A third trial port number based on the first guess port number received by the second port number receiving means, using the same source port number as the transmitted source port number, and The first trial port number equal to the source port number used for transmission is set as the destination port number, and the first NAT port is sent through the second NAT router and the first NAT router. In that a second attempt means for attempting to connect to the first terminal by transmitting (C5) the data at the end.
この場合、例えば、第1推測ポート番号は、第1送信手段によるサーバへのデータの送信に使われた送信元ポート番号とは、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なるポート番号であり、かつ第2推測ポート番号は、第2送信手段によるサーバへのデータの送信に使われた送信元ポート番号とは、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なるポート番号である。
また、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分は、「+1」であり、第1推測ポート番号は、第1送信手段によるサーバへのデータの送信に使われた送信元ポート番号よりも「+1」だけ大きなポート番号であり、かつ第2推測ポート番号は、第2送信手段によるサーバへのデータの送信に使われた送信元ポート番号よりも「+1」だけ大きなポート番号である
In this case, for example, the first estimated port number is the source port number used for transmitting data to the server by the first transmitting means, and the source port when the source port number is changed by the NAT router The second estimated port number is different from the source port number used for transmitting data to the server by the second transmission means, and the source port number is changed by the NAT router. The port number is different by the change of the source port number when
Further, when the transmission source port number is changed by the NAT router, the change of the transmission source port number is “+1”, and the first estimated port number is used for transmission of data to the server by the first transmission means. The second estimated port number is “+1” larger than the transmission source port number used for transmitting data to the server by the second transmission means. Is the only large port number
前記のように構成した本発明においては、第1試行手段は、第1送信手段によるサーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、第2試行ポート番号、すなわち第2送信手段によるサーバへのデータの送信に使われた送信元ポート番号とは、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なる第2試行ポート番号(例えば、第2送信手段によるサーバへのデータの送信に使われた送信元ポート番号よりも「+1」だけ大きな第2試行ポート番号)を宛先ポート番号として、第1NATルータ及び第2NATルータを介して第2端末にデータを送信することにより第2端末への接続を試行する。一方、第2試行手段は、第2送信手段によるサーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、第1試行ポート番号、すなわち第1送信手段によるサーバへのデータの送信に使われた送信元ポート番号とは前記変更分だけ異なる第1試行ポート番号(例えば、第1送信手段によるサーバへのデータの送信に使われた送信元ポート番号よりも「+1」だけ大きな第1試行ポート番号)を宛先ポート番号として、第2NATルータ及び第1NATルータを介して第1端末にデータを送信することにより第1端末への接続を試行する。この場合、第1試行手段及び第2試行手段によるデータの送信における宛先アドレスは、第1送信手段及び第2送信手段によるサーバへのデータの送信における宛先アドレスとは異なるので、第1端末及び第2端末における送信元ポート番号は第1送信手段及び第2送信手段によるデータの送信時における送信元ポート番号とは前記変更分だけ異なる(例えば、前記データの送信時における送信元ポート番号よりも「+1」だけそれぞれ増加する)。したがって、第1NATルータ及び第2NATが前述したパターン2又はパターン3のルータであれば、第1NATルータ及び第2NATを介した第1端末及び第2端末間における相互に通信可能な接続が確立される。
In the present invention configured as described above, the first trial means uses the same source port number as the source port number used for data transmission to the server by the first transmission means, and uses the second trial port number. That is, the second trial port differs from the transmission source port number used for transmission of data to the server by the second transmission means by the change of the transmission source port number when the transmission source port number is changed by the NAT router. A first NAT router and a second NAT router with a number (for example, a second trial port number larger by “+1” than the source port number used for transmission of data to the server by the second transmission means) as the destination port number. The connection to the second terminal is attempted by transmitting data to the second terminal via the terminal. On the other hand, the second trial means uses the same source port number as the source port number used for data transmission to the server by the second transmission means, and uses the first trial port number, that is, the server by the first transmission means. The first trial port number that differs from the transmission source port number used for data transmission by the amount of change (for example, “+1 more than the transmission source port number used for data transmission to the server by the first transmission means”). The first trial port number (which is larger by “) is used as the destination port number, and data is transmitted to the first terminal via the second NAT router and the first NAT router, thereby attempting to connect to the first terminal. In this case, since the destination address in the data transmission by the first trial means and the second trial means is different from the destination address in the data transmission to the server by the first transmission means and the second transmission means, the first terminal and the second The transmission source port number in the two terminals differs from the transmission source port number at the time of data transmission by the first transmission unit and the second transmission unit by the change amount (for example, “ +1 ”increases each). Therefore, if the first NAT router and the second NAT are the routers of the
ただし、第1NATルータ又は第2NATルータが前述したパターン1であれば、第1NATルータ及び第2NATルータを介した第1端末及び第2端末間における相互に通信可能な接続は確立されない。しかし、この場合には、前記試行における第1端末及び第2端末に関する送信元ポート番号が変更されなければ、パターン1である第1NATルータ又は第2NATルータによって送信元ポート番号は変更されない。前記のように構成した本発明においては、第1試行手段は、さらに、第2試行ポート番号を宛先ポート番号とする試行に加えて、第4試行ポート番号、すなわち第2送信手段によるサーバへのデータの送信に使われた送信元ポート番号と等しいポート番号を宛先ポート番号とする試行を実行する。一方、第2試行手段は、第1試行ポート番号を宛先ポート番号とする試行に加えて、第3試行ポート番号、すなわち第1送信手段によるサーバへのデータの送信に使われた送信元ポート番号と等しいポート番号を宛先ポート番号とする試行を実行する。この場合、前述のように、試行における第1端末及び第2端末に関する送信元ポート番号が変更されなければ、パターン1である第1NATルータ又は第2NATによって送信元ポート番号は変更されない。したがって、第1NATルータ又は第2NATルータがパターン1のルータであっても、第1NATルータ及び第2NATを介した第1端末及び第2端末間における相互に通信可能な接続が確立される。その結果、本発明によれば、第1及び第2端末を支配する第1NATルータ及び第2NATルータがどのようなタイプであっても、第1NATルータ及び第2NATルータのタイプを判定する処理も必要とせず、第1及び第2端末は、簡単に、互いに直接通信ができるようになる。
However, if the first NAT router or the second NAT router is the
また、本発明を他の観点から見ると、本発明の特徴は、第1NATルータ(NRa)の配下にある第1端末(TMa)と、第2NATルータ(NRb)の配下にある第2端末(TMb)と、NATルータの配下にないサーバ(SV)とから成り、第1端末及び第2端末が第1NATルータ及び第2NATルータを介して互いに通信する通信システムであって、 第1端末及び第2端末が互いに通信する前に、第1端末は、送信元ポート番号をサーバを介して第2端末に通知するためにサーバにデータを送信するとともに(C3)、サーバから通知された第2端末に関する第2推測ポート番号を受信し(C4)、サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、サーバから通知された第2推測ポート番号と等しい第2試行ポート番号を宛先ポート番号として第1NATルータ及び第2NATルータを介して第2端末にデータを送信するとともに、その後に少なくとも、前記受信した第2推測ポート番号と、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分とを用いて、第2端末によるサーバへのデータの送信に使われた送信元ポート番号と等しい第4試行ポート番号を導出し、前記導出した第4試行ポート番号を宛て先ポート番号として第1NATルータ及び第2NATルータを介して第2端末にデータを送信することにより第2端末への接続を試行し(C5)、かつ第2端末は、送信元ポート番号をサーバを介して第1端末に通知するためにサーバにデータを送信するとともに(C3)、サーバから通知された第1端末に関する第1推測ポート番号を受信し(C4)、サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、サーバから通知された第1推測ポート番号と等しい第1試行ポート番号を宛先ポート番号として第2NATルータ及び第1NATルータを介して第1端末にデータを送信するとともに、その後に少なくとも、前記受信した第1推測ポート番号と、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分とを用いて、第1端末によるサーバへのデータの送信に使われた送信元ポート番号と等しい第3試行ポート番号を導出し、前記導出した第3試行ポート番号を宛て先ポート番号として第2NATルータ及び第1NATルータを介して第1端末にデータを送信することにより第1端末への接続を試行する(C5)通信システムにおけるサーバであって、第1端末からサーバに送信されたデータを受信するとともに、第2端末からサーバに送信されたデータを受信するデータ受信手段(S4)と、データ受信手段によって受信されたデータの送信に使われた第1端末及び第2端末の送信元ポート番号とは、それぞれ送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なるポート番号を第1推測ポート番号及び第2推測ポート番号として推測して、第1推測ポート番号を第2端末に通知するとともに、第2推測ポート番号を前記第1端末に通知するポート番号推測手段(S5)とを備えたことにある。 Further, when the present invention is viewed from another point of view, the feature of the present invention is that the first terminal (TMa) subordinate to the first NAT router (NRa) and the second terminal subordinate to the second NAT router (NRb) ( TMb) and a server (SV) not under the control of the NAT router, wherein the first terminal and the second terminal communicate with each other via the first NAT router and the second NAT router, and the first terminal and the second terminal Before the two terminals communicate with each other, the first terminal transmits data to the server to notify the second terminal via the server of the transmission source port number (C3), and the second terminal notified from the server (C4), and using the same source port number as the source port number used for data transmission to the server, the second estimated port number notified from the server Data is transmitted to the second terminal through the first NAT router and the second NAT router using the new second trial port number as the destination port number, and thereafter, at least the received second guess port number and source port number are A fourth trial port number equal to the source port number used for transmitting data to the server by the second terminal is derived using the change in the source port number when changed by the NAT router; Attempting to connect to the second terminal by transmitting data to the second terminal via the first NAT router and the second NAT router using the derived fourth trial port number as the destination port number (C5), and the second terminal Transmits the data to the server to notify the transmission source port number to the first terminal via the server (C3) and is notified from the server. The first estimated port number received from the server using the same source port number as the source port number used for transmitting data to the server (C4). Is transmitted to the first terminal through the second NAT router and the first NAT router with the first trial port number equal to the destination port number as the destination port number, and then at least the received first guess port number and source port number A third trial port number equal to the source port number used for transmitting data to the server by the first terminal, using the change in the source port number when is changed by the NAT router; Data is transmitted to the first terminal through the second NAT router and the first NAT router using the derived third trial port number as the destination port number. (C5) is a server in a communication system that attempts to connect to the first terminal, and receives data transmitted from the first terminal to the server and receives data transmitted from the second terminal to the server. The receiving means (S4) and the transmission source port numbers of the first terminal and the second terminal used for transmitting the data received by the data receiving means are respectively those when the transmission source port number is changed by the NAT router. A port number that differs by the change in the source port number is estimated as the first estimated port number and the second estimated port number, the first estimated port number is notified to the second terminal, and the second estimated port number is set to the first estimated port number. A port number estimation means (S5) for notifying one terminal.
この本発明の他の特徴においても、前述したように、第1NATルータ及び第2NATルータがパターン1〜3のいずれのパターンのルータであっても、第1端末及び第2端末は第2NATルータ及び第1NATルータを介して互いに直接通信できるようになる。そして、この場合も、第1端末及び第2端末に宛先ポート番号を順次変更する前記機能(例えば、UDPホールパンチング手法による機能)が備わっていれば、第1端末及び第2端末側の処理機能を変更することなく、サーバ側の機能を変更するだけで、第1NATルータ及び第2NATルータを介した第1端末及び第2端末間における相互に通信可能な接続が確立される。その結果、本発明の他の特徴によれば、多くの端末の機能を変更する必要がなくなり、通信システムが簡単に改善される。
In the other feature of the present invention, as described above, the first terminal and the second terminal are the second NAT router and the first NAT router and the second NAT router are the routers of any one of the
さらに、本発明の実施にあたっては、通信システム及びサーバの発明に限定されることなく、通信システムに適用される通信方法の発明、サーバに適用される方法及びコンピュータプログラムの発明としても実施し得るものである。 Furthermore, the implementation of the present invention is not limited to the invention of the communication system and the server, but can also be implemented as an invention of a communication method applied to the communication system, a method applied to the server, and an invention of a computer program. It is.
〔システム構成の概要〕
図3は、この発明の一実施形態によるネットワークセッションシステムの構成を示す。このネットワークセッションシステムは、セッション管理サーバ(単にサーバともいう)SVと、複数のNATルータNR:NRa〜NRd(記号“NR”はNATルータを代表的に表わす)と、各NATルータNRの配下にある各セッション端末TM:TMa〜TMd(記号“TM”はセッション端末を代表的に表わす)とで構成される通信システムである。これらのセッション管理サーバSV、複数のNATルータNR:NRa〜NRd、及び複数のセッション端末TM:TMa〜TMdは、インターネットのような広域通信ネットワークCNを介して通信可能に接続されている。
[Overview of system configuration]
FIG. 3 shows a configuration of a network session system according to an embodiment of the present invention. This network session system includes a session management server (also simply referred to as a server) SV, a plurality of NAT routers NR: NRa to NRd (the symbol “NR” representatively represents a NAT router), and subordinates of each NAT router NR. Each of the session terminals TM: TMa to TMd (symbol “TM” representatively represents a session terminal) is a communication system. The session management server SV, the plurality of NAT routers NR: NRa to NRd, and the plurality of session terminals TM: TMa to TMd are communicably connected via a wide area communication network CN such as the Internet.
セッション管理サーバSVは、NAT配下にはなく、メンバーとなるセッション端末TM間の接続支援、例えば、セッションの開始に先立って行われる各セッション端末TM同士の接続手続きなどを行う。各セッション端末TM間、例えば、セッション端末TMa〜TMd間で接続が成立した後は、セッション管理サーバSVを介することなく、NAT配下のこれらセッション端末TMa〜TMd間において、直接、オーディオデータなどの演奏情報が送受信される。 The session management server SV is not under the NAT but performs connection support between the session terminals TM as members, for example, a connection procedure between the session terminals TM performed before the start of the session. After connection is established between the session terminals TM, for example, between the session terminals TMa to TMd, the performance of audio data or the like is directly performed between the session terminals TMa to TMd under the NAT without using the session management server SV. Information is sent and received.
NATルータNRは、図示されたセッション端末TMの外に、複数のホスト機器を配下に備え、これらの機器で構成されるローカルネットワークと広域通信ネットワークCNとの間でデータを中継し、両ネットワーク間でアドレス及びポート番号を変換するNAT機能を備える。すなわち、NATルータNRは、適当に割り振られ各ローカルネットワークでのみ通用するローカルなアドレス及びポート番号と、広域通信ネットワークCN上のグローバルなアドレス及びポート番号とを自動的に相互変換する。このNAT機能のタイプは、図1A〜図1Cで説明したように、パターン1〜3の3つが知られている。 The NAT router NR is provided with a plurality of host devices in addition to the illustrated session terminal TM, relays data between a local network constituted by these devices and the wide area communication network CN, and between the two networks. A NAT function for converting an address and a port number is provided. That is, the NAT router NR automatically converts between a local address and port number that are appropriately allocated and used only in each local network, and a global address and port number on the wide area communication network CN. Three types of NAT functions are known as described above with reference to FIGS. 1A to 1C.
ネットワーク音楽セッションのメンバーとなる複数のセッション端末TMa〜TMdは、クライアント端末又は単にクライアントとも呼ばれ、それぞれ、楽器演奏及び/又はカラオケが可能な電子音楽装置である。つまり、各セッション端末TMは、電子的な音楽情報処理機能を有する一種のコンピュータであり、電子楽器や音楽情報処理アプリケーションがインストールされたパーソナルコンピュータ(PC)のような電子音楽装置を用いることができる。また、セッション端末TMとして電子楽器を使用しカラオケを行わない場合があり、セッション端末TMとして音楽情報処理アプリケーション付きPCを使用してカラオケのみを行う場合もある。なお、セッション端末TMの数(メンバー数)は、図3には4つ例示されているが、これに限らず、4つより多くてもよいし、少なくてもよい。 A plurality of session terminals TMa to TMd that are members of a network music session are also called client terminals or simply clients, and are electronic music apparatuses capable of playing musical instruments and / or karaoke, respectively. That is, each session terminal TM is a kind of computer having an electronic music information processing function, and an electronic music device such as a personal computer (PC) in which an electronic musical instrument or a music information processing application is installed can be used. . Further, there are cases where an electronic musical instrument is used as the session terminal TM and karaoke is not performed, and there is a case where only the karaoke is performed using a PC with a music information processing application as the session terminal TM. Although the number of session terminals TM (number of members) is four in FIG. 3, the number is not limited to this, and may be more or less than four.
〔変換後のアドレス・ポート番号の取得までの手順〕
この発明の一実施形態による通信システムは、異なるNATルータNRa〜NRdの配下にある複数のセッション端末(以下、「クライアント端末」又は単に「クライアント」若しくは「端末」という)TMa〜TMdと、NAT配下にないセッション管理サーバ(以下、単に「サーバ」という)SVとから成り、各クライアント端末TMa〜TMdは、送信元アドレス、送信元ポート番号、宛先アドレス及び宛先ポート番号を使って、それぞれのNATルータNRa〜NRdを介して直接通信が行われる。しかしながら、図2を用いて説明したように、或るクライアント端末TMが属するNATルータNRが、宛先ポート番号が変わっただけで異なる送信元ポート番号の変換を行うパターン3(アドレス&ポート番号依存マッピング)のタイプ(図1C参照)であっても、端末TMa〜TMd間では、通信(接続)を確立させる必要がある。図4A乃至図4Eは、この発明の一実施形態による2クライアント端末間の交信に到るまでの手順及び動作例を示す。なお、以下においては、クライアント(A)TMaとクライアント端末(B)TMbとの間で接続を確立する場合を例にして説明する。また、下記説明では、クライアント(A)TMaをPC1とし、クライアント端末(B)TMbをPC2として説明する。
[Procedure to obtain the converted address and port number]
A communication system according to an embodiment of the present invention includes a plurality of session terminals (hereinafter referred to as “client terminals” or simply “clients” or “terminals”) TMa to TMd under the control of different NAT routers NRa to NRd, Each client terminal TMa-TMd uses a source address, a source port number, a destination address, and a destination port number, and each NAT router uses a session management server (hereinafter simply referred to as “server”) SV. Direct communication is performed via NRa to NRd. However, as described with reference to FIG. 2, the NAT router NR to which a certain client terminal TM belongs changes pattern 3 (address & port number dependent mapping) in which a different source port number is converted only by changing the destination port number. ) Type (see FIG. 1C), it is necessary to establish communication (connection) between the terminals TMa to TMd. 4A to 4E show a procedure and an operation example up to communication between two client terminals according to an embodiment of the present invention. In the following, a case where a connection is established between the client (A) TMa and the client terminal (B) TMb will be described as an example. In the following description, the client (A) TMa is described as PC1, and the client terminal (B) TMb is described as PC2.
PC1,PC2間の直接通信に先立って、まず、図4Aに示すように、PC1は、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、「宛先アドレス:2.2.2.2」及び「宛先ポート番号:5000」すなわちサーバSVにパケット(データ)を送信する。PC2も、「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、「宛先アドレス:2.2.2.2」及び「宛先ポート番号:5000」すなわちサーバSVにパケットを送信する。サーバSVは、PC1,PC2からのパケットを受け取り、PC1を配下とするNATルータによる変換結果である「送信元アドレス:1.1.1.1」及び「送信元ポート番号:30000」を確認するともに、PC2を配下とするNATルータによる変換結果である「送信元アドレス:3.3.3.3」及び「送信元ポート番号:40000」を確認する。
Prior to direct communication between PC1 and PC2, first, as shown in FIG. 4A, PC1 uses “source address: 192.168.0.1” and “source port number: 5000” to “ Destination address: 2.2.2.2 ”and“ destination port number: 5000 ”, that is, a packet (data) is transmitted to server SV. The
次に、サーバSVは、図4Bに示すように、確認したPC1に関する「送信元アドレス:1.1.1.1」をPC1のアドレスとして決定するとともに、確認したPC1に関する「送信元ポート番号:30000」に「+1」を加算した「ポート番号:30001」をPC1のポート番号として推測する。そして、サーバSVは,PC2に対して、「PC1のアドレスは『1.1.1.1』であり、PC1のポート番号はおそらく『30001』である」ことを通知する。また、サーバSVは、確認したPC2に関する「送信元アドレス:3.3.3.3」をPC2のアドレスとして決定するとともに、確認したPC2に関する「送信元ポート番号:40000」に「+1」を加算した「ポート番号:40001」をPC2のポート番号として推測する。そして、サーバSVは,PC1に対して、「PC2のアドレスは『3.3.3.3』であり、PC2のポート番号はおそらく『40001』である」ことを通知する。PC1,PC2は、これらの通知をそれぞれ受け取る。
Next, as shown in FIG. 4B, the server SV determines “source address: 1.1.1.1” regarding the confirmed
次に、図4C乃至4Eを用いてPC1,PC2間の接続動作について説明する。図4Cは、PC1,PC2をそれぞれ支配する両NATルータが「アドレス依存マッピング」として定義されるパターン2のタイプのルータ又は「アドレス&ポート番号依存マッピング」として定義されるパターン3のタイプのルータである場合におけるPC1,PC2(クライアントA,B)間の接続可能例を示している。図4Dは、両NATルータが共に「エンドポイント非依存マッピング」として定義されるパターン1のタイプのルータである場合におけるPC1,PC2間の接続不能例を示す。図4Eは、両NATルータが共に前記パターン1のタイプのルータである場合におけるPC1,PC2間の接続可能例を示す。
Next, the connection operation between PC1 and PC2 will be described with reference to FIGS. 4C to 4E. FIG. 4C is a
本実施形態では、PC1,PC2は、それぞれ次の第1接続試行及び第2接続試行をこの順に実行する。第1接続試行では、PC1,PC2は、前述したサーバにパケットを送信したときに使われた送信元アドレス及び送信元ポート番号と同じ送信元アドレス及び送信元ポート番号をそれぞれ使い、サーバから通知されたPC2,PC1に関する宛先アドレス及び宛先ポート番号にパケットをそれぞれ送信する。第2接続試行では、PC1,PC2は、前述したサーバにパケットを送信したときに使われた送信元アドレス及び送信元ポート番号と同じ送信元アドレス及び送信元ポート番号をそれぞれ使い、サーバから通知されたPC2,PC1に関する宛先アドレス及び前記サーバから通知されたPC2,PC1に関する宛先ポート番号から「+1」を減算した宛先ポート番号にパケットをそれぞれ送信する。 In the present embodiment, PC1 and PC2 execute the following first connection trial and second connection trial in this order, respectively. In the first connection attempt, PC1 and PC2 are notified from the server using the same source address and source port number as the source address and source port number used when sending the packet to the server described above. Packets are transmitted to destination addresses and destination port numbers related to PC2 and PC1, respectively. In the second connection attempt, PC1 and PC2 are notified from the server by using the same source address and source port number as the source address and source port number used when sending the packet to the server described above. The packet is transmitted to the destination port number obtained by subtracting “+1” from the destination address related to PC2 and PC1 and the destination port number related to PC2 and PC1 notified from the server.
まず、第1接続試行について具体的に説明する。この場合、PC1は、図4Cに示すように、前述したサーバにパケットを送信したときと同じ「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、サーバから通知された「宛先アドレス:3.3.3.3」及び「宛先ポート番号:40001」に対して、すなわちPC2にパケットを送信する。一方、PC2も、前述したサーバにパケットを送信したときと同じ「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、サーバから通知された「宛先アドレス:1.1.1.1」及び「宛先ポート番号:30001」に対して、すなわちPC1にパケットを送信する。
First, the first connection trial will be specifically described. In this case, as shown in FIG. 4C, the
まず、PC1,PC2を配下とする両NATルータがパターン2又はパターン3のタイプのルータである場合について説明する。この場合、宛先アドレスは前述したサーバにパケットを送信した際の宛先アドレスとは異なるので、今回変換される送信元ポート番号は、前回変換された送信元ポート番号(サーバにパケットを送信した際に変換された「送信元ポート番号:30000,40000」)からシーケンシャルに変更される(前回の変換結果に「+1」が加算される)。すなわち、この第1接続試行では、PC1に関する送信元ポート番号は「30001」に変換され、PC2に関する送信元ポート番号は「40001」に変換される。なお、両NATルータによって変換されるPC1,PC2に関する送信元アドレスは変更されない。したがって、PC1からPC2へのパケットの送信における「宛先ポート番号:40001」は、PC2からPC1へのパケットの送信における「送信元ポート番号:40001」と一致する。また、PC2からPC1へのパケットの送信における「宛先ポート番号:30001」は、PC1からPC2へのパケットの送信における「送信元ポート番号:30001」と一致する。その結果、両NATルータを介したPC1,PC2間の相互に通信可能な接続が確立される。
First, a case will be described in which both NAT routers under the control of PC1 and PC2 are
次に、PC1,PC2を配下とする両NATルータが共にパターン1のタイプのルータである場合について説明する。この場合、宛先アドレスが前述したサーバにパケットを送信した際の宛先アドレスとは異なっていても、又は宛先ポート番号が前述したサーバにパケットを送信した際の宛先ポート番号とは異なっていても、図4Dに示すように、今回変換される送信元ポート番号は、前回変換された送信元ポート番号(サーバにパケットを送信した際に変換された「送信元ポート番号:30000,40000」)と同じである。すなわち、この第1接続試行では、PC1に関する送信元ポート番号は「30000」に変換され、PC2に関する送信元ポート番号は「40000」に変換される。なお、この場合も、両NATルータによって変換されるPC1,PC2に関する送信元アドレスは変更されない。したがって、PC1からPC2へのパケットの送信における「宛先ポート番号:40001」は、PC2からPC1へのパケットの送信における「送信元ポート番号:40000」とは一致しない。また、PC2からPC1へのパケットの送信における「宛先ポート番号:30001」は、PC1からPC2へのパケットの送信における「送信元ポート番号:30000」とは一致しない。その結果、両NATルータを介したPC1,PC2間の相互に通信可能な接続は確立されない。
Next, the case where both NAT routers under the control of PC1 and PC2 are both
また、PC1を配下とするNATルータがパターン1のタイプのルータであり、PC2を配下とするNATルータがパターン2又はパターン3のタイプのルータである場合について説明する。この場合、PC2に関する送信元ポート番号は「40001」に変換されるので、前述の場合と同様に、PC1からPC2へのパケットの送信における「宛先ポート番号:40001」は、PC2からPC1へのパケットの送信における「送信元ポート番号:40001」と一致する。しかし、PC1に関する送信元ポート番号は「30000」に変換されるので、前述の場合と同様に、PC2からPC1へのパケットの送信における「宛先ポート番号:30001」は、PC1からPC2へのパケットの送信における「送信元ポート番号:30000」とは一致しない。その結果、両NATルータを介したPC1,PC2間の相互に通信可能な接続は確立されない。
A case will be described in which the NAT router under the control of PC1 is a
さらに、PC1を配下とするNATルータがパターン2又はパターン3のタイプのルータであり、PC2を配下とするNATルータがパターン1のタイプのルータである場合について説明する。この場合、PC1に関する送信元ポート番号は「30001」に変換されるので、前述の場合と同様に、PC2からPC1へのパケットの送信における「宛先ポート番号:30001」は、PC1からPC2へのパケットの送信における「送信元ポート番号:30001」と一致する。しかし、PC2に関する送信元ポート番号は「40000」に変換されるので、前述の場合と同様に、PC1からPC2へのパケットの送信における「宛先ポート番号:40001」は、PC2からPC1へのパケットの送信における「送信元ポート番号:40000」とは一致しない。その結果、両NATルータを介したPC1,PC2間の相互に通信可能な接続は確立されない。
Further, a case will be described where the NAT router under the control of PC1 is a
次に、前記PC1,PC2間の相互に通信可能な接続が確立されない状態を解決する第2接続試行について具体的に説明する。この場合、PC1は、図4Eに示すように、前述したサーバにパケットを送信したときと同じ「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、サーバから通知された「宛先アドレス:3.3.3.3」及びサーバから通知された「宛先ポート番号:40001」から「+1」を減算した「宛先ポート番号:40000」に対して、すなわちPC2にパケットを送信する。一方、PC2も、前述したサーバにパケットを送信したときと同じ「送信元アドレス:192.168.0.1」及び「送信元ポート番号:5000」を使って、サーバから通知された「宛先アドレス:1.1.1.1」及びサーバから通知された「宛先ポート番号:30001」から「+1」を減算した「宛先ポート番号:30000」、すなわちPC1にパケットを送信する。
Next, the second connection attempt for solving the state where the connection between the PC1 and PC2 is not established can be specifically described. In this case, as shown in FIG. 4E, the
まず、PC1,PC2を配下とする両NATルータが共にパターン1のタイプのルータである場合について説明する。この場合、図4Eに示すように、PC1,PC2間の両送信における宛先ポート番号が前記第1接続試行でパケットを送信した際の宛先ポート番号とは共に異なるが、PC1,PC2の両者に関し、今回変換される送信元ポート番号は、前記第1接続試行で変換された送信元ポート番号とそれぞれ同じである。すなわち、この第2接続試行でも、PC1に関する送信元ポート番号は「30000」に変換され、PC2に関する送信元ポート番号は「40000」に変換される。なお、この場合も、両NATルータによって変換されるPC1,PC2に関する送信元アドレスは変更されない。したがって、PC1からPC2へのパケットの送信における「宛先ポート番号:40000」は、PC2からPC1へのパケットの送信における「送信元ポート番号:40000」と一致する。また、PC2からPC1へのパケットの送信における「宛先ポート番号:30000」は、PC1からPC2へのパケットの送信における「送信元ポート番号:30000」と一致する。その結果、両NATルータを介したPC1,PC2間の相互に通信可能な接続が確立されることになる。
First, a case will be described in which both NAT routers under the control of PC1 and PC2 are
また、PC1を配下とするNATルータがパターン1のタイプのルータであり、PC2を配下とするNATルータがパターン2又はパターン3のタイプのルータである場合について説明する。この場合も、PC1,PC2間の両送信における宛先ポート番号が前記第1接続試行でパケットを送信した際の宛先ポート番号とは共に異なるが、PC1に関しては、今回変換される送信元ポート番号は、前記第1接続試行で変換された送信元ポート番号と同じである。すなわち、この第2接続試行でも、PC1に関する送信元ポート番号は「30000」に変換される。なお、この場合も、両NATルータによって変換されるPC1,PC2に関する送信元アドレスは変更されない。したがって、PC2からPC1へのパケットの送信における「宛先ポート番号:30000」は、PC1からPC2へのパケットの送信における「送信元ポート番号:30000」と一致する。すなわち、前記第1接続試行では不一致の関係にあったPC2による宛先ポート番号とPC1の送信元ポート番号が一致する。その結果、この第2接続試行により、前記第1接続試行では確立されていなかった両NATルータを介したPC1,PC2間の相互に通信可能な接続が確立されることになる。
A case will be described in which the NAT router under the control of PC1 is a
さらに、PC1を配下とするNATルータがパターン2又はパターン3のタイプのルータであり、PC2を配下とするNATルータがパターン1のタイプのルータである場合について説明する。この場合も、PC1,PC2間の両送信における宛先ポート番号が前記第1接続試行でパケットを送信した際の宛先ポート番号とは異なるが、PC2に関しては、今回変換される送信元ポート番号は、前記第1接続試行で変換された送信元ポート番号と同じである。すなわち、この第2接続試行でも、PC2に関する送信元ポート番号は「40000」に変換される。なお、この場合も、両NATルータによって変換されるPC1,PC2に関する送信元アドレスは変更されない。したがって、PC1からPC2へのパケットの送信における「宛先ポート番号:40000」は、PC2からPC1へのパケットの送信における「送信元ポート番号:40000」と一致する。すなわち、前記第1接続試行では不一致の関係にあったPC1による宛先ポート番号とPC2の送信元ポート番号が一致する。その結果、この第2接続試行により、前記第1接続試行では確立されていなかった両NATルータを介したPC1,PC2間の相互に通信可能な接続が確立されることになる。
Further, a case will be described where the NAT router under the control of PC1 is a
このように、PC1を配下とするNATルータ又はPC2を配下とするNATルータがパターン1のタイプのルータであって、前記第1接続試行では、両NATルータを介したPC1,PC2間の相互に通信可能な接続が確立されていなくても、第2接続試行により、両NATルータを介したPC1,PC2間の相互に通信可能な接続が確立される。
In this way, the NAT router under the control of PC1 or the NAT router under the control of PC2 is a
〔動作例〕
次に、具体的な動作例について説明する。図5はこの発明の一実施形態によるクライアント端末TMの接続動作例を示し、図6はこの発明の一実施形態によるサーバSVの接続援助動作例を示す。言い換えれば、図5は、クライアント端末TMのCPUによって実行される、接続動作例に係るコンピュータプログラムのフローチャートを示している。図6は、サーバSVのCPUによって実行される、接続援助動作例に係るコンピュータプログラムのフローチャートを示している。
[Operation example]
Next, a specific operation example will be described. FIG. 5 shows a connection operation example of the client terminal TM according to one embodiment of the present invention, and FIG. 6 shows a connection assistance operation example of the server SV according to one embodiment of the present invention. In other words, FIG. 5 shows a flowchart of the computer program according to the connection operation example executed by the CPU of the client terminal TM. FIG. 6 shows a flowchart of a computer program according to a connection assistance operation example executed by the CPU of the server SV.
まず、ユーザ操作による接続開始の指示があると、クライアント端末TM(制御部であるCPU)は、図5に示すプログラムの実行を開始し、ステップC1にてサーバSVに対して接続を行うことを通知する。次に、クライアント端末TMは、ステップC2にてサーバSVから接続開始の指示が届いたか否か、すなわち、他の参加者が現れたかどうかを判定する。サーバSVから接続開始の指示が届いていない場合には、クライアント端末TMは、ステップC2にて「No」と判定し、ステップC2の処理を繰り返し実行して接続開始の指示の到着を待つ。なお、前記説明では、一つのクライアント端末TMのサーバSVに対する接続の通知について説明したが、この状態では、相互に通信する他のクライアント端末TMも、前記ステップC1,C2の処理を行っている。以降のクライアント端末TMの動作においても、相互に通信する複数のクライアント端末TMが図5に示すプログラム処理をそれぞれ実行する。 First, when there is an instruction to start connection by a user operation, the client terminal TM (CPU as the control unit) starts executing the program shown in FIG. 5 and performs connection to the server SV in step C1. Notice. Next, the client terminal TM determines whether or not a connection start instruction has been received from the server SV in Step C2, that is, whether or not another participant has appeared. If the connection start instruction has not arrived from the server SV, the client terminal TM determines “No” in Step C2, and repeats the process of Step C2 to wait for the arrival of the connection start instruction. In the above description, the connection notification of one client terminal TM to the server SV has been described. In this state, the other client terminals TM communicating with each other are also performing the processes of steps C1 and C2. Also in the subsequent operation of the client terminal TM, the plurality of client terminals TM communicating with each other execute the program processing shown in FIG.
一方、サーバSVは、図6に示すプログラムの実行を開始し、ステップS1にて、前記ステップC1の処理によるクライアント端末TMから接続の通知が届いたか否かを判定する。接続の通知が届いていない状態では、サーバSVは、ステップS1にて「No」と判定して、クライアント端末TMからの接続の通知を待つ。そして、一つのクライアント端末TMから接続の通知が届くと、サーバSVは、ステップS1にて「Yes」と判定して、ステップS2に進む。サーバSVは、ステップS2にて、接続待ちのクライアント端末TMが2つ以上存在するか否か(他の参加者が現れたどうか)を判定する。接続待ちのクライアント端末TMが2つ以上存在しなければ、サーバSVは、ステップS2にて「No」と判定して、前記ステップS1に戻って、他のクライアント端末TMからの接続の通知を再び待つ。そして、このようなステップS1,S2の処理を繰返す。なお、この場合、2つのクライアント端末TMからの接続の通知が届いた時点で、ステップS2にて「Yes」と判定される。しかし、3つ以上のクライアント端末TMが存在することもあるので、サーバSVは、一つのクライアント端末TMからの接続の通知からステップS2にて「Yes」と判定するまでに多少の時間を待つようにするとよい。そして、この待ち時間の間、サーバSVは、ステップS2にて「No」と判定し続けて、ステップS1,S2の処理を繰り返す。 On the other hand, the server SV starts execution of the program shown in FIG. 6, and determines in step S1 whether or not a notification of connection has arrived from the client terminal TM by the processing in step C1. In a state where the connection notification has not arrived, the server SV determines “No” in step S1, and waits for a connection notification from the client terminal TM. When a connection notification is received from one client terminal TM, the server SV determines “Yes” in step S1, and proceeds to step S2. In step S2, the server SV determines whether or not there are two or more client terminals TM waiting for connection (whether other participants have appeared). If there are not two or more client terminals TM waiting for connection, the server SV determines “No” in step S2, returns to the step S1, and again notifies the connection from the other client terminals TM. wait. Then, the processes in steps S1 and S2 are repeated. In this case, when the notification of connection from the two client terminals TM arrives, “Yes” is determined in step S2. However, since there may be more than two client terminals TM, the server SV waits for some time before determining “Yes” in step S2 from the notification of connection from one client terminal TM. It is good to. During this waiting time, the server SV continues to determine “No” in step S2 and repeats the processes in steps S1 and S2.
そして、接続待ちのクライアント端末TMが2つ以上存在して、前記ステップS2にて「Yes」と判定されると、サーバSVは、ステップS3にて、接続待ちの全てのクライアント端末TMに対して接続開始の指示を送信する。前記ステップS3の処理後、サーバSVは、ステップS4にて、接続開始を指示した全てのクライアント端末TMからポート番号P1へのパケットを受信したか否かを判定する。全てのクライアント端末TMからポート番号P1へのパケットを受信しない状態では、サーバSVは、ステップS4にて「No」と判定して、前記パケットの受信を待つ。 If there are two or more client terminals TM waiting for connection and it is determined “Yes” in step S2, the server SV sends all client terminals TM waiting for connection in step S3. Send a connection start instruction. After the processing in step S3, the server SV determines in step S4 whether or not packets for the port number P1 have been received from all client terminals TM instructed to start connection. In a state where packets from all client terminals TM to the port number P1 are not received, the server SV determines “No” in step S4 and waits for reception of the packets.
一方、接続開始の指示待ちの各クライアント端末TMは、前記ステップC2の待機中、サーバSVからの接続開始の指示が送信されると、ステップC2にて接続開始の指示を受信して「Yes」と判定し、ステップC3に進む。ステップC3においては、各クライアント端末TMは、所定の送信元アドレス及び送信元ポート番号を使って、サーバSVに対してポート番号P1宛てにパケットを送信する。前記ステップC3の処理後、各クライアント端末TMは、ステップC4にてサーバSVから接続先の推測ポート番号と接続先アドレスの通知が届いたかを判定する。そして、接続先の推測ポート番号と接続先アドレスの通知が届くまで、各クライアント端末TMは、ステップC4にて「No」と判定し続けて、接続先の推測ポート番号と接続先アドレスの通知を待つ。 On the other hand, each client terminal TM waiting for a connection start instruction receives a connection start instruction in step C2 and receives a “Yes” when a connection start instruction is transmitted from the server SV while waiting in step C2. And proceed to Step C3. In step C3, each client terminal TM transmits a packet to the port number P1 to the server SV using a predetermined transmission source address and transmission source port number. After the process of step C3, each client terminal TM determines whether or not a notification of the estimated port number of the connection destination and the connection destination address has been received from the server SV in step C4. Each client terminal TM continues to determine “No” in step C4 until notification of the connection destination guess port number and connection destination address arrives, and notifies the connection destination guess port number and connection destination address. wait.
前記パケートの受信を待っているサーバSVは、ステップS4にて、クライアント端末TMからのパケットの送信があるごとに、送信されたパケットを受信する。そして、サーバSVは、接続が通知された全てのクライアント端末TMからポート番号P1へのパケットを受信すると、ステップS4にて「Yes」と判定して、ステップS5に進む。ステップS5においては、サーバSVは、全てのクライアント端末TMに相手の推測ポート番号と接続先アドレスの通知を送信する。具体的には、サーバSVは、各クライアント端末TMから受信したパケットの送信元ポート番号に「+1」を加算することにより推測ポート番号を求めるとともに、前記受信したパケットの送信元アドレスを接続先アドレスとする。そして、通信相手となる各クライアント端末に関する推測ポート番号及び接続先アドレスを全てのクライアント端末TMに送信する。 The server SV waiting for reception of the packet receives the transmitted packet every time a packet is transmitted from the client terminal TM in step S4. When the server SV receives packets from all the client terminals TM notified of connection to the port number P1, the server SV determines “Yes” in step S4, and proceeds to step S5. In step S5, the server SV transmits a notification of the other party's estimated port number and connection destination address to all the client terminals TM. Specifically, the server SV obtains an estimated port number by adding “+1” to the source port number of the packet received from each client terminal TM, and sets the source address of the received packet as the connection destination address. And Then, the estimated port number and connection destination address relating to each client terminal that is a communication partner are transmitted to all client terminals TM.
次に、サーバSVは、ステップS6にて、クライアント端末TMから、「接続完了」、「接続のリトライ通知」及び「接続失敗」の何れかのパケットが届いたか否かを判定する。前記パケットが届いていなければ、サーバSVはステップS6にて「No」と判定して、前記パケットが届くのを待つ。なお、このステップS6の判定における「接続完了」に関しては、ステップS5の処理により接続開始の指示を送信した全てのクライアント端末TMから通知があったかを判定するのに対して、「接続のリトライ通知」及び「接続失敗」に関しては前記全てのクライアント端末TMのうちのいずれか一つのクライアント端末TMからの通知があったかを判定する。 Next, in step S6, the server SV determines whether any of the “connection complete”, “connection retry notification”, and “connection failure” packets has arrived from the client terminal TM. If the packet has not arrived, the server SV determines “No” in step S6 and waits for the packet to arrive. Regarding “connection completion” in the determination in step S6, it is determined whether or not there has been a notification from all the client terminals TM that transmitted a connection start instruction in the process in step S5, whereas “connection retry notification”. As for “connection failure”, it is determined whether there is a notification from any one of the client terminals TM.
一方、接続先の推測ポート番号と接続先アドレスの通知を待っている各クライアント端末TMは、サーバSVからの推測ポート番号と接続先アドレスが届くと、ステップC4にて、推測ポート番号と接続先アドレスを受信して「Yes」と判定して、ステップC5に進む。ステップC5においては、サーバSVから通知された相手クライアント端末TMの推測ポート番号及び接続先アドレスを第1の宛先ポート番号及び宛先アドレスとしてセットするとともに、前記推測ポート番号から「+1」を減算したポート番号及び前記接続先アドレスを第2の宛先ポート番号及び宛先アドレスとしてセットする。そして、クライアント端末TMは、前記ステップC3の場合と同じ所定の送信元ポート番号及び送信元アドレスを使い、前記セットした第1の宛先ポート番号及び宛先アドレスと、前記セットした第2の宛先ポート番号及び宛先アドレスに対して、この順に試行パケット(試行データ)を送信することにより、相手クライアント端末TMとの接続を試行する。なお、第1の宛先ポート番号及び宛先アドレスへの試行パケットの送信が前述した第1接続試行に対応し、第2の宛先ポート番号及び宛先アドレスへの試行パケットの送信が前述した第2接続試行に対応する。 On the other hand, each client terminal TM waiting for notification of the connection destination estimated port number and the connection destination address receives the estimated port number and the connection destination address from the server SV, and in step C4, the estimated port number and the connection destination. The address is received, “Yes” is determined, and the process proceeds to Step C5. In step C5, the estimated port number and connection destination address of the partner client terminal TM notified from the server SV are set as the first destination port number and destination address, and the port obtained by subtracting “+1” from the estimated port number The number and the connection destination address are set as the second destination port number and the destination address. Then, the client terminal TM uses the same predetermined source port number and source address as in the case of step C3, and uses the set first destination port number and destination address and the set second destination port number. Then, by sending trial packets (trial data) to the destination address in this order, connection with the partner client terminal TM is attempted. The transmission of the trial packet to the first destination port number and the destination address corresponds to the first connection trial described above, and the transmission of the trial packet to the second destination port number and the destination address corresponds to the second connection trial described above. Corresponding to
なお、クライアント端末TMは、前記のように第1の宛先ポート番号及び宛先アドレスに対する試行パケットの送信と、第2の宛先ポート番号及び宛先アドレスに対する試行パケットの送信に加えて、第1の宛先ポート番号の前後の複数のポート番号及び前記通知された接続先アドレスをそれぞれ使って3回以上の接続を試行してもよい。前後のポート番号とは、例えば、第1の宛先ポート番号(サーバSVから通知された推測ポート番号)に「+1」、「+2」、「+3」・・・をそれぞれ加算した数個のポート番号及び第1の宛先ポート番号から「+2」、「+3」・・・をそれぞれ減算した数個のポート番号である。なお、この場合も、クライアント端末TMは、前記ステップC3の場合と同じ所定の送信元ポート番号及び送信元アドレスを使い、試行パケットの送信を行う。これは、次の理由による。相手クライアント端末TMを支配するNATルータが上述したパターン1〜3のうちのいずれかのパターンであっても、相手クライアント端末TMを支配するNATルータのあるポートがたまたま使用中である場合には、NATルータNRは、送信元ポート番号を、使用中でなくてサーバSVから通知された推測ポート番号及びそれより「+1」だけ小さなポート番号の前後のポートに変更することがある。したがって、この場合には、前記第1及び第2の宛先ポート番号の試行では、試行パケットは相手クライアント端末TMに届かないこともあるからである。
In addition to the transmission of the trial packet for the first destination port number and the destination address and the transmission of the trial packet for the second destination port number and the destination address, the client terminal TM transmits the first destination port as described above. Three or more connections may be attempted using a plurality of port numbers before and after the number and the notified connection destination address. The front and rear port numbers are, for example, several port numbers obtained by adding “+1”, “+2”, “+3”,... To the first destination port number (the estimated port number notified from the server SV). And several port numbers obtained by subtracting “+2”, “+3”... From the first destination port number. In this case as well, the client terminal TM transmits a trial packet using the same source port number and source address as in step C3. This is due to the following reason. Even if the NAT router that controls the partner client terminal TM is one of the
前記ステップC5の処理後、各クライアント端末TMは、ステップC6にて、接続しようとする相手クライアント端末TMからの試行パケットが届いたか否かを判定する。相手クライアント端末TMからの試行パケットが届かない状態では、各クライアント端末TMは、ステップC6にて「No」とそれぞれ判定して、ステップC7に進む。ステップC7においては、前記クライアント端末TMは、相手クライアント端末TMからのパケットを待つ所定の最大時間が経過したか否かを判定する。そして、最大時間が経過していない間は、前記クライアント端末TMは、ステップC7にて「No」と判定して、ステップC6に戻り、相手クライアント端末TMからの試行パケットが届くまで或いは最大時間が経過するまで、ステップC6,C7の処理を繰返し実行する。 After the processing in step C5, each client terminal TM determines in step C6 whether or not a trial packet from the partner client terminal TM to be connected has arrived. In a state where the trial packet from the partner client terminal TM has not arrived, each client terminal TM determines “No” in Step C6, and proceeds to Step C7. In step C7, the client terminal TM determines whether or not a predetermined maximum time waiting for a packet from the partner client terminal TM has elapsed. While the maximum time has not elapsed, the client terminal TM makes a “No” determination at step C7 and returns to step C6 until the trial packet from the partner client terminal TM arrives or the maximum time Until the time elapses, the processes of steps C6 and C7 are repeatedly executed.
前記ステップC6,C7の循環処理中、試行パケットが届くと、各クライアント端末TMは、ステップC6にて「Yes」と判定して、ステップC8に進む。ステップC8においては、各クライアント端末TMは、サーバSVに接続完了したことを通知する。これにより、相手クライアント端末TMから試行パケットを受け取ったクライアント端末TMは、相手クライアント端末TMとの直接的な接続が確立し、この接続動作を終了する。なお、受け取った試行パケットは相手クライアント端末TMに関する送信元アドレス及び送信元ポート番号を含むので、試行パケットを受け取ったクライアント端末TMは相手クライアント端末TMのアドレスとポート番号を認識できる。以後、クライアント端末TMは、相手クライアント端末TMとの音楽セッション動作(合奏)に移行する。 When a trial packet arrives during the cyclic processing in steps C6 and C7, each client terminal TM determines “Yes” in step C6 and proceeds to step C8. In step C8, each client terminal TM notifies the server SV that the connection has been completed. As a result, the client terminal TM that has received the trial packet from the partner client terminal TM establishes a direct connection with the partner client terminal TM and ends this connection operation. Since the received trial packet includes a transmission source address and a transmission source port number relating to the partner client terminal TM, the client terminal TM that has received the trial packet can recognize the address and port number of the partner client terminal TM. Thereafter, the client terminal TM shifts to a music session operation (ensemble) with the partner client terminal TM.
一方、相手クライアント端末TMからの試行パケットが届かない状態で、最大時間が経過すると、各クライアント端末TMは、ステップC7にて「Yes」と判定して、ステップC9に進む。ステップC9においては、各クライアント端末TMは、ステップC5の処理によるパケット送信の試行を所定の最大試行回数行ったか否かを判定する。最大試行回数行っていないときには、クライアント端末TMは、ステップC9にて「No」と判定して、ステップC10に進む。ステップC10においては、各クライアント端末TMは、サーバSVに接続のリトライを通知して、ステップC2に戻り、前述したステップC2〜C7,C9,C10からなる接続の再試行を繰返し実行する。そして、パケット送信の試行を最大試行回数行ったときには、各クライアント端末TMは、ステップC9にて「Yes」と判定して、ステップC11にてサーバSVに接続失敗したことを通知して接続を断念し、この接続動作を終了する。この場合、各クライアント端末TMは相手クライアント端末TMと接続ができなかったことになる。 On the other hand, when the maximum time has elapsed in a state where the trial packet from the partner client terminal TM has not arrived, each client terminal TM determines “Yes” in Step C7 and proceeds to Step C9. In step C9, each client terminal TM determines whether or not a packet transmission trial by the process of step C5 has been performed a predetermined maximum number of times. When the maximum number of trials has not been performed, the client terminal TM makes a “No” determination at step C9 and proceeds to step C10. In Step C10, each client terminal TM notifies the server SV of a connection retry, returns to Step C2, and repeatedly executes the connection retry including Steps C2 to C7, C9, and C10 described above. When the maximum number of attempts to send a packet is made, each client terminal TM determines “Yes” in step C9, notifies the server SV that the connection has failed in step C11, and gives up the connection. Then, this connection operation is terminated. In this case, each client terminal TM cannot connect to the partner client terminal TM.
一方、前記ステップS6の繰り返し処理中のサーバSVは、クライアント端末TMから、「接続完了」、「接続のリトライ通知」及び「接続失敗」の何れかのパケットが届くと、ステップS6にて「Yes」と判定して、ステップS7に進む。ステップS7においては、サーバSVは、クライアント端末TMから届いた「接続完了」、「接続のリトライ通知」又は「接続失敗」に応じて分岐処理を実行する。 On the other hand, when the server SV that is repeatedly performing the process in step S6 receives from the client terminal TM one of the “connection complete”, “connection retry notification”, and “connection failure” packets, “Yes” in step S6. ”And proceed to step S7. In step S7, the server SV executes a branch process in response to “connection complete”, “connection retry notification”, or “connection failure” received from the client terminal TM.
この場合、「接続完了」のパケットを受信したときは、サーバSVは、ステップS8に進み、接続完了とし、パケットを受信したクライアント端末TMを接続待ちのクライアント端末TMから削除する。また、「接続のリトライ通知」のパケットを受信したときは、サーバSVは、ステップS3に戻って、前述したステップS3〜S7の処理を繰り返す。さらに、「接続失敗」のパケットを受信したときは、サーバSVは、ステップS9に進み、接続失敗とし、パケットを受信したクライアント端末TMを接続待ちのクライアント端末TMから削除する。そして、ステップS8,S9の処理後は、元の待機状態に戻る。 In this case, when receiving a “connection complete” packet, the server SV proceeds to step S8, completes the connection, and deletes the client terminal TM that has received the packet from the client terminal TM waiting for connection. When the “connection retry notification” packet is received, the server SV returns to step S3 and repeats the processes of steps S3 to S7 described above. Further, when the “connection failure” packet is received, the server SV proceeds to step S9, determines that the connection has failed, and deletes the client terminal TM that has received the packet from the client terminal TM waiting for connection. Then, after the processing of steps S8 and S9, the original standby state is restored.
以上説明したように、上記実施形態においては、サーバSVは、ステップS4にて各クライアント端末TMから送信された試行パケットを受信し、ステップS5にて前記試行パケットの送信に使われた送信元ポート番号よりも「+1」だけ大きなポート番号を推測ポート番号として相手方のクライアント端末TMにそれぞれ通知するようにした。そして、各クライアント端末TMは、ステップC5の第1接続試行で、サーバSVへの試行パケットの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、サーバSVから通知された推測ポート番号を宛先ポート番号として、相手のクライアント端末TMに対する接続を試行するようにした。この第1接続試行においては、各クライアント端末TMを支配するNATルータNRが前述したパターン2又はパターン3のルータであれば、サーバSVのアドレスは相手方のクライアント端末TMのアドレスとは異なるので、各クライアント端末TMに関する送信元ポート番号はステップC3におけるサーバSVへの試行パケットの送信に使われた送信元ポート番号よりも「+1」だけそれぞれ増加する。したがって、各クライアント端末TMを支配するNATルータNRが前述したパターン2又はパターン3のルータであれば、各クライアント端末TMは互いに通信可能に接続されるようになる。
As described above, in the above embodiment, the server SV receives the trial packet transmitted from each client terminal TM in step S4, and the transmission source port used for transmitting the trial packet in step S5. A port number larger by “+1” than the number is notified to the other client terminal TM as an estimated port number. Each client terminal TM uses the same source port number as the source port number used for transmitting the trial packet to the server SV in the first connection attempt in step C5, and the estimated port notified from the server SV. The connection to the partner client terminal TM is tried using the number as the destination port number. In this first connection attempt, if the NAT router NR that controls each client terminal TM is the router of the
ただし、相手方のクライアント端末TMを支配するNATルータNRが前述したパターン1のタイプのルータである場合には、相手方の送信元ポート番号はステップC3におけるサーバSVへの試行パケットの送信に使われた送信元ポート番号と同じポート番号に保たれるので、パターン1のタイプのNATルータNRの支配下にある相手方のクライアント端末TMへの接続は確立されない。しかし、各クライアント端末TMは、ステップC5の第2接続試行で、サーバSVへの試行パケットの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、サーバSVから通知された推測ポート番号よりも「+1」だけ小さなポート番号を宛先ポート番号として、相手のクライアント端末TMに対する接続を試行するようにした。この場合、パターン1であるNATルータNRによって送信元ポート番号は変更されないので、各クライアント端末TMは、パターン1のNATルータNRの支配下にある相手方のクライアント端末TMへの接続を確立させることができる。その結果、上記実施形態によれば、クライアント端末TMを支配するNATルータNRがパターン1〜3のどのようなタイプであっても、NATルータNRのタイプを判定する処理も必要とせず、直接通信ができるようになる。
However, if the NAT router NR that controls the partner client terminal TM is a router of the type of
また、上記実施形態のように、各クライアント端末TMがサーバSVから通知された推測ポート番号及びそれより「+1」だけ小さなポート番号を宛先ポート番号として順次変更する機能(例えば、UDPホールパンチング手法による機能)が備わっていれば、各クライアント端末TM側の処理機能を変更することなく、サーバSV側の機能を変更するだけで、クライアント端末TMを支配するNATルータNRがパターン1〜3のどのようなタイプであっても、直接通信ができるようになる。これによれば、多くのクライアント端末TMの機能を変更する必要がなくなり、通信システムが簡単に改善される。
Further, as in the above embodiment, each client terminal TM sequentially changes the estimated port number notified from the server SV and the port number smaller by “+1” as the destination port number (for example, by the UDP hole punching method). Function), the NAT router NR that controls the client terminal TM can be changed to the
〔変形例〕
上記実施形態においては、図4B及び図6のステップS5において、サーバSVは、クライアント端末TMから送信されるとともにNATルータNRで変換されたクライアント端末TMの送信元ポート番号に「+1」を加算して推測ポート番号を導出し、前記導出した推測ポート番号を相手方のクライアント端末TMに通知するようにした。しかし、サーバSVは、クライアント端末TMから送信されるとともにNATルータNRで変換されたクライアント端末TMの送信元ポート番号そのものを推測ポート番号として相手方のクライアント端末TMに送信するようにしてもよい。この場合、各クライアント端末TMは、サーバSVから送信された推測ポート番号(送信元ポート番号そのもの)に「+1」を加算したポート番号を第1の宛先ポート番号として第1接続試行を行い、その後に、サーバSVから送信された推測ポート番号(送信元ポート番号そのものであって、第1の宛先ポート番号よりも「+1」だけ小さなポート番号)を第2の宛先ポート番号として第2接続試行を行うようにすればよい。
[Modification]
In the above embodiment, in step S5 of FIG. 4B and FIG. 6, the server SV adds “+1” to the transmission source port number of the client terminal TM transmitted from the client terminal TM and converted by the NAT router NR. Thus, the estimated port number is derived, and the derived estimated port number is notified to the partner client terminal TM. However, the server SV may transmit the transmission source port number of the client terminal TM itself, which is transmitted from the client terminal TM and converted by the NAT router NR, to the partner client terminal TM as an estimated port number. In this case, each client terminal TM performs a first connection attempt using a port number obtained by adding “+1” to the estimated port number (source port number itself) transmitted from the server SV as a first destination port number, and thereafter In addition, a second connection attempt is made with the estimated port number (the source port number itself, which is a port number smaller by “+1” than the first destination port number) transmitted from the server SV as the second destination port number. You just have to do it.
また、サーバSVは、前記送信元ポート番号に「+1」を加算した推測ポート番号及び前記送信元ポート番号そのものでもなく、予め決められたルールを用いて変換された推測ポート番号をクライアント端末TMに通知するようにしてもよい。そして、クライアント端末TMは、前記ルールに従って通知された推測ポート番号を変換したポート番号を第1の宛先ポート番号として第1接続試行を行うとともに、第1の宛先ポート番号よりも「+1」だけ小さなポート番号を第2の宛先ポート番号として第2接続試行を行うようにしてもよい。要は、サーバSVは、各クライアント端末TMにより送信されたパケットを受信し、前記パケットの送信に使われた送信元ポート番号から前記送信元ポート番号を直接的又は間接的に表す推測ポート番号を推測して、通信相手となるクライアント端末TMに関する推測ポート番号を各クライアント端末TMに通知すればよい。一方、各クライアント端末は、前記サーバSVから通知された推測ポート番号を用いて、通信相手のクライアント端末TMによるサーバSVへのパケットへのデータの送信に使われた送信元ポート番号より「+1」だけ大きなポート番号を導出して、前記導出したポート番号を第1の宛先ポート番号として第1接続試行を行い、第1の宛先ポート番号よりも「+1」だけ小さなポート番号を第2の宛先ポート番号として第2接続試行を行うようにすればよい。なお、各クライアント端末TMによる通信相手のクライアントTMへの前記第1接続試行及び第2接続試行においては、サーバSVへのパケットの送信に使われた送信元ポート番号と同じ送信元ポート番号を使う。 Further, the server SV does not give the estimated port number obtained by adding “+1” to the transmission source port number and the transmission source port number itself, but the estimated port number converted using a predetermined rule to the client terminal TM. You may make it notify. Then, the client terminal TM makes a first connection attempt using the port number obtained by converting the estimated port number notified according to the rule as the first destination port number, and is smaller by “+1” than the first destination port number. The second connection attempt may be performed using the port number as the second destination port number. In short, the server SV receives a packet transmitted by each client terminal TM, and determines an estimated port number that directly or indirectly represents the source port number from the source port number used for transmitting the packet. It suffices to notify each client terminal TM of the estimated port number related to the client terminal TM to be a communication partner. On the other hand, each client terminal uses the estimated port number notified from the server SV to “+1” from the transmission source port number used for transmission of data to the packet to the server SV by the client terminal TM of the communication partner. A port number that is larger than the first destination port number by making a first connection attempt using the derived port number as the first destination port number, and a port number that is smaller by “+1” than the first destination port number. The second connection trial may be performed as a number. Note that, in the first connection attempt and the second connection attempt to the communication partner client TM by each client terminal TM, the same source port number as that used for transmission of the packet to the server SV is used. .
また、上記実施形態においては、サーバSVは、クライアント端末TMからサーバSVへパケットを送る際にNATルータNRで変換されて使われた送信元ポート番号に「+1」を加算したポート番号を推測ポート番号として決定して相手クライアント端末TMに通知するようにした。しかし、これに代えて、サーバSVは、NATルータNRの振舞い(送信元番号の変換態様)に応じて、「+1」以外の値である推測ポート番号の増減値(例えば、「+2」、「+3」・・・又は「−2」、「−3」・・・など)を決定するようにしてもよい。そして、クライアント端末TMから送られた送信元ポート番号に前記決定した増減値を加算したポート番号、又は前記送信元ポート番号から前記決定した増減値を減算したポート番号を推測ポート番号として決定して、相手クライアント端末TMに通知するようにしてもよい。これは、あるNATルータがシーケンシャルに送信元ポート番号を変換しないことも考えられるからである。 In the above embodiment, the server SV estimates the port number obtained by adding “+1” to the source port number converted and used by the NAT router NR when sending a packet from the client terminal TM to the server SV. The number is determined and notified to the partner client terminal TM. However, instead of this, the server SV increases or decreases the estimated port number (for example, “+2”, “+”), which is a value other than “+1”, according to the behavior of the NAT router NR (transmission source number conversion mode). +3 "... or" -2 "," -3 "..., etc.) may be determined. The port number obtained by adding the determined increase / decrease value to the transmission source port number sent from the client terminal TM or the port number obtained by subtracting the determined increase / decrease value from the transmission source port number is determined as the estimated port number. The partner client terminal TM may be notified. This is because a certain NAT router may not convert the source port number sequentially.
このようなサーバSVによる送信元ポート番号の変換がシーケンシャルに行われる場合と、前記変換がシーケンシャルに行われない場合の両者を考慮すると、図6のステップS5にて、ステップS4で受信したデータの送信に使われた相手方のクライアント端末の送信元ポート番号とは、それぞれ送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分(前記増減値に対応)だけ異なるポート番号を推測ポート番号として推測して、各クライアント端末TMに通知するようにすればよい。そして、この場合には、各クライアント端末TMは、第1接続試行において、サーバSVから通知された相手方の推測ポート番号を宛先ポート番号として相手方のクライアント端末TMにパケットを送信する。次の第2接続試行においては、各クライアント端末は、前記サーバSVから通知された相手方の推測ポート番号(第1接続試行における宛先ポート番号と同じ)と、前記送信元ポート番号の変更分とを用いて、ステップS4で受信したデータの送信に使われた相手方のクライアント端末の送信元ポート番号と等しいポート番号を導出し、前記導出したポート番号を宛て先ポート番号として相手方のクライアント端末TMにパケットを送信する。 Considering both the case where the conversion of the source port number by the server SV is performed sequentially and the case where the conversion is not performed sequentially, the data received at step S4 in step S5 in FIG. The source port number of the partner client terminal used for transmission is different from the source port number when the source port number is changed by the NAT router (corresponding to the increase / decrease value). The estimated port number may be estimated and notified to each client terminal TM. In this case, in the first connection attempt, each client terminal TM transmits a packet to the other client terminal TM with the other party's estimated port number notified from the server SV as the destination port number. In the next second connection attempt, each client terminal obtains the estimated port number of the other party notified from the server SV (the same as the destination port number in the first connection attempt) and the change in the transmission source port number. And deriving a port number equal to the transmission source port number of the partner client terminal used for transmitting the data received in step S4, and sending the packet to the partner client terminal TM using the derived port number as the destination port number. Send.
また、前記変形例で説明したように、サーバSVが、クライアント端末TMから送信されるとともにNATルータNRで変換されたクライアント端末TMの送信元ポート番号そのものを推測ポート番号として相手方のクライアント端末TMに送信することもできる。この変形例においても、前述した送信元ポート番号の変換がシーケンシャルに行われる場合と、前記変換がシーケンシャルに行われない場合とを考慮すると、各クライアント端末TMは、第1接続試行及び第2接続試行を次のようにして行う。第1接続試行では、サーバSVから通知された推測ポート番号(すなわち、サーバへのパケットの送信時の相手方のクライアント端末に関する送信元ポート番号)と、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分(前記増減値に対応)とを用いて、NATルータによって変更された際における相手方のクライアント端末TMの送信元ポート番号を宛先ポート番号として導出し、前記導出した宛先ポート番号を用いて相手方のクライアント端末TMにパケットを送信する。また、第2接続試行では、サーバSVから通知された推測ポート番号(すなわち、サーバへのパケットの送信時の相手方のクライアント端末に関する送信元ポート番号)を宛先ポート番号として、相手方のクライアント端末TMにパケットを送信する。 Further, as described in the modification, the server SV transmits the source port number itself of the client terminal TM transmitted from the client terminal TM and converted by the NAT router NR to the other client terminal TM as the estimated port number. It can also be sent. Also in this modification, when considering the case where the transmission source port number conversion is performed sequentially and the case where the conversion is not performed sequentially, each client terminal TM performs the first connection attempt and the second connection. The trial is done as follows. In the first connection attempt, when the estimated port number notified from the server SV (that is, the transmission source port number related to the partner client terminal at the time of packet transmission to the server) and the transmission source port number are changed by the NAT router. The source port number of the partner client terminal TM when changed by the NAT router is derived as the destination port number using the change in the source port number (corresponding to the increase / decrease value), and the derived destination A packet is transmitted to the other client terminal TM using the port number. In the second connection attempt, the estimated port number notified from the server SV (that is, the transmission source port number related to the partner client terminal at the time of packet transmission to the server) is used as the destination port number to the partner client terminal TM. Send the packet.
さらに、上記実施形態においては、図4B及び図6のステップS5にて、サーバSVは、接続先アドレス及び接続先の推測ポート番号を、全てのクライアント端末TMに同時に通知するようにした。しかし、サーバSVは、接続先アドレスに関しては、両クライアント端末TMに推測ポート番号とは別に通知するようにしてもよい。また、全てのクライアント端末TMが互いに接続先アドレスを事前に認識している場合には、図4B及び図6のステップS5にて、サーバSVは、接続先の推測ポート番号のみを全てのクライアント端末TMに通知するようにしてもよい。 Furthermore, in the above embodiment, in step S5 of FIG. 4B and FIG. 6, the server SV notifies all the client terminals TM of the connection destination address and the estimated port number of the connection destination at the same time. However, the server SV may notify both client terminals TM of the connection destination address separately from the estimated port number. If all the client terminals TM recognize the connection destination addresses in advance, in step S5 in FIG. 4B and FIG. 6, the server SV assigns only the estimated port number of the connection destination to all the client terminals. You may make it notify TM.
NR:NRa〜NRd…NATルータ、TM:TMa〜TMd…セッション端末(クライアント端末)、SV…セッション管理サーバ、CN…広域通信ネットワーク NR: NRa to NRd ... NAT router, TM: TMa to TMd ... session terminal (client terminal), SV ... session management server, CN ... wide area communication network
Claims (6)
前記第1端末は、送信元ポート番号を前記サーバを介して前記第2端末に通知するために、前記第1NATルータを介して前記サーバにデータを送信する第1送信手段を備え、
前記第2端末は、送信元ポート番号を前記サーバを介して前記第1端末に通知するために、前記第2NATルータを介して前記サーバにデータを送信する第2送信手段を備え、
前記サーバは、
前記第1送信手段及び前記第2送信手段によって前記サーバへそれぞれ送信されたデータを受信するデータ受信手段と、
前記データ受信手段によって受信された前記第1送信手段によるデータの送信に使われた送信元ポート番号から前記第1端末に関する第1推測ポート番号を推測して、前記推測した第1推測ポート番号を前記第2NATルータを介して前記第2端末に通知するとともに、前記データ受信手段によって受信された前記第2送信手段によるデータの送信に使われた送信元ポート番号から前記第2端末に関する第2推測ポート番号を推測して、前記推測した第2推測ポート番号を前記第1NATルータを介して前記第1端末に通知するポート番号推測手段とを備え、
前記第1端末は、さらに、
前記ポート番号推測手段によって通知された前記第2推測ポート番号を受信する第1ポート番号受信手段と、
前記第1送信手段による前記サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記第1ポート番号受信手段により受信した第2推測ポート番号に基づく第2試行ポート番号であって、前記第2送信手段による前記サーバへのデータの送信に使われた送信元ポート番号とは、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なる第2試行ポート番号を宛先ポート番号として、前記第1NATルータ及び前記第2NATルータを介して前記第2端末にデータを送信することにより前記第2端末への接続を試行し、かつ
前記第2試行ポート番号を宛先ポート番号とする前記第2端末への接続の試行後、さらに、前記第1送信手段による前記サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記第1ポート番号受信手段により受信した第2推測ポート番号に基づく第4試行ポート番号であって、前記第2送信手段による前記サーバへのデータの送信に使われた送信元ポート番号と等しい第4試行ポート番号を宛先ポート番号として、前記第1NATルータ及び前記第2NATルータを介して前記第2端末にデータを送信することにより前記第2端末への接続を試行する第1試行手段とを備え、
前記第2端末は、さらに、
前記ポート番号推測手段によって通知された前記第1推測ポート番号を受信する第2ポート番号受信手段と、
前記第2送信手段による前記サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記第2ポート番号受信手段により受信した第1推測ポート番号に基づく第1試行ポート番号であって、前記第1送信手段による前記サーバへのデータの送信に使われた送信元ポート番号とは、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なる第1試行ポート番号を宛先ポート番号として、前記第2NATルータ及び前記第1NATルータを介して前記第1端末にデータを送信することにより前記第1端末への接続を試行し、かつ
前記第1試行ポート番号を宛先ポート番号とする前記第1端末への接続の試行後、さらに、前記第2送信手段による前記サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記第2ポート番号受信手段により受信した第1推測ポート番号に基づく第3試行ポート番号であって、前記第1送信手段による前記サーバへのデータの送信に使われた送信元ポート番号と等しい第3試行ポート番号を宛先ポート番号として、前記第2NATルータ及び前記第1NATルータを介して前記第1端末にデータを送信することにより前記第1端末への接続を試行する第2試行手段とを備えたことを特徴とする通信システム。 A first terminal under the first NAT router; a second terminal under the second NAT router; and a server not under the NAT router, wherein the first terminal and the second terminal are the first NAT router and In a communication system communicating with each other via the second NAT router,
The first terminal includes first transmission means for transmitting data to the server via the first NAT router in order to notify a source port number to the second terminal via the server,
The second terminal includes second transmission means for transmitting data to the server via the second NAT router in order to notify the first terminal via the server of a source port number;
The server
Data receiving means for receiving data respectively transmitted to the server by the first transmitting means and the second transmitting means;
A first estimated port number related to the first terminal is estimated from a transmission source port number used for data transmission by the first transmitting unit received by the data receiving unit, and the estimated first estimated port number is Notifying the second terminal via the second NAT router, and a second guess related to the second terminal from the source port number used for data transmission by the second transmission means received by the data reception means Port number estimating means for estimating a port number and notifying the estimated second estimated port number to the first terminal via the first NAT router;
The first terminal further includes:
First port number receiving means for receiving the second estimated port number notified by the port number estimating means;
A second trial based on the second estimated port number received by the first port number receiving means, using the same source port number as that used for transmitting data to the server by the first transmitting means. The transmission source port number used for transmitting data to the server by the second transmission means is a change in the transmission source port number when the transmission source port number is changed by the NAT router. Trying to connect to the second terminal by sending data to the second terminal via the first NAT router and the second NAT router, with the second trial port number being different only by the destination port number , and
After the trial of connection to the second terminal with the second trial port number as the destination port number, the same source as the source port number used for data transmission to the server by the first transmission means A fourth trial port number based on the second estimated port number received by the first port number receiving means using a port number, the source used for transmitting data to the server by the second transmitting means A first attempt is made to connect to the second terminal by transmitting data to the second terminal via the first NAT router and the second NAT router using a fourth trial port number equal to the port number as the destination port number . And trial means,
The second terminal further includes:
Second port number receiving means for receiving the first estimated port number notified by the port number estimating means;
A first trial based on the first estimated port number received by the second port number receiving means, using the same source port number as that used for transmission of data to the server by the second transmitting means The transmission source port number used for transmitting data to the server by the first transmission means is a change of the transmission source port number when the transmission source port number is changed by the NAT router. A connection to the first terminal is attempted by transmitting data to the first terminal via the second NAT router and the first NAT router, with a first trial port number that is different only by the destination port number , and
After the trial of connection to the first terminal with the first trial port number as the destination port number, the same source as the source port number used for transmission of data to the server by the second transmission means A third trial port number based on the first estimated port number received by the second port number receiving means using a port number, the source used for transmitting data to the server by the first transmitting means A second attempt is made to connect to the first terminal by transmitting data to the first terminal via the second NAT router and the first NAT router with a third trial port number equal to the port number as the destination port number . A communication system comprising trial means.
前記第1推測ポート番号は、前記第1送信手段による前記サーバへのデータの送信に使われた送信元ポート番号とは、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なるポート番号であり、かつ
前記第2推測ポート番号は、前記第2送信手段による前記サーバへのデータの送信に使われた送信元ポート番号とは、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なるポート番号であることを特徴とする通信システム。 The communication system according to claim 1 ,
The first estimated port number is a transmission source port number used for transmitting data to the server by the first transmission means. The transmission source port number when the transmission source port number is changed by a NAT router is used. The second estimated port number is different from the source port number used for the transmission of data to the server by the second transmission means, the source port number is determined by the NAT router. A communication system, characterized in that the port number is different by the amount corresponding to the change of the source port number when changed.
前記送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分は、「+1」であり、
前記第1推測ポート番号は、前記第1送信手段による前記サーバへのデータの送信に使われた送信元ポート番号よりも「+1」だけ大きなポート番号であり、かつ
前記第2推測ポート番号は、前記第2送信手段による前記サーバへのデータの送信に使われた送信元ポート番号よりも「+1」だけ大きなポート番号である通信システム。 The communication system according to claim 1 or 2 ,
When the source port number is changed by the NAT router, the change of the source port number is “+1”,
The first guess port number is a port number larger by “+1” than the source port number used for transmitting data to the server by the first sending means, and the second guess port number is A communication system having a port number larger by “+1” than a transmission source port number used for transmitting data to the server by the second transmission means.
前記第1端末は、送信元ポート番号を前記サーバを介して前記第2端末に通知するために、前記第1NATルータを介して前記サーバにデータを送信し、
前記第2端末は、送信元ポート番号を前記サーバを介して前記第1端末に通知するために、前記第2NATルータを介して前記サーバにデータを送信し、
前記サーバは、
前記第1端末から前記サーバに送信されたデータを受信するとともに、前記第2端末から前記サーバに送信されたデータを受信し、
前記受信した前記第1端末によるデータの送信に使われた送信元ポート番号から前記第1端末に関する第1推測ポート番号を推測して、前記推測した第1推測ポート番号を前記第2NATルータを介して前記第2端末に通知するとともに、前記受信した前記第2端末によるデータの送信に使われた送信元ポート番号から前記第2端末に関する第2推測ポート番号を推測して、前記推測した第2推測ポート番号を前記第1NATルータを介して前記第1端末に通知し、
前記第1端末は、さらに、
前記サーバから通知された第2推測ポート番号を受信し、
前記送信元ポート番号を第2端末に通知するためのサーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記受信した第2推測ポート番号に基づく第2試行ポート番号であって、前記送信元ポート番号を第1端末に通知するための第2端末からサーバへのデータの送信に使われた送信元ポート番号とは、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なる第2試行ポート番号を宛先ポート番号として、前記第1NATルータ及び前記第2NATルータを介して前記第2端末にデータを送信することにより前記第2端末への接続を試行し、かつ
前記第2試行ポート番号を宛先ポート番号とする前記第2端末への接続の試行後、さらに、前記第1送信手段による前記サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記第1ポート番号受信手段により受信した第2推測ポート番号に基づく第4試行ポート番号であって、前記第2送信手段による前記サーバへのデータの送信に使われた送信元ポート番号と等しい第4試行ポート番号を宛先ポート番号として、前記第1NATルータ及び前記第2NATルータを介して前記第2端末にデータを送信することにより前記第2端末への接続を試行し、
前記第2端末は、さらに、
前記サーバから通知された第1推測ポート番号を受信し、
前記送信元ポート番号を第1端末に通知するためのサーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記受信した第1推測ポート番号に基づく第1試行ポート番号であって、前記送信元ポート番号を第2端末に通知するための第1端末からサーバへのデータの送信に使われた送信元ポート番号とは、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なる第1試行ポート番号を宛先ポート番号として、前記第2NATルータ及び前記第1NATルータを介して前記第1端末にデータを送信することにより前記第1端末への接続を試行し、かつ
前記第1試行ポート番号を宛先ポート番号とする前記第1端末への接続の試行後、さらに、前記第2送信手段による前記サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記第2ポート番号受信手段により受信した第1推測ポート番号に基づく第3試行ポート番号であって、前記第1送信手段による前記サーバへのデータの送信に使われた送信元ポート番号と等しい第3試行ポート番号を宛先ポート番号として、前記第2NATルータ及び前記第1NATルータを介して前記第1端末にデータを送信することにより前記第1端末への接続を試行することを特徴とする通信方法。 A first terminal under the first NAT router; a second terminal under the second NAT router; and a server not under the NAT router, wherein the first terminal and the second terminal are the first NAT router and In a communication method in a communication system that communicates with each other via the second NAT router, before the first terminal and the second terminal communicate with each other,
The first terminal transmits data to the server via the first NAT router in order to notify the second terminal via the server of a source port number;
The second terminal transmits data to the server via the second NAT router to notify the first terminal of the source port number via the server;
The server
Receiving data transmitted from the first terminal to the server, and receiving data transmitted from the second terminal to the server;
A first estimated port number related to the first terminal is estimated from a source port number used for data transmission by the received first terminal, and the estimated first estimated port number is passed through the second NAT router. And inferring a second estimated port number related to the second terminal from the source port number used for data transmission by the received second terminal, and Informing the first terminal of the estimated port number via the first NAT router;
The first terminal further includes:
Receiving the second guess port number notified from the server;
A second trial based on the received second estimated port number using the same source port number as the source port number used for transmitting data to the server for notifying the second terminal of the source port number The source port number used to transmit data from the second terminal to the server for notifying the first terminal of the source port number is changed by the NAT router. The second trial port number that is different by the change in the source port number when the transmission is performed is used as the destination port number, and data is transmitted to the second terminal via the first NAT router and the second NAT router, thereby Attempt to connect to device and
After the trial of connection to the second terminal with the second trial port number as the destination port number, the same source as the source port number used for data transmission to the server by the first transmission means A fourth trial port number based on the second estimated port number received by the first port number receiving means using a port number, the source used for transmitting data to the server by the second transmitting means Trying to connect to the second terminal by sending data to the second terminal via the first NAT router and the second NAT router, with the fourth trial port number equal to the port number as the destination port number;
The second terminal further includes:
Receiving the first guess port number notified from the server;
A first trial based on the received first estimated port number using the same source port number as the source port number used for transmitting data to the server for notifying the first terminal of the source port number The source port number used to transmit data from the first terminal to the server for notifying the second terminal of the source port number is changed by the NAT router. By transmitting data to the first terminal via the second NAT router and the first NAT router, with a first trial port number that is different by the change of the source port number when the transmission is performed as a destination port number. Attempt to connect to device and
After the trial of connection to the first terminal with the first trial port number as the destination port number, the same source as the source port number used for transmission of data to the server by the second transmission means A third trial port number based on the first estimated port number received by the second port number receiving means using a port number, the source used for transmitting data to the server by the first transmitting means Trying to connect to the first terminal by sending data to the first terminal via the second NAT router and the first NAT router with a third trial port number equal to the port number as the destination port number A characteristic communication method.
前記第1端末及び前記第2端末が互いに通信する前に、
前記第1端末は、
送信元ポート番号を前記サーバを介して前記第2端末に通知するために前記サーバにデータを送信するとともに、
前記サーバから通知された前記第2端末に関する第2推測ポート番号を受信し、
前記サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記サーバから通知された第2推測ポート番号と等しい第2試行ポート番号を宛先ポート番号として前記第1NATルータ及び前記第2NATルータを介して前記第2端末にデータを送信するとともに、その後に少なくとも、前記受信した第2推測ポート番号と、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分とを用いて、前記第2端末による前記サーバへのデータの送信に使われた送信元ポート番号と等しい第4試行ポート番号を導出し、前記導出した第4試行ポート番号を宛て先ポート番号として前記第1NATルータ及び前記第2NATルータを介して前記第2端末にデータを送信することにより前記第2端末への接続を試行し、かつ
前記第2端末は、
送信元ポート番号を前記サーバを介して前記第1端末に通知するために前記サーバにデータを送信するとともに、
前記サーバから通知された前記第1端末に関する第1推測ポート番号を受信し、
前記サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記サーバから通知された第1推測ポート番号と等しい第1試行ポート番号を宛先ポート番号として前記第2NATルータ及び前記第1NATルータを介して前記第1端末にデータを送信するとともに、その後に少なくとも、前記受信した第1推測ポート番号と、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分とを用いて、前記第1端末による前記サーバへのデータの送信に使われた送信元ポート番号と等しい第3試行ポート番号を導出し、前記導出した第3試行ポート番号を宛て先ポート番号として前記第2NATルータ及び前記第1NATルータを介して前記第1端末にデータを送信することにより前記第1端末への接続を試行する通信システムにおけるサーバであって、
前記第1端末から前記サーバに送信されたデータを受信するとともに、前記第2端末から前記サーバに送信されたデータを受信するデータ受信手段と、
前記データ受信手段によって受信されたデータの送信に使われた前記第1端末及び前記第2端末の送信元ポート番号とは、それぞれ送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なるポート番号を前記第1推測ポート番号及び前記第2推測ポート番号として推測して、前記第1推測ポート番号を前記第2端末に通知するとともに、前記第2推測ポート番号を前記第1端末に通知するポート番号推測手段とを備えたことを特徴とするサーバ。 A first terminal under the first NAT router; a second terminal under the second NAT router; and a server not under the NAT router, wherein the first terminal and the second terminal are the first NAT router and A communication system communicating with each other via the second NAT router,
Before the first terminal and the second terminal communicate with each other,
The first terminal is
Sending data to the server to inform the second terminal of the source port number via the server;
Receiving a second guess port number related to the second terminal notified from the server;
Using the same source port number as the source port number used for data transmission to the server, the first NAT port is a second trial port number equal to the second guessed port number notified from the server. The data is transmitted to the second terminal via the router and the second NAT router, and then at least the received second guess port number and the source port when the source port number is changed by the NAT router Using the changed number, a fourth trial port number equal to the transmission source port number used to transmit data to the server by the second terminal is derived, and the derived fourth trial port number is addressed. By transmitting data to the second terminal via the first NAT router and the second NAT router as a destination port number, Attempts to connect to the terminal, and the second terminal,
Sending data to the server to notify the first terminal via the server of the source port number;
Receiving a first guess port number related to the first terminal notified from the server;
Using the same source port number as the source port number used for transmitting data to the server, the first NAT port number equal to the first estimated port number notified from the server is used as the destination port number to the second NAT. The data is transmitted to the first terminal via the router and the first NAT router, and then at least the received first guess port number and the source port when the source port number is changed by the NAT router A third trial port number equal to the source port number used for transmitting data to the server by the first terminal is derived using the changed number, and the derived third trial port number is addressed By transmitting data to the first terminal via the second NAT router and the first NAT router as a destination port number, A server in a communication system attempts to connect to the terminal,
Data receiving means for receiving data transmitted from the first terminal to the server and receiving data transmitted from the second terminal to the server;
The transmission source port numbers of the first terminal and the second terminal used for transmitting the data received by the data reception means are the transmission source port numbers when the transmission source port number is changed by the NAT router, respectively. A port number that differs by the change of the first guess port number and the second guess port number, and notifies the second guess port number to the second terminal, and the second guess port number A server comprising port number estimation means for notifying a first terminal.
前記第1端末及び前記第2端末が互いに通信する前に、
前記第1端末は、
送信元ポート番号を前記サーバを介して前記第2端末に通知するために前記サーバにデータを送信するとともに、
前記サーバから通知された前記第2端末に関する第2推測ポート番号を受信し、
前記サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記サーバから通知された第2推測ポート番号と等しい第2試行ポート番号を宛先ポート番号として前記第1NATルータ及び前記第2NATルータを介して前記第2端末にデータを送信するとともに、その後に少なくとも、前記受信した第2推測ポート番号と、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分とを用いて、前記第2端末による前記サーバへのデータの送信に使われた送信元ポート番号と等しい第4試行ポート番号を導出し、前記導出した第4試行ポート番号を宛て先ポート番号として前記第1NATルータ及び前記第2NATルータを介して前記第2端末にデータを送信することにより前記第2端末への接続を試行し、かつ
前記第2端末は、
送信元ポート番号を前記サーバを介して前記第1端末に通知するために前記サーバにデータを送信するとともに、
前記サーバから通知された前記第1端末に関する第1推測ポート番号を受信し、
前記サーバへのデータの送信に使われた送信元ポート番号と同じ送信元ポート番号を使い、前記サーバから通知された第1推測ポート番号と等しい第1試行ポート番号を宛先ポート番号として前記第2NATルータ及び前記第1NATルータを介して前記第2端末にデータを送信するとともに、その後に少なくとも、前記受信した第1推測ポート番号と、送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分とを用いて、前記第1端末による前記サーバへのデータの送信に使われた送信元ポート番号と等しい第3試行ポート番号を導出し、前記導出した第3試行ポート番号を宛て先ポート番号として前記第2NATルータ及び前記第1NATルータを介して前記第1端末にデータを送信することにより前記第1端末への接続を試行する通信システムにおけるサーバに適用されるコンピュータプログラムであって、
前記第1端末から前記サーバに送信されたデータを受信するとともに、前記第2端末から前記サーバに送信されたデータを受信するデータ受信ステップと、
前記データ受信ステップによって受信されたデータの送信に使われた前記第1端末及び前記第2端末の送信元ポート番号とは、それぞれ送信元ポート番号がNATルータによって変更されるときの送信元ポート番号の変更分だけ異なるポート番号を前記第1推測ポート番号及び前記第2推測ポート番号として推測して、前記第1推測ポート番号を前記第2端末に通知するとともに、前記第2推測ポート番号を前記第1端末に通知するポート番号推測ステップとを有することを特徴とするコンピュータプログラム。 A first terminal under the first NAT router; a second terminal under the second NAT router; and a server not under the NAT router, wherein the first terminal and the second terminal are connected to the first NAT router. And a communication system communicating with each other via the second NAT router,
Before the first terminal and the second terminal communicate with each other,
The first terminal is
Sending data to the server to inform the second terminal of the source port number via the server;
Receiving a second guess port number related to the second terminal notified from the server;
Using the same source port number as the source port number used for data transmission to the server, the first NAT port is a second trial port number equal to the second guessed port number notified from the server. The data is transmitted to the second terminal via the router and the second NAT router, and then at least the received second guess port number and the source port when the source port number is changed by the NAT router Using the changed number, a fourth trial port number equal to the transmission source port number used to transmit data to the server by the second terminal is derived, and the derived fourth trial port number is addressed. By transmitting data to the second terminal via the first NAT router and the second NAT router as a destination port number, Attempts to connect to the terminal, and the second terminal,
Sending data to the server to notify the first terminal via the server of the source port number;
Receiving a first guess port number related to the first terminal notified from the server;
Using the same source port number as the source port number used for transmitting data to the server, the first NAT port number equal to the first estimated port number notified from the server is used as the destination port number to the second NAT. The data is transmitted to the second terminal via the router and the first NAT router, and then at least the received first guess port number and the source port when the source port number is changed by the NAT router A third trial port number equal to the source port number used for transmitting data to the server by the first terminal is derived using the changed number, and the derived third trial port number is addressed By transmitting data to the first terminal via the second NAT router and the first NAT router as a destination port number, A computer program applied to a server in a communication system attempts to connect to the terminal,
A data receiving step of receiving data transmitted from the first terminal to the server and receiving data transmitted from the second terminal to the server;
The transmission source port numbers of the first terminal and the second terminal used for transmitting the data received in the data reception step are the transmission source port numbers when the transmission source port number is changed by the NAT router, respectively. A port number that differs by the change of the first guess port number and the second guess port number, and notifies the second guess port number to the second terminal, and the second guess port number A computer program comprising a port number estimating step of notifying the first terminal.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014013497A JP6331421B2 (en) | 2014-01-28 | 2014-01-28 | Communication system and server |
EP14872201.0A EP3086517A4 (en) | 2013-12-16 | 2014-10-31 | Communication system, terminal apparatus, and server |
US15/104,754 US9923866B2 (en) | 2013-12-16 | 2014-10-31 | Communication system, terminal apparatus and server |
PCT/JP2014/079027 WO2015093158A1 (en) | 2013-12-16 | 2014-10-31 | Communication system, terminal apparatus, and server |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014013497A JP6331421B2 (en) | 2014-01-28 | 2014-01-28 | Communication system and server |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015142217A JP2015142217A (en) | 2015-08-03 |
JP6331421B2 true JP6331421B2 (en) | 2018-05-30 |
Family
ID=53772325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014013497A Active JP6331421B2 (en) | 2013-12-16 | 2014-01-28 | Communication system and server |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6331421B2 (en) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004180003A (en) * | 2002-11-27 | 2004-06-24 | Kitt Peak:Kk | Communication network system and communication connection method |
JP2005117587A (en) * | 2003-10-10 | 2005-04-28 | Newrong Inc | Communication method |
JP4602247B2 (en) * | 2005-12-28 | 2010-12-22 | パナソニックシステムネットワークス株式会社 | Communication method |
JP5218357B2 (en) * | 2009-09-25 | 2013-06-26 | ブラザー工業株式会社 | COMMUNICATION METHOD, COMMUNICATION SYSTEM, TERMINAL DEVICE |
JP2011166569A (en) * | 2010-02-12 | 2011-08-25 | Brother Industries Ltd | Communication apparatus, and communication method |
-
2014
- 2014-01-28 JP JP2014013497A patent/JP6331421B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2015142217A (en) | 2015-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101139675B1 (en) | Traversal of symmetric network address translator for multiple simultaneous connections | |
JP5209061B2 (en) | Control of sending interface of SIP response message | |
EP2220852B1 (en) | Communicating a selection of a potential configuration | |
JP4961368B2 (en) | Terminal device, NAT traversal method, and program | |
KR20100019420A (en) | Peer-to-peer collaboration system with edge routing | |
JP3835462B2 (en) | Information processing apparatus and bubble packet transmission method | |
JP2007096826A (en) | Information processing system, tunnel communication apparatus, and tunnel communication method | |
JP2006229985A (en) | Automatic discovery of pseudo-wire peer address in ethernet-based network | |
JP6387605B2 (en) | Communication system and communication method | |
TWI538449B (en) | Nat traversal method, computer-readable medium, and system for mediating connection | |
JP4712481B2 (en) | Communication method and apparatus | |
JP2006203575A (en) | Communicating method | |
JP2005117587A (en) | Communication method | |
JP6331421B2 (en) | Communication system and server | |
WO2015093158A1 (en) | Communication system, terminal apparatus, and server | |
US20190141009A1 (en) | Session moderator for turn-pattern tcp-packet relay with websocket instantiation | |
WO2023007248A1 (en) | System and method for independent binding of virtual networks overlay using a physical network topology | |
JP2015119217A (en) | Communication system and terminal device | |
WO2022201980A1 (en) | Communication method, router, server, communication system, and communication program | |
JP5723808B2 (en) | COMMUNICATION DEVICE, COMMUNICATION METHOD, AND PROGRAM | |
JP5084716B2 (en) | VPN connection apparatus, DNS packet control method, and program | |
JP4345751B2 (en) | Information processing apparatus and bubble packet transmission method | |
Venkatachalam | Developing P 2 P Protocols across NAT | |
KR101150299B1 (en) | Method for dynamic traversing of multiple firewalls based on simultaneous notarization of user and networking instance and apparatus thereof | |
JP5171608B2 (en) | VPN connection device, packet control method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161122 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180117 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180314 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180403 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180416 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6331421 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |