(57)【要約】【課題】  ＮＡＴ機能を利用した接続環境においても、サーバからクライアントに対して任意のタイミングで接続することができる。【解決手段】  ルータ５３が、クライアント５１から受信したＵＤＰパケットのプライベートアドレス「Ａ」および内側ポート番号「１００」を、グローバルアドレス「Ｎ」および外側ポート番号「５００」に変換して、サーバ５２に送信する第１ステップと、ルータ５３が、プライベートアドレスとグローバルアドレスとを対応付けたアドレス変換テーブル、および内側ポート番号と外側ポート番号とを対応付けたポート番号テーブルを生成して格納する第２ステップと、サーバ５２が、グローバルアドレスおよび外側ポート番号を、クライアント５１ごとにユニークな端末ＩＤと関連付けたマップオブジェクトに格納する第３ステップとを備えた。【選択図】  図２
2006203575.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＴ機能を有するネットワーク機器に接続されたクライアントとサーバとの間で通信を行うための通信方法において、
前記ネットワーク機器が、前記クライアントから受信したＵＤＰパケットの前記クライアント側のプライベートアドレスおよび内側ポート番号を、ネットワーク側のグローバルアドレスおよび外側ポート番号に変換して、前記ＵＤＰパケットを前記サーバに送信する第１ステップと、
前記ネットワーク機器が、前記プライベートアドレスと前記グローバルアドレスとを対応付けたアドレス変換テーブルを作成して格納し、前記内側ポート番号と前記外側ポート番号とを対応付けたポート番号テーブルを生成して格納する第２ステップと、
前記サーバが、前記ネットワーク機器から受信した前記ＵＤＰパケットの前記グローバルアドレスおよび前記外側ポート番号を、前記クライアントごとにユニークな端末ＩＤと関連付けたマップオブジェクトに格納する第３ステップと
を備えたことを特徴とする通信方法。
【請求項２】
前記クライアントが、前記ネットワーク機器を介して前記サーバに、キープアライブパケットを一定時間間隔で送信する第４ステップをさらに備えたことを特徴とする請求項１に記載の通信方法。
【請求項３】
前記キープアライブパケットは、ＵＤＰエコーパケットであることを特徴とする請求項２に記載の通信方法。
【請求項４】
前記一定時間間隔は、前記ネットワーク機器が、無通信状態であると判断し、ＵＤＰのポートを閉じるまでの無通信状態の時間未満に設定されていることを特徴とする請求項２に記載の通信方法。
【請求項５】
前記キープアライブパケットのＴＴＬ値は、前記キープアライブパケットが前記サーバに届かない値に設定されていることを特徴とする請求項２、３または４に記載の通信方法。
【請求項６】
前記キープアライブパケットのＴＴＬ値は、ＩＣＭＰパケットを処理しないステルスモードで動作し、前記サーバに最も近いネットワーク機器までの値に設定されていることを特徴とする請求項２、３または４に記載の通信方法。
【請求項７】
前記サーバが、前記ネットワーク機器から受信した前記ＵＤＰパケットの前記グローバルアドレスを、前記クライアントに送信するＵＤＰパケット内に書き込む第５ステップをさらに備えたことを特徴とする請求項１に記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信方法に関し、より詳細には、クライアント−サーバ間のＩＰ通信においてＮＡＴ機能が実装されている場合に、通信経路を確保するための通信方法に関する。
【背景技術】
【０００２】
近年、インターネットに接続するコンピュータの増大により、ＩＰアドレスの不足という問題が顕著化している。そこで、ＩＰアドレスの不足を解消するための一つの方法として、ＮＡＴ（Network Address Translator）機能が利用されている。ＮＡＴ機能は、閉域網であるＬＡＮ内のプライベートアドレスを有するクライアントコンピュータと、インターネット内のグローバルアドレスを有するホストコンピュータとの間で通信を行うために、アドレス変換を行う。
【０００３】
図１に、ＮＡＴ機能を説明するためのネットワーク接続図を示す。クライアント１１には、プライベートアドレスＡとグローバルアドレスＭとが割り当てられている。ルータ１３には、ＮＡＴ機能が実装されており、プライベートアドレスをグローバルアドレスに変換するための変換テーブルが格納されている。ここでクライアント１１からインターネット内のホスト１２（グローバルアドレスＮ）へ、ルータ１３，１４を介してＩＰパケットを送信する。クライアント１１から送信されるＩＰパケットのヘッダには、宛先アドレス２１として「Ｎ」、送信元アドレス２２として「Ａ」が書き込まれ、ＴＣＰヘッダには、宛先ポート番号２３として「２００」、送信元ポート番号２４として「１００」が書き込まれている。ルータ１３は、変換テーブルを参照して、送信元アドレス２２のプライベートアドレスＡをグローバルアドレスＭに変換し、ルータ１４に向けてパケットを送信する。
【０００４】
次に、ホスト１２からクライアント１１へ、ルータ１４，１３を介してＩＰパケットを送信する。ホスト１２から送信されるＩＰパケットのヘッダには、宛先アドレス３１として「Ｍ」、送信元アドレス３２として「Ｎ」が書き込まれ、ＴＣＰヘッダには、宛先ポート番号３３として「１００」、送信元ポート番号３４として「２００」が書き込まれている。ルータ１３は、変換テーブルを参照して、宛先アドレス３１のグローバルアドレスＭをプライベートアドレスＡに変換し、ＬＡＮ内のクライアント１１に向けてパケットを送信する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
クライアントにＮＡＴ機能が実装されている場合、上述したようにクライアント１１からサーバ１２に対しては、任意のタイミングで接続することができる。しかしながら、逆にサーバ１２からクライアント１１に対しては、グローバルアドレスＭ、プライベートアドレスＡおよびポート番号の関係が特定されていないので、任意のタイミングで接続することができないという問題があった。
【０００６】
また、ルータ内に格納されている変換テーブルの内容は、通信が中断してから一定時間が経過すると、削除されてしまう。すなわち、宛先アドレス、送信元アドレス、宛先ポート番号、および送信元ポート番号の関係がクリアされてしまい、ルータ１３は、同一のアドレス、同一のポート番号を設定したパケットを受け付けない。
【０００７】
そこで、クライアント１１からサーバ１２に対してＴＣＰセッションを張っておき、通信が終了するまで、ＴＣＰセッションを維持する方法が知られている。しかしながら、サーバ１２においては、ＴＣＰセッションを維持するための負荷が増大し、１台のサーバで管理できるクライアント数は、数千台程度に限られてしまう。具体的には、サーバ１２は、クライアントの数だけのソケットを格納するために、メモリリソースを大量に消費し、このソケットを検索するためのＣＰＵのリソースを必要とするからである。
【０００８】
本発明は、このような問題に鑑みてなされたもので、その目的とするところは、ＮＡＴ機能を利用した接続環境においても、サーバからクライアントに対して任意のタイミングで接続することができる通信方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明は、このような目的を達成するために、請求項１に記載の発明は、ＮＡＴ機能を有するネットワーク機器に接続されたクライアントとサーバとの間で通信を行うための通信方法において、前記ネットワーク機器が、前記クライアントから受信したＵＤＰパケットの前記クライアント側のプライベートアドレスおよび内側ポート番号を、ネットワーク側のグローバルアドレスおよび外側ポート番号に変換して、前記ＵＤＰパケットを前記サーバに送信する第１ステップと、前記ネットワーク機器が、前記プライベートアドレスと前記グローバルアドレスとを対応付けたアドレス変換テーブルを作成して格納し、前記内側ポート番号と前記外側ポート番号とを対応付けたポート番号テーブルを生成して格納する第２ステップと、前記サーバが、前記ネットワーク機器から受信した前記ＵＤＰパケットの前記グローバルアドレスおよび前記外側ポート番号を、前記クライアントごとにユニークな端末ＩＤと関連付けたマップオブジェクトに格納する第３ステップとを備えたことを特徴とする。
【００１０】
請求項２に記載の発明は、請求項１に記載の前記クライアントが、前記ネットワーク機器を介して前記サーバに、キープアライブパケットを一定時間間隔で送信する第４ステップをさらに備えたことを特徴とする。
【００１１】
請求項３に記載の発明は、請求項２に記載の前記キープアライブパケットは、ＵＤＰエコーパケットであることを特徴とする。
【００１２】
請求項４に記載の発明は、請求項２に記載の前記一定時間間隔は、前記ネットワーク機器が、無通信状態であると判断し、ＵＤＰのポートを閉じるまでの無通信状態の時間未満に設定されていることを特徴とする。
【００１３】
請求項５に記載の発明は、請求項２、３または４に記載の前記キープアライブパケットのＴＴＬ値は、前記キープアライブパケットが前記サーバに届かない値に設定されていることを特徴とする。
【００１４】
請求項６に記載の発明は、請求項２、３または４に記載の前記キープアライブパケットのＴＴＬ値は、ＩＣＭＰパケットを処理しないステルスモードで動作し、前記サーバに最も近いネットワーク機器までの値に設定されていることを特徴とする。
【００１５】
請求項７に記載の発明は、請求項１に記載の前記サーバが、前記ネットワーク機器から受信した前記ＵＤＰパケットの前記グローバルアドレスを、前記クライアントに送信するＵＤＰパケット内に書き込む第５ステップをさらに備えたことを特徴とする。
【発明の効果】
【００１６】
以上説明したように、本発明によれば、ネットワーク機器が、プライベートアドレスおよび内側ポート番号を、グローバルアドレスおよび外側ポート番号に変換して、ＵＤＰパケットをサーバに送信し、サーバが、グローバルアドレスおよび外側ポート番号を、クライアントごとにユニークな端末ＩＤと関連付けるので、ＮＡＴ機能を利用した接続環境においても、サーバからクライアントに対して任意のタイミングで接続することが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しながら本発明の実施形態について詳細に説明する。本発明の実施形態では、クライアント−サーバ間の通信をＵＤＰで行うことにある。ＵＤＰを用いることによって、サーバに高い負荷をかけずにクライアントを管理することができる。
【００１８】
図２に、本発明の一実施形態にかかる通信方法を示す。クライアント５１には、プライベートアドレスＡとグローバルアドレスＭとが割り当てられている。ルータ５３には、ＮＡＴ機能が実装されており、プライベートアドレスをグローバルアドレスに変換するためのアドレス変換テーブルが格納されている。クライアント５１は、インターネット内のサーバ５２（グローバルアドレスＮ）へ、ルータ５３，５４を介してＩＰパケットを送信して、ＵＤＰの通信経路を確保する。クライアント５１から送信されるＩＰパケットのヘッダには、宛先アドレス６１として「Ｎ」、送信元アドレス６２として「Ａ」が書き込まれ、ＵＤＰヘッダには、宛先ポート番号６３として「２００」、送信元ポート番号６４として「１００」が書き込まれている。
【００１９】
ルータ５３は、変換テーブルを参照して、送信元アドレス６２のプライベートアドレスＡをグローバルアドレスＭに変換する。さらに、送信元ポート番号６４の「１００」（以下、内側ポート番号という）をルータポート番号「５００」（以下、外側ポート番号という）に変換してからルータ５４に向けてパケットを送信する。このとき、ルータ５３は、送信元ポート番号６４である内側ポート番号「１００」とルータポート番号である外側ポート番号「５００」とを対応付けたポート番号テーブルを生成して格納しておく。
【００２０】
サーバ５２は、クライアント５１からのＵＤＰパケットを受信すると、送信元ＩＰアドレス「Ｍ」および外側ポート番号「５００」を、クライアントごとにユニークな端末ＩＤと関連付けたマップオブジェクトを格納しておく。サーバ５２は、データを送信する場合には、各クライアントの端末ＩＤをキーとして、アドレス情報をマップ検索して、ＵＤＰパケットを生成して送信する。
【００２１】
サーバ５２からクライアント５１へ、ルータ５４，５３を介してＩＰパケットを送信する場合について説明する。サーバ５２から送信されるＩＰパケットヘッダには、端末ＩＤからマップ検索した宛先アドレス７１として「Ｍ」、ＵＤＰヘッダには、宛先ポート番号７３として外側ポート番号「５００」が書き込まれる。また、ＩＰパケットヘッダには、送信元アドレス７２として「Ｎ」が書き込まれ、ＵＤＰヘッダには、送信元ポート番号７４として「２００」が書き込まれる。ルータ５３は、アドレス変換テーブルとポート番号テーブルとを参照して、宛先アドレス７１のグローバルアドレスＭをプライベートアドレスＡに変換し、宛先ポート番号７３の外側ポート番号「５００」を内側ポート番号「１００」に変換してからＬＡＮ内のクライアント５１に向けてパケットを送信する。
【００２２】
以後、サーバ５２からクライアント５１へは、グローバルアドレスＭと外側ポート番号「５００」とを用いて、任意のタイミングでパケットを送信することが可能となる。また、上述したように、ＴＣＰで通信を行う場合には、サーバは、セッションごとにソケットを生成して管理しなければならない。一方、本実施形態によれば、サーバは、各クライアントの端末ＩＤをキーとして、送信元ＩＰアドレス（グローバルアドレス）および外側ポート番号を格納しておき、パケットを送信するたびに検索する。従って、パケットごとに宛先を指定できるとともに、同一の送信元ＩＰアドレスおよび外側ポート番号との組合せから、セッションの概念に関係なくクライアントにパケットを送信することができる。従って、セッション管理のためにメモリやＣＰＵのリソースを消費することがない。
【００２３】
なお、通信経路の途中に、ＵＤＰによる通信が行えないファイアウォールが接続されていると、クライアント−サーバ間で通信することができない。そこで、クライアントからサーバに向けて、ネットワーク環境調査用のＵＤＰパケットを送信し、サーバからエコーパケットを受信できた場合に、本実施形態にかかるＵＤＰ通信を行うようにしてもよい。
【００２４】
図２に示したように、クライアント５１とサーバ５２との間で生成されたＵＤＰの通信経路は、定期的にクライアント−サーバ間での通信が行われていないと、通信終了とみなされ、ルータによって通信経路が閉じられてしまう場合がある。ルータは、サーバからクライアントへの通信を監視して通信経路を維持したり、クライアントからサーバへの通信を監視して通信経路を維持したり、両方向の通信を監視して通信経路を維持する。そこで、定期的にクライアント−サーバ間で、ポート維持用のパケット（以下、キープアライブパケットと呼ぶ）を送受信する。キープアライブパケットは、図２に示したＩＰヘッダおよびＵＤＰヘッダを有している。ルータ５４，５３は、キープアライブパケットにより、クライアント５１−サーバ５２間で通信を行っていることを認識し、ポート番号テーブルを維持して、通信経路を維持する。
【００２５】
なお、キープアライブパケットの代わりに、ＵＤＰエコーパケットを用いてもよい。定期的にクライアント−サーバ間でやり取りすることで、通信経路を維持することができるとともに、通信経路の切断を検知することもできる。
【００２６】
クライアントの全てが、サーバに対してキープアライブパケットを送信すると、サーバに届くパケット数は膨大なものとなり、サーバ側の通信経路の帯域を消費し、ＣＰＵのリソースを消費する。そこで、クライアントにおいて、キープアライブパケットを、定期的に間隔をおいて送信する。送信間隔として設定する時間は、ルータが無通信状態であると判断し、ＵＤＰのポートを閉じるまでの無通信状態の時間未満に設定されていることが望ましい。無通信状態の時間は、ルータ毎に違うため、ポートを閉じるまでの無通信時間を自動的に検出する必要がある。
【００２７】
図３に、キープアライブパケットの送信間隔を決定する方法を示す。最初に、クライアントからサーバに対して、ＵＤＰの通信経路を確保する（図２参照）（Ｓ３０１）。次に、キープアライブパケットの送信間隔ｍ＝ｒとして（Ｓ３０２）、この通信経路上でキープアライブパケットの送受信を行う（Ｓ３０３）。最初に、ｒ０は数秒程度の短い間隔で実行する。キープアライブパケットの送受信の処理が終了すると（Ｓ３０４）、ｒの値を増やして（Ｓ３０５）、再度キープアライブパケットの送受信の処理を行う。
【００２８】
これを繰り返して、キープアライブパケットの処理に失敗するまで、ｒを増やす（ｒ１〜ｒｎ）。ｒｎのときキープアライブパケットの処理に失敗すると（Ｓ３０４）、キープアライブパケットの送信間隔ｍ＝ｒｎ−１とし、以後のキープアライブパケットの送受信の処理を行う（Ｓ３０６）。なお、この方法を適当な間隔で随時行い、次の送信間隔が決定されるまでの間、その都度決定された送信間隔により、キープアライブパケットの送受信の処理を行うようにしてもよい。
【００２９】
キープアライブパケットの送信間隔を調整したとしても、クライアントがサーバに対して送信するキープアライブパケットの全てがサーバに届くと、サーバ側の通信経路の帯域を消費し、ＣＰＵのリソースを消費する場合がある。そこで、クライアントからサーバへ送信するキープアライブパケットのＴＴＬ（Time To Live）値を、サーバに届かない値にセットする。
【００３０】
なお、ＴＴＬ値をサーバに届かない値に設定した場合、ＴＴＬ値が０になった時点で通過するルータが、送信元のルータに対して、ＴＴＬ値の不足を通知するＩＣＭＰエラーメッセージを返信する場合がある。また、送信元のルータが、ＩＣＭＰエラーメッセージを受け取ると、クライアント−サーバ間の通信経路を閉じてしまう場合がある。そこで、クライアント−サーバ間の通信経路に、ＩＣＭＰパケットを処理しないステルスモードのルータが存在するか否かを検出する。クライアントは、ＴＴＬ値を、サーバに最も近いステルスモードのルータまでに設定することにより、ＩＣＭＰエラーメッセージの発生をなくして、通信経路の遮断を防ぐこともできる。
【００３１】
ＵＤＰによる通信ではセッションの概念を持たない。従って、通信中にクライアント５１が接続されたルータ５３の外側のインターネットの通信経路が切断されても、クライアント５１は、切断を検知することができない。例えば、通信経路が再接続された後に、ルータ５３のＩＰアドレスが変更された場合、クライアント５１は、変更後のＩＰアドレスを認識することができない。
【００３２】
図４に、クライアントにネットワークの変更通知を行う方法を示す。クライアント−サーバ間でキープアライブパケット８１，８２を定期的に交換する際、サーバ５２は、キープアライブパケット８２内に、受信したキープアライブパケット８１のパケットの送信元アドレスＭをパケット内に書き込む。クライアント５１は、サーバ５２から送られてきたキープアライブパケット内のＩＰアドレス情報を参照し、送信元アドレスが変わっていれば（Ｍ→Ｐ）、ネットワークが変更されていることを認識することかできる。なお、通信経路の切断を検知するのと同様に、キープアライブパケットの代わりに、ＵＤＰエコーパケットを用いてもよい。
【００３３】
ＵＤＰによるクライアント−サーバ間のＩＰ通信では、パケットロスの発生によってデータが失われてしまう可能性がある。従って、ＴＣＰによる通信と同様に、確認信号（以下、ＡＣＫという）を返信することにより、確実にメッセージが届いていることを確認することができる。ＵＤＰパケットを送信したのにも関わらず、一定時間ＡＣＫが返ってこない場合には、再送処理を行うこともできる。再送処理は、大量に発生するとネットワークの帯域を大幅に消費してしまうので、同じＵＤＰパケットに対して再送が何度か行われる場合には、１度目より２度目、２度目より３度目の再送時間間隔を長くする。また、再送回数の上限を設定し、再送の回数が上限を超えた場合には、パケットの未逹として処理を終える。
【産業上の利用可能性】
【００３４】
本発明は、ＮＡＴ機能を利用した接続環境においても、クライアント−サーバ間のＩＰ通信を実現することができるクライアント、サーバ、ルータ、ゲートウェイなどのネットワーク機器に適用することができる。
【図面の簡単な説明】
【００３５】
【図１】ＮＡＴ機能を説明するためのネットワーク接続図である。
【図２】本発明の一実施形態にかかる通信方法を示すネットワーク接続図である。
【図３】キープアライブパケットの送信間隔を決定する方法を示すフローチャートである。
【図４】クライアントにネットワークの変更通知を行う方法を示すネットワーク接続図である。
【符号の説明】
【００３６】
１１，５１    クライアント
１２，５２    サーバ
１３，１４，５３，５４    ルータ
【図１】
2006203575.tif 000003
【図２】
2006203575.tif 000004
【図３】
2006203575.tif 000005
【図４】
2006203575.tif 000006