(57)【要約】  クライアント１０からルータ４０，５０を介してサーバ２０にアクセスが行われたときに、サーバ２０において、アクセス時に使用されたＩＰアドレスを承継しつつ任意のシステムＩＤを付与することによって新たな接続アドレスを生成する。そして、そのシステムＩＤをクライアント１０に通知するとともに、クライアント１０と通信するための通信プロセスを生成する。その後のクライアント１０とサーバ２０との通信は、通信プロセスが新たな接続アドレスに基づいて行う。サーバ２０の通信プロセスとクライアント１０との通信のために新たに生成される接続アドレスは、最初のアクセス時に使用されたＩＰアドレスと同じものを含んでいるので、ルータ４０，５０のＮＡＴ機能を問題なく使用することができる。
2011141993.tif 000002
【特許請求の範囲】
【請求項１】
クライアントがインターネット上のルータを介してサーバに接続可能に構成され、上記サーバがアプリケーションソフトウェアにより上記クライアントからの要求に応じたサービスを提供するように成された双方向通信システムであって、
上記サーバは、上記クライアントからサービス要求のために上記ルータを介して行われるアクセスを受け付けるアクセス受付部と、
上記アクセス受付部により上記アクセスが受け付けられたときに、上記ルータによりグローバルアドレスからローカルアドレスに変換されて届けられたＩＰアドレスに対して任意の識別情報を付与することにより新たな接続アドレスを生成するアドレス生成部と、
上記アドレス生成部により生成された上記新たな接続アドレスを用い、上記ルータを介して上記クライアントに上記識別情報を通知する識別情報通知部と、
上記アドレス生成部により生成された上記新たな接続アドレスに基づいて上記クライアントと通信するための通信プロセスを生成する通信プロセス生成部とを備え、
上記クライアントは、上記サーバの上記アクセス受付部に対して上記アクセスを行う第１の通信処理部と、
上記識別情報通知部により通知された上記識別情報をＩＰアドレスに付与することによって生成した上記新たな接続アドレスを用い、上記通信プロセス生成部により生成された通信プロセスとの間で通信を行うことによって上記サービスの提供を受ける第２の通信処理部とを備えたことを特徴とする双方向通信システム。
【請求項２】
上記クライアントの上記第１の通信処理部は、ＩＰアドレスに対して所定の識別情報を付加して成る接続アドレスを用いて上記アクセス受付部に対して上記アクセスを行い、
上記サーバの上記アドレス生成部は、上記ルータによりグローバルアドレスからローカルアドレスに変換されて届けられた上記ＩＰアドレスに付与されている上記所定の識別情報を上記任意の識別情報に置換することにより上記新たな接続アドレスを生成することを特徴とする請求項１に記載の双方向通信システム。
【請求項３】
インターネット上のルータを介してクライアントと接続可能に構成され、アプリケーションソフトウェアにより上記クライアントからの要求に応じたサービスを提供するように成されたサーバ装置であって、
上記クライアントからサービス要求のために上記ルータを介して行われるアクセスを受け付けるアクセス受付部と、
上記アクセス受付部により上記アクセスが受け付けられたときに、上記ルータによりグローバルアドレスからローカルアドレスに変換されて届けられたＩＰアドレスに対して任意の識別情報を付与することにより新たな接続アドレスを生成するアドレス生成部と、
上記アドレス生成部により生成された上記新たな接続アドレスを用い、上記ルータを介して上記クライアントに上記識別情報を通知する識別情報通知部と、
上記アドレス生成部により生成された上記新たな接続アドレスに基づいて上記クライアントと通信するための通信プロセスを生成する通信プロセス生成部とを備え、
上記通信プロセス生成部により生成された上記通信プロセスが、上記新たな接続アドレスを用いて上記クライアントと通信するように成されたことを特徴とするサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、双方向通信システムおよびこれに用いるサーバ装置に関し、特に、クライアントがインターネット上のルータを介してサーバに接続可能に構成され、サーバがクライアントからの要求に応じたサービスを提供するように成された双方向通信システムに関するものである。
【背景技術】
【０００２】
インターネットにおいて一般的に用いられるＨＴＴＰ（HyperText Transfer Protocol）は、ＨＴＭＬ（HyperText Markup Language）やＸＭＬ(Extensible Markup Language) によって記述されたコンテンツをクライアント（Ｗｅｂブラウザ）とサーバとの間で送受信するのに用いられる通信プロトコルである。ＨＴＴＰは、ハイパーテキスト形式のデータを送受信することを主目的としており、画像や音声などのバイナリデータのやり取りが簡単にはできない。現在は、AJAXやSilverlightなどの特殊技術を利用することで、バイナリデータの送受信が部分的にできる程度である。【０００３】
また、ＨＴＴＰは、いわゆるリクエスト−レスポンス型の単一方向通信プロトコルである。すなわち、ＨＴＴＰでは、クライアントがサーバにリクエストを送信し、サーバがそのレスポンスとしてリクエストに応じたデータを返信する。レスポンスを返した時点で基本的にサーバは初期状態に戻る。つまり、サーバはクライアントの状態を保存しておらず、サーバからの能動的なアクションでクライアントへデータを送信することはできない。【０００４】
ところで、最近ではＳａａＳ（Software as a Service）と呼ばれる技術がインターネット上で広がりを見せている。ＳａａＳとは、必要な機能を必要な分だけサービスとして利用できるようにしたソフトウェア（主にアプリケーションソフトウェア）のことである。一般にはクライアントがインターネット経由でサーバにアクセスして必要な機能を利用できるようにした仕組みで、ユーザが求めるサービスをオンデマンドで利用することが可能である。【０００５】
このＳａａＳも、基本的にはＨＴＴＰに従って動作する。そのため、サービスの内容によってはサーバからのアクションでクライアントへデータを送信することが望まれるが、通常はこれを行うことができない。また、サーバのサービス（アプリケーションソフトウェア）からクライアントへのコールバックがセキュリティ上できない仕組みになっている。そのため、サーバの状態をルータやファイアウォールを透過してクライアントへ送信することもできない。【０００６】
これに対して、マイクロソフト社から提供されている.NET Remotingというフレームワークは、サーバからクライアントへコールバックする機能を有している。よって、.NET Remotingを用いれば、ＨＴＴＰによる双方向通信が可能であり、クライアントからのアクションに応じてデータを送受信することに加え、サーバからのアクションに応じてデータを送受信することもできる。また、.NET Remotingはバイナリ形式でのデータ通信機能も有しているため、ＨＴＴＰと.NET Remotingとの組み合わせで、バイナリ形式でのデータ通信を簡単に実現することもできる。【０００７】
しかしながら、.NET Remotingには、ＳａａＳのように複数のユーザが求めるサービスを個々に提供しようとする場合、ルータのＮＡＴ（Network Address Translation）超えができないという欠点がある。ＮＡＴとは、拠点内のＬＡＮでのみ通用するローカルアドレスとインターネット上のグローバルアドレスとを１対１の関係で相互変換する技術のことである。拠点内の端末からインターネット上のサーバにアクセスしてＳａａＳのサービスを利用する際には、ＮＡＴによるアドレス変換（ＮＡＴ越え）を行うことが必要になる。ところが、ＳａａＳ環境で.NET Remotingを使うと、このＮＡＴ越えができないという問題があった。【０００８】
すなわち、図４に示すように、クライアント１００からインターネット３００を介してサーバ２００にアクセスし、クライアント１００がサーバ２００に対して所望のサービス２０１の利用をリクエストする場合、クライアント１００とインターネット３００との間に設置されたルータ４００において、ＮＡＴ機能によりローカルアドレスからグローバルアドレスへの変換が行われる。また、インターネット３００とサーバ２００との間に設置されたルータ５００において、ＮＡＴ機能によりグローバルアドレスからローカルアドレスへの変換が行われる。しかし、サービス２０１の結果をサーバ２００からクライアント１００に返信する際に、ルータ５００においてローカルアドレスからグローバルアドレスへの逆変換ができなくなってしまうのである。それは以下の理由による。【０００９】
ＳａａＳの場合、サーバ２００は、複数のクライアント１００からのリクエストに応じて同じサービス２０１を提供する必要がある。そこで、複数のクライアント１００からの接続待ちを可能とするために、サービス２０１のアプリケーションソフトウェアは、一度接続されたクライアント１００に対応する通信プロセス２０２を生成する。このとき生成する通信プロセス２０２には、新たなＩＰアドレスが設定される。すなわち、サーバ２００にアクセスしてくるクライアント１００毎に通信プロセス２０２を生成し、当該通信プロセス２０２に各クライアント１００との通信を担当させることにより、複数のクライアント１００からのリクエストに応じてサービス２０１を提供できるようにしている。【００１０】
これにより、通信プロセス２０２が使うローカルアドレスは、クライアント１００から接続されたときのローカルアドレス（ルータ５００によりグローバルアドレスから変換されたもの）とは異なるＩＰアドレスとなる。そのため、通信プロセス２０２からクライアント１００に対してレスポンスを返そうとしても、ルータ５００のＮＡＴ機能では通信プロセス２０２のローカルアドレスをインターネット３００上のグローバルアドレスに変換することができない。その結果、クライアント１００への返信ができなくなってしまう。【００１１】
なお、ＨＴＴＰの代わりに、ＳＯＡＰやメタフレームなどの専用プロトコルを使えば、.NET Remotingを使う必要がないので、ＮＡＴ越えの問題は解消できる。しかしながら、専用プロトコルであるが故に汎用性がなく、バイナリデータの通信も行うことができない。また、ＨＴＴＰに比べて処理速度が遅いという問題もある。【００１２】
また、ＮＡＴ越えを解決するための別の手段として、ルータのＮＡＴ機能により変換されるＩＰアドレスを特定するとともに、ルータのＮＡＴ機能により変換されるポート番号を予測し、ＮＡＴ越えのための交換情報として中継サーバに登録するようにした技術も提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００５−１５１１４２号公報
【００１３】
しかしながら、特許文献１に記載の技術は、特定端末と通信するためにＩＰアドレスにポート番号を組み合わせて識別するものである。このポート番号は中継サーバに登録されており、端末間の通信時にはＮＡＴ機能によるアドレス変換と同時にポート番号も変換されて常に変動する。そのため、ＳａａＳのように多数のクライアントと通信するためには、多数のポート番号が必要となる。ところが、通常、ポート番号は他の用途にも使われており、ＮＡＴ越えのために使えるポート番号の数には限界がある。その結果、同時にサービスを提供可能なクライアント数が少なくなってしまうという問題があった。
【発明の開示】
【００１４】
本発明は、このような問題を解決するために成されたものであり、インターネット上で汎用的に使えるＨＴＴＰにより、ハイパーテキスト形式に加えてバイナリ形式のデータ通信を使って、ＮＡＴ越えの問題もなく多数のクライアントに対してＳａａＳ型のサービスを提供できるようにすることを目的とする。
【００１５】
上記した課題を解決するために、本発明では、クライアントからルータを介してサーバにアクセスが行われたときに、サーバにおいて、ルータによりグローバルアドレスからローカルアドレスに変換されて届けられたＩＰアドレスに対して任意の識別情報を付与することにより新たな接続アドレスを生成し、その識別情報をクライアントに通知する。また、クライアントと通信を行うための通信プロセスを生成して、以降のクライアントとの通信は当該通信プロセスが新たな接続アドレスに基づいて行うようにしている。
【００１６】
上記のように構成した本発明によれば、クライアントからサーバに対してアクセスが行われたときに、その後の通信のために通信プロセスが生成され、当該通信プロセスで使用すべき新たな接続アドレスが設定される。このとき設定される新たな接続アドレスは、クライアントからサーバへのアクセス時に使用されたＩＰアドレスがそのまま承継され、任意の識別情報が付与される形で設定される。
【００１７】
そのため、ＩＰアドレスそのものに変更はないので、グローバルアドレスとローカルアドレスとを１対１の関係で対応させたルータのＮＡＴ機能を問題なく使用することができる。また、使用可能な数に制限のあるポート番号ではなく、任意の識別情報を付与する形で新たな接続アドレスが設定されるので、ＮＡＴ越えをして同時にサービス提供可能なクライアントの数を多くすることもできる。
【００１８】
さらに、ＮＡＴ越えのために専用プロトコルを用いる必要もなく、ＨＴＴＰのプロトコルを使いつつ本発明によるＮＡＴ越えの仕組みを適用することができる。このＨＴＴＰに.NET Remotingを組み合わせることにより、バイナリ形式でのデータ通信を簡単に実現することもできる。
【００１９】
以上のように、本発明によれば、インターネット上で汎用的に使えるＨＴＴＰにより、ハイパーテキスト形式に加えてバイナリ形式のデータ通信を使って、ＮＡＴ越えの問題もなく多数のクライアントに対してＳａａＳ型のサービスを提供することができる。
【図面の簡単な説明】
【００２０】
【図１】本実施形態による双方向通信システムの構成例を示すブロック図である。
【図２】インターネットとサーバとの間における接続アドレスの変換例を示す図である。
【図３】本実施形態によるサーバの動作例を示すフローチャートである。
【図４】従来の通信システムの構成例を示すブロック図である。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の一実施形態を図面に基づいて説明する。図１は、本実施形態による双方向通信システムの構成例を示すブロック図である。本実施形態の双方向通信システムは、クライアント１０がインターネット３０上のルータ４０，５０を介してサーバ２０に接続可能に構成され、サーバ２０上のアプリケーションソフトウェアによりクライアント１０からの要求に応じたサービスを提供するように成されている。【００２２】
クライアント１０からインターネット３０を介してサーバ２０にアクセスし、クライアント１０がサーバ２０に対して所望のサービスの利用を要求する場合、クライアント１０とインターネット３０との間に設置されたルータ４０において、ＮＡＴ機能によりローカルアドレスからグローバルアドレスへの変換が行われる。また、インターネット３０とサーバ２０との間に設置されたルータ５０において、ＮＡＴ機能によりグローバルアドレスからローカルアドレスへの変換が行われる。【００２３】
サーバ２０は、以上のようなアクセスを通じてクライアント１０から要求されたサービスを提供するために、当該サービスに対応するアプリケーションソフトウェア（図示せず）を実行する。そして、その実行結果をクライアント１０に返信する。【００２４】
このときサーバ２０のアプリケーションソフトウェアは、ＳａａＳ型で複数のクライアント１０に対してサービスを提供できるようにするために、一度接続されたクライアント１０に対応する通信プロセスを生成し、それ以降のクライアント１０との通信を当該通信プロセスに委託する。このとき生成する通信プロセスには、新たな接続アドレスが設定される。本実施形態は、この接続アドレスの設定方法に特徴がある。これに関して以下に詳しく説明する。【００２５】
本実施形態のクライアント１０は、その機能構成として、第１の通信処理部１１および第２の通信処理部１２を備えている。ここでは説明の便宜上、第１の通信処理部１１および第２の通信処理部１２を分けて図示しているが、これらは共通の通信ＩＦ（ＤＬＬ：Dynamic Link Library）で構成されている。【００２６】
また、本実施形態のサーバ２０は、その機能構成として、アクセス受付部２１、アドレス生成部２２、識別情報通知部２３、および通信プロセス生成部２４を備えている。このうち、アクセス受付部２１、アドレス生成部２２および識別情報通知部２３の各機能構成は、クライアント１０に対してサービスを提供するためのアプリケーションソフトウェアにより実現される。【００２７】
クライアント１０の第１の通信処理部１１は、サーバ２０のアクセス受付部２１に対してアクセスを行う。このアクセスは、所望のサービスの提供をサーバ２０に要求するためにクライアント１０が最初に行うアクセスである。本実施形態では、このアクセスの際に使用する接続アドレスとして、ＩＰアドレスに対してシステムＩＤ（本発明の識別情報に相当する）およびポート番号を付加したものを用いる。システムＩＤは、本実施形態の双方向通信システムに固有の符号であり、あらかじめ決められている（例えば、「ＷＡＯ」）。ポート番号は、あらかじめ決められた固定の番号である（例えば、「９０００」）。【００２８】
サーバ２０のアクセス受付部２１は、第１の通信処理部１１からサービス要求のためにインターネット３０およびルータ４０，５０を介して行われるアクセスを受け付ける。【００２９】
アドレス生成部２２は、アクセス受付部２１によりアクセスが受け付けられたときに、ルータ５０によりグローバルアドレスからローカルアドレスに変換されて届けられたＩＰアドレス（接続アドレスの一部）に対して任意のシステムＩＤを付与することにより、新たな接続アドレスを生成する。【００３０】
具体的には、アドレス生成部２２は、ルータ５０によりグローバルアドレスからローカルアドレスに変換されて届けられたＩＰアドレスおよびポート番号をそのまま承継しつつ、当該ＩＰアドレスに付与されている所定のシステムＩＤ（「ＷＡＯ」）を任意のシステムＩＤに置換することによって、新たな接続アドレスを生成する。アドレス生成部２２は、アクセス受付部２１がクライアント１０からのアクセスを受ける毎に新たなシステムＩＤを発行して接続アドレスを生成する。【００３１】
識別情報通知部２３は、アドレス生成部２２により生成された新たな接続アドレスを用い、インターネット３０およびルータ４０，５０を介してクライアント１０の第２の通信処理部１２に対して、アドレス生成部２２により新たに付与されたシステムＩＤを通知する。【００３２】
この通信の際に、ルータ４０，５０においてＩＰアドレスのＮＡＴ変換が行われるが、アドレス生成部２２が生成した新たな接続アドレスはＩＰアドレスそのものに変更がないので、グローバルアドレスとローカルアドレスとを１対１の関係で対応させたルータのＮＡＴ機能を問題なく使用することができる。すなわち、サービスの要求を行ってきたクライアント１０のＩＰアドレスを問題なく特定して、システムＩＤの通知を行うことができる。【００３３】
通信プロセス生成部２４は、アドレス生成部２２により生成された新たな接続アドレスに基づいてクライアント１０と通信するための通信プロセスを生成する。通信プロセス生成部２４はクライアント１０からの要求に応じて複数の通信プロセスを生成することが可能であり、生成した通信プロセスは通信プロセス生成部２４が管理する。通信プロセス生成部２４が通信プロセスを生成した時点で、通信プロセスはクライアント１０からのアクセス待ちとなる。そして、それ以降はこの通信プロセスが、新たな接続アドレスを用いてクライアント１０との間で双方向の通信を行う。【００３４】
クライアント１０の第２の通信処理部１２は、通信プロセス生成部２４により生成された通信プロセスとの間で通信を行うことによって、サーバ２０から所望のサービスの提供を受ける。このとき第２の通信処理部１２は、識別情報通知部２３により通知されたシステムＩＤをＩＰアドレスに付与することによって生成した新たなアドレスを接続アドレスとして用いる。具体的には、第２の通信処理部１２は、第１の通信処理部１１が最初に使用した所定のシステムＩＤ（「ＷＡＯ」）をサーバ２０から通知された任意のシステムＩＤに置換して新たな接続アドレスを生成し、サーバ２０にアクセスする。【００３５】
図２は、インターネット３０とサーバ２０との間における接続アドレスの変換例を示す図である。図２では図示しないクライアント１０の第１の通信処理部１１がサーバ２０のアクセス受付部２１に対して最初にアクセスを行う際には、図２に示すように、ＩＰアドレスに対して固定のシステムＩＤ（「ＷＡＯ」）と固定のポート番号（「９０００」）とを付加して成る接続アドレスが用いられる。ここでは、インターネット３０上の接続アドレス（グローバルアドレス）が「http://211.11.110.15/WAO:9000」であるとする（この中で「211.11.110.150」の部分がＩＰアドレス）。【００３６】
このグローバルアドレスは、ルータ５０において、ＮＡＴ機能によりローカルアドレスへと変換される。このＮＡＴ変換は、ＩＰアドレスの部分をグローバルアドレスからローカルアドレスへ変換することによって行われる。ここでは、グローバルアドレスからＮＡＴ変換されたローカルアドレスが「http://192.168.1.1/WAO:9000」であるものとする。【００３７】
このローカルアドレスに基づきアクセス受付部２１がアクセスを受け付けると、アドレス生成部２２は、そのローカルアドレスに含まれるＩＰアドレスおよびポート番号をそのまま承継しつつ、当該ＩＰアドレスに付与されているシステムＩＤ（「ＷＡＯ」）を任意のシステムＩＤ（例えば、「ＷＡＯ１」）に置換することによって、新たな接続アドレス「http://192.168.1.1/WAO1:9000」を生成する。【００３８】
識別情報通知部２３は、アドレス生成部２２により生成された新たな接続アドレスを用い、ルータ５０を介してクライアント１０に対して、新たに付与されたシステムＩＤ（「ＷＡＯ１」）を通知する。この通信の際に、ルータ５０においてＩＰアドレスの部分がローカルアドレスからグローバルアドレスにＮＡＴ変換される。これにより、グローバルアドレスは「http://211.11.110.15/WAO1:9000」となる。【００３９】
この通知が行われた後は、クライアント１０の第２の通信処理部１２と、サーバ２０の通信プロセス生成部２４により生成された通信プロセスとの間で、新たな接続アドレスを用いて双方向の通信が行われる。このときルータ５０においては、グローバルアドレス「http://211.11.110.15/WAO1:9000」とローカルアドレス「http://192.168.1.1/WAO1:9000」とのＮＡＴ変換が双方向に行われる。【００４０】
なお、同じクライアント１０からサーバ２０に対し新たに別のサービスを要求するためのアクセスが行われたとする。このとき第１の通信処理部１１からアクセス受付部２１に対して行われるアクセスで使われる接続アドレスは先ほどと同じである。すなわち、インターネット３０上のグローバルアドレスは「http://211.11.110.15/WAO:9000」、これがルータ５０においてＮＡＴ変換されたローカルアドレスは「http://192.168.1.1/WAO:9000」である。【００４１】
アクセス受付部２１がアクセスを受け付けると、アドレス生成部２２は、そのアクセスに使用されたローカルアドレスに含まれるシステムＩＤ（「ＷＡＯ」）を、先ほどとは異なる任意のシステムＩＤ（例えば、「ＷＡＯ２」）に置換することによって、新たな接続アドレス「http://192.168.1.1/WAO2:9000」を生成する。識別情報通知部２３は、このようにして生成された新たな接続アドレスを用い、新たに付与されたシステムＩＤ（「ＷＡＯ２」）をクライアント１０に通知する。また、通信プロセス生成部２４は、先ほどとは異なる別の通信プロセスを生成する。【００４２】
新たなシステムＩＤがクライアント１０に通知された後は、クライアント１０の第２の通信処理部１２と、サーバ２０の通信プロセス生成部２４により生成された別の通信プロセスとの間で、新たな接続アドレスを用いて双方向の通信が行われる。このときルータ５０においては、グローバルアドレス「http://211.11.110.15/WAO2:9000」とローカルアドレス「http://192.168.1.1/WAO2:9000」とのＮＡＴ変換が双方向に行われる。【００４３】
また、図示しない別のクライアント１０からサーバ２０に対してアクセスが行われた場合も同様である。すなわち、第１の通信処理部１１からアクセス受付部２１に対して行われるアクセスにおいて使われるシステムＩＤとポート番号、ＩＰアドレスは同じものである。例えば、インターネット３０上のグローバルアドレスが「http://211.11.110.15/WAO:9000」、これがルータ５０においてＮＡＴ変換されたローカルアドレスが「http://192.168.1.1/WAO:9000」である。【００４４】
アクセス受付部２１がアクセスを受け付けると、アドレス生成部２２は、そのアクセスに使用されたローカルアドレスに含まれるシステムＩＤ（「ＷＡＯ」）を、先ほどとは更に異なるシステムＩＤ（例えば、「ＷＡＯ３」）に置換することによって、新たな接続アドレス「http://192.168.1.1/WAO3:9000」を生成する。識別情報通知部２３は、このようにして生成された新たな接続アドレスを用い、新たに付与されたシステムＩＤ（「ＷＡＯ３」）を別のクライアント１０に通知する。また、通信プロセス生成部２４は、先ほどとは異なる別の通信プロセスを生成する。【００４５】
新たなシステムＩＤが別のクライアント１０に通知された後は、当該別のクライアント１０における第２の通信処理部１２と、サーバ２０の通信プロセス生成部２４により生成された別の通信プロセスとの間で、新たな接続アドレスを用いて双方向の通信が行われる。このときルータ５０においては、グローバルアドレス「http://211.11.110.15/WAO3:9000」とローカルアドレス「http://192.168.1.1/WAO3:9000」とのＮＡＴ変換が双方向に行われる。【００４６】
図３は、上記のように構成した本実施形態によるサーバ２０の動作例を示すフローチャートである。図３のフローチャートに示す処理は、サーバ２０の電源がオンとなっているときは常時、繰り返し実行されている。図３において、アクセス受付部２１は、クライアント１０の第１の通信処理部１１からアクセスを受け付けたか否かを判定する（ステップＳ１）。アクセス受付部２１が第１の通信処理部１１からのアクセスを受けていない場合、処理はステップＳ５へ進む。【００４７】
一方、アクセス受付部２１が第１の通信処理部１１からのアクセスを受け付けた場合、アドレス生成部２２は、そのアクセスの際に使用された接続アドレスに含まれているＩＰアドレスおよびポート番号をそのまま承継しつつ、当該ＩＰアドレスに付与されている固定のシステムＩＤを任意のシステムＩＤに置換することによって、新たな接続アドレスを生成する（ステップＳ２）。【００４８】
識別情報通知部２３は、アドレス生成部２２により生成された新たな接続アドレスを用いて、アドレス生成部２２により新たに付与されたシステムＩＤをクライアント１０の第２の通信処理部１２に通知する（ステップＳ３）。また、通信プロセス生成部２４は、クライアント１０とその後の通信を行うための通信プロセスを生成する（ステップＳ４）。【００４９】
そして、通信プロセス生成部２４により生成された通信プロセスは、クライアント１０の第２の通信処理部１２からのアクセスを受け付けたか否かを判定する（ステップＳ５）。通信プロセスが第２の通信処理部１２からのアクセスを受けていない場合は、図３に示す処理を終了する。一方、第２の通信処理部１２からのアクセスを受け付けた場合、通信プロセスは、クライアント１０から要求されたサービス（アプリケーションソフトウェアの処理結果）をクライアント１０に返信する（ステップＳ６）。【００５０】
なお、サーバ２０の通信プロセスからクライアント１０の第２の通信処理部１２にデータを送信した後すぐに、第２の通信処理部１２から通信プロセスにアクセスを行う。そして、通信プロセスがそのアクセスを受け取って待機状態となり、アプリケーションソフトウェアによりサービスの処理が完了した時点でその処理結果をクライアント１０に送信するようにしてもよい。このようにすれば、サーバ２０からの能動的なアクションでクライアント１０へデータを送信することが可能である。【００５１】
以上詳しく説明したように、本実施形態では、クライアント１０からルータ４０，５０を介してサーバ２０にアクセスが行われたときに、サーバ２０において、ルータ５０によりグローバルアドレスからローカルアドレスに変換されて届けられたＩＰアドレスに対して任意のシステムＩＤを付与することにより新たな接続アドレスを生成し、そのシステムＩＤをクライアント１０に通知する。また、クライアント１０と通信を行うための通信プロセスを生成して、以降のクライアント１０との通信は当該通信プロセスが新たな接続アドレスに基づいて行うようにしている。【００５２】
このように構成した本実施形態によれば、クライアント１０からサーバ２０に対してアクセスが行われたときに、その後の通信のために通信プロセスが生成され、当該通信プロセスで使用すべき新たな接続アドレスが設定される。このとき設定される新たな接続アドレスは、クライアント１０からサーバ２０へのアクセス時に使用されたＩＰアドレスがそのまま承継され、任意のシステムＩＤが付与される形で設定される。【００５３】
そのため、ＩＰアドレスそのものに変更はないので、グローバルアドレスとローカルアドレスとを１対１の関係で対応させたルータ４０，５０のＮＡＴ機能を問題なく使用することができる。また、使用可能な数に制限のあるポート番号ではなく、任意のシステムＩＤを付与する形で新たな接続アドレスが設定されるので、ＮＡＴ越えをして同時にサービス提供可能なクライアント１０の数を多くすることもできる。つまり、１つのポート番号で複数のクライアント１０からの通信を受けることができる。【００５４】
さらに、ＮＡＴ越えのために専用プロトコルを用いる必要もなく、ＨＴＴＰのプロトコルを使いつつ本発明によるＮＡＴ越えの仕組みを適用することができる。このＨＴＴＰに.NET Remotingを組み合わせることにより、バイナリ形式でのデータ通信を簡単に実現することもできる。【００５５】
なお、上記実施形態では、ＩＰアドレスに対してシステムＩＤとポート番号とを付加して成る接続アドレスを用いる例について説明したが、本発明はこれに限定されない。例えば、ＩＰアドレスに対してシステムＩＤのみを付加して成る接続アドレスを用いるようにしてもよい。【００５６】
また、上記実施形態では、第１の通信処理部１１がアクセス受付部２１にアクセスするときに使用する接続アドレスにもシステムＩＤとポート番号を使用する例について説明したが、本発明はこれに限定されない。例えば、第１の通信処理部１１がアクセス受付部２１にアクセスするときに使用する接続アドレスにはシステムＩＤとポート番号とを使用せず、ＩＰアドレスのみとしてもよい。【００５７】
また、上記実施形態では、第１の通信処理部１１がアクセス受付部２１にアクセスするときに使用する接続アドレスにおいてＩＰアドレスに付与する識別情報として、双方向通信システムに固有のシステムＩＤを用いる例について説明したが、本発明はこれに限定されない。すなわち、固定の識別情報であれば、システムＩＤ以外の情報を用いてもよい。
【産業上の利用可能性】
【００５８】
本発明は、クライアントがインターネット上のルータを介してサーバに接続可能に構成され、サーバ上のアプリケーションソフトウェアによりクライアントからの要求に応じたサービスを提供するように成されたＳａａＳ型の双方向通信システムに利用可能である。
【図１】
2011141993.tif 000003
【図２】
2011141993.tif 000004
【図３】
2011141993.tif 000005
【図４】
2011141993.tif 000006
【国際調査報告】
2011141993.tif 000007
2011141993.tif 000008
2011141993.tif 000009
2011141993.tif 000010