(57)【要約】トンネリングするシステム、方法、およびコンピュータ・プログラム製品が開示される。本システムは、広域ネットワーク（１３０）に結合されたサービス公開／トンネリング用サーバ（２１０および２１５）と、１つまたは複数のコンピュータ・システム（１２０）に結合された、１つまたは複数のサービス・プロキシ機能を実行するためのサービス・プロキシ（２０５）とを含み、１つまたは複数のクライアント・コンピュータ・システム（１２０）のためのＴＣＰサービスがサービス・プロキシ（２０５）を通じてサーバ（２１０）から利用可能である。本方法は、１つまたは複数のサービス・プロキシ機能を実行するために、サービスの公開／トンネリング用サーバ（２１０）が広域ネットワーク（１３０）に結合され、かつサービス・プロキシ（２０５）が１つまたは複数のコンピュータ・システム（１２０）に結合されている状態で、サービス・プロキシ（２０５）をサーバ（２１０）に接続する工程、特定のサービスに関する公開情報をプロキシ（２０５）からサーバ（２１０）へと送る工程、ｃ）特定のサービスに関するサービス・キーをサーバ（２１０）から受け取る工程、およびｄ）サービス・キーを使用して、サービス・プロキシ（２０５）を通じてサーバ（２１０）から特定のサービスを１つまたは複数のクライアント・コンピュータ・システム（２１０）に供給する工程を含む。コンピュータ・プログラム製品は、各々がグローバル・エリア・ネットワーク（１３０）に結合された２つ以上のコンピュータ・システム（２１０および１２０）を使用して実行されるとＴＣＰサービスのトンネリングを行うプログラム命令を備えたコンピュータ読み取り可能な媒体を含み、実行されるプログラム命令は、１つまたは複数のサービス・プロキシ機能を実行するために、サービス公開／トンネリング用サーバ（２１０）が広域ネットワーク（１３０）に結合され、かつサービス・プロキシ（２０５）が１つまたは複数のコンピュータ・システム（１２０）に結合されている状態で、サービス・プロキシ（２０５）をサーバ（２１０）に接続する工程、特定のサービスに関する公開情報をプロキシ（２０５）からサーバ（２１０）へと送る工程、特定のサービスに関するサービス・キーをサーバ（２１０）から受け取る工程、およびサービス・キーを使用して、サービス・プロキシ（２０５）を通じてサーバ（２１０）から特定のサービスを１つまたは複数のクライアント・コンピュータ・システム（１２０）に供給する工程を含む方法を実行する。
2006509424.tif 000002
【特許請求の範囲】
【請求項１】
トンネリング・システムであって、
広域ネットワークに結合されたサービス公開／トンネリング用サーバと、
１つまたは複数のコンピュータ・システムに結合された、１つまたは複数のサービス・プロキシ機能を実行するためのサービス・プロキシとからなり、
前記１つまたは複数のクライアント・コンピュータ・システムのためのＴＣＰサービスが前記サービス・プロキシを通じて前記サーバから利用可能である、トンネリング・システム。
【請求項２】
前記１つまたは複数のコンピュータ・システムが１つまたは複数のファイアウォールによって前記サーバから隔てられている、請求項１に記載のトンネリング・システム。
【請求項３】
前記１つまたは複数のコンピュータ・システムが異なる企業ネットワークに含まれる、請求項１に記載のトンネリング・システム。
【請求項４】
１つまたは複数のクライアントと、前記１つまたは複数のコンピュータ・システム上に配信される１つまたは複数のサーバ・アプリケーションとをさらに備える、請求項３に記載のトンネリング・システム。
【請求項５】
クライアント部分がサーバ・アプリケーションへの間接的接続を有する、請求項４に記載のトンネリング・システム。
【請求項６】
前記ＴＣＰサービスが前記サービス・プロキシによって前記サーバへと公開される、請求項１に記載のトンネリング・システム。
【請求項７】
前記サービス・プロキシが、前記サーバへの接続の作成後に公開情報を前記サーバへと送る、請求項６に記載のトンネリング・システム。
【請求項８】
前記サービス・プロキシが前記サーバによって返信されるサービス・キーを保存する、請求項７に記載のトンネリング・システム。
【請求項９】
前記サービス・キーに応答して前記サービス・プロキシがマッピング項目を作成する、請求項８に記載のトンネリング・システム。
【請求項１０】
前記サーバが前記サービスに関する擬似ＤＮＳ名を作成する、請求項６に記載のトンネリング・システム。
【請求項１１】
前記公開情報に応答して前記サーバがサービス・キーを作成する、請求項６に記載のトンネリング・システム。
【請求項１２】
前記サーバが前記サービスに関する擬似ＤＮＳ名を作成する、請求項９に記載のトンネリング・システム。
【請求項１３】
前記公開情報に応答して前記サーバがサービス・キーを作成する、請求項９に記載のトンネリング・システム。
【請求項１４】
前記公開情報に応答して前記サーバがサービス・キーを作成する、請求項１２に記載のトンネリング・システム。
【請求項１５】
前記コンピュータ・システムのうちの１つがクライアント・アプリケーションを含み、前記クライアント・アプリケーションが、選択的にＴＣＰサービス呼び出しに応答するためのＴＣＰソケット・フッキング・サービスを含む、請求項１に記載のトンネリング・システム。
【請求項１６】
前記フッキング・サービスがｃｏｎｎｅｃｔ（）呼び出しに応答することで、前記ｃｏｎｎｅｃｔ（）呼び出しの内容に基づいて前記呼び出しを選択的に宛先変更する、請求項１５に記載のトンネリング・システム。
【請求項１７】
前記コンピュータ・システムのうちの１つがクライアント・アプリケーションを含み、前記クライアント・アプリケーションが、選択的にＴＣＰサービス呼び出しに応答するためのＴＣＰソケット・フッキング・サービスを含む、請求項１０に記載のトンネリング・システム。
【請求項１８】
前記フッキング・サービスがｃｏｎｎｅｃｔ（）呼び出しに応答することで、前記ｃｏｎｎｅｃｔ（）呼び出しの内容に基づいて前記呼び出しを選択的に宛先変更する、請求項１７に記載のトンネリング・システム。
【請求項１９】
前記ｃｏｎｎｅｃｔ（）呼び出しの前記内容が前記擬似ＤＮＳ名を含む、請求項１８に記載のトンネリング・システム。
【請求項２０】
前記１つのクライアント・アプリケーションが宛先変更処理を含む、請求項１９に記載のトンネリング・システム。
【請求項２１】
前記擬似ＤＮＳ名がクライアント側で解明される、請求項１０に記載のトンネリング・システム。
【請求項２２】
ＴＣＰサービスをトンネル化するための方法であって、
ａ）１つまたは複数のサービス・プロキシ機能を実行するために、サービス公開／トンネリング用サーバが広域ネットワークに結合され、サービス・プロキシが１つまたは複数のコンピュータ・システムに結合されている状態で、前記サービス・プロキシを前記サーバに接続する工程と、
ｂ）特定のサービスに関する公開情報を前記プロキシから前記サーバへと送る工程と、
ｃ）前記特定のサービスに関するサービス・キーを前記サーバから受け取る工程と、
ｄ）前記サービス・キーを使用して、前記特定のサービスを、前記サービス・プロキシを通じて前記サーバから前記１つまたは複数のクライアント・コンピュータ・システムへと供給する工程と、からなる方法。
【請求項２３】
ｅ）前記サービス・キーおよび前記公開情報に応答して前記サービス・プロキシ上にマッピング項目を作成する工程をさらに含む、請求項２２に記載の方法。
【請求項２４】
前記マッピング項目が擬似ＤＮＳ名を含む、請求項２３に記載の方法。
【請求項２５】
前記擬似ＤＮＳ名が、前記公開情報に応答して前記サーバによって作り出されたものである、請求項２４に記載の方法。
【請求項２６】
前記擬似ＤＮＳ名がクライアント側で解明される、請求項２４に記載の方法。
【請求項２７】
前記サービス・プロキシの外側の外部ＤＮＳサービスにアクセスすることなく前記擬似ＤＮＳ名が解明される、請求項２６に記載の方法。
【請求項２８】
ｅ）宛先変更処理を使用する接続鎖を介してＴＣＰ接続呼び出しをクライアント・アプリケーションからサーバ同位へと宛先変更する工程をさらに含む、請求項２２に記載の方法。
【請求項２９】
前記宛先変更する工程ｅ）が、前記擬似ＤＮＳ名および前記サービス・キーに応答したものである、請求項２８に記載の方法。
【請求項３０】
前記接続鎖が、現実のＴＣＰ接続として機能する仮想ＴＣＰ接続である、請求項２８に記載の方法。
【請求項３１】
前記接続鎖が前記クライアント・アプリケーションを、前記宛先変更処理、前記公開／トンネリング用サーバ、前記サービス・プロキシ、前記サーバ・ピアへと順番に結合する、請求項３０に記載の方法。
【請求項３２】
前記仮想ＴＣＰ接続が前記クライアント・アプリケーションと前記サーバ・ピアとの間の２方向接続であり、データ移送が両方の方向で起こり得る、請求項３１に記載の方法。
【請求項３３】
ＴＣＰサービスをトンネル化するための方法であって、
ａ）１つまたは複数のサービス・プロキシ機能を実行するために、サービス公開／トンネリング用サーバが広域ネットワークに結合され、サービス・プロキシが１つまたは複数のコンピュータ・システムに結合されている状態で、前記サービス・プロキシを前記サーバに接続する工程と、
ｂ）前記サーバで、特定のサービスに関する公開情報を前記プロキシから受け取る工程と、
ｃ）前記特定のサービスに関するサービス・キーを前記サーバから送信する工程と、からなり、前記サービス・キーを使用して、前記サービス・プロキシを通じて前記サーバから前記１つまたは複数のクライアント・コンピュータ・システムへと前記特定のサービスを供給する、方法。
【請求項３４】
トンネリング用の装置であって、
１つまたは複数のサービス・プロキシ機能を実行するために、サービス公開／トンネリング用サーバが広域ネットワークに結合され、サービス・プロキシが１つまたは複数のコンピュータ・システムに結合されている状態で、前記サービス・プロキシを前記サーバに接続する手段と、
特定のサービスに関する公開情報を前記プロキシから前記サーバへと送る手段と、
前記特定のサービスに関するサービス・キーを前記サーバから受け取る手段と、
前記サービス・キーを使用して、前記特定のサービスを、前記サービス・プロキシを通じて前記サーバから前記１つまたは複数のクライアント・コンピュータ・システムへと供給する手段と、からなる装置。
【請求項３５】
トンネリング用の装置であって、
１つまたは複数のサービス・プロキシ機能を実行するために、サービス公開／トンネリング用サーバが広域ネットワークに結合され、サービス・プロキシが１つまたは複数のコンピュータ・システムに結合されている状態で、前記サービス・プロキシを前記サーバに接続する手段と、
前記サーバで、特定のサービスに関する公開情報を前記プロキシから受け取る手段と、
前記特定のサービスに関するサービス・キーを前記サーバから送信する手段と、からなり、前記サービス・キーを使用して、前記サービス・プロキシを通じて前記サーバから前記１つまたは複数のクライアント・コンピュータ・システムへと前記特定のサービスを供
給する、装置。
【請求項３６】
各々がグローバル・エリア・ネットワークに結合された２つ以上のコンピュータ・システムを使用して実行されるときにＴＣＰサービスをトンネル化するプログラム命令を備えたコンピュータ読み取り可能な媒体を含むコンピュータ・プログラム製品であって、実行されるプログラム命令が、
ａ）１つまたは複数のサービス・プロキシ機能を実行するために、サービス公開／トンネリング用サーバが広域ネットワークに結合され、サービス・プロキシが１つまたは複数のコンピュータ・システムに結合されている状態で、前記サービス・プロキシを前記サーバに接続する工程と、
ｂ）特定のサービスに関する公開情報を前記プロキシから前記サーバへと送る工程と、
ｃ）前記特定のサービスに関するサービス・キーを前記サーバから受け取る工程と、
ｄ）前記サービス・キーを使用して、前記特定のサービスを、前記サービス・プロキシを通じて前記サーバから前記１つまたは複数のクライアント・コンピュータ・システムへと供給する工程と、からなる方法を実行する、コンピュータ・プログラム製品。
【請求項３７】
ｅ）前記サービス・キーおよび前記公開情報に応答して前記サービス・プロキシ上にマッピング項目を作成する工程をさらに含む、請求項３６に記載のコンピュータ・プログラム製品。
【請求項３８】
前記マッピング項目が擬似ＤＮＳ名を含む、請求項３７に記載のコンピュータ・プログラム製品。
【請求項３９】
前記擬似ＤＮＳ名が、前記公開情報に応答して前記サーバによって作り出されたものである、請求項３８に記載のコンピュータ・プログラム製品。
【請求項４０】
前記ＤＮＳ名がクライアント側で解明される、請求項３８に記載のコンピュータ・プログラム製品。
【請求項４１】
外部ＤＮＳサービスにアクセスすることなく前記ＤＮＳ名が解明される、請求項４０に記載のコンピュータ・プログラム製品。
【請求項４２】
各々がグローバル・エリア・ネットワークに結合された２つ以上のコンピュータ・システムを使用して実行されるときにＴＣＰサービスをトンネル化するプログラム命令を備えたコンピュータ読み取り可能な媒体を含むコンピュータ・プログラム製品であって、実行されるプログラム命令が、
ａ）１つまたは複数のサービス・プロキシ機能を実行するために、サービス公開／トンネリング用サーバが広域ネットワークに結合され、サービス・プロキシが１つまたは複数のコンピュータ・システムに結合されている状態で、前記サービス・プロキシを前記サーバに接続する工程と、
ｂ）前記サーバで、特定のサービスに関する公開情報を前記プロキシから受け取る工程と、
ｃ）前記特定のサービスに関するサービス・キーを前記サーバから送信する工程と、からなり、前記サービス・キーを使用して、前記サービス・プロキシを通じて前記サーバから前記１つまたは複数のクライアント・コンピュータ・システムへと前記特定のサービスを供給する方法を実行する、コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ・ネットワーク上の通信に関し、さらに特定するとインターネットのようなグローバル・エリアのコンピュータ・ネットワークを介して企業ネットワークの境界を横切ってＴＣＰベースのクライアント／サーバ・アプリケーションをトンネル化するためのシステムと方法に関する。
【０００２】
本出願は、２００２年１２月３日に出願され、すべての目的でその開示を本明細書に参照で組み入れる「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｔｕｎｎｅｌｉｎｇ  ＴＣＰ  Ｂａｓｅｄ  Ｃｌｉｅｎｔ  Ｓｅｒｖｅｒ  Ａｐｐｌｉｃａｔｉｏｎｓ」という発明の名称の同時係属の米国特許仮出願番号６０／４３０，７４４号の出願日の恩恵を権利主張するものである。
【背景技術】
【０００３】
インターネット経済の中で取り引き間の相互依存性が増すにつれて、企業は首尾よくかつ迅速に取り引き操作を実施するために、取り引き先、供給元、および顧客との通信に大幅に依存する。
【０００４】
しかしながら、現在の大部分の企業ネットワークはファイアウォールを含む１つまたは複数のセキュリティ機能によって保護されている。ファイアウォールは、これらの企業が内在するデータの管理を強化する補助をし、それが彼らの取り引きのプライバシを高めることが可能である。公衆通信回線からプライベート・ネットワークを区分するためのファイアウォールの広範な使用はＩＰｖ４アドレスの不足の可能性を問題解決することに寄与する。副作用として、ファイアウォールはインターネット全体を多くの完全に双方向接続されていないネットワークの島に分割する。これらの島にある企業間の接続性が問題になる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
図１は複数の「ネットワークの島」１０５ｉに分割されたネットワーク・システム１００の略ブロック図である。各々の島１０５ｉはファイアウォール１１０ｉおよび複数のコンピュータ・システム（例えばサーバ１１５ｉ、デスクトップ１２０ｉ、およびラップトップ１２５ｉ）を含む。各々のファイアウォール１１０ｉはしばしば他のファイアウォール１１０ｉと異なって構成され、それら各々が完全な双方向データ・フローを制限する。図１に示されるように、ファイアウォール１１０１の後ろにある各コンピュータ・システムと、ファイアウォール１１０２の後ろにある他のコンピュータ・システムは、いずれも公衆インターネット１３０への接続を有しているが、ファイアウォール１１０１の後ろにある各コンピュータ・システムはファイアウォール１１０２の後ろにある他のコンピュータ・システムから自由にアクセス可能ではない。
【０００６】
ファイアウォール１１０のフィルタ／ブロック機能に加えて、異なるファイアウォール１１０ｉの後方のコンピュータ・システム間の接続性の問題に関する主な理由は、それらが使用する異なった私用アドレス空間である。ファイアウォール１１０１とファイアウォール１１０２は個々の島１０５１と１０５２それぞれについて異なるアドレス空間を規定することに役立つ。現実では、これは公衆インターネットの中で異なるプライベート領域を隔離する。ＮＡＴ（ネットワーク・アドレス変換）を適用することによって、各々の島１０５ｉの各コンピュータ・システムはインターネット１３０にアクセスすることが可能
であるが、しかしファイアウォール１１０ｉと連携して特別な管理が使用されない限り、各々の島１０５ｉの中のコンピュータ・システムへのあらゆる直接的ＩＰ接続性を失うであろう。
【０００７】
多くのＴＣＰベースのクライアント−サーバ・アプリケーションが殆どすべての企業に配備されてきた。ウェブをベースとする企業のアプリケーションが急速に現れ始めているが、これらのＴＣＰベースのクライアント−サーバ・アプリケーションは、それらが提供する豊富なクライアント機能に起因して企業の毎日の業務で入れ換えられることはない。必要とされることは、ＴＣＰベースのサーバおよびクライアントのアプリケーションが企業ネットワークの境界を横切って動作可能であり、かつ企業ネットワーク内で動作可能であることを許容するためにＴＣＰベースのクライアント−サーバ・アプリケーションのアクセスの問題を解決する方法である。
【課題を解決するための手段】
【０００８】
トンネリングするシステム、方法、およびコンピュータ・プログラム製品が開示される。本システムは、広域ネットワークに結合されたサービスの公開／トンネリング用サーバと、１つまたは複数のコンピュータ・システムに結合された、１つまたは複数のサービス・プロキシ機能を実行するためのサービス・プロキシとを含み、１つまたは複数のクライアント・コンピュータ・システムのためのＴＣＰサービスがサービス・プロキシを通じてサーバから利用可能である。本方法は、１つまたは複数のサービス・プロキシ機能を実行するために、サービスの公開／トンネリング用サーバが広域ネットワークに結合され、かつサービス・プロキシが１つまたは複数のコンピュータ・システムに結合されている状態で、サービス・プロキシをサーバに接続する工程、特定のサービスに関する公開情報をプロキシからサーバへと送る工程、ｃ）特定のサービスに関するサービス・キーをサーバから受け取る工程、およびｄ）サービス・キーを使用して、サービス・プロキシを通じてサーバから特定のサービスを１つまたは複数のクライアント・コンピュータ・システムに供給する工程を含む。コンピュータ・プログラム製品は、各々がグローバル・エリア・ネットワークに結合された２つ以上のコンピュータ・システムを使用して実行されるとＴＣＰサービスのトンネリングを行うプログラム命令を備えたコンピュータ読み取り可能な媒体を含み、実行されるプログラム命令は、１つまたは複数のサービス・プロキシ機能を実行するために、サービスの公開／トンネリング用サーバが広域ネットワークに結合され、かつサービス・プロキシが１つまたは複数のコンピュータ・システムに結合されている状態で、サービス・プロキシをサーバに接続する工程、特定のサービスに関する公開情報をプロキシからサーバへと送る工程、特定のサービスに関するサービス・キーをサーバから受け取る工程、およびサービス・キーを使用して、サービス・プロキシを通じてサーバから特定のサービスを１つまたは複数のクライアント・コンピュータ・システムに供給する工程を含む方法を実行する。
【０００９】
本発明は、ＴＣＰベースのサーバおよびクライアントのアプリケーションが企業ネットワークの境界を横切って動作可能であり、かつ企業ネットワーク内で動作可能であることを許容するためにＴＣＰベースのクライアント−サーバ・アプリケーションのアクセスの問題を解決する方法を提供する。
【発明を実施するための最良の形態】
【００１０】
本発明はＴＣＰベースのクライアント−サーバ・アプリケーションのアクセスの問題のうちのいくつかを解決し、特に、ＴＣＰベースのクライアント／サーバ・アプリケーションを公開するため、およびＴＣＰベースのクライアントおよびサーバ・アプリケーションが企業ネットワーク内で動作するのと同じ方式で企業ネットワークの境界を横切って動作することを可能にするグローバル・エリアのコンピュータ・ネットワークを介して、対応のクライアントをトンネル化するための方法を提供する。以下の説明は、当業者が本発明
を製造および使用することを可能にするために与えられ、特許出願およびその要件の背景で提供される。本明細書に述べられる好ましい実施形態、および包括的な原理と特徴に対する様々な改変が当業者にとって容易に明らかであろう。したがって、本発明が示された実施形態に限定されることは意図しておらず、本明細書に述べられる原理と特徴を備えた最も広範囲の内容を与えられるべきである。本発明の好ましい実施形態およびそれらの利点は図面のうちの図２〜図７を参照することによって最もよく理解される。
【００１１】
図２はＴＣＰトンネリング・アーキテクチャ２００に関する好ましい実施形態の略ブロック図である。アーキテクチャ２００はサービス公開／トンネリング用サーバ２０５を有し、それが適切なサーバ環境を提供する。更に、アーキテクチャ２００は下記で述べられるようなサービス・プロキシ機能を実行するサービス・プロキシのための環境を提供する専用のコンピュータ・システム２１０（または、例えばコンピュータ・システム１１５１上のクライアント・サービスであってもよい）を含む。コンピュータ・システム１２０ｉはＴＣＰベースのクライアント／サーバ・アプリケーションのうちのクライアント部分のための環境であり、本発明で特定されるトンネリング構成要素であるコンピュータ・システム１１５１，１と１１５１，２のセットを含む。コンピュータ・システム１１５１，１と１１５１，２の両方は、ＴＣＰベースのクライアント／サーバ・アプリケーションのうちのサーバ部分のための環境を提供する。
【００１２】
図２で、サービス・プロキシ２１０１は他の好ましい実施形態のように専用のコンピュータ・システムを使用して配備される。サービス・プロキシ２１０１はＴＣＰベースのクライアント−サーバ・アプリケーション用途と同じコンピュータ・システムを使用して動作することが可能である。本発明に関連するコンピュータ・システムは、本発明で特定される機能を実行するオペレーション命令の能力があるいかなるタイプの電子装置であってもよい。図２に示された実施形態では、コンピュータ・システムは（複数の）プロセッサ、メモリ、記憶ディスク、オペレーティング・システム・ソフトウェア、アプリケーション・ソフトウェア、および通信ソフトウェアを含む。（複数の）プロセッサはインテル社（Ｉｎｔｅｌ）のペンティアム（Ｐｅｎｔｉｕｍ）（登録商標）系プロセッサの一員といったどのような適切なプロセッサであってもよい。メモリはＤＲＡＭ、ＳＲＡＭといったいかなるタイプのメモリであってもよい。記憶ディスクはハード・ディスク、フロッピー（登録商標）・ディスクのようなデジタル・データを記憶するために設計されるいかなるタイプのデバイスであってもよい。オペレーティング・システム・ソフトウェアは内蔵ハードウェア上で動作することが可能な、例えばマイクロソフト社（Ｍｉｃｒｏｓｏｆｔ）のＷｉｎｄｏｗｓ（登録商標）（例えばＷｉｎｄｏｗｓＮＴ、Ｗｉｎｄｏｗｓ２０００、ＷｉｎｄｏｗｓＸＰ）、ＵＮＩＸ（登録商標）のバージョン（例えばＳｕｎ  ＳｏｌａｒｉｓまたはＲｅｄｈａｔ  ＬＩＮＵＸ）といったいかなるタイプの適切なオペレーティング・システム・ソフトウェアであってもよい。アプリケーション・ソフトウェアはＭｉｃｒｏｓｏｆｔ  ＳＱＬ  Ｓｅｒｖｅｒ、Ａｐａｃｈｅ  Ｗｅｂ  Ｓｅｒｖｅｒ、コンピュータ支援製図アプリケーション、またはいずれかの他のタイプのアプリケーションといったどのようなソフトウェアであってもよい。通信ソフトウェアは、コンピュータ・システムとソフトウェアの間のデータ通信が本発明で特定される機能を実行する命令を含むことを可能にするいかなるタイプのソフトウェアも含む。
【００１３】
グローバル・エリアのコンピュータ・ネットワーク１００（例えばインターネット１００）は、互いに通信する数多くのコンピュータを有するいかなるタイプのコンピュータ・ネットワークも含む。本発明のいくつかの実施形態ではグローバル・エリアのコンピュータ・ネットワークはインターネットとして示される。
【００１４】
ファイアウォール１１０ｉは２つのネットワーク間のアクセス制御を実施するどのようなハードウェア装置もしくはソフトウェア・システムも含み、特に本発明のいくつかの実
施形態ではこれら２つのネットワークは企業のプライベート・ネットワークおよびグローバル・エリアのコンピュータ・ネットワーク１００を含む。
【００１５】
下記でさらに詳細に述べられるように、本発明は、グローバル・エリアのコンピュータ・ネットワークを介して企業ネットワークの境界を横切ってＴＣＰベースのクライアント／サーバ・アプリケーションをトンネル化するためのシステムと方法を提供する。
【００１６】
ＴＣＰベースのクライアント／サーバ・アプリケーションの１つまたは複数のサービスが他の企業ネットワークからアクセスされることが可能となる前には、サービス情報は、関与するすべての関係者によって知られている場所で利用可能である。サービス公開／トンネリング用サーバ２０５がこの機能を提供する。更に、サービス・プロキシ２１０と共に動作することで、サーバ２０５はＴＣＰベースのクライアント／サーバ・アプリケーションのクライアント部分とサーバ部分との間の間接的接続が為されることを可能にするメカニズムもやはり提供する。
【００１７】
図２に示されるように、サービス公開／トンネリング用サーバ２０５へと向かう接続は１つまたは複数のファイアウォール１１０を通過することを必要とする。そのような接続を作り上げるための方法は２００３年１０月１８日に出願された「ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＦＯＲ  ＢＵＩＬＤＩＮＧ  ＶＩＲＴＵＡＬ  ＮＥＴＷＯＲＫＳ」という発明の名称の本願出願人の他の米国特許出願番号６０／４１９，３９４号、および２００３年９月２日に出願された「ＡＰＰＡＲＡＴＵＳ，ＭＥＴＨＯＤ，ＡＮＤ  ＣＯＭＰＵＴＥＲ  ＰＲＯＧＲＡＭ  ＰＲＯＤＵＣＴ  ＦＯＲ  ＢＵＩＬＤＩＮＧ  ＶＩＲＴＵＡＬ  ＮＥＴＷＯＲＫＳ」という発明の名称の本願出願人の他の米国特許出願番号１０／６５３，６３８号に述べられており、両方がすべての目的で本明細書に参照で特に組み入れられる。
【００１８】
好ましい実施形態では、ＴＣＰベースのクライアント／サーバ・アプリケーションについての考察がある。その考察を単純化するために、クライアント／サーバ・アプリケーションという用語について言及する場合、アプリケーションの観点から、一方はクライアント部分であって他方はサーバ部分である、少なくとも２つの部分／処理を含むアプリケーションが存在することを暗に示している。好ましい実施形態のサーバ部分はクライアント部分にサービスを提供し、クライアント部分は機能を提供するためにそのサービスを使用する。「ピア・サーバ」という用語はアプリケーションのサーバ部分に関する。例えば、図２では、サーバ１１５ｉとクライアント１２０ｉは一体となってクライアント／サーバ・アプリケーションとして動作し、サーバ１１５ｉがサービスを提供し、クライアント１２０ｉがサービスを使用し、符号２１０ｉは、サーバ１１５ｉによってそのクライアントに提供されるサービスを代行するであろうサービス・プロキシであり、サーバ１１５ｉはアプリケーションの「サーバ・ピア」部分を動作させる。
【００１９】
図３はＴＣＰベースのクライアント／サーバ・アプリケーションのサービスを公開するためにサービス・プロキシ２１０が使用する公開処理３００のフローチャートである。工程３０５で、サービス・プロキシ２１０はサービス公開／トンネリング用サービス２０５への接続の作成を要求する。この接続は、組み入れた出願である「ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＦＯＲ  ＢＵＩＬＤＩＮＧ  ＶＩＲＴＵＡＬ  ＮＥＴＷＯＲＫＳ」で特定されるＳＳＬトンネリング・プロトコルを使用することが好ましいが、必要であれば他の接続／プロトコルもやはり使用されることが可能である。工程３１０は接続が成功したかどうかを判定する。接続が首尾よく作成されなかったと工程３１０の試験が判定すると、処理３００は工程３１５へと分岐し、エラーを報告する。
【００２０】
しかしながら、工程３０５で要求された接続が首尾よく作成されると、処理３００は工
程３１０から工程３２０へと進む。工程３２０はサーバ公開情報をこの接続上に送る。
その後、処理３００は工程３２５でサーバ公開情報が首尾よく送られたかどうかを判定する。接続が首尾よく作成されなかったと工程３２５の試験が判定すると、処理３００は工程３３０へと分岐し、エラーを報告する。
【００２１】
しかしながら、情報が首尾よく公開されると、処理３００は工程３２５から工程３３５へと進む。サービス公開／トンネリング用サーバ２０５が要求を受け取るとサービス・キーが返送される。サービス・プロキシ２１０はキーを保存し、将来の参照のためにこのキーおよび公開要求の中のオリジナルのサーバ情報に基づいてマッピング項目を作成する。このマッピング項目はサーバによって返送されたサービス・キー、および将来の参照のためにサーバが公開を望むオリジナルのサーバ情報に基づいて作成される。サービス情報はサービスのアドレス情報を含み、このアドレス情報はトンネリング処理時にＴＣＰ呼び出しの宛先変更の中でサービス・プロキシによって解明されることが可能である。
【００２２】
図４はサーバ２０５に関するサービス・キー処理４００のフローチャートである。サービス・プロキシ２１０から公開要求を受けると、サービス公開／トンネリング用サーバ２０５はサービス・キー処理４００を実行する。
【００２３】
処理４００は工程４０５で始まり、サービスに関して擬似ＤＮＳ名を作成し、要求に関してサービス・キーを作り出す。この擬似ＤＮＳ名は正規のＤＮＳ名の形式であるが、しかしどのようなＤＮＳサーバからもサービス提供されないであろう。擬似ＤＮＳ名を使用する目的の１つは、ＴＣＰベースのクライアント／サーバ・アプリケーションのクライアント部分を実行するコンピュータ・システムで、サービスを互いから、また、サービスを他の正規のＤＮＳ名から、見分けることである。好ましい実施形態では、擬似ＤＮＳ名はクライアント側でのみ、ＤＮＳサーバに接触するあらゆる必要性も伴わずにソケット・フッキング・モジュールにより解明される。
【００２４】
処理４００は試験４１０で工程４０５が成功したかどうかを試験する。工程４１０の試験が否定的であると、処理４００は工程４１５で接続上へのエラー表示へと戻る。工程４１０の試験が肯定的であると、処理４００は工程４２０で接続上のサービス・キー情報へと戻る。
【００２５】
サービス公開／トンネリング用サーバ２０５は受け取った公開要求に関してサービス・キーを作成し、公開情報および入来する公開要求の接続に基づいてマッピング項目をさらに作成するであろう。
【００２６】
図５はコンピュータ・システム１２０２上で動作する関連ソフトウェア構成要素を例示する機能ブロック図である。これらの構成要素はＴＣＰベースのクライアント／サーバ・アプリケーションのクライアント処理５０５、宛先変更処理５１０、およびソケットＡＰＩフッキング構成要素５１５を含む。ソフトウェア構成要素５１０と５１５は本発明に特定される処理論理を実行する。
【００２７】
本発明によるトンネリング・サービスがデスクトップ１２０２のようなコンピュータ・システム上で利用可能になる前に、宛先変更処理５１０がサービス公開／トンネリング用サーバ２０５との接続を作り出す。
【００２８】
ＴＣＰソケットＡＰＩフッキング構成要素５１５はクライアント／サーバ・アプリケーションのクライアント処理の中に導入されるソフトウェア・モジュールであり、この導入されるモジュールに関する主な目的は、クライアント処理から発せられるソケットＡＰＩ呼び出しをモニタすることである。すべてのソケットＡＰＩ呼び出しに関して、ｇｅｔｈ
ｏｓｔｂｙｎａｍｅ（）およびｃｏｎｎｅｃｔ（）機能呼び出しが図６に示されるように特別に処理され、すべての他のソケットＡＰＩ呼び出しが直接的にシステムＴＣＰソケット・サービスへと送られ、図５がやはりこの処理フローを示している。
【００２９】
図６はモニタ処理６００のフローチャートである。処理６００はソケット呼び出しがｃｏｎｎｅｃｔ（）呼び出しであるかどうかを試験する（試験工程６０５）。工程６０５の試験が否定的であると、処理６００は工程６１０を実行し、その呼び出しをオリジナルのＴＣＰソケット機能へと転送する。ソケット呼び出しがソケットｃｏｎｎｅｃｔ（）機能呼び出しであることをフッキング・モジュール５１５が見出すと、工程６１５で他の試験を実行する。
【００３０】
工程６１５での試験は、ｃｏｎｎｅｃｔ（）呼び出しが擬似サービスＤＮＳ名から解明された擬似アドレスに接続しているかどうかを判定する。サービス公開処理時にサービス公開／トンネリング用サーバ２０５によって作成されるどのような擬似ＤＮＳ名も、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）機能呼び出しをフックすることにより、擬似アドレスへと解明されるであろう。目標のアドレスが擬似アドレスと合致しないとき、処理６００は工程６２０を実行し、ｃｏｎｎｅｃｔ（）呼び出しをオリジナルのｃｏｎｎｅｃｔ（）へと転送する。
【００３１】
しかしながら、ｃｏｎｎｅｃｔ（）機能呼び出し内の目標アドレスが公開されるサービスの擬似アドレスと合致するとき、処理６００は工程６１５での試験から工程６２５へと進む。フッキング・モジュール５１５はＩＰＣ（Ｉｎｔｅｒ−Ｐｒｏｃｅｓｓ  Ｃａｌｌ）呼び出しを宛先変更処理５１０へと送り、ローカル・ソケット接続の作成を要求する。
【００３２】
宛先変更処理５１０は、ＩＰＣ呼び出しを受けると今度は他方で送り手から作り出されるローカル接続を待ち受けるために局所的に聞き取りポートを作り出すであろう。後になっていったん接続要求が受け取られると、宛先変更処理は宛先変更処理とサービス公開／トンネリング用サーバ２０５の間に作り出された接続上にトンネリング要求を送るであろう。トンネリング要求はＴＣＰベースのクライアント／サーバ・アプリケーションのクライアント処理の中でソケット・フッキング・モジュール５１５によって覚えられる擬似ＤＮＳ名に関連する情報を含む。
【００３３】
その後、処理６００は工程６２５の部分処理が成功したかどうかを試験する（工程６３０）。それが成功であったとき、処理６００は成功符号をｃｏｎｎｅｃｔ（）呼び出しへと戻し（工程６３５）、それが不成功であったとき、処理６００はエラー符号をｃｏｎｎｅｃｔ（）呼び出しへと戻す（工程６４０）。
【００３４】
図７はトンネル要求ハンドラ処理７００のフローチャートである。クライアントの宛先変更処理からトンネリング要求を受け取ると、サービス公開／トンネリング用サーバ２０５は図７に示されるような処理７００を実行する。
【００３５】
工程７０５で、サービス公開／トンネリング用サーバ２０５を使用して、処理７００はサービス・プロキシ２１０と合致した接続を見つけるためにトンネリング要求の中の情報に基づいて内部データベースを検索する。工程７１０で、処理７００は検索された接続が見つかったかどうかを試験する。
【００３６】
そのような接続が見つかったとき、処理７００はトンネリング要求をそれに付随するサービス・キーと共に接続上のサービス・プロキシ２１０へと転送する（工程７１５）。そのような接続が見つからないとき、処理７００はエラー表示を転送する（工程７２０）。
【００３７】
サービス・プロキシ２１０上でトンネリング要求を受け取ると、サービス・プロキシ２１０は受け取ったトンネリング要求に基づいてＴＣＰベースのクライアント／サーバ・アプリケーションのオリジナルのサーバのアドレスを検索し、そのようなサーバが存在しないときはソケット接続を作り出し、成功情報を返信するであろう。
【００３８】
成功情報は上述の接続鎖に沿って返信され、最終的には最初にトンネリング要求を出したクライアントの宛先変更部がフッキング・モジュールでローカル・ソケットの作成を終了させるだろう。フッキング・モジュールはＴＣＰベースのクライアント／サーバ・アプリケーションのクライアント処理に導入される。したがって、クライアント処理から由来するソケットｃｏｎｎｅｃｔ（）はＴＣＰベースのクライアント／サーバ・アプリケーションのクライアント処理部とサーバ処理部の間の接続鎖で終わる。これは実際には、企業ネットワークの境界を横切って動作することが可能な仮想のＴＣＰ接続を表わす。後になってこの仮想ＴＣＰ接続に送られるすべてのデータは、接続鎖の中で転送され、その結果、まるで単一の企業ネットワーク内で動作しているかのように円滑に企業ネットワークの境界を貫いてクライアント／サーバ・アプリケーションを動作させるであろう。
【００３９】
本発明の好ましい実施法の１つは、コンピュータの動作中にコンピュータ・システムのＲＡＭにあるプログラミングの段階または命令で作られるオペレーティング・システム内のルーチンである。コンピュータ・システムによって要求されるまで、そのようなプログラム命令は、別の読み取り可能な媒体、例えばディスク・ドライブ、あるいはＣＤ  ＲＯＭ用のコンピュータの入力部で使用される光ディスクもしくはフロッピー（登録商標）・ディスク・ドライブ用のコンピュータの入力部で使用されるフロッピー（登録商標）・ディスクといった取り外し可能なメモリの中に保存されることが可能である。さらに、そのようなプログラム命令は、本発明のシステムの中で使用される前は別のコンピュータのメモリ内に保存され、本発明のユーザによって要求されたときにＬＡＮまたはインターネットのようなＷＡＮ上で送信されることが可能である。本発明を制御する処理が多様な形式でコンピュータ読み取り可能な媒体の形で分配されることが可能であることを当業者は理解するはずである。
【００４０】
特定の実施形態を参照して本発明を説明してきた。しかしながら、これらの実施形態は本発明の単なる例示であって本発明を限定するものではなく、本発明の範囲は添付の特許請求項によってのみ決定される。
【図面の簡単な説明】
【００４１】
【図１】複数の「ネットワークの島」に分割されたネットワーク・システムを示す略ブロック図。
【図２】ＴＣＰトンネリング・アーキテクチャに関する好ましい実施形態を示す略ブロック図。
【図３】ＴＣＰベースのクライアント／サーバ・アプリケーションのサービスを公開するためにサービス・プロキシが使用する公開処理を示す流れ図。
【図４】サーバのためのサービス・キー処理を示す流れ図。
【図５】コンピュータ・システム上で動作する関連ソフトウェア構成要素を例示する機能ブロック図。
【図６】モニタ方法を示す流れ図。
【図７】トンネル要求ハンドラの処理を示す流れ図。
【図１】
2006509424.tif 000003
【図２】
2006509424.tif 000004
【図３】
2006509424.tif 000005
【図４】
2006509424.tif 000006
【図５】
2006509424.tif 000007
【図６】
2006509424.tif 000008
【図７】
2006509424.tif 000009
【国際調査報告】
2006509424.tif 000010
2006509424.tif 000011