(57)【要約】ＴＣＰ／ＩＰネットワーク化のための仮想ネットワークを構築するシステム、方法およびコンピュータプログラム製品が開示される。システムは、１または複数の仮想ネットワーク・ホスト・サーバに結合されたグローバルエリア・ネットワークと、第１のファイアウォールを介して該１または複数のサーバに結合された第１のコンピューティングシステムとを備え、第１のコンピューティングシステムを備えた仮想ネットワークは、第２のファイアウォールを介して該１または複数のサーバに結合された第２のコンピューティングシステムを備えて形成され、第１および第２のコンピューティングシステムは直接の論理接続を介して互いに通信する。仮想ネットワークを形成する方法は、ａ）第１のファイアウォールを介して、第１のコンピューティングシステムと、グローバルエリア・ネットワークに結合された仮想ネットワーク・ホスト・サーバとの間で物理的接続を確立する工程；ｂ）第２のファイアウォールを介して、仮想ネットワーク・ホスト・サーバに物理的に接続された第２のコンピューティングシステムと通信する工程；から成り、通信する工程は、第１および第２のコンピューティングシステム間の直接の論理接続を介して通信することを含む。コンピュータプログラム製品は、ファイアウォールを介してグローバルエリア・ネットワークに各々が結合された２つ以上のコンピューティングシステムを使用して実行された時に仮想ネットワクを形成するプログラム命令を備えたコンピュータ可読媒体を有し、該実行プログラム命令は、ａ）第１のファイアウォールを介して、第１のコンピューティングシステムと、グローバルエリア・ネットワークに結合された仮想ネットワーク・ホスト・サーバとの間で物理的接続を確立する工程；ｂ）第２のファイアウォールを介して、第２のコンピューティングシステムと、仮想ネットワーク・ホスト・サーバとの間で物理的接続を確立する工程；およびｃ）第１および第２のコンピューティングシステム間に論理接続を確立し、仮想ネットワークを形成する工程；から成る方法を実行する。
2006503525.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク・システムであって、
１または複数の仮想ネットワーク・ホスト・サーバに結合されたグローバルエリア・ネットワーク；
第１のファイアウォールを介して前記１または複数のサーバに結合された第１のコンピューティングシステム；および
第２のファイアウォールを介して前記１または複数のサーバに結合された第２のコンピューティングシステム；を備え、
前記第１および第２のコンピューティングシステムを含む仮想ネットワークが、前記第１および第２のコンピューティングシステムが直接の論理接続を介して互いに通信するように形成されている、ネットワーク・システム。
【請求項２】
前記仮想ネットワークが前記１または複数のサーバと各コンピューティングシステムとの間に物理層の接続を使用する、請求項１のネットワーク・システム。
【請求項３】
前記物理層がＨＴＴＰ  ＣＯＮＮＥＣＴコマンドを使用して確立される、請求項２のネットワーク・システム。
【請求項４】
前記物理層の接続が、前記サーバで形成された仮想ネットワーク・オブジェクトへの接続を含む、請求項１のネットワーク・システム。
【請求項５】
仮想ネットワーク・ホスト・サーバを備えたグローバルエリア・ネットワークを使用する通信システムであって、
グローバルエリア・ネットワークを使用して仮想ネットワーク・ホスト・サーバに結合された複数のコンピューティングシステム；および
コンピューティングシステムとグローバルエリア・ネットワークとの間のネットワーク通信をフィルタするための、前記コンピューティングシステムの各々に１つずつが対応する、複数のファイアウォール；を備え、
前記複数のコンピューティングシステムを備えた仮想ネットワークは、前記複数のコンピューティングシステムが直接の論理接続を介して互いに通信するように形成されている、通信システム。
【請求項６】
仮想ネットワークを形成する方法であって、
ａ）第１のファイアウォールを介して、第１のコンピューティングシステムと、グローバルエリア・ネットワークに結合された仮想ネットワーク・ホスト・サーバとの間で物理的接続を確立する工程；
ｂ）第２のファイアウォールを介して、第２のコンピューティングシステムと、前記仮想ネットワーク・ホスト・サーバとの間で物理的接続を確立する工程；および
ｃ）前記第１および第２のコンピューティングシステム間に論理接続を確立し、仮想ネットワークを形成する工程；
から成る方法。
【請求項７】
前記確立する工程ａ）および前記確立する工程ｂ）のうちの１つは、
ｄ）前記コンピューティングシステムから前記サーバに、ＴＣＰ接続要求を発行すること；
ｅ）前記サーバから前記コンピューティングシステムに、前記ＴＣＰ接続要求に応答すること；
ｆ）前記コンピューティングシステムから前記サーバに、接続ハンドシェイキングデータを交換すること；
ｇ）前記サーバから前記コンピューティングシステムに、接続ハンドシェイキングデータを交換すること；
ｈ）前記コンピューティングシステムと前記サーバとの間でデータを交換すること；を含む、請求項６に記載の方法。
【請求項８】
前記第１のファイアウォールの前に、前記第１のコンピューティングシステムに結合されたＨＴＴＰプロキシサーバをさらに備え、前記確立する工程ａ）が、
ｄ）前記第１のコンピューティングシステムから前記プロキシサーバに、プロキシ接続要求を発行すること；
ｅ）前記プロキシサーバから前記サーバに、ＴＣＰ接続要求を発行すること；
ｆ）前記サーバから前記プロキシサーバに、前記ＴＣＰ接続要求に応答すること；
ｈ）前記プロキシサーバから前記第１のコンピューティングシステムに、前記ＴＣＰ接続要求に応答すること；
ｇ）  前記プロキシサーバを介して前記コンピューティングシステムから前記サーバに、接続ハンドシェイキングデータを交換すること；
ｇ）  前記プロキシサーバを介して前記サーバから前記コンピューティングシステムに、接続ハンドシェイキングデータを交換すること；および
ｈ）前記プロキシサーバを介して、前記コンピューティングシステムと前記サーバとの間でデータを交換すること；
を含む、請求項６に記載の方法。
【請求項９】
ファイアウォールを介してグローバルエリア・ネットワークに各々が結合された２つ以上のコンピューティングシステムを使用して実行された時に仮想ネットワクを形成するプログラム命令を備えたコンピュータ可読媒体を有するコンピュータプログラム製品であって、該実行プログラム命令は、
ａ）第１のファイアウォールを介して、第１のコンピューティングシステムと、グローバルエリア・ネットワークに結合された仮想ネットワーク・ホスト・サーバとの間で物理的接続を確立する工程；
ｂ）第２のファイアウォールを介して、第２のコンピューティングシステムと、仮想ネットワーク・ホスト・サーバとの間で物理的接続を確立する工程；および
ｃ）第１および第２のコンピューティングシステム間に論理接続を確立し、仮想ネットワークを形成する工程；
から成る方法を実行する、コンピュータプログラム製品。
【請求項１０】
グローバルエリア・ネットワークに結合された第１のコンピュータシステム用の仮想ネットワーク通信システムであって、
第１のコンピュータシステムのプロセッサを使用して動作可能で、ネットワーク化ＡＰＩに結合された、ネットワーク・アプリケーション；
前記プロセッサを使用して動作可能で、グローバルエリア・ネットワークと前記ネットワーク化ＡＰＩに結合されたネットワーク・サブシステムとの間で通信プロトコル信号を交換するための、ネットワーク・アダプタ；
第１のコンピュータシステムのプロセッサを使用して動作可能で、前記ネットワーク化ＡＰＩに結合された、仮想ネットワーク・クライアント・ランタイム；および
前記プロセッサを使用して動作可能で、前記ランタイムおよび前記ネットワークシステムに結合された、仮想ネットワーク・アダプタ；
を備えた仮想ネットワーク通信システム。
【請求項１１】
前記仮想ネットワーク・アダプタが第１のコンピュータシステムの動作中に動的に作成される、請求項１０に記載の仮想ネットワーク通信システム。
【請求項１２】
前記仮想ネットワーク・アダプタがそれ自身の物理アダプタ・アドレスを割り当てられる、請求項１１に記載の仮想ネットワーク通信システム。
【請求項１３】
前記仮想ネットワーク・アダプタが擬物理アドレスを用いて静的に構成される、請求項１１に記載の仮想ネットワーク通信システム。
【請求項１４】
前記仮想ネットワーク・アダプタが、仮想ネットワーク・ホスト・サーバを介して第１のコンピュータシステムの前記仮想ネットワーク・アダプタに論理接続された第２のコンピュータシステムの第２の仮想ネットワーク・アダプタのアドレスと一致するアドレスを有する、請求項１３に記載の仮想ネットワーク通信システム。
【請求項１５】
前記第１のコンピュータシステムが修正アドレス解決プロトコル（ＡＲＰ）プロセスを含む、請求項１４に記載の仮想ネットワーク通信システム。
【請求項１６】
前記修正ＡＲＰプロセスが、第１のコンピュータシステムの物理アドレス要求を求めるＡＲＰ要求のソースに依存して、前記擬物理アドレスおよび動的に割り当てられた物理アドレスのうちの１つを返す、請求項１５に記載の仮想ネットワーク通信システム。
【請求項１７】
第１のコンピュータシステムで提供される仮想ネットワーク・アダプタに対するアドレス解決プロトコル（ＡＲＰ）要求応答方法であって、
ａ）ＡＲＰ要求が第１のコンピュータシステムから送信された場合に、仮想ネットワーク・アダプタの擬物理アドレスを用いてＡＲＰ要求に応答する工程；および
ｂ）ＡＲＰ要求が第１のコンピュータシステムから送信されない場合に、仮想ネットワーク・アダプタの動的に割り当てられた物理アドレスを用いてＡＲＰ要求に応答する工程；
から成る方法。
【請求項１８】
ネットワーク・システムであって、
１または複数の仮想ネットワーク・ホスト・サーバに結合されたグローバルエリア・ネットワーク；および
第１のファイアウォールを介して、前記１または複数のサーバに結合された第１のコンピューティングシステム；
を備え、
前記第１のコンピューティングシステムを備えた仮想ネットワークは、第２のファイアウォールを介して前記１または複数のサーバに結合された第２のコンピューティングシステムを備えて形成され、前記第１および第２のコンピューティングシステムは直接の論理接続を介して互いに通信する、ネットワーク・システム。
【請求項１９】
仮想ネットワークを形成する方法であって、
ａ）第１のファイアウォールを介して、第１のコンピューティングシステムと、グローバルエリア・ネットワークに結合された仮想ネットワーク・ホスト・サーバとの間で物理的接続を確立する工程；および
ｂ）第２のファイアウォールを介して、前記仮想ネットワーク・ホスト・サーバに物理的に接続された第２のコンピューティングシステムと通信する工程；
から成り、
前記通信する工程は、前記第１および第２コンピューティングシステム間の直接の論理接続を介して通信することを含む、方法。
【請求項２０】
仮想ネットワークを形成する方法であって、
ａ）複数のファイアウォールを介して、グローバルエリア・ネットワークに結合された
仮想ネットワーク・ホスト・サーバと、前記グローバルエリア・ネットワークから各々分離された複数のコンピューティングシステムの各々との間で物理的接続を確立する工程であって、前記複数のファイアウォールの各々１つが、前記複数のコンピューティングシステムの各々の対応する１つに関連している、確立する工程；および
ｂ）前記複数のコンピューティングシステムの各コンピューティングシステム間に直接の論理接続を使用して、それらの各コンピューティングシステム間で通信し、前記複数のコンピューティングシステムの仮想ネットワークを形成する工程；
から成る方法。
【請求項２１】
複数のコンピューティングシステムの各々のためのサブネット・ローカリゼーション方法であって、各計算システムはファイアウォールを介して仮想ネットワーク・ホスト・サーバに物理的に結合されると共に仮想ネットワーク・アダプタを有し、前記複数のコンピューティングシステムおよび前記仮想ネットワーク・ホスト・サーバは、前記コンピューティングシステム間に直接の論理接続を有する仮想ネットワークを形成し、前記方法は、
ａ）コンフリクトを有する１または複数の仮想アダプタを除いて、共通ネットワークＩＤおよびホストＩＤ部分の組み合わせを有する各仮想アダプタのＴＣＰ／ＩＰ設定を形成する工程；
ｂ）代替ネットワークＩＤおよびホストＩＤ部分の組み合わせを有する各前記コンフリクトした１または複数の仮想アダプタのＴＣＰ／ＩＰ設定を形成する工程；および
ｃ）前記仮想アダプタを通過するＩＰパケットの接続ベースのアドレス変換を行なう工程；から成り、
前記コンピューティングシステムがすべて、単一の仮想ネットワークに論理接続されている、方法。
【請求項２２】
前記仮想アダプタのうちの１つに入るＩＰパケットをアドレス変換する前記工程ｃ）は、
ｃ１）ＩＰパケットのソースアドレス部分中のネットワークＩＤが、前記１つの仮想アダプタのネットワークＩＤと一致するか否かテストする工程；
ｃ２）前記テストする工程ｃ１）が偽である場合に、前記ソースアドレス部分中の前記ネットワークＩＤを、前記１つの仮想アダプタの前記ネットワークＩＤと一致するように変更する工程；
ｃ３）前記テストする工程ｃ１）が偽である場合に、ＩＰパケットのパケットチェックサムを更新する工程；および
ｃ４）前記テストする工程ｃ１）が偽である場合に、ソースＩＰおよびソースポートに基づいてマッピング・エントリを作成する工程；
を含む、請求項２１に記載のサブネット・ローカリゼーション方法。
【請求項２３】
前記仮想アダプタのうちの１つに入るＩＰパケットをアドレス変換する前記工程ｃ）は、
ｃ１）ＩＰパケットの宛先アドレス部分中のネットワークＩＤが、前記１つの仮想アダプタのネットワークＩＤと一致するか否かテストする工程；
ｃ２）前記テストする工程ｃ１）が偽である場合に、前記宛先アドレス部分中の前記ネットワークＩＤを、前記１つの仮想アダプタの前記ネットワークＩＤと一致するように変更する工程；および
ｃ３）前記テストする工程ｃ１）が偽である場合に、ＩＰパケットのパケットチェックサムを更新する工程；
を含む、請求項２１に記載のサブネット・ローカリゼーション方法。
【請求項２４】
前記仮想アダプタのうちの１つから送信されるＩＰパケットをアドレス変換する前記工程ｃ）は、
ｃ１）マッピング・エントリが、前記宛先アドレスおよび前記宛先ポートについて存在するか否かテストする工程；
ｃ２）前記テストする工程ｃ１）が真である場合に、ＩＰパケットのソースアドレス部分中のネットワークＩＤが、前記１つの仮想アダプタのネットワークＩＤと一致するか否かテストする工程；
ｃ３）前記テストする工程ｃ１）が真であり、前記テストする工程ｃ２）が偽である場合に、前記ソースアドレス部分中の前記ネットワークＩＤを、前記マッピング・エントリのネットワークＩＤと一致するように変更する工程；および
ｃ３）前記テストする工程ｃ１）が真であり、前記テストする工程ｃ２）が偽である場合に、ＩＰパケットのパケットチェックサムを更新する工程；
を含む、請求項２１に記載のサブネット・ローカリゼーション方法。
【請求項２５】
前記仮想アダプタのうちの１つから送信されるＩＰパケットをアドレス変換する前記工程ｃ）は、
ｃ１）マッピング・エントリが、前記宛先アドレスおよび前記宛先ポートについて存在するか否かテストする工程；
ｃ２）前記テストする工程ｃ１）が真である場合に、ＩＰパケットの宛先アドレス部分中のネットワークＩＤが、前記１つの仮想アダプタのネットワークＩＤと一致するか否かテストする工程；
ｃ３）前記テストする工程ｃ１）が真であり、前記テストする工程ｃ２）が偽である場合に、前記宛先アドレス部分中の前記ネットワークＩＤを、前記マッピング・エントリのネットワークＩＤと一致するように変更する工程；および
ｃ３）前記テストする工程ｃ１）が真であり、前記テストする工程ｃ２）が偽である場合に、ＩＰパケットのパケットチェックサムを更新する工程；
を含む、請求項２１に記載のサブネット・ローカリゼーション方法。
【請求項２６】
仮想アダプタを有する、仮想ネットワークのコンピュータシステムのドメイン名サービス（ＤＮＳ）取り扱い方法であって、
ａ）前記コンピュータシステムのためのネーム空間におけるネーム要求が、仮想ネットワークに対して定義されているか否かをテストする工程；
ｂ）前記テストする工程ａ）が真である場合に、前記ネーム要求に応答して前記仮想アダプタの動的に割り当てられたＩＰアドレスを返すこと；および
ｃ）前記テストする工程ａ）が偽である場合に、コンピュータシステムのデフォルト・ドメイン名リゾルバ（ＤＮＲ）に、前記ネーム要求を転送する工程；
から成る方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・ネットワークでの通信に関し、より詳細には、例えばインターネットを始めとするグローバル・エリア・コンピュータ・ネットワークに仮想ネットワークを構築するシステムおよび方法に関する。
【背景技術】
【０００２】
インターネット産業での事業間の相互依存が増大するにつれて、事業活動を成功裡に迅速に行なうために、企業は、ビジネスパートナー、供給業者、および顧客との通信に大きく依存するようになっている。
【０００３】
しかしながら、今日の大半の企業ネットワークは、ファイアウォールを含む１または複数のセキュリティ機能によって保護されている。ファイアウォールは、企業が基礎データに対する制御を増大させることを支援することにより、それらの企業の事業プライバシーの強化を可能にする。公衆網からプライベートネットワークを区切るファイアウォールの広い使用は、ＩＰｖ４アドレスの潜在的不足という問題の解決に寄与している。副次的な悪影響としては、ファイアウォールはインターネット全体を、多数の完全には双方向に接続していないネットワーク島（island）に分割する。これらの島にある企業間の接続が問題となる。
【０００４】
図１は、複数の「ネットワーク島」１０５ｉに分割されたネットワーク・システム１００の略ブロック図である。各島１０５ｉは、ファイアウォール１１０ｉおよび複数のコンピューティングシステム（例えばサーバ１１５ｉ、デスクトップ１２０ｉおよびラップトップ１２５ｉ）を含んでいる。各ファイアウォール１１０ｉは他のファイアウォール１１０ｉとは異なるように形成されることが多いが、それらのファイアウォール１１０ｉの各々は、完全な双方向のデータフローを制限する。図１に示されるように、ファイアウォール１１０１の背後にある各コンピューティングシステムは、ファイアウォール１１０２の背後にある別のコンピューティングシステムからは自由にアクセス可能ではないが、それらのコンピューティングシステムはいずれも、公衆インターネット１３０への接続を有する。
【０００５】
ファイアウォール１１０のフィルタ／ブロック機能に加えて、異なるファイアウォール１１０ｉの背後にあるコンピューティングシステム間の接続問題の主な理由は、異なるプライベート・アドレス空間をそれらが使用することである。ファイアウォール１１０１およびファイアウォール１１０２は、個々の島１０５１および１０５２のための異なるアドレス空間をそれぞれ定義することを支援する。実際、これは公衆インターネット間の異なるプライベート・エリアを分離する。ＮＡＴ（ネットワークアドレス変換）を適用することにより、各島１０５ｉの各コンピューティングシステムはインターネット１３０にアクセスすることができるが、もし特定の管理がファイアウォール１１０ｉと協同して使用されなければ、各島１０５ｉ内のコンピューティングシステムへのＩＰ接続は失われることとなる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
この接続問題を解決する方法、すなわち、異なるネットワーク島のコンピューティングシステムが相互接続し協力することを可能にするＴＣＰ／ＩＰネットワーク化のための仮想ネットワークを構築するシステムおよび方法を提供することが必要とされている。さら
に、既存のＴＣＰ／ＩＰベースのアプリケーションが、異なるネットワーク島の上にシームレスに拡張され、そのような拡張がネットワーク島の境界を横切って動的に設定される、システムおよび方法を提供することが必要とされている。
【課題を解決するための手段】
【０００７】
ＴＣＰ／ＩＰネットワーク化のための仮想ネットワークを構築するシステム、方法およびコンピュータプログラム製品が開示される。
システムは、１または複数の仮想ネットワーク・ホスト・サーバに結合されたグローバルエリア・ネットワーク；および第１のファイアウォールを介して該１または複数のサーバに結合された第１のコンピューティングシステム；を備え、第１のコンピューティングシステムを備えた仮想ネットワークは、第２のファイアウォールを介して該１または複数のサーバに結合された第２のコンピューティングシステムを備えて形成され、第１および第２のコンピューティングシステムは直接の論理接続を介して互いに通信する。
【０００８】
仮想ネットワークを形成する方法は、ａ）第１のファイアウォールを介して、第１のコンピューティングシステムと、グローバルエリア・ネットワークに結合された仮想ネットワーク・ホスト・サーバとの間で物理的接続を確立する工程；およびｂ）第２のファイアウォールを介して、仮想ネットワーク・ホスト・サーバに物理接続された第２のコンピューティングシステムと通信する工程；から成り、該通信する工程は、第１および第２コンピューティングシステム間の直接の論理接続を介して通信することを含む。
【０００９】
コンピュータプログラム製品は、ファイアウォールを介してグローバルエリア・ネットワークに各々が結合された２つ以上のコンピューティングシステムを使用して実行された時に仮想ネットワクを形成するプログラム命令を備えたコンピュータ可読媒体を有し、該実行プログラム命令は、ａ）第１のファイアウォールを介して、第１のコンピューティングシステムと、グローバルエリア・ネットワークに結合された仮想ネットワーク・ホスト・サーバとの間で物理的接続を確立する工程；ｂ）第２のファイアウォールを介して、第２のコンピューティングシステムと、仮想ネットワーク・ホスト・サーバとの間で物理的接続を確立する工程；およびｃ）第１および第２のコンピューティングシステム間に論理接続を確立し、仮想ネットワークを形成する工程；から成る方法を実行する。
【００１０】
本発明は、先行技術の接続問題に取り組み、それを改善する方法を提供する。本発明の好ましい実施形態は、異なるネットワーク島のコンピューティングシステムが相互接続し協力することを可能にするＴＣＰ／ＩＰネットワーク化のための仮想ネットワークを構築するシステム、方法、およびコンピュータプログラム製品を提供する。さらに、好ましい実施形態は、既存のＴＣＰ／ＩＰベースのアプリケーションが、異なるネットワーク島の上にシームレスに拡張され、そのような拡張が多様に独立して構成された島のネットワーク島境界を横切って動的に設定されることを提供する。
【発明を実施するための最良の形態】
【００１１】
本発明は、異なるネットワーク島のコンピューティングシステムが相互接続し協力することを可能にする、ＴＣＰ／ＩＰネットワーク化のための仮想ネットワークを構築するシステムおよび方法の提供に関する。さらに本発明は、既存のＴＣＰ／ＩＰベースのアプリケーションが、異なるネットワーク島の上にシームレスに拡張され、そのような拡張がネットワーク島境界を横切って動的に設定される、システムおよび方法を提供する。以下の説明は、当業者が発明を製造および使用することを可能にするために示すものであって、特許出願とその要件に関連して提供される。好ましい実施形態に対する様々な改変および本明細書で説明する一般原理ならびに特徴が、当業者に容易に明らかとなるだろう。したがって、本発明は、図示した実施形態に限定されることは意図しておらず、本明細書で説明する原理および特徴に一致する最も広い範囲に一致することを意図する。
【００１２】
本発明の好ましい実施形態とそれらの利点は、図面の図２〜１２を参照することにより最も良く理解される。
図２は、仮想ネットワーク・システム２００の好ましい実施形態の略ブロック図である。システム２００は、本発明のサーバ環境を提供する仮想ネットワーク・ホスト・サーバ２０５を含んでいる。同様に、各ネットワーク島１０５ｉのコンピューティングシステム（例えばコンピュータシステム１２０ｉ）は、本発明のクライアント環境を提供する。各コンピューティングシステム１２０ｉはコンピュータ・ネットワーク１３０（例えばインターネット）を介してサーバ２０５に接続される。１２０ｉからネットワーク１３０までの接続は、ファイアウォール１１０ｉがあるため、ＨＴＴＰクライアントからＨＴＴＰサーバまでに作成される任意のＨＴＴＰ接続と同様の、発信（outgoing）接続である。さらに、本発明は、接続のためのＨＴＴＰ  ＣＯＮＮＥＣＴ法として知られているような、標準ＳＳＬトンネリングプロトコルを介してファイアウォール・トンネルを作成する方法を提供する。
【００１３】
サーバ２０５は、他のサーバ・コンピュータシステムとクライアント・コンピュータシステムとの間の接続を受け入れ、確立することができる任意のタイプの電子機器であってよく、作成された接続を通じてデータを交換することもできる。図２に示される実施形態では、仮想ネットワーク・ホスト・サーバ２０５は、プロセッサ、メモリ、記憶ディスク、オペレーティングシステム・ソフトウェア、アプリケーション・ソフトウェアおよび通信ソフトウェアを含んでいる。プロセッサは、インテル・ペンティアム（Intel Pentium ）社のプロセッサファミリーのメンバーを始めとする、任意の適切なプロセッサであってよい。メモリは、ＤＲＡＭ、ＳＲＡＭを始めとする、任意のタイプのメモリであってよい。記憶ディスクは、ハードディスク、フロッピー・ディスク（登録商標）を始めとする、デジタルデータを格納するよう設計された任意のタイプの装置であってよい。オペレーティングシステム・ソフトウェアは、Microsoft Windows （例えばWindows NT、Windows 2000、Windows XP）、UNIXのバージョン（例えばSun Solaris またはRedhat LINUX）を始めとする、基本ハードウェア上で動作可能な任意のタイプの適切なオペレーティングシステム・ソフトウェアであってよい。アプリケーション・ソフトウェアは、Microsoft SQL Server、Apache Web Server 、コンピュータ支援ドラフティングアプリケーションまたは他のタイプのアプリケーションを始めとする、任意のソフトウェアであってよい。通信ソフトウェアは、サーバ・コンピュータシステムとクライアント・コンピュータシステムとの間のデータ通信を可能にする任意のタイプのソフトウェアであってよく、そのようなソフトウェアは、本発明で特定される仮想ネットワークを作成するためのサーバ側機能を実行する命令を含む。
【００１４】
クライアント・コンピュータシステムは、サーバ・コンピュータシステム間の接続を確立することができる任意のタイプの電子機器であってよく、作成された接続を通じてデータを交換することもできる。図２に示した実施形態で、クライアント・コンピュータシステム（例えばデスクトップ１２０ｉ）は、プロセッサ、メモリ、記憶ディスク、オペレーティングシステム・ソフトウェア、アプリケーション・ソフトウェアおよび通信ソフトウェアを含んでいる。プロセッサは、インテル・ペンティアム（Intel Pentium ）社のプロセッサファミリーのメンバーを始めとする、任意の適切なプロセッサであってよい。メモリは、ＤＲＡＭ、ＳＲＡＭを始めとする、任意のタイプのメモリであってよい。記憶ディスクは、ハードディスク、フロッピー・ディスク（登録商標）を始めとする、デジタルデータを格納するよう設計された任意のタイプの装置であってよい。オペレーティングシステム・ソフトウェアは、Microsoft Windows （例えばWindows NT、Windows 2000、Windows XP）、UNIXのバージョン（例えばSun Solaris またはRedhat LINUX）を始めとする、基本ハードウェア上で動作可能な任意のタイプの適切なオペレーティングシステム・ソフトウェアであってよい。アプリケーション・ソフトウェアは、Microsoft Word、Netscape N
avigator、表計算アプリケーションまたは他のタイプのアプリケーションを始めとする、任意のソフトウェアであってよい。通信ソフトウェアは、クライアント・コンピュータシステムとサーバ・コンピュータシステムとの間のデータ通信を可能にする任意のタイプのソフトウェアであってよく、そのようなソフトウェアは、本発明で特定される仮想ネットワークを作成するためのクライアント側機能を実行する命令を含む。
【００１５】
グローバル・エリア・コンピュータ・ネットワーク１３０は、互いに通信することが可能な多数のコンピュータを含む任意のタイプのコンピュータ・ネットワークであってよい。本発明のいくつかの実施形態では、グローバル・エリア・コンピュータ・ネットワークはインターネットとして示される。
【００１６】
ファイアウォール１１０ｉを始めとするファイアウォールは、２つのネットワーク間のアクセス制御を実行する任意のハードウェアデバイスまたはソフトウェア・システムであってよく、特に本発明のいくつかの実施形態では、２つのネットワークとは、企業のプライベート・ネットワークと、インターネット１３０のようなグローバル・エリア・コンピュータ・ネットワークとのことを指す。
【００１７】
システム２００は仮想ネットワーク２１０も含んでおり、仮想ネットワーク２１０はソフトウェア実装されたネットワーク・オブジェクトであり、イーサネット（登録商標）のような物理ネットワークと同じ特性を有している。仮想ネットワーク２１０は、各クライアント・コンピュータシステムではあたかも別の物理ネットワーク・インタフェースのように見え、サーバ・コンピュータシステムではサーバ通信ソフトウエアにより管理されたソフトウェア・オブジェクトのように見える。
【００１８】
以下により詳細に説明するように、本発明は、インターネット１３０のようなグローバル・エリア・コンピュータ・ネットワーク上に仮想ネットワークに２１０を構築するための、システムおよび方法を提供する。
【００１９】
仮想ネットワーク２１０を形成するために、参加している各クライアントコンピュータ・システム（例えばデスクトップ１２０ｉ）は、仮想ネットワーク２１０をホストするサーバ・コンピュータシステム（例えば仮想ネットワーク・ホスト・サーバ２０５）との接続を確立する。どの仮想ネットワーク２１０に任意の特定のクライアント・コンピュータ・システムが参加したいかに依存して、サーバ通信ソフトウェアは、クライアント・コンピュータシステムからの接続をその対応する仮想ネットワーク・オブジェクトに関連付け、また、サーバ通信ソフトウェアは、仮想ネットワーク上の個々の各クライアント・コンピュータ・システム間で起こるデータ交換活動や、仮想ネットワーク上全体での放送も管理するだろう。
【００２０】
図３は、サーバ通信アプリケーション３００の好ましい実施形態を示す略図である。アプリケーション３００は複数の仮想ネットワーク・オブジェクト（例えば３０５、３１０および３１５）を含んでいる。図３では、１つのクライアント・コンピュータシステム（例えばデスクトップ１２０１）と別のクライアント・コンピュータシステム（例えばデスクトップ１２０２）が、サーバ・コンピュータシステム２０５上の通信ソフトウェア３００を介して作成された仮想ネットワークオブジェクト３０５と通信することによる、仮想ネットワーク２００への参加者である。サーバ２０５は、オブジェクト３０５を通じて、仮想ネットワーク２１０を管理する。
【００２１】
図４は、ＴＣＰ  ＣＯＮＮＥＣＴ要求を許可する、ファイアウォールを横切るクライアントシステムとホストサーバシステムとの間の接続シーケンスを例証する線図である。クライアント・コンピュータシステム（例えばデスクトップ１２０ｉ）とサーバ・コンピュ
ータシステム（例えば仮想ネットワーク・ホスト・サーバ２０５）との間に直接の発信接続が作成されるのをファイアウォール（例えばファイアウォール１１０ｉ）が許容する場合、そのような接続は図４に示されたシーケンスとして確立される。
【００２２】
図４で、ファイアウォール１１０１は発信ＴＣＰ  ＣＯＮＮＥＣＴ要求を渡す。従って、図に示されたシーケンスでは、デスクトップ１２０１は、仮想ネットワーク・ホスト・サーバ２０５との接続を直接作成する。そのような直接ＴＣＰ接続の場合、クライアント・コンピュータシステムはサーバ・コンピュータシステムに直接ＴＣＰ  ＣＯＮＮＥＣＴ要求を発行し、クライアント・コンピュータシステムとサーバ・コンピュータシステム間のファイアウォールはその要求に対してＮＡＴ（ネットワークアドレス変換）を行い、同様にＴＣＰ  ＣＯＮＮＥＣＴ応答を同様に通過させ、さらなるデータ交換がファイアウォールを介して従って許容される。
【００２３】
図５は、ＴＣＰ  ＣＯＮＮＥＣＴ要求を許可しない、ファイアウォールを横切るクライアントシステムとホストサーバシステムとの間の接続シーケンスを例証する線図である。任意のクライアント・コンピュータシステム（例えばデスクトップ１２０２）がサーバ・コンピュータシステム（例えば仮想ネットワーク・ホスト・サーバ２０５）に接続することをファイアウォール（例えばファイアウォール１２０２）が許容しない場合、システム２００はファイアウォール１１０２を通過するためにＳＳＬトンネリング・プロトコルを使用する。大半の場合、ファイアウォール１１０２は任意の発信接続が作成されることを許容しないが、ファイアウォール１１０２は、ＳＯＣＫＳサーバおよびＨＴＴＰプロキシ・サーバを始めとする一部の中間サーバが発信接続を作成することをしばしば許容する。図５はＳＳＬトンネリング・プロトコルを使用した接続のシーケンスを示す。このような場合、クライアント・コンピュータシステム（デスクトップ１２０２）は、サーバ・コンピュータシステム（仮想ネットワーク・ホスト・サーバ２０５）との直接ＴＣＰ接続を作成せず、代わりに、要求は図５に示されるようにＳＳＬトンネリング・プロトコルを使用してＨＴＴＰプロキシサーバ５００２により転送される。直接接続の場合とは異なり、クライアント・コンピュータシステム（デスクトップ１２０２）がまず、ＨＴＴＰプロキシサーバ５００２との直接ＴＣＰ接続を確立する。ＨＴＴＰプロキシサーバ５００２とのＴＣＰ接続が作成された後、デスクトップ１２０２はＨＴＴＰ  ＣＯＮＮＥＣＴ法を介してＳＳＬトンネリング要求を開始する。トンネリング要求の一般的なシンタックスは以下の通りである：
C ONNECT<host address>:<port>HTTP/1.0
...HTTP 要求ヘッダ  空白行が続く
一旦ＨＴＴＰプロキシサーバ５００２がトンネリング要求を受け取ると、ＨＴＴＰプロキシサーバ５００２は最終的には目標サーバとの接続を確立し、３つの当事者の任意の一つが基本ＴＣＰ接続を終了するまで、要求クライアントとサーバの間でデータを転送する。
【００２４】
図６は、クライアント・コンピューティングシステムの利用可能なネットワーク環境を検出するためのフローチャートである。異なる接続手順はクライアント・コンピュータシステムの特定のネットワーク環境の相違に基づいているため、サーバ・コンピュータシステムへの任意の接続要求を試みる前に、クライアント・コンピュータシステム上の通信ソフトウェアはネットワーク環境を検出する。図６は、好ましい検出／選択プロセス６００のフローチャートを与える。
【００２５】
プロセス６００は、ステップ６０５で、（例えばデスクトップ１２０ｉ上の）クライアント通信ソフトウェアが、利用可能なネットワーク環境をテストすることから始まる。好ましい実施形態では、このテストは、ＨＴＴＰプロキシサーバ５００ｉが利用可能か否かを判定する。サーバが利用可能でない場合、プロセス６００は工程６１０に進み、図４に
示した接続シーケンスを実行する。しかしながら、工程６０５のテストでサーバが利用可能であると判定した場合、代わりにプロセス６００は工程６１５に進み、図５に示した接続シーケンスを実行する。工程６１０または工程６１５が行なわれた後、プロセス６００は終了する。
【００２６】
図４および図５の両方に示されているように、物理接続が確立された後、それが直接のＴＣＰ接続であっても、ＨＴＴＰプロキシサーバを介した間接のＴＣＰ接続であっても、クライアント・コンピュータシステムおよびサーバ・コンピュータシステムは、必要であるか望ましい如何なるネゴシエーションをも行なうことができる。このネゴシエーションは、バージョン・チェック、セキュリティ・プロトコル・ネゴシエーションおよび接続認証を含んでもよい。ネゴシエーションは、両当事者のハンドシェイキングのための複数巡回のデータ交換を含んでもよい。
【００２７】
図７は、クライアント・コンピュータシステム（例えばデスクトップ１２０ｉ）上の通信ソフトウェアのソフトウェア・アーキテクチャ７００を例証する略図である。アーキテクチャ７００は、２つの主なソフトウエア・コンポーネント、すなわち仮想ネットワーク・クライアント・ランタイム・コンポーネント７０５および仮想ネットワーク・アダプタ・コンポーネント７１０を含んでいる。
【００２８】
仮想ネットワーク・クライアント・ランタイム・コンポーネント７０５は、クライアント・コンピュータシステム上で動作するホストオペレーティングシステムにより提供されるネットワーク化サービスを使用して、サーバ・コンピュータシステム（例えば仮想ネットワーク・ホスト・サーバ２０５）との接続を確立し、かつ仮想ネットワーク２００に属すると共にクライアント・コンピュータシステムとサーバ・コンピュータシステムの両方の通信ソフトウェアにより管理されているデータ交換セッションへ参加する。
【００２９】
最終的に、仮想ネットワーク・アダプタ７１０は、仮想ネットワーク・クライアント・ランタイム７０５によりロードされ、仮想ネットワーク・クライアント・ランタイム７０５から仮想ネットワーク２００がクライアント・コンピュータシステムに提示されるだろう。クライアントコンピュータ上で動作する任意のネットワーク・アプリケーション７１５は、アダプタ７１０の存在に気づき、それをちょうどクライアント・コンピュータシステムが取り付けられ得る任意の他の物理ネットワークのように使用するだろう。
【００３０】
仮想ネットワーク２００が使用される前に、仮想ネットワーク・アダプタ７１０は適切に形成されなければならない。アダプタ７１０は、物理アドレスと論理アドレスの両方のための動的属性を有し、構成が複雑になっている。本発明は、これらの２種類のアドレスに関連する問題に対処する方法を提供する。
【００３１】
仮想ネットワーク・アダプタ７１０は、任意の物理媒体のタイプをシミュレートすることができ、好ましい実施形態ではＩＥＥＥ  ８０２．３  イーサネットが使用される。ＩＥＥＥ  ８０２．３  イーサネットアドレスは、（ベンダーにより割り当てられた）２４ビットのベンダーＩＤと２４ビットのインタフェースのシリアル番号を有する、４８ビットのアドレスである。従って、各々のイーサネットアドレスは世界的状況で固有である。本発明は仮想ネットワークを動的に作成し、従って、個々のインスタンス生成された仮想ネットワーク・アダプタ７１０はそれ自身の物理的アダプタ・アドレスを動的に割り当てられる。いくつかのシステムは、アダプタ物理アドレスの動的な変更を許容しない。これを解決するために、本発明は擬物理アドレスを使用する。すべての仮想アダプタ７１０は、好ましい実施形態では各アダプタ７１０で同一である擬物理アドレスで、静的に形成される。物理アドレスレベルで仮想アダプタ７１０を識別するために、修正アドレス解決プロトコル（ＡＲＰ）プロセスが使用される。
【００３２】
図８は、物理アドレスレベルで仮想アダプタ７１０を識別するために使用される、修正ＡＲＰプロセス８００を示すフローチャートである。各々の仮想アダプタ７１０は同じ擬物理アドレスで形成されるが、この擬物理アドレスはそのアダプタ自身にのみ見え、他のすべてのアダプタはその動的に割り当てられた物理アドレスで見られるだろう。
【００３３】
プロセス８００は、工程８０５で、クライアント・コンピュータシステム中の通信ソフトウェアが各ＡＲＰ（アドレス解決プロトコル）要求のパケット詳細をチェックすることから始まる。通信ソフトウェアは、さらなるアクションのために必要な情報をすべて集める。
【００３４】
次に、工程８１０で、プロセス８００はＡＲＰ要求がクライアント・コンピュータシステムでインスタンス生成されたアダプタの動的に割り当てられた物理アドレスに対するものであるか否かをチェックする。答えがＹＥＳである場合、プロセス８００は工程８１５に進むが、ＮＯである場合、プロセス８００はこのＡＲＰ要求を無視する。
【００３５】
工程８１５で、プロセス８００は、ＡＲＰ要求がローカル・コンピュータシステムから送信されたかものであるか否かをチェックする。ＡＲＰ要求がローカル・コンピュータシステムから送信された場合、プロセス８００は固定の擬物理アドレスで応答し、否定の場合、プロセス８００は動的に割り当てられた物理アドレスで応答する。
【００３６】
この動的な物理アドレスは、サーバ・コンピュータシステム２０５で動作する通信ソフトウェアにより割り当て、ベンダーＩＤと、仮想ネットワークに固有な動的に割り当てられたシリアル番号とを組み合わせることにより生成される。
【００３７】
ちょうどＴＣＰ／ＩＰネットワーク化のための物理アドレス割り当てのように、ＴＣＰ／ＩＰ設定も、個々の仮想ネットワーク・アダプタ７１０に対して同様に形成される。クライアント・コンピュータシステムおよびサーバ・コンピュータシステムにおける通信ソフトウェアは、仮想ネットワーク間、およびそのような仮想ネットワーク上のコンピュータシステム間のアドレス・コンフリクトを協力して防止する。
【００３８】
仮想ネットワークのクライアント・コンピュータシステムは、多数の企業ネットワークにまたがり得る。個々のプライベート・ネットワーク上に存在するアービトレーション設備は、様々に管理され、仮想ネットワークに恐らく適していない。したがって、仮想ネットワークのためのＩＰアドレス割り当ては、いくつかのプライベート・ネットワークとのコンフリクトの問題を有し得る。本発明は、このような可能性に対処するためのサブネット・ローカリゼーション方法を提供する。
【００３９】
ＩＰアドレスは２つの部分、すなわちネットワークＩＤ部分およびホストＩＤ部分を含み、上記のサブネット・ローカリゼーション方法はネットワークＩＤ部分に対して作用する。仮想ネットワークの生成に際して、好ましいネットワークＩＤが選択される。一旦クライアント通信ソフトウェアが仮想アダプタのためのＴＣＰ／ＩＰ設定を形成しようとすると、可能な場合は常に、この好ましいネットワークＩＤが使用される。図９は、仮想ネットワークのネットワークＩＤを決定するためにクライアント・コンピュータシステム上の通信ソフトウェアが使用する、ネットワークＩＤ選択プロセス９００を例証するフローチャートである。プロセス９００は、選択された好ましいネットワークＩＤがローカルシステムとコンフリクトするか否かを判定するテスト工程９０５を含む。コンフリクトが生じない場合、好ましいネットワークＩＤが使用されてよい。コンフリクトが存在する場合、ローカルシステムは別の候補ネットワークＩＤを選択し、工程９０５に戻り、候補ネットワークＩＤをテストする。
【００４０】
好ましいネットワークＩＤがクライアント・コンピュータシステムに選択されることができない場合、そのクライアント・コンピュータシステムは仮想ネットワークの局在的な視野を有するだろう。局在的な視野とは、他のクライアント・コンピュータシステムは好ましいＩＤのネットワークＩＤで仮想ネットワークを見ているが、そのクライアント・コンピュータシステムはローカルに選択されたネットワークＩＤを有するものとして仮想ネットワークを見ることを意味する。クライアントコンピュータシステムが他のクライアントコンピュータシステムに通信することができるようにするために、特定のプロセスがクライアント通信ソフトウェア上で実行される。クライアントシステムを通過するすべてのＩＰパケットに対して、クライアント通信ソフトウェアは接続ベースのアドレス変換プロセスを行なう。
【００４１】
図１０は、仮想アダプタを通過する着信（incoming）ＴＣＰパケットの接続ベースのアドレス変換プロセス１０００を示すフローチャートである。プロセス１０００は工程１００５で開始し、着信パケットがＴＣＰ  ＳＹＮパケットであるか否かをテストする。ＴＣＰ  ＳＹＮパケットである場合、プロセス１０００は１０１０で始まる工程を行ない、ＴＣＰ  ＳＹＮパケットでない場合、プロセス１０００は１０４５で始まるアクションを実行する。
【００４２】
工程１０１０で、プロセス１０００は、ソースＩＰアドレス中のネットワークＩＤが仮想アダプタのネットワークＩＤと一致するか否かをテストする。それらのＩＤが一致しない場合、工程１０１５（ソースＩＤ変更）および工程１０２０（チェックサム更新）で示されるようにアドレス変換が行なわれる。さらに、工程１０２５で、プロセス１０００は、アドレス変換中に、後で使用するためにソースＩＰおよびソースポートに基づいてマッピング・エントリを作成する。工程１０１０のテストが否定だった場合に工程１０１５から工程１０２５まで終了した後、あるいはテストが肯定だった場合に工程１０１０を終了した後、プロセス１０００は工程１０３０で別のテストを行なう。このテストは、宛先ネットワークＩＤが仮想アダプタのネットワークＩＤと一致するか否かを判定する。一致する場合、プロセス１０００は終了する。一致しない場合、プロセス１００は工程１０３５（仮想アダプタのネットワークＩＤと一致するよう宛先ネットワークＩＤを変更）および工程１０４０（チェックサムを更新）を実行してから終了する。
【００４３】
ＴＣＰパケットがＳＹＮパケットでない場合、プロセス１０００は工程１００５のテストから、工程１０４５を実行する。ソースＩＰアドレス／ソースポートに対するマッピング・エントリが存在する場合、プロセス１０００は工程１０５０でテストを行ない、存在しない場合、プロセス１０００は終了する。
【００４４】
工程１０５０で、プロセス１０００は、ソースＩＰアドレス中のネットワークＩＤが仮想アダプタのネットワークＩＤと一致するか否かをテストする。それらのＩＤが一致しない場合、工程１０５５（ソースＩＤ変更）および工程１０６０（チェックサム更新）で示されるようにアドレス変換が行なわれる。工程１０５０のテストが否定だった場合に工程１０５５から工程１０６０まで終了した後、あるいはテストが肯定だった場合に工程１０５０を終了した後、プロセス１０００は上述したように工程１０３０でテストを開始する工程を行なう。
【００４５】
図１１は、仮想アダプタを通過するパケットに利用可能な発信ＴＣＰパケットプロセス１１００を示すフローチャートである。プロセス１１００は、工程１１０５で、すべての発信ＴＣＰパケットについて、パケット中の宛先アドレスおよび宛先ポートに基づく情報を備えたマッピング・エントリが存在するか否かをテストする。マッピング・エントリが見つからない場合、プロセス１１００は終了する。マッピング・エントリが見い出された
場合、プロセス１１００はステップ１１１０から開始するアクションを行なう。
【００４６】
ステップ１１１０は、ソースＩＰアドレスのネットワークＩＤがマッピング・エントリ内のオリジナルのネットワークＩＤレコードと一致するか否かを判定するテストである。ソースＩＰアドレスのネットワークＩＤがマッピング・エントリ内のオリジナルのネットワークＩＤレコードと一致しない場合、プロセス１１００は、工程１１１５（エントリで述べたようにソースＩＤをオリジナルのＩＤと一致するように変更）および工程１１２０（チェックサムを更新）で特定されるアドレス変換を行なう。工程１１１５および工程１１２０の後に、あるいは工程１１１０で一致することを判定した後で、プロセス１１００は、工程１１２５で別のテストを行ない、宛先ＩＰアドレスのネットワークＩＤがマッピング・エントリ内のオリジナルのネットワークＩＤレコードと一致するか否かを判定する。宛先ＩＰアドレスのネットワークＩＤがマッピング・エントリ内のオリジナルのネットワークＩＤレコードと一致する場合、プロセス１１００は終了する。
【００４７】
宛先ＩＰアドレスのネットワークＩＤがマッピング・エントリ内のオリジナルのネットワークＩＤレコードと一致しない場合、プロセス１１００はステップ１１３０（パケットの宛先ＩＰアドレスをエントリ内のオリジナルのソースネットワークＩＤレコードと一致するように変更）およびステップ１１３５（チェックサムを更新）で特定されるアドレス変換を行なう。パケットの変更ごとに、ＩＰチェックサムおよびＴＣＰチェックサムは、工程１１２０および工程１１３５で示されるように、再計算され、更新される。
【００４８】
ＩＰアドレスの割り当てに加えて、本発明はさらに、クライアントベースのＤＮＳ（ドメイン名サービス）サービスを実行する方法を提供する。この結果、すべての接続しているクライアント・コンピュータシステムは、動的に割り当てられたＩＰアドレスに関連するＤＮＳ名を有することができる。ＩＰアドレスとその関連ＤＮＳ名との間のマッピングは、クライアント・コンピュータシステムで動作する通信ソフトウェアにより行なわれるだろう。
【００４９】
「非仮想の」世界のＤＮＳ名を解決するために、ＤＮＳシステムでの２つの主なコンポーネント、すなわちＤＮＳサーバおよびＤＮＲ（ドメイン名リゾルバ）が通常関与する。
好ましい実施形態はＤＮＲコンポーネントと協力して作用する。Windows オペレーティングシステムを始めとするオペレーティングシステムソフトウェアの場合、ＤＮＲコンポーネントが、ネームサービスプロバイダの挿入を可能するオープンアーキテクチャを備えて設計される。そのようなネームサービスプロバイダの提供により、クライアント通信ソフトウェアは仮想ネットワークの上に、自身のネームサービスをホストする。
【００５０】
図１２は、クライアント・コンピュータシステムで発行されたＤＮＳネーム要求を処理するＤＮＳネーム要求プロセス１２００を示すフローチャートである。クライアント・コンピュータシステムで通信ソフトウェアにより実行されるプロセス１２００は、仮想ネットワークにネームサービスを提供する。プロセス１２００は、ネーム空間の名前が仮想ネットワーク用に定義されるか否かを判定するテスト（工程１２０５）から始まる。
【００５１】
ネーム要求が仮想ネットワークに対して定義されたネーム空間パターンと一致する場合、工程１２１０が行なわれ、ＤＮＳサーバとの連絡をとらずに、動的に割り当てられたＩＰアドレスがクライアント・コンピュータシステムに直接戻される。すなわち、ネーム解決は、クライアント・マシンで完全に終了する。
【００５２】
ネーム要求が仮想ネットワークに対して定義されたネーム空間パターンと一致しない場合、工程１２１５が行なわれ、要求はデフォルトＤＮＲに転送されるだろう。したがって、このように標準のＤＮＳネーム空間を補足するために、追加のネーム空間が構築される
。
【００５３】
本発明の好ましい実施形態の１つは、オペレーティングシステム中のルーチンとして、コンピュータの動作中に、コンピュータシステムのＲＡＭに駐在する工程または命令のプログラムから構成される。コンピュータシステムによって要求されるまで、プログラム命令は、別の可読媒体（例えばディスクドライブ）またはリムーバブルディスク（例えばＣＤ  ＲＯＭ入力装置に使用される光学ディスクまたはフロッピーディスクドライブコンピュータ入力装置に使用されるフロッピィ・ディスク）に格納されてもよい。さらに、プログラム命令は、本発明のシステムでの使用に先立って別のコンピュータのメモリに格納され、本発明のユーザによって要求された場合に、インターネットのようなＬＡＮまたはＷＡＮで送信されてもよい。当業者には、本発明を制御するプロセスを、様々な形式のコンピュータ可読媒体の形で配布できることが理解される。    本発明はその特定の実施形態に関して説明したが、そのような実施形態は本発明の単なる例示であって、本発明を限定するものではなく、本発明の範囲は添付の特許請求の範囲によってのみ決定されるものとする。
【図面の簡単な説明】
【００５４】
【図１】複数の「ネットワーク島」に分割されたネットワーク・システムの略ブロック図。
【図２】仮想ネットワーク・システムの好ましい実施形態を示す略ブロック図。
【図３】サーバ通信アプリケーションの好ましい実施形態を示す略図。
【図４】ＴＣＰ  ＣＯＮＮＥＣＴ要求を許可する、ファイアウォールを横切るクライアントシステムとホストサーバシステムとの間の接続シーケンスを例証する線図。
【図５】ＴＣＰ  ＣＯＮＮＥＣＴ要求を許可しない、ファイアウォールを横切るクライアントシステムとホストサーバシステムとの間の接続シーケンスを例証する線図。
【図６】クライアント・コンピューティングシステムの利用可能なネットワーク環境を検出するためのフローチャート。
【図７】クライアント・コンピュータシステム（例えばデスクトップ）上の通信ソフトウェアのソフトウェア・アーキテクチャを例証する略図。
【図８】物理アドレスレベルで仮想アダプタを識別するために使用される修正ＡＲＰプロセスを示すフローチャート。
【図９】仮想ネットワークのネットワークＩＤを決定するためにクライアント・コンピュータシステム上の通信ソフトウェアが使用する、ネットワークＩＤ選択プロセスを例証するフローチャート。
【図１０】仮想アダプタを通過する着信ＴＣＰパケットの接続ベースのアドレス変換プロセスを示すフローチャート。
【図１１】仮想アダプタを通過するパケットに利用可能な発信ＴＣＰパケットプロセスを示すフローチャート。
【図１２】クライアント・コンピュータシステムで発行されたＤＮＳネーム要求を処理するＤＮＳネーム要求プロセスを示すフローチャート。
【図１】
2006503525.tif 000003
【図２】
2006503525.tif 000004
【図３】
2006503525.tif 000005
【図４】
2006503525.tif 000006
【図５】
2006503525.tif 000007
【図６】
2006503525.tif 000008
【図７】
2006503525.tif 000009
【図８】
2006503525.tif 000010
【図９】
2006503525.tif 000011
【図１０】
2006503525.tif 000012
【図１１】
2006503525.tif 000013
【図１２】
2006503525.tif 000014
【手続補正書】
【提出日】平成17年6月10日(2005.6.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
前記第１のファイアウォールの前に、前記第１のコンピューティングシステムに結合されたＨＴＴＰプロキシサーバをさらに備え、前記確立する工程ａ）が、
ｄ）前記第１のコンピューティングシステムから前記プロキシサーバに、プロキシ接続要求を発行すること；
ｅ）前記プロキシサーバから前記サーバに、ＴＣＰ接続要求を発行すること；
ｆ）前記サーバから前記プロキシサーバに、前記ＴＣＰ接続要求に応答すること；
ｇ）前記プロキシサーバから前記第１のコンピューティングシステムに、前記ＴＣＰ接続要求に応答すること；
ｈ）  前記プロキシサーバを介して前記コンピューティングシステムから前記サーバに、接続ハンドシェイキングデータを交換すること；
ｉ）  前記プロキシサーバを介して前記サーバから前記コンピューティングシステムに、接続ハンドシェイキングデータを交換すること；および
ｊ）前記プロキシサーバを介して、前記コンピューティングシステムと前記サーバとの間でデータを交換すること；
を含む、請求項６に記載の方法。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項２４
【補正方法】変更
【補正の内容】
【請求項２４】
前記仮想アダプタのうちの１つから送信されるＩＰパケットをアドレス変換する前記工程ｃ）は、
ｃ１）マッピング・エントリが、前記宛先アドレスおよび前記宛先ポートについて存在するか否かテストする工程；
ｃ２）前記テストする工程ｃ１）が真である場合に、ＩＰパケットのソースアドレス部分中のネットワークＩＤが、前記１つの仮想アダプタのネットワークＩＤと一致するか否かテストする工程；
ｃ３）前記テストする工程ｃ１）が真であり、前記テストする工程ｃ２）が偽である場合に、前記ソースアドレス部分中の前記ネットワークＩＤを、前記マッピング・エントリのネットワークＩＤと一致するように変更する工程；および
ｃ４）前記テストする工程ｃ１）が真であり、前記テストする工程ｃ２）が偽である場合に、ＩＰパケットのパケットチェックサムを更新する工程；
を含む、請求項２１に記載のサブネット・ローカリゼーション方法。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項２５
【補正方法】変更
【補正の内容】
【請求項２５】
前記仮想アダプタのうちの１つから送信されるＩＰパケットをアドレス変換する前記工程ｃ）は、
ｃ１）マッピング・エントリが、前記宛先アドレスおよび前記宛先ポートについて存在するか否かテストする工程；
ｃ２）前記テストする工程ｃ１）が真である場合に、ＩＰパケットの宛先アドレス部分中のネットワークＩＤが、前記１つの仮想アダプタのネットワークＩＤと一致するか否かテストする工程；
ｃ３）前記テストする工程ｃ１）が真であり、前記テストする工程ｃ２）が偽である場合に、前記宛先アドレス部分中の前記ネットワークＩＤを、前記マッピング・エントリのネットワークＩＤと一致するように変更する工程；および
ｃ４）前記テストする工程ｃ１）が真であり、前記テストする工程ｃ２）が偽である場合に、ＩＰパケットのパケットチェックサムを更新する工程；
を含む、請求項２１に記載のサブネット・ローカリゼーション方法。
【国際調査報告】
2006503525.tif 000015
2006503525.tif 000016
2006503525.tif 000017