(57)【特許請求の範囲】
【請求項１】
ＮＡＴ機能を有する第１のルータに接続された第１のコンピュータと、ＮＡＴ機能を有する第２のルータに接続された第２のコンピュータとの間でＰ２Ｐ型通信を行うための通信方法において、
前記第１のルータと前記第２のルータとが、中継サーバ及びＳＴＵＮサーバに接続されており、
前記第１のコンピュータが、第１のエンドポイントをオープンする第１のオープンステップと、
前記第１のコンピュータが前記中継サーバに接続し、前記中継サーバに第２のエンドポイントをオープンさせる第２のオープンステップと、
前記第１のコンピュータから前記ＳＴＵＮサーバへ、前記第１のルータを介してリクエストを送ることにより、前記第１のルータがアクティブオープンするＴＣＰのＮＡＴ越えの第３のエンドポイントをオープンする第３のオープンステップと、
前記第１のルータが、前記第３のエンドポイントから予測することにより、パッシブオープンするＴＣＰのＮＡＴ越えの第４のエンドポイントをオープンする第４のオープンステップと、
前記第１のルータを前記第２のルータに替え、前記第１のコンピュータに替えて前記第２のコンピュータが、前記第１のオープンステップから前記第４のオープンステップを行う第５のオープンステップと、
前記第１のコンピュータが、前記第３のエンドポイントを介して、前記第２のルータへの接続試行を行う第１の接続試行ステップと、
前記第１のコンピュータが、前記第４のエンドポイントを介して、前記第２のルータへの接続試行を行う第２の接続試行ステップと、
前記第１のコンピュータが、前記第５のオープンステップにおいて前記第２のコンピュータがオープンした第１のエンドポイントに接続試行を行う第３の接続試行ステップと、
前記第１のコンピュータが、前記第５のオープンステップにおいて前記第２のコンピュータが前記中継サーバにオープンさせた第２のエンドポイントに接続試行を行う第４の接続試行ステップと、
前記第２のルータを前記第１のルータに替え、前記第２のコンピュータに替えて前記第１のコンピュータが、前記第１の接続試行ステップから前記第４の接続試行ステップを行う第５の接続試行ステップと
を備えることを特徴とする通信方法。
【請求項２】
前記第１のオープンステップは、前記第２のオープンステップから前記第４のオープンステップに対して、任意の順序で行われる
ことを特徴とする請求項１に記載の通信方法。
【請求項３】
前記第３のオープンステップで開くエンドポイントをパッシブオープンに替え、前記第４のオープンステップで開くエンドポイントをアクティブオープンに替えた
ことを特徴とする請求項１又は２に記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＴ機能を有するネットワーク機器に接続されたコンピュータからＰ２Ｐ型通信を行うための通信方法に関する。
【背景技術】
【０００２】
近年、インターネットに接続するホストコンピュータの増大により、ＩＰ（Internet Protocol）アドレスの不足という問題が顕著化している。そこで、ＩＰアドレスの不足を解消するための一つの方法として、ＮＡＴ（Network Address Translator）機能が利用されている。ＮＡＴ機能は、閉域網であるＬＡＮ（local area network）内のプライベートアドレス（プライベートＩＰアドレス）を有するホストコンピュータと、インターネット内のグローバルアドレス（グローバルＩＰアドレス）を有するホストコンピュータとの間で通信を行うために、アドレス変換を行う。また、ＮＡＴの拡張された機能として、ＮＡＰＴ（network address port translation）機能も周知であり利用されている。ＮＡＰＴ機能は、別にＩＰマスカレードとも呼ばれ、プライベートＩＰアドレスとポート番号を変更することで、一つのグローバルＩＰアドレスを使って、複数のホストコンピュータを共有できるようにする技術である。本明細書においては、以下、ＮＡＴとＮＡＰＴとをまとめて広義にＮＡＴと呼ぶこととする。
【０００３】
また、オンラインゲームやビデオチャットなどのＰ２Ｐ（peer to peer）型通信を利用したアプリケーション（以下、Ｐ２Ｐアプリケーションという）の利用が増えている。Ｐ２Ｐ型通信は、サーバを介さずに、端末間で直接通信をおこなう。ＮＡＴ機能を利用した接続環境において、Ｐ２Ｐアプリケーションを利用するために、ＩＥＴＦ（Internet Engineering Task Force）の規格であるＳＴＵＮ（例えば、非特許文献１参照）技術が知られている。
【０００４】
さらに、ＮＡＴ機能を有するネットワーク機器を使用した通信方法を開示した文献がある（例えば、特許文献１参照）。
【０００５】
しかしながら、ＳＴＵＮ技術によっても端末間で通信ができない場合がある。これは、規格が詳細な部分まで規定されていなかったり、ルータによって実装する部分が異なるためである。また、通信経路の途中に、ＵＤＰ（User Datagram Protocol）による通信が行えないファイアウォールが接続されていると、端末間で通信することができない。即ち、通信を行う２つ以上の端末がある場合に、それらの端末の間に、ＮＡＴ機能が存在するネットワーク機器（ルータ等）が接続されている場合、通信を行うことができなかった（所謂、ＮＡＴ越え問題）。又は端末の間に、ファイアウォール機能が存在するネットワーク機器（ＷＥＢプロキシサーバ等）が接続されている場合、通信を行うことができなかった（所謂、ファイアウォール越え問題）。
【０００６】
従来、これらのＮＡＴ越え問題及びファイアウォール越え問題に対処するために、端末に実装されているアプリケーションを、ＮＡＴ越え及びファイアウォール越え用の市販のＳＤＫ（Software Development Kit）等を使用して変更する必要があった。さらに、ＮＡＴ越え問題及びファイアウォール越え問題に対処するためには、ルータ等の設定を変更する必要があった。
【０００７】
図５（ａ）、（ｂ）、（ｃ）は、従来のＴＣＰ（Transmission Control Protocol）のＮＡＴ越えの仕組みを説明する図である。図５（ａ）は、従来のＴＣＰのＮＡＴ越えの手順Ｉ〜IIIを例示した図である。図５（ｂ）は、従来のＴＣＰのＮＡＴ越えの手順IＶ〜ＶIを例示した図である。図５（ｃ）は、従来のＴＣＰのＮＡＴ越えの手順ＶII〜IＸを例示した図である。図５において、ノードA５０１及びノードB５０２に実装されているアプリケーションは、ＮＡＴ越え及びファイアウォール越え用の市販のＳＤＫ等を使用して予め変更されているものとする。
【０００８】
図５において、従来のＴＣＰのＮＡＴ越えは、以下の手順Ｉ〜IＸのように行われる。
Ｉ：ノードA５０１のポートaからSTUNサーバ５０３(TCP)に対してSTUNリクエストを送り、レスポンスを受け取り、ポートaがルータ５０５の何番にマップされたかを調べる。
II：Ｉの結果とルータ５０５の特性から、ノードB５０２との通信に何番ポートを使えばいいかを予測する。
III：呼制御サーバ５０４を通じて、IIで予測したソケットアドレスをノードB５０２に通知する。
IＶ：ノードB５０２のポートbからSTUNサーバ５０３(TCP)に対してSTUNリクエストを送り、レスポンスを受け取り、ポートbがルータ５０６の何番にマップされたかを調べる。
Ｖ：IＶの結果とルータ５０６の特性から、ノードA５０１との通信に何番ポートを使えばいいかを予測する。
ＶI：呼制御サーバ５０４を通じてＶで予測したソケットアドレスをノードA５０１に通知する。
ＶII：ノードB５０２はノードA５０１から通知されたソケットアドレスに対してSynを送る。ノードA５０１のルータ５０５はノードB５０２からSynを異常とみなし、dropする。
ＶIII：ノードB５０２はSynを送るのに利用したポートを閉じ、再度開きなおし、listenして待ち受ける。
IＸ：ノードA５０１はノードB５０２から通知されたソケットアドレスに対してSynを送る。ＶIIのSynパケットにより、ノードB５０２のルータ５０６にマッピングが作成されているため、ノードB５０２に届き、通信が成立する。
【０００９】
図６（ａ）、（ｂ）は、図５の手順II、Ｖにおけるポートの予測の説明図である。図６（ａ）はFullconeルータのポートの予測の説明図である。図６（ｂ）は、非Fullconeルータのポートの予測の説明図である。ポートの予測はルータの性質を元に行う。ポート予測で重要なルータの性質は、ローカルポートとルータにマップされるポートの規則性である。マップされるポートの規則性は大きくわけて以下のように二つある。
【００１０】
図６（ａ）に示すように、Fullconeルータ６０１を使用する場合、あるローカルポートaで、ルータ６０１外のサーバ６０２、６０３に接続・切断を繰り返しても必ずルータ６０１にマップされるポート番号はポートｂで同一である。
【００１１】
一方図６（ｂ）に示すように、非Fullconeルータ６０４を使用する場合、あるローカルポートaでルータ６０４外のサーバ６０２、６０３に接続・切断を繰り返すと、ルータ６０４にマップされるポートがポートｂからポートｃへと変わる。
【００１２】
FullconeルータではＳＴＵＮで調べた結果のポートがピアとの通信に利用できる。非Fullconeルータではマッピングの法則性を調べ、ピアとの通信に利用されるポートを予測する。多くの非Fullconeルータはセッション毎にルータにマップされるポート番号が一定数増減する。
【００１３】
次いで、図５の手順ＶII、ＶIIIにおけるSyn-out／Syn-inとステート管理について述べる。ＴＣＰのＮＡＴ越えのＶII、ＶIIIの手順では、synパケットを送出した後相手からのsynパケットを待ち受ける。通常のＴＣＰの３-wayハンドシェークは、アクティブオープンする側は、
・アウトバウンドsyn
・インバウンドsyn-ack
・アウトバウンドack
の３パケット(パッシブオープンする側はインバウンド・アウトバウンドが逆)で構成される。
【００１４】
一方、ＴＣＰのＮＡＴ越えのパッシブオープン側は、
・アウトバウンドsyn(相手に到達しない)
・インバウンドsyn
・アウトバウンドsyn-ack
・インバウンドack
の手順で行われる。ルータによってはＴＣＰのセッションのステートをしっかり管理するものもあり、アウトバウンドsyn後のインバウンドsynを不正な状態遷移と見なし、dropすることがある。
【００１５】
アクティブオープンする側では、
・アウトバウンドsyn
・インバウンドsyn-ack
・アウトバウンドack
と、通常の３-wayハンドシェークと同じ手順で行われるため、ルータのステート管理によって阻害されることはない。
【００１６】
片側のルータのみステート管理を行っている場合、双方でアクティブオープン側とパッシブオープン側を行うことで接続が可能となる。
【００１７】
【特許文献１】特開２００５−１１７５８７号公報
【非特許文献１】REC3489 “STUN-Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)” March 2003
【発明の開示】
【発明が解決しようとする課題】
【００１８】
ここで、ＮＡＴ内にいる機器同士で接続する方法としては、
・ＴＣＰのＮＡＴ越え
・中継サーバ
・（同じＬＡＮ内にいるならば）直接通信
の三つの手法がある。これらを並行して試行し、通信できる経路を選択することで、素早くピアとの通信を開始できる。
【００１９】
しかし、非Fullconeのルータでは、ピアとの通信に利用するポートを予測するため、実際にピアとの通信を始める前に、予測したポートを間違えて利用してしまうことがある。図７〜９を参照し、以下にその例を挙げる。
【００２０】
（例１）二つ目のＴＣＰのＮＡＴ越えのためのチェックで利用される
図７（ａ）、（ｂ）は、予測したポートを間違えて利用してしまう例１の説明図である。図７（ａ）は１回目のＳＴＵＮのチェックの説明図である。図７（ｂ）は２回目のＳＴＵＮのチェックの説明図である。接続の成功率向上のためにアクティブオープンとパッシブオープンを並行して行おうとすると、図７のようにルータ６０４にマップされるポート（１０００）をＳＴＵＮサーバ７０１でチェックする際に、図７（ｂ）の２回目のＳＴＵＮのチェックが図７（ａ）１回目のチェックで予測したポート（１００１）を使ってしまうことがある。
【００２１】
（例２）中継サーバへの接続
図８（ａ）、（ｂ）は、予測したポートを間違えて利用してしまう例２の説明図である。図８（ａ）はＳＴＵＮのチェックの説明図である。図８（ｂ）は中継サーバへの接続の説明図である。図８（ａ）のようにＳＴＵＮサーバ８０１でチェックし、利用するポートを予測した後、図８（ｂ）のように中継サーバ８０２への接続を行うと、予測したポートが中継サーバ８０２の接続で利用されてしまう。
【００２２】
（例３）相手のローカルアドレスへの接続
図９は、予測したポートを間違えて利用してしまう例３の説明図である。直接接続ができないネットワーク構成で、相手のＩＰアドレスに対して接続を試行すると、パケットはゲートウェイであるルータ６０４に届く。ルータ６０４のルーティングテーブルによっては、上流のルータ９０１にそのパケットが送られ、ＳＴＵＮのチェックで予測したポートが利用される。
【００２３】
従って、以上の例１〜３に示したように、非Fullconeのルータで予測したポートを使用してしまうという点において、上記従来技術には未だ改善の余地があった。
【００２４】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、非Fullconeのルータを使用する環境において、より確実にＴＣＰのＮＡＴ越えセッションを確立することができる通信方法を提供することにある。
【課題を解決するための手段】
【００２５】
このような目的を達成するために、本発明の通信方法（図１〜４）は、ＮＡＴ機能を有する第１のルータ（１０２）に接続された第１のコンピュータ（１０１）と、ＮＡＴ機能を有する第２のルータ（１０６）に接続された第２のコンピュータ（１０７）との間でＰ２Ｐ型通信を行うための通信方法において、前記第１のルータと前記第２のルータとが、中継サーバ（１０３）及びＳＴＵＮサーバ（１０４）に接続されており、前記第１のコンピュータが、第１のエンドポイントをオープンする第１のオープンステップと、前記第１のコンピュータが前記中継サーバに接続し、前記中継サーバに第２のエンドポイントをオープンさせる第２のオープンステップと、前記第１のコンピュータから前記ＳＴＵＮサーバへ、前記第１のルータを介してリクエストを送ることにより、前記第１のルータがアクティブオープンするＴＣＰのＮＡＴ越えの第３のエンドポイントをオープンする第３のオープンステップと、前記第１のルータが、前記第３のエンドポイントから予測することにより、パッシブオープンするＴＣＰのＮＡＴ越えの第４のエンドポイントをオープンする第４のオープンステップと、前記第１のルータを前記第２のルータに替え、前記第１のコンピュータに替えて前記第２のコンピュータが、前記第１のオープンステップから前記第４のオープンステップを行う第５のオープンステップと、前記第１のコンピュータが、前記第３のエンドポイントを介して、前記第２のルータへの接続試行を行う第１の接続試行ステップと、前記第１のコンピュータが、前記第４のエンドポイントを介して、前記第２のルータへの接続試行を行う第２の接続試行ステップと、前記第１のコンピュータが、前記第５のオープンステップにおいて前記第２のコンピュータがオープンした第１のエンドポイントに接続試行を行う第３の接続試行ステップと、前記第１のコンピュータが、前記第５のオープンステップにおいて前記第２のコンピュータが前記中継サーバにオープンさせた第２のエンドポイントに接続試行を行う第４の接続試行ステップと、前記第２のルータを前記第１のルータに替え、前記第２のコンピュータに替えて前記第１のコンピュータが、前記第１の接続試行ステップから前記第４の接続試行ステップを行う第５の接続試行ステップとを備えることを特徴とする。
【００２６】
なお、特許請求の範囲の構成要素と対応する実施形態中の図中符号等を（）で示した。ただし、特許請求の範囲に記載した構成要素は上記（）部の実施形態の構成要素に限定されるものではない。
【００２７】
以上の構成により、本発明の通信システムは、非Fullconeのルータを使用する環境において、予測したポートを自ら利用しないための接続手順を実行する。
【発明の効果】
【００２８】
本発明によれば、非Fullconeのルータを使用する環境において、より確実にＴＣＰのＮＡＴ越えセッションを確立することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２９】
以下、図面を参照して本発明の実施形態を詳細に説明する。なお、各図面において同じ機能を有する箇所には同一の符号を付す。
【００３０】
［装置構成］  
図１は、本実施形態の通信システムにおける通信のシーケンス図である。図１に示すように、本実施形態の通信システムは、ノードＡ１０１とルータ１０２を含むＬＡＮと、ノードＢ１０７とルータ１０６を含む他のＬＡＮとが、中継サーバ１０３、ＳＴＵＮサーバ１０４及び呼制御サーバ１０５によって接続され、構成されている。図１において、ノードＡ１０１及びノードＢ１０７に実装されているアプリケーションは、ＮＡＴ越え及びファイアウォール越え用の市販のＳＤＫ等を使用して予め変更されているものとする。
【００３１】
［動作説明］  
本実施形態では、ピアが利用するエンドポイント（ＩＰアドレス）を以下の三つに分類する。
（１）パッシブエンドポイント - 自分のエンドポイントのアドレスを相手に通知し、相手の接続を待つタイプ。  
例：  
ＴＣＰでlistenしているエンドポイント。  
中継サーバで待ち受けを行っているエンドポイント。
（２）アクティブエンドポイント - 相手のエンドポイントのアドレスがわかっていれば接続できるタイプ。  
例：  
接続先のピアでlistenしているポートに対して接続を行うエンドポイント。  
中継サーバで待ち受けているポートに対して接続を行うエンドポイント。
（３）バイラテラル（bilateral）エンドポイント - 自分と相手のエンドポイントのアドレスを交換し、お互いのエンドポイントのアドレスを知っていないと接続できないタイプ。  
例：  
ＮＡＴ越えのために双方のアドレスの交換が必要なエンドポイント。
【００３２】
図１を参照し、上述したエンドポイントの確定とそれらの接続試行によって、ピア間のセッション確立が行われる手順を説明する。ピア間のセッション確立は以下のような手順Ｉ〜ＶIで行われる。
Ｉ：（図１中のエリアＩのシーケンス）呼び出し側ノードＡ１０１のパッシブ、バイラテラルエンドポイント（Ａ、Ｂ、Ｃ１、Ｃ２）を生成し、相手ノードＢ１０７からの接続を受け入れられるよう初期化する。
II：（図１中のエリアIIのシーケンス）呼び出し側ノードＡ１０１のエンドポイント（Ａ、Ｂ、Ｃ１、Ｃ２）のアドレスを呼制御サーバ１０５を通じて相手ノードＢ１０７に通知する。
III：（図１中のエリアIIIのシーケンス）呼び出され側ノードＢ１０７はパッシブ、バイラテラルエンドポイントを生成し、相手ノードＡ１０１からの接続を受け入れられるよう初期化する。
IＶ：（図１中のエリアIＶのシーケンス）呼び出され側ノードＢ１０７のエンドポイントのアドレスを呼制御サーバ１０５を通じて呼び出し側ノードＡ１０１に通知する。
Ｖ：（図１中のエリアＶのシーケンス）呼び出し側ノードＡ１０１が呼び出され側ノードＢ１０７のパッシブエンドポイントに対応するアクティブエンドポイント（ａ、ｂ）を生成し、全エンドポイントで接続試行を行う。
ＶI：（図１中のエリアＶIのシーケンス）呼び出され側ノードＢ１０７が呼び出し側ノードＡ１０１のパッシブエンドポイント（Ａ、Ｂ）に対応するアクティブエンドポイントを生成し、全エンドポイントで接続試行を行う。
【００３３】
尚、上記手順ＶとＶIは、それらの順番は問題とはならず、それらが近いタイミングで実行されることを要する。
【００３４】
以下、上述した手順Ｉ〜ＶIのうち、本実施形態に特徴的な、
・パッシブ・バイラテラルエンドポイントのアドレス確定（Ｉ）の手法・順番
及び、
・アクティブ・バイラテラルエンドポイントの接続試行（Ｖ）の順番
について説明する。
【００３５】
（パッシブ・バイラテラルエンドポイントのアドレス確定（Ｉ）の手法・順番）  
図１とさらに図２を参照し説明する。図２（ａ）、（ｂ）、（ｃ）は、アドレス確定の流れを例示した図である。図２（ａ）はローカル（ノードＡ１０１）でｂｉｎｄを行う図である。図２（ｂ）は中継サーバ１０３でポートを開く図である。図２（ｃ）はＳＴＵＮサーバ１０４で接続してアドレス予測を行う図である。
【００３６】
パッシブ・バイラテラルエンドポイントには以下のエンドポイントがあり、アドレスの確定手順はそれぞれ異なる。
・図１、２中のＡ；ローカル（ノードＡ１０１）でlisten（パシッブオープンで待ち構える）しているエンドポイント（パッシブエンドポイント）
bindを行う（ポートをオープンする）。
・図１，２中のＢ；中継サーバ１０３で待ち受けを行うエンドポイント（パッシブエンドポイント）
中継サーバ１０３に接続し中継サーバ１０３のポートを開いてもらう。
・図１、２中のＣ１；アクティブオープンするＴＣＰのＮＡＴ越えエンドポイント（バイラテラルポイント）
ＳＴＵＮのリクエストを送り、返って来たレスポンスから予測する。
・図１、２中のＣ２；パッシブオープンするＴＣＰのＮＡＴ越えエンドポイント（バイラテラルポイント）
アクティブオープンで予測したアドレスから再度予測を行う。ポート番号が1ずつ増える傾向が見えた場合、アクティブオープンで利用するアドレスからポート番号を＋１したものをパッシブオープンで利用する。  
尚、アクティブオープンとパッシブオープンのアドレス予測方法は逆でも良い。
【００３７】
図１と２を参照し、アドレス確定の手順は「以下の順番」で行う。
（１）図１、図２（ａ）；ローカル（ノードＡ１０１）でlistenしているエンドポイントＡの初期化は任意の順番で行う。
（２）図１、図２（ｂ）；中継サーバ１０３での待ち受けを行うエンドポイントＢは「ＳＴＵＮサーバ１０４へのＴＣＰのＮＡＴ越えエンドポイント（Ｃ１、Ｃ２）より先に中継サーバ１０３へ接続を行う」。
（３）図１、図２（ｃ）；アクティブオープンするＴＣＰのＮＡＴ越えエンドポイントＣ１がＳＴＵＮサーバ１０４へ接続を行う。
【００３８】
（アクティブ・バイラテラルエンドポイントの接続試行（Ｖ）の順番）  
図１とさらに図３、４を参照し説明する。図３、４は、接続試行の流れを順に例示した図である。図３（ａ）はアクティブオープンするＮＡＴ越えエンドポイントの接続試行を行う図である。図３（ｂ）はパッシブオープンするＮＡＴ越えエンドポイントの接続試行を行う図である。図４（ａ）は相手のローカルアドレスに対して接続試行を行う図である。図４（ｂ）は相手が開いた中継サーバに対して接続試行を行う図である。
【００３９】
ここで、アクティブエンドポイントには以下のエンドポイントがある。
・図１、４中のａ；相手ノードＢ１０７のローカルでlistenしているエンドポイントに接続するエンドポイント
・図１、４中のｂ；中継サーバ１０３で待ちうけを行うエンドポイントに接続するエンドポイント
図１と図３、４を参照し、接続試行の手順は「以下の順番」で行う。
（１）図１、図３（ａ）；アクティブオープンするＴＣＰのＮＡＴ越えエンドポイントＣ１（バイラテラルポイント）で接続試行を行う。
（２）図１、図３（ｂ）；パッシブオープンするＴＣＰのＮＡＴ越えエンドポイントＣ２（バイラテラルポイント）で接続試行を行う。
（３）図１、及び図４（ａ）、（ｂ）；ローカルノードＢ１０７でlistenしているエンドポイントに接続するエンドポイントａ（アクティブエンドポイント）、及び中継サーバ１０３での待ち受けを行うエンドポイントに接続するエンドポイントｂ（アクティブエンドポイント）の接続試行を行う。これら二つの接続試行の順序は任意。
【００４０】
尚、上述したアドレス確定（Ｉ）の初期化の手順でアクティブオープンとパッシブオープンを逆にした場合、上記接続試行の手順（１）、（２）もそれらを逆にする必要がある。
【００４１】
［他の実施形態］  
以上述べた実施形態の他に次の形態を実施できる。  
１）上述の実施形態は例示であって制限的なものではない。したがって、上述の実施形態の他にも変形が可能である。その変形が特許請求の範囲で述べられている本発明の技術思想に基づく限り、その変形は本発明の技術的範囲内となる。
【図面の簡単な説明】
【００４２】
【図１】本発明を適用できる実施形態の通信システムにおける通信のシーケンス図である。
【図２】本発明を適用できる実施形態のアドレス確定の流れを例示した図で、（ａ）はローカルでｂｉｎｄを行う図、（ｂ）は中継サーバでポートを開く図、（ｃ）はＳＴＵＮサーバで接続してアドレス予測を行う図である。
【図３】本発明を適用できる実施形態の接続試行の流れを順に例示した図で、（ａ）はアクティブオープンするＮＡＴ越えエンドポイントの接続試行を行う図、（ｂ）はパッシブオープンするＮＡＴ越えエンドポイントの接続試行を行う図である。
【図４】本発明を適用できる実施形態の接続試行の流れを順に例示した図で、（ａ）は相手のローカルアドレスに対して接続試行を行う図、（ｂ）は相手が開いた中継サーバに対して接続試行を行う図である。
【図５】従来のＴＣＰのＮＡＴ越えの仕組みを説明する図で、（ａ）は、従来のＴＣＰのＮＡＴ越えの手順Ｉ〜IIIを例示した図、（ｂ）は、従来のＴＣＰのＮＡＴ越えの手順IＶ〜ＶIを例示した図、（ｃ）は、従来のＴＣＰのＮＡＴ越えの手順ＶII〜IＸを例示した図である。
【図６】従来のの図５の手順II、Ｖにおけるポートの予測の説明図で、（ａ）はFullconeルータのポートの予測の説明図、（ｂ）は、非Fullconeルータのポートの予測の説明図である。
【図７】従来の予測したポートを間違えて利用してしまう例１の説明図で、（ａ）は１回目のＳＴＵＮのチェックの説明図、（ｂ）は２回目のＳＴＵＮのチェックの説明図である。
【図８】従来の予測したポートを間違えて利用してしまう例２の説明図で、（ａ）はＳＴＵＮのチェックの説明図、（ｂ）は中継サーバへの接続の説明図である。
【図９】従来の予測したポートを間違えて利用してしまう例３の説明図である。
【符号の説明】
【００４３】
１０１  ノードＡ
１０２、１０６  ルータ
１０３  中継サーバ
１０４  ＳＴＵＮサーバ
１０５  呼制御サーバ
１０７  ノードＢ
【図１】
0004602247.tif 000002
【図２】
0004602247.tif 000003
【図３】
0004602247.tif 000004
【図４】
0004602247.tif 000005
【図５】
0004602247.tif 000006
【図６】
0004602247.tif 000007
【図７】
0004602247.tif 000008
【図８】
0004602247.tif 000009
【図９】
0004602247.tif 000010