(57)【要約】本発明は、固有のネットワーク識別子をコンピュータに呼び出される一つ以上のプログラムに割り当て、ネットワークにアクセスするユーザーのために、ユーザーがネットワークにアクセスしているコンピュータから独立した、一律のネットワークアドレス指定方式を提供するためのシステムおよび方法に関する。コンピュータは、複数のネットワーク識別子を取得し、第一のネットワーク識別子をコンピュータに呼び出される第一のプログラムに結びつけ、第二のネットワーク識別子をコンピュータに呼び出される第二のプログラムに結び付ける。さらに、仮想ホスト名がユーザー、ユーザーセッション、またはユーザーが実行しているプログラムの仮想ＩＰアドレスに割り当てられ、結び付けられ得る。ユーザーが異なるコンピュータからネットワークにアクセスするために、ユーザーは同じ仮想ホスト名、そして、時には同じ仮想ＩＰアドレスが割り当てられ得る。
2008515293.tif 000002
【特許請求の範囲】
【請求項１】
固有のネットワーク識別子をコンピュータに呼び出される各プログラムに割り当てるためのシステムであって、該システムは、
複数のネットワーク識別子を取得するコンピュータであって、
該複数のネットワーク識別子から、該コンピュータに呼び出される第一のプログラムのための第一のネットワーク識別子を選択し、該第一のネットワーク識別子とは異なる第二のネットワーク識別子を該コンピュータに呼び出される第二のプログラムのために選択し、該第一のネットワーク識別子を該第一のプログラムと結び付け、該第二のネットワーク識別子を該第二のプログラムと結び付ける、インターフェース機構を備えるコンピュータと、
該インターフェース機構と通信して、該第一のネットワーク識別子を該第一のプログラムのネットワーク通信で送信し、該第二のネットワーク識別子を該第二のプログラムのネットワーク通信で送信するネットワーク通信インターフェースと、
を備える、システム。
【請求項２】
前記ネットワーク識別子はインターネットプロトコルアドレスを備える、請求項１に記載のシステム。
【請求項３】
前記ネットワーク識別子はホスト名を備える、請求項１に記載のシステム。
【請求項４】
前記第一のプログラムおよび前記第二のプログラムのうちの一つは、前記コンピュータによってホストされるユーザーセッションを備える、請求項１に記載のシステム。
【請求項５】
前記第一のプログラムおよび前記第二のプログラムのうちの一つは、アプリケーション隔離環境およびアプリケーションのうちの一つを備える、請求項１に記載のシステム。
【請求項６】
前記コンピュータは前記複数のネットワーク識別子のうちの少なくとも一つをサーバーから取得する、請求項１に記載のシステム。
【請求項７】
サーバーは動的ホスト構成プロトコルサーバーを備える、請求項４に記載のシステム。
【請求項８】
前記コンピュータは前記複数のネットワーク識別子のうちの少なくとも一つを格納場所から取得する、請求項１に記載のシステム。
【請求項９】
前記コンピュータは前記複数のネットワーク識別子のうちの少なくとも一つをネットワーク識別子ジェネレータから取得する、請求項１に記載のシステム。
【請求項１０】
前記インターフェース機構は、前記第一のプログラムのための前記第一のネットワーク識別子を該第一のプログラムの確立中に選択する、請求項１に記載のシステム。
【請求項１１】
前記インターフェース機構は、前記第二のプログラムのための前記第二のネットワーク識別子を該第二のプログラムの確立中に選択する、請求項１に記載のシステム。
【請求項１２】
前記コンピュータは第一のユーザーセッションおよび第二のユーザーセッションを同時にホストする、請求項４に記載のシステム。
【請求項１３】
前記コンピュータは第一のユーザーセッションをホストした後で、第二のユーザーセッションをホストする、請求項４に記載のシステム。
【請求項１４】
前記インターフェース機構は、前記第一のプログラムの前記第一のネットワーク識別子を、該第一のプログラムの名前解決要求に応答して提供し、前記第二のプログラムの前記第二のネットワーク識別子を、該第二のプログラムの名前解決要求に応答して提供する、請求項１に記載のシステム。
【請求項１５】
前記複数のネットワーク識別子のうちの少なくとも一つが、前記コンピュータのユーザーに割り当てられる、請求項１に記載のシステム。
【請求項１６】
前記インターフェース機構は、第一のＴＣＰスタックを備える、請求項１に記載のシステム。
【請求項１７】
前記インターフェース機構は、ネットワーク通信インターフェースとの通信のためのソケットライブラリを備える、請求項１６に記載のシステム。
【請求項１８】
前記ソケットライブラリはＷｉｎＳｏｃｋアプリケーション・プログラミング・インターフェースを備える、請求項１７に記載のシステム。
【請求項１９】
前記インターフェース機構は、前記ネットワーク通信インターフェースとのソケット通信のために、前記第一のネットワーク識別子を前記第一のプログラムに拘束する、請求項１７に記載のシステム。
【請求項２０】
前記インターフェース機構は、前記ネットワーク通信インターフェースとのソケット通信のために、前記第二のネットワーク識別子を前記第二のプログラムに拘束する、請求項１７に記載のシステム。
【請求項２１】
前記インターフェース機構は、第二のＴＣＰスタックを備える、請求項１６に記載のシステム。
【請求項２２】
前記インターフェース機構は、ネットワークパケット操作フィルタを備える、請求項１に記載のシステム。
【請求項２３】
固有のループバックアドレスをコンピュータに呼び出される各プログラムに割り当てるためのシステムであって、該システムは、
複数のループバックアドレスを取得するコンピュータであって、
該複数のループバックアドレスから、該コンピュータに呼び出される第一のプログラムのための第一のループバックアドレスを選択し、該第一のループバックアドレスとは異なる第二のループバックアドレスを、該コンピュータに呼び出される第二のプログラムのために選択し、該第一のループバックアドレスを該第一のプログラムのローカルホストアドレスとして結び付け、該第二のループバックアドレスを該第二のプログラムのローカルホストアドレスとして結び付ける、インターフェース機構、を備えるコンピュータと、
該インターフェース機構と通信して、該第一のループバックアドレスを該第一のプログラムのプロセス間通信で送信し、該第二のループバックアドレスを該第二のプログラムのプロセス間通信で送信する、ループバックインターフェースと、
を備える、システム。
【請求項２４】
前記第一のプログラムおよび前記第二のプログラムのうちの一つは、コンピュータによってホストされるユーザーセッションを備える、請求項２３に記載のシステム。
【請求項２５】
前記第一のプログラムおよび前記第二のプログラムのうちの一つは、アプリケーション隔離環境およびアプリケーションのうちの一つを備える、請求項２３に記載のシステム。
【請求項２６】
前記インターフェース機構は、前記第一のプログラムのための前記第一のループバックアドレスを前記第一のプログラムの確立中に選択する、請求項２３に記載のシステム。
【請求項２７】
前記インターフェース機構は、前記第二のプログラムのための前記第二のループバックアドレスを前記第二のプログラムの確立中に選択する、請求項２３に記載のシステム。
【請求項２８】
前記コンピュータは、前記複数のループバックアドレスのうちの少なくとも一つをサーバーから取得する、請求項２３に記載のシステム。
【請求項２９】
前記コンピュータは、前記複数のループバックアドレスのうちの少なくとも一つを格納場所から取得する、請求項２３に記載のシステム。
【請求項３０】
前記システムは、前記複数のループバックアドレスのうちの少なくとも一つを生成するループバックアドレスジェネレータを備える、請求項２３に記載のシステム。
【請求項３１】
固有のネットワーク識別子をコンピュータによって呼び出される各プログラムに割り当てるための方法であって、
（ａ）複数のネットワーク識別子を取得するステップと、
（ｂ）該複数のネットワーク識別子から、該コンピュータに呼び出される第一のプログラムのための第一のネットワーク識別子と、該コンピュータに呼び出される第二のプログラムのための該第一のネットワーク識別子とは異なる第二のネットワーク識別子と、を選択するステップと、
（ｃ）該第一のネットワーク識別子を該第一のプログラムのネットワーク通信と結び付けるステップと、該第二のネットワーク識別子を該第二のプログラムのネットワーク通信と結び付けるステップと、
（ｄ）該第一のネットワーク識別子を該第一のプログラムのネットワーク通信で送信するステップと、該第二のネットワーク識別子を該第二のプログラムのネットワーク通信で送信するステップと、
を包含する、方法。
【請求項３２】
前記ネットワーク識別子はインターネットプロトコルアドレスを備える、請求項３１に記載の方法。
【請求項３３】
前記ネットワーク識別子はホスト名を備える、請求項３１に記載の方法。
【請求項３４】
前記第一のプログラムおよび前記第二のプログラムのうちの一つは、コンピュータによってホストされるユーザーセッションを備える、請求項３１に記載の方法。
【請求項３５】
前記第一のプログラムおよび前記第二のプログラムのうちの一つは、アプリケーション隔離環境およびアプリケーションのうちの一つを備える、請求項３１に記載の方法。
【請求項３６】
ステップ（ａ）は、サーバーから前記複数のネットワーク識別子のうちの少なくとも一つを取得するステップをさらに包含する、請求項３１に記載の方法。
【請求項３７】
ステップ（ａ）は、動的ホスト構成プロトコルサーバーから前記複数のネットワーク識別子のうちの少なくとも一つを取得するステップをさらに包含する、請求項３１に記載の方法。
【請求項３８】
ステップ（ａ）は、前記コンピュータによって、前記複数のネットワーク識別子のうちの少なくとも一つを格納場所から取得するステップをさらに包含する、請求項３１に記載の方法。
【請求項３９】
ステップ（ａ）は、前記コンピュータによって、前記複数のネットワーク識別子のうちの少なくとも一つをネットワーク識別子ジェネレータから取得するステップをさらに包含する、請求項３１に記載の方法。
【請求項４０】
ステップ（ｂ）は、前記第一のプログラムのための前記第一のネットワーク識別子を該第一のプログラムの確立中に選択するステップをさらに包含する、請求項３１に記載の方法。
【請求項４１】
ステップ（ｂ）は、前記第二のプログラムのための前記第二のネットワーク識別子を該第二のプログラムの確立中に選択するステップをさらに包含する、請求項３１に記載の方法。
【請求項４２】
ステップ（ｂ）は、前記コンピュータによって、第一のユーザーセッションおよび第二のユーザーセッションを同時にホストするステップをさらに包含する、請求項３４に記載の方法。
【請求項４３】
ステップ（ｂ）は、前記コンピュータによって、第一のユーザーセッションをホストした後で、第二のユーザーセッションをホストするステップをさらに包含する、請求項３４に記載の方法。
【請求項４４】
ステップ（ｄ）は、前記第一のプログラムの前記第一のネットワーク識別子を、該第一のプログラムの名前解決要求に応答して提供し、前記第二のプログラムの前記第二のネットワーク識別子を、該第二のプログラムの名前解決要求に応答して提供するステップをさらに包含する、請求項３１に記載の方法。
【請求項４５】
ステップ（ａ）は、前記複数のネットワーク識別子のうちの少なくとも一つを、前記コンピュータのユーザーに割り当てるステップをさらに包含する、請求項３１に記載の方法。
【請求項４６】
前記方法は、第一のＴＣＰスタックをネットワーク通信に使用するステップをさらに包含する、請求項３１に記載の方法。
【請求項４７】
前記方法は、ソケットライブラリを使用して、ネットワーク通信インターフェースとインターフェースするステップをさらに包含する、請求項３１に記載の方法。
【請求項４８】
前記方法は、ＷｉｎＳｏｃｋアプリケーション・プログラミング・インターフェースを使用して、ネットワーク通信インターフェースとインターフェースするステップをさらに包含する、請求項３１に記載の方法。
【請求項４９】
前記方法は、前記ソケットライブラリを使用するネットワーク通信のために、前記第一のネットワーク識別子を前記第一のプログラムに拘束するステップをさらに包含する、請求項４７に記載の方法。
【請求項５０】
前記方法は、前記ソケットライブラリを使用するネットワーク通信のために、前記第二のネットワーク識別子を前記第二のプログラムに拘束するステップをさらに包含する、請求項４７に記載の方法。
【請求項５１】
前記方法は、ネットワーク通信のための第二のＴＣＰスタックをさらに包含する、請求項４６に記載の方法。
【請求項５２】
前記方法は、ネットワークパケット操作フィルタを使用して、ネットワーク通信インターフェースとインターフェースするステップをさらに包含する、請求項３１に記載の方法。
【請求項５３】
固有のループバックアドレスをコンピュータに呼び出される各プログラムに割り当てるための方法であって、
（ａ）複数のループバックアドレスを取得するステップと、
（ｂ）該複数のループバックアドレスから、コンピュータに呼び出される第一のプログラムのための第一のループバックアドレスと、該コンピュータに呼び出される第二のプログラムのための該第一のループバックアドレスとは異なる第二のループバックアドレスと、を選択するステップと、
（ｃ）該第一のループバックアドレスを該第一のプログラムのローカルホストアドレスとして結び付けるステップと、該第二のループバックアドレスを該第二のプログラムのローカルホストアドレスとして結び付けるステップと、
（ｄ）該第一のループバックアドレスを該第一のプログラムのプロセス間通信で送信するステップと、該第二のループバックアドレスを該第二のプログラムのプロセス間通信で送信するステップと、
を包含する、方法。
【請求項５４】
前記第一のプログラムおよび前記第二のプログラムのうちの一つは、コンピュータによってホストされるユーザーセッションを備える、請求項５３に記載の方法。
【請求項５５】
前記第一のプログラムおよび前記第二のプログラムのうちの一つは、アプリケーション隔離環境およびアプリケーションのうちの一つを備える、請求項５３に記載の方法。
【請求項５６】
ステップ（ａ）は、動的ホスト構成プロトコルサーバーから、前記複数のループバックアドレスのうちの少なくとも一つを取得するステップをさらに包含する、請求項５３に記載の方法。
【請求項５７】
ステップ（ａ）は、前記複数のループバックアドレスのうちの少なくとも一つを格納場所から取得するステップをさらに包含する、請求項５３に記載の方法。
【請求項５８】
ステップ（ａ）は、前記複数のループバックアドレスのうちの少なくとも一つをループバックアドレスジェネレータから取得するステップをさらに包含する、請求項５３に記載の方法。
【請求項５９】
ステップ（ｂ）は、前記第一のプログラムのための前記第一のループバックアドレスを該第一のプログラムの確立中に選択するステップをさらに包含する、請求項５３に記載の方法。
【請求項６０】
ステップ（ｂ）は、前記第二のプログラムのための前記第二のループバックアドレスを該第二のプログラムの確立中に選択するステップをさらに包含する、請求項５３に記載の方法。
【請求項６１】
ネットワーク上のコンピュータにアクセスしているユーザーのために、該ユーザーがアクセスしているコンピュータから独立して、一律のネットワークアドレス指定方式を提供するための方法であって、
（ａ）複数の仮想ホスト名を取得するステップと、
（ｂ）該複数の仮想ホスト名から、第一の仮想ホスト名を該ネットワーク経由で第一のコンピュータにアクセスしている第一のユーザーに割り当てるステップと、該第一の仮想ホスト名とは異なる第二の仮想ホスト名を、該ネットワーク経由で該第一のコンピュータにアクセスしている第二のユーザーに取得するステップと、
（ｃ）該第一のユーザーの該第一の仮想ホスト名を、該第一のコンピュータに関連する該第一のユーザーのインターネットプロトコルアドレスと結び付けるステップと、該第二のユーザーの該第二の仮想ホスト名を、該第一のコンピュータに関連する該第二のユーザーのインターネットプロトコルアドレスと結び付けるステップと、
を包含する、方法。
【請求項６２】
ステップ（ａ）は、前記第一のユーザーおよび前記第二のユーザーの各々に固有のインターネットプロトコルアドレスを割り当てるために、複数のインターネットプロトコルアドレスを取得するステップをさらに包含する、請求項６１に記載の方法。
【請求項６３】
ステップ（ａ）は、前記複数のインターネットプロトコルアドレスのうちの少なくとも一つを、動的ホスト構成プロトコルサーバーから取得するステップをさらに包含する、請求項６２に記載の方法。
【請求項６４】
ステップ（ａ）は、前記複数のインターネットプロトコルアドレスのうちの少なくとも一つを、前記第一のユーザーおよび前記第二のユーザーのうちの少なくとも一人のために予約するステップをさらに包含する、請求項６２に記載の方法。
【請求項６５】
ステップ（ｃ）は、少なくとも一つの予約されたインターネットプロトコルアドレスを、前記第一の仮想ホスト名および前記第二の仮想ホスト名のうちの少なくとも一つと結び付けるステップをさらに包含する、請求項６４に記載の方法。
【請求項６６】
ステップ（ｂ）は、前記複数のインターネットプロトコルアドレスから、第一のインターネットプロトコルアドレスを前記第一のユーザーに、そして該第一のインターネットプロトコルアドレスとは異なる第二のインターネットプロトコルアドレスを前記第二のユーザーに割り当てるステップをさらに包含する、請求項６１に記載の方法。
【請求項６７】
ステップ（ａ）は、名前解決サービスで、前記複数の仮想ホスト名のうちの少なくとも一つを、前記第一のユーザーおよび前記第二のユーザーのうちの少なくとも一人に登録するステップをさらに包含する、請求項６１に記載の方法。
【請求項６８】
前記名前解決サービスはドメインネームサービスを備える、請求項６７に記載の方法。
【請求項６９】
前記名前解決サービスはＷｉｎｄｏｗｓ（登録商標）インターネットネーミングサービスを備える、請求項６７に記載の方法。
【請求項７０】
ステップ（ｂ）は、前記第一の仮想ホスト名を第二のコンピュータにアクセスしている前記第一のユーザーに割り当てるステップと、該第一の仮想ホスト名を該第一のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付けるステップと、をさらに包含する、請求項６１に記載の方法。
【請求項７１】
ステップ（ｂ）は、前記第二の仮想ホスト名を第二のコンピュータにアクセスしている前記第二のユーザーに割り当てるステップと、該第二の仮想ホスト名を該第二のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付けるステップと、をさらに包含する、請求項６１に記載の方法。
【請求項７２】
ステップ（ｂ）は、前記第一のユーザーが前記第一のコンピュータにアクセスする間に、第三の仮想ホスト名を第二のコンピュータにアクセスしている該第一のユーザーに割当てるステップと、該第三の仮想ホスト名を、該第一のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付けるステップと、をさらに包含する、請求項６１に記載の方法。
【請求項７３】
ステップ（ｃ）は、前記第二のユーザーが前記第一のコンピュータにアクセスする間に、第四の仮想ホスト名を第二のコンピュータにアクセスしている該第二のユーザーに割当てるステップと、該第四の仮想ホスト名を、該第二のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付けるステップと、をさらに包含する、請求項６１に記載の方法。
【請求項７４】
ステップ（ａ）は、前記複数の仮想ホスト名のうちの少なくとも一つを、前記ユーザーの前記ネットワーク上のアイデンティティを表す文字の一部を使って命名するステップをさらに包含する、請求項６１に記載の方法。
【請求項７５】
ステップ（ａ）は、前記複数の仮想ホスト名のうちの少なくとも一つを、前記ユーザーが前記ネットワーク上の複数のコンピュータに同時にアクセスしている時に、該ユーザーのセッションを特定するサフィックスを使って命名するステップをさらに包含する、請求項６１に記載の方法。
【請求項７６】
ネットワーク上のコンピュータにアクセスしているユーザーのために、ユーザーがアクセスしているコンピュータから独立して、一律のネットワークアドレス指定方式を提供するためのシステムであって、
ネットワーク上のサーバーであって、複数の仮想ホスト名を提供するサーバーと、
該ネットワーク上の第一のコンピュータであって、該複数の仮想ホスト名から、第一の仮想ホスト名を、該第一のコンピュータの第一のユーザーのために取得し、該第一の仮想ホスト名とは異なる第二の仮想ホスト名を、該第一のコンピュータの第二のユーザーのために取得する、コンピュータと、
該第一のユーザーの該第一の仮想ホスト名を、該第一のコンピュータに関連する該第一のユーザーのインターネットプロトコルアドレスと結び付け、該第二のユーザーの該第二の仮想ホスト名を、該第一のコンピュータに関連する該第二のユーザーのインターネットプロトコルアドレスと結び付ける、該第一のコンピュータのネットワークインターフェースと、
を備える、システム。
【請求項７７】
前記サーバーは、前記第一のユーザーおよび前記第二のユーザーの各々に固有のインターネットプロトコルアドレスを割り当てるために、複数のインターネットプロトコルアドレスを取得する、請求項７６に記載のシステム。
【請求項７８】
前記サーバーは、前記複数のインターネットプロトコルアドレスから、第一のインターネットプロトコルアドレスを前記第一のユーザーに、そして該第一のインターネットプロトコルアドレスとは異なる第二のインターネットプロトコルアドレスを前記第二のユーザーに割り当てる、請求項７７に記載のシステム。
【請求項７９】
前記サーバーは、前記複数のインターネットプロトコルアドレスのうちの少なくとも一つを、動的ホスト構成プロトコルサーバーから取得する、請求項７６に記載のシステム。
【請求項８０】
前記サーバーは、前記複数のインターネットプロトコルアドレスのうちの少なくとも一つを、前記第一のユーザーおよび前記第二のユーザーのうちの少なくとも一人のために予約する、請求項７６に記載のシステム。
【請求項８１】
前記ネットワークインターフェースは、少なくとも一つの予約されたインターネットプロトコルアドレスを、前記第一の仮想ホスト名および前記第二の仮想ホスト名のうちの少なくとも一つと結び付ける、請求項８０に記載のシステム。
【請求項８２】
前記システムは、前記複数の仮想ホスト名のうちの少なくとも一つを、前記第一のユーザーおよび前記第二のユーザーのうちの少なくとも一人に登録する名前解決サービスをさらに備える、請求項７６に記載のシステム。
【請求項８３】
前記名前解決サービスはドメインネームサービスを備える、請求項８２に記載のシステム。
【請求項８４】
前記名前解決サービスはＷｉｎｄｏｗｓ（登録商標）インターネットネーミングサービスを備える、請求項８２に記載のシステム。
【請求項８５】
前記ネットワークインターフェースは、前記第一の仮想ホスト名を第二のコンピュータにアクセスしている前記第一のユーザーに割り当て、該第一の仮想ホスト名を該第一のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付ける、請求項７６に記載のシステム。
【請求項８６】
前記ネットワークインターフェースは、前記第二の仮想ホスト名を第二のコンピュータにアクセスしている前記第二のユーザーに割り当て、該第二の仮想ホスト名を該第二のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付ける、請求項７６に記載のシステム。
【請求項８７】
第二のコンピュータのネットワークインターフェースは、前記第一のユーザーが前記第一のコンピュータにアクセスする間に、第三の仮想ホスト名を該第二のコンピュータにアクセスしている該第一のユーザーに割り当て、該第三の仮想ホスト名を該第一のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付ける、請求項７６に記載のシステム。
【請求項８８】
第二のコンピュータのネットワークインターフェースは、前記第二のユーザーが前記第一のコンピュータにアクセスする間に、第四の仮想ホスト名を該第二のコンピュータにアクセスしている該第二のユーザーに割り当て、該第四の仮想ホスト名を該第二のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付ける、請求項７６に記載のシステム。
【請求項８９】
前記複数の仮想ホスト名のうちの少なくとも一つの名前は、前記ユーザーの前記ネットワーク上のアイデンティティを表す文字の一部を備える、請求項７６に記載のシステム。
【請求項９０】
前記複数の仮想ホスト名のうちの少なくとも一つの名前は、前記ユーザーが前記ネットワーク上の複数のコンピュータに同時にアクセスしている時に、該ユーザーのセッションを特定するサフィックスを備える、請求項７６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の引用）
本出願は、米国特許出願第１０／７１１，５８３号、名称「Ｓｙｓｔｅｍｓ  Ａｎｄ  Ｍｅｔｈｏｄｓ  Ｆｏｒ  Ｍａｎａｇｉｎｇ  Ｖｉｒｔｕａｌ  ＩＰ  Ａｄｄｒｅｓｓｅｓ」（２００４年９月２７日出願）および米国特許出願第１０／７１１，５９１号、名称「Ｓｙｓｔｅｍｓ  Ａｎｄ  Ｍｅｔｈｏｄｓ  Ｆｏｒ  Ｖｉｒｔｕａｌ  Ｈｏｓｔ  Ｎａｍｅ  Ｒｏａｍｉｎｇ」（２００４年９月２７日出願）に対する優先権を主張し、該出願のすべてが、本明細書において参考として援用される。
【０００２】
（技術分野）
本発明は、概してネットワーク通信に関する。より詳細には、本発明は、コンピュータ上で作動する一つ以上のプログラムに、固有のネットワーク識別子を割り当てるための、また、ネットワークにアクセスするユーザーに仮想ホスト名を割り当てるための、一律のネットワークアドレス指定方式を提供するための、システムおよび方法に関する。
【背景技術】
【０００３】
標準的なコンピュータシステムは、そのコンピュータシステムに割り当てられた単一のインターネットプロトコル（ＩＰ）アドレスおよび対応するホスト名を使用する。コンピュータ上のいかなるユーザーセッションまたはプログラムも、ＴＣＰ／ＩＰネットワーク等でのネットワーク通信には、コンピュータのＩＰアドレスまたはホスト名を使用する。例えば、クライアントとサーバー間など、コンピュータを行き来するネットワーク通信には、コンピュータのホスト名またはＩＰアドレスがそのコンピュータのネットワーク通信の一部として使われる。サーバーがＭｉｃｒｏｓｏｆｔ  Ｔｅｒｍｉｎａｌ  Ｓｅｒｖｅｒを使用しているようなマルチユーザ環境でも、全てのユーザーまたはマルチユーザサーバーで作動しているプログラムは、そのサーバーに割り当てられた同じホスト名およびＩＰアドレスを共有する。ＩＰアドレスおよびホスト名は、コンピュータまたはマシンに依存しており、そのため、コンピュータに由来するネットワーク通信に付随している。コンピュータが複数のネットワークカードや複数のＩＰアドレスを持つ場合でも、これらのＩＰアドレスおよびホスト名は、そのコンピュータに付随しており、特にコンピュータのユーザーまたはプログラムに付随するものではない。このようにして、そのコンピュータのユーザーおよびプログラムは全て、そのコンピュータに割り当てられた、同じＩＰアドレスまたはホスト名でネットワーク通信する。このようにして、ＩＰアドレスまたはホスト名は、コンピュータに付随するのであって、コンピュータのユーザーに付随するのではない。
【０００４】
アプリケーションの中には、各ユーザーまたはプログラムが固有のＩＰアドレスを使用することを前提とするものもある。例えば、Ｖｏｉｃｅ  Ｏｖｅｒ  ＩＰ（ＶｏＩＰ）アプリケーションやビデオ会議システムは、ユーザーごとに固有のＩＰアドレスが必要である。別の例では、ネットワーク監視およびメインフレームシステムの中には、ユーザー識別のためにＩＰアドレスを使うものもある。しかし、二つのプログラムがコンピュータの同じＩＰアドレスを共有する場合には、これではユーザーを区別する上で問題が生じる。例えば、第一のユーザーがマルチユーザサーバー上でユーザーセッションを開始し、第二のユーザーが同じマルチユーザサーバー上で別のセッションを開始する。第一のユーザーのセッションも第二のユーザーのセッションも、そのマルチユーザサーバーに割り当てられた同じＩＰアドレスを使うことになる。従って、これらのユーザーセッションのネットワーク通信はＩＰアドレスによって区別することができない。
【０００５】
さらに、コンピュータは通常、そのコンピュータのループバックインターフェースを使ったローカルプロセス間通信のための単一のループバックアドレスも割り当てられている。コンピュータのＩＰアドレスのように、このループバックアドレスもそのコンピュータの複数のユーザーによって共有される。一つのアプリケーションがループバックアドレスをコミュニケーション用に使う間は、もう一つのアプリケーションはそれを使えないことがあり得る。例えば、マルチユーザ環境で作動する場合には、コンピュータのルーフバックアドレスを使って、第一のアプリケーションインスタンスが開始される。第二のアプリケーションインスタンスがコンピュータのルーフバックアドレスを使って開始されると、第一のアプリケーションインスタンスは機能しなくなる。
【０００６】
コンピュータに依存したＩＰアドレスに関連するもう一つの問題は、ユーザーがサーバーファーム内を移動する時である。例えば、マルチユーザシステムの中には、一連のロード・バランシング・サーバーを使って、多数の同時ユーザーをサポートするものがある。ユーザーが接続する時、そのユーザーは自動的かつ動的に最も負荷の少ないサーバーに誘導され、負荷を分散する。残念ながら、このことは、そのユーザーが動的に決定されたサーバーに接続するまで、そのユーザーに割当てられるＩＰアドレスがわからないことを意味する。従って、ユーザーがサーバーファーム内をローミングしている時には、システムは同じＩＰアドレスを持つユーザーまたはプログラムに依存することができない。複数ユーザーシステムに関するもう一つの問題は、セキュリティである。ループバックインターフェースは、複数ユーザーシステムの全てのユーザーによって共有されており、通常、ループバックインターフェースへの複数ユーザーのアクセスを管理するためのセキュリティ保護は存在しない。例えば、あるアプリケーションが複数ユーザーシステムのループバックアドレス上でＴＣＰ／ＩＰ通信を行う場には、セキュリティ攻撃者は複数ユーザーによって共有されるループバックインターフェース上の通信の妨害を企て得る。
【０００７】
あるネットワーク上でホスト名解決を行う際には、またはネットワークで使われるホスト名を検索するためには、そのネットワーク中のコンピュータのホスト名およびＩＰアドレスのみが発見される。これらのホスト名から、コンピュータ上のユーザーまたはユーザーセッションは容易には識別され得ない。さらに、あるユーザーはそれぞれが異なるホスト名を持つ異なる複数のコンピュータから、あるいは同じホスト名を持つ同じコンピュータ上の複数ユーザーセッションからネットワークにアクセスし得る。そのため、標準的なネットワークアドレス指定方式では、ホスト名によってユーザーを有効に検索し、どんなユーザーがネットワークにアクセスしているか、そしていくつのセッションからか、またはどのコンピュータからかを判断することができない。
【０００８】
また、アプリケーションの中には、各ユーザーまたはプログラムが固有のホスト名を使うことを前提にしているものがある。例えば、ネットワーク監視およびメインフレームシステムの中には、ホスト名を使ってユーザーを識別するものがある。しかし、もし同じコンピュータに二人のユーザーがいると、彼らはそのコンピュータに割り当てられた同じホスト名を共有することになる。別のケースでは、ユーザーはサーバーファームの中を移動するかもしれず、従って常に同じコンピュータからネットワークにアクセスするとは限らない。例えば、マルチユーザシステムの中には、一連のロード・バランシング・サーバーを使って、多数の同時ユーザーをサポートするものがある。ユーザーが接続する時には、そのユーザーは自動的かつ動的に最も負荷の少ないサーバーに誘導され、負荷を分散する。残念ながら、このことは、そのユーザーが動的に決定されたサーバーに接続するまで、そのユーザーに割り当てられるコンピュータのＩＰアドレスおよびホスト名がわからないことを意味する。従って、ユーザーがサーバーファーム内をローミングしている時には、システムは同じＩＰアドレスを持つユーザーまたはプログラムに依存することができない。
【０００９】
複数ユーザーシステムに関するもう一つの問題は、セキュリティである。ループバックインターフェースは、複数ユーザーシステムの全てのユーザーによって共有されており、通常、ループバックインターフェースへの複数ユーザーのアクセスを管理するためのセキュリティ保護は存在しない。例えば、あるアプリケーションが複数ユーザーシステムのループバックアドレス上でＴＣＰ／ＩＰ通信を行う場合には、セキュリティ攻撃者が複数ユーザーによって共有されるループバックインターフェース上の通信の妨害を企て得る。このためホスト名またはＩＰアドレスをユーザーと関連づけることがより難しくなる。
【００１０】
同様の問題は、ＩＰＸなど、ネットワーク識別子がコンピュータに依存している他の種類のネットワークでも起こり得る。従って、単一のコンピュータまたはマルチユーザシステムで作動している複数のプログラムまたはユーザーに、固有のネットワーク識別子を割り当てる技術を提供することが望ましい。コンピュータシステムで作動している複数のユーザーまたはプログラムに、固有のネットワーク識別子を割り当てるシステムおよび方法が必要である。また、ネットワークをローミングしたり、マルチユーザシステムにアクセスしたり、複数ユーザーセッションを開始したりするユーザーに、一律のネットワークアドレス指定方式を提供することが望ましい。ユーザーがネットワークにアクセスするコンピュータシステムのＩＰアドレスおよびホスト名から独立して、ユーザーのために仮想ホスト名を仮想ＩＰアドレスに割当てるシステムおよび方法が必要である。
【発明の開示】
【課題を解決するための手段】
【００１１】
（発明の要旨）
本発明は、コンピュータで作動している一つ以上のプログラム、ユーザーまたはユーザーセッションのネットワーク通信のために、固有のネットワーク識別子を提供するためのシステムおよび方法に関するものである。プログラムとはアプリケーション、アプリケーション隔離環境、またはマルチユーザ環境がホストするユーザーセッション、またはその他のコンピュータプログラム等である。監視アプリケーション、メインフレーム、その他のアプリケーションまたはシステムは、ユーザーまたはプログラムが、固有のネットワーク識別子、すなわちホスト名またはＩＰアドレスを所有していることに依存している。本発明は、プログラム、ユーザーまたはユーザーセッションに、ネットワーク通信のためにコンピュータに割り当てられるものとは異なる、固有のネットワーク識別子を提供する。それにより、同一のコンピュータ上の複数のユーザーが、互いに異なる、またコンピュータとも異なる、固有のネットワーク識別子でネットワーク通信を行うことができる。さらに、本発明は、コンピュータのループバックインターフェースを使ったプロセス間通信のために、一つ以上のプログラム、ユーザーまたはユーザーセッションに固有のループバックアドレスを提供する。それにより、複数のユーザーおよびプログラムが、ループパックインターフェースを同じコンピュータ上で同時に使うことができる。  要約すると、本発明は、コンピュータのＩＰアドレスおよびホスト名から独立した、固有のＩＰアドレスおよび／またはホスト名をコンピュータ上に提供する。
【００１２】
さらに、本発明は、ユーザーがネットワークを移動したり、複数セッションを開始したりする際、ユーザーまたはユーザーセッションに仮想ホスト名を割り当てる、一律のネットワークアドレス指定方式を提供するためのシステムおよび方法に関するものである。本発明は、プログラム、ユーザーまたはユーザーセッションに、ネットワーク通信のためにコンピュータに割り当てられるものとは異なる、固有の仮想インターネットプロトコル（ＩＰ）アドレスを提供する。それにより、同一のコンピュータ上の複数のユーザーが、互いに異なる、またコンピュータとも異なる、固有のＩＰアドレスでネットワーク通信を行うことができる。さらに、仮想ホスト名または一連の仮想ホスト名を、特定のユーザーに付随させることができ、ユーザーまたはユーザーのプログラムに割り当てられる仮想ＩＰアドレスに関係なく、ユーザーに付随させることもできる。そして、本発明は、仮想ホスト名をユーザーの仮想ＩＰアドレスと関連させることで、仮想ホスト名が一律の方法でユーザーを識別する。要約すると、本発明は、コンピュータのホスト名から独立し、ユーザーとともにネットワークを移動する、ユーザーに付随する仮想ホスト名を提供する。
【００１３】
一局面では、本発明は、複数のネットワーク識別子を持つコンピュータ上で呼び出される各プログラムに、固有のネットワーク識別子を割り当てるシステムに関するものである。このコンピュータはインターフェース機構とネットワーク通信インターフェースで構成される。インターフェース機構は、複数のネットワーク識別子から、コンピュータで呼び出された第一のプログラムに対して、第一のネットワーク識別子を選択し、コンピュータで呼び出された第二のプログラムに対して、第一のネットワーク識別子とは異なる、第二のネットワーク識別子を選択する。インターフェース機構が、第一のネットワーク識別子と第一のプログラムを結び付け、第二のネットワーク識別子と第二のプログラムを結び付ける。ネットワーク通信インターフェースは、インターフェース機構と通信して、第一のネットワーク識別子を第一のプログラムのネットワーク通信で送信し、第二のネットワーク識別子を第二のプログラムのネットワーク通信で送信する。
【００１４】
一実施形態では、ネットワーク識別子は、インターネットプロトコルアドレスを備え、別の実施形態では、ホスト名を備える。一実施形態では、第一のプログラムと第二のプログラムのうち一つは、コンピュータがホストするユーザーセッションを備える。別の実施形態では、第一のプログラムと第二のプログラムのうち一つは、アプリケーション隔離環境とアプリケーションのうちの一つを備える。
【００１５】
一実施形態では、コンピュータは、サーバーから複数のネットワーク識別子のうちの少なくとも一つを取得する。サーバーは、動的ホスト構成プロトコルサーバーで構成される。別の実施形態では、コンピュータは、格納先から複数のネットワーク識別子のうちの少なくとも一つを取得する。別の実施形態では、コンピュータは、ネットワーク識別子ジェネレータから複数のネットワーク識別子のうちの少なくとも一つを取得する。さらに、別の実施形態では、複数のネットワーク識別子のうちの少なくとも一つがコンピュータのユーザーに割り当てられる。
【００１６】
さらに一実施形態では、インターフェース機構は、第一のプログラムの設定中に第一のプログラム用の第一のネットワーク識別子を選択する。さらにもう一つの実施形態では、インターフェース機構は、第二のプログラムの設定中に第二のプログラム用の第二のネットワーク識別子を選択する。一実施形態では、コンピュータは第一のユーザーセッションと第二のユーザーセッションを同時にホストする。別の実施形態では、コンピュータは第一のユーザーセッションをホストした後、第二のユーザーセッションをホストする。
【００１７】
一実施形態では、インターフェース機構は、第一のプログラムの名前解決要求に応えて第一のプログラムの第一のネットワーク識別子を提供し、第二のプログラムの名前解決要求に応えて第二のプログラムの第二のネットワーク識別子を提供する。別の実施形態では、インターフェース機構は、第一のＴＣＰスタックで構成される。さらにもう一つの実施形態では、インターフェース機構は、第二のＴＣＰスタックで構成される。一実施形態では、インターフェース機構は、ネットワーク通信インターフェースとの通信用のソケットライブラリで構成される。ソケットライブラリは、ＷｉｎＳｏｃｋアプリケーションプログラミングインターフェースで構成される。一実施形態では、インターフェース機構は、ネットワーク通信インターフェースとのソケット通信のために、第一のネットワーク識別子を第一のプログラムに結び付ける。さらに別の実施形態では、インターフェース機構は、ネットワーク通信インターフェースとのソケット通信のために、第二のネットワーク識別子を第二のプログラムに結び付ける。さらに別の実施形態では、インターフェース機構は、ネットワークパケット操作フィルタで構成される。
【００１８】
別の局面では、本発明は、コンピュータ上で呼び出される各プログラムに、固有のループバックアドレスを割り当てるシステムに関するものである。このシステムは、複数のループバックアドレスを取得するコンピュータで構成される。このコンピュータはインターフェース機構とループバックインターフェースで構成される。インターフェース機構は、複数のループバックアドレスから、コンピュータで呼び出された第一のプログラムに対して、第一のループバックアドレスを選択し、コンピュータで呼び出された第二のプログラムに対して、第一のループバックアドレスとは異なる、第二のループバックアドレスを選択する。インターフェース機構が、第一のループバックアドレスを第一のプログラムのローカルホストアドレスとして関連づけ、第二のループバックアドレスを第二のプログラムのローカルホストアドレスとして関連づける。ループバックインターフェースは、インターフェース機構と通信して、第一のループバックアドレスを第一のプログラムのプロセス間通信で送信し、第二のループバックアドレスを第二のプログラムのプロセス間通信で送信する。
【００１９】
一実施形態では、第一のプログラムと第二のプログラムのうちの一つは、コンピュータがホストするユーザーセッショを備える。別の実施形態では、第一のプログラムと第二のプログラムのうち一つは、アプリケーション隔離環境とアプリケーションのうちの一つを備える。
【００２０】
一実施形態では、インターフェース機構は、第一のプログラムの設定中に第一のプログラム用の第一のループバックアドレスを選択する。別の実施形態では、インターフェース機構は、第二のプログラムの設定中に第二のプログラム用の第二のループバックアドレスを選択する。
【００２１】
さらなる実施形態では、コンピュータは、サーバーから複数のループバックアドレスのうちの少なくとも一つを取得する。別の実施形態では、コンピュータは、格納先から複数のループバックアドレスのうちの少なくとも一つを取得する。さらに別の実施形態では、システムは、複数のループバックアドレスのうちの少なくとも一つを生成する、ループバックアドレスジェネレータを備える。
【００２２】
別の局面では、本発明は、コンピュータによって呼び出される各プログラムに、固有のネットワーク識別子を割り当てる方法に関するものである。この方法は、複数のネットワーク識別子を取得し、複数のネットワーク識別子から、コンピュータで呼び出された第一のプログラムに対して、第一のネットワーク識別子を選択し、コンピュータで呼び出された第二のプログラムに対して、第一のネットワーク識別子とは異なる、第二のネットワーク識別子を選択するステップを含む。この方法は、第一のネットワーク識別子と第一のプログラムのネットワーク通信を結び付け、第二のネットワーク識別子と第二のプログラムのネットワーク通信を結び付ける。この方法は、第一のネットワーク識別子を第一のプログラムのネットワーク通信で送信し、第二のネットワーク識別子を第二のプログラムのネットワーク通信で送信する。
【００２３】
この方法の一実施形態では、ネットワーク識別子は、インターネットプロトコルアドレスを備え、別の実施形態では、ホスト名を備える。一実施形態では、第一のプログラムと第二のプログラムのうち一つは、コンピュータがホストするユーザーセッションを備える。別の実施形態では、第一のプログラムまたは第二のプログラムは、アプリケーション隔離環境またはアプリケーションを備え得る。
【００２４】
一実施形態では、この方法はさらに、サーバーから少なくとも一つのネットワーク識別子を取得するコンピュータを含む。もう一つの実施形態では、コンピュータは、動的ホスト構成プロトコルサーバーから少なくとも一つのネットワーク識別子を取得する。コンピュータは、格納先またはネットワーク識別子ジェネレータからネットワーク識別子の一つを取得し得る。さらに、この方法は、少なくとも一つのネットワーク識別子をコンピュータのユーザーに割り当てることを含む。
【００２５】
一実施形態では、この方法はさらに、第一のプログラムの設定中に第一のプログラム用の第一のネットワーク識別子を選択し、第二のプログラムの設定中に第二のプログラム用の第二のネットワーク識別子を選択することを含む。
【００２６】
一実施形態では、この方法は、第一のユーザーセッションと第二のユーザーセッションを同時にホストするコンピュータを含む。別の実施形態では、この方法は、第一のユーザーセッションをホストした後に、第二のユーザーセッションをホストするコンピュータを含む。
【００２７】
一実施形態では、この方法は、第一のプログラムの名前解決要求に応えて第一のプログラムの第一のネットワーク識別子を提供し、第二のプログラムの名前解決要求に応えて第二のプログラムの第二のネットワーク識別子を提供する。    
【００２８】
一実施形態では、この方法はさらに、ネットワーク通信に第一のＴＣＰスタックを使用することを含む。別の実施形態では、この方法は、第二のＴＣＰスタックも使用する。この方法は、ネットワーク通信インターフェースとのインターフェースにソケットライブラリを使用し、ソケットライブラリは、ＷｉｎＳｏｃｋアプリケーションプログラミングインターフェースを備え得る。この方法はさらに、第一のネットワーク識別子を、ソケットライブラリを使うネットワーク通信用の第一のプログラムに結び付けることを含み得、また、さらに、第二のネットワーク識別子を、ソケットライブラリを使うネットワーク通信用の第二のプログラムに結び付けることを含み得る。さらにもう一つの実施形態では、この方法は、ネットワークパケット操作フィルタを使用して、ネットワーク通信インターフェースとインターフェースすることを含み得る。
【００２９】
一局面では、本発明は、ユーザーがアクセスしているコンピュータから独立して、ユーザーがあるネットワーク上のあるコンピュータにアクセスするための一律のネットワークアドレス指定方式を提供する方法に関するものである。この方法は、複数の仮想ホスト名を取得するステップ、そして、複数の仮想ホスト名から第一の仮想ホスト名を、ネットワーク経由で第一のコンピュータにアクセスする第一のユーザーにり当て、そして、第一の仮想ホスト名とは異なる第二の仮想ホスト名を、ネットワーク経由で第一のコンピュータにアクセスする第二のユーザーに割り当てるステップを含む。この方法はさらに、第一のユーザーの第一の仮想ホスト名と第一のコンピュータに関連する第一のユーザーのインターネットプロトコルアドレスを結び付けること、および、第二のユーザーの第二の仮想ホスト名と第一のコンピュータに関連する第二のユーザーのインターネットプロトコルアドレスを結び付けることを含む。
【００３０】
一実施形態では、この方法はさらに、各ユーザーに固有のインターネットプロトコルアドレスを割り当てるための複数のインターネットプロトコルアドレスを取得するステップを含む。別の実施形態では、この方法はさらに、複数のインターネットプロトコルアドレスのうち少なくとも一つを動的ホスト構成プロトコルサーバーから取得することを含む。この方法は、複数のインターネットプロトコルアドレスのうち少なくとも一つを、第一のユーザーと第二のユーザーのうち少なくとも一人のために予約することも含み得る。さらに一実施形態では、この方法は、少なくとも一つの予約されたインターネットプロトコルアドレスと第一の仮想ホスト名または第二の仮想ホスト名を結び付けることを含む。
【００３１】
一実施形態では、この方法はさらに、複数のインターネットプロトコルアドレスから、第一のインターネットプロトコルアドレスを第一のユーザーに、第一のインターネットプロトコルアドレスとは異なる、第二のインターネットプロトコルアドレスを第二のユーザーにり当てることを含む。別の実施形態では、この方法はさらに、名前解決サービスで、複数の仮想ホスト名のうち少なくとも一つを第一のユーザーと第二のユーザーのうち少なくとも一人に登録することを含む。一実施形態では、名前解決サービスは、ドメインネームサービスを備え、別の実施形態では、それはＷｉｎｄｏｗｓ（登録商標）インターネットネーミングサービスを備える。
【００３２】
この方法のある実施形態では、この方法はさらに、第一の仮想ホスト名を第二のコンピュータにアクセスする第一のユーザーに割り当て、第一の仮想ホスト名と第一のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付けることを含む。
【００３３】
別の実施形態では、この方法はさらに、第二の仮想ホスト名を第二のコンピュータにアクセスする第二のユーザーに割り当て、第二の仮想ホスト名と第二のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付けることを含む。この方法はまた、第一のユーザーが第一のコンピュータにアクセスしている間に、第三の仮想ホスト名を第二のコンピュータにアクセスする第一のユーザーに割り当て、第三の仮想ホスト名と第一のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付けることも含み得る。
【００３４】
別の実施形態では、この方法は、第二のユーザーが第一のコンピュータにアクセスしている間に、第四の仮想ホスト名を第二のコンピュータにアクセスする第二のユーザーに割り当て、第四の仮想ホスト名と第二のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付ける。
【００３５】
一実施形態では、この方法は、一つ以上の仮想ホスト名を、ユーザーのネットワーク上のアイデンティティを表す文字の一部を使って命名することを含み得る。別の実施形態では、この方法は、少なくとも一つの仮想ホスト名を、ユーザーがネットワーク上の複数のコンピュータに同時にアクセスしている時にユーザーのセッションを識別するサフィックスを使って命名し得る。
【００３６】
別の局面では、本発明は、ユーザーがアクセスしているコンピュータから独立して、ユーザーがあるネットワーク上のあるコンピュータにアクセスするための一律のネットワークアドレス指定方式を提供するシステムに関するものである。このシステムは、一つ以上の仮想ホスト名とネットワークインターフェースを持つ第一のコンピュータを提供する、ネットワーク上のサーバーを備える。ネットワーク上の第一のコンピュータは、一つ以上の仮想ホスト名から第一の仮想ホスト名を、第一のコンピュータの第一のユーザーのために、そして、第一の仮想ホスト名とは異なる第二の仮想ホスト名を、第一のコンピュータの第二のユーザーのために取得する。第一のコンピュータのネットワークインターフェースは、第一のユーザーの第一の仮想ホスト名と第一のユーザーに関連する第一のコンピュータのインターネットプロトコルアドレスを結び付け、第二のユーザーの第二の仮想ホスト名と第二のユーザーに関連する第一のコンピュータのインターネットプロトコルアドレスを結び付ける。
【００３７】
このシステムの一実施形態では、サーバーは、各ユーザーに固有のインターネットプロトコルアドレスを割り当てるための複数のインターネットプロトコルアドレスを取得する。サーバーは、インターネットプロトコルアドレスのうち少なくとも一つを動的ホスト構成プロトコルサーバーから取得し得る。さらなる実施形態では、サーバーは、インターネットプロトコルアドレスのうち少なくとも一つを、ユーザーの少なくとも一人のために予約する。
【００３８】
別の実施形態では、サーバーは、インターネットプロトコルアドレスから、第一のインターネットプロトコルアドレスを第一のユーザーのために、そして、第一のインターネットプロトコルアドレスとは異なる、第二のインターネットプロトコルアドレスを第二のユーザーのために割り当てる。一実施形態では、ネットワークインターフェースは、少なくとも一つの予約されたインターネットプロトコルアドレスと第一の仮想ホスト名および第二の仮想ホスト名のうち少なくとも一つを結び付ける。一実施形態では、このシステムはさらに、複数の仮想ホスト名のうち少なくとも一つを、ユーザーの少なくとも一人に登録するための名前解決サービスを備える。名前解決サービスは、ドメインネームサービスまたはＷｉｎｄｏｗｓ（登録商標）インターネットネーミングサービスを備え得る。
【００３９】
別のシステムの実施形態では、ネットワークインターフェースは、第一の仮想ホスト名を第二のコンピュータにアクセスする第一のユーザーに割り当て、第一の仮想ホスト名と第一のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付ける。さらなる実施形態では、ネットワークインターフェースは、第二の仮想ホスト名を第二のコンピュータにアクセスする第二のユーザーに割り当て、第二の仮想ホスト名と第二のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付ける。さらに別の実施形態では、第二のコンピュータのネットワークインターフェースは、第一のユーザーが第一のコンピュータにアクセスしている間に、第三の仮想ホスト名を第二のコンピュータにアクセスする第一のユーザーに割り当て、第三の仮想ホスト名と第一のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付ける。また、このシステムはまた、第二のコンピュータのネットワークインターフェースが、第二のユーザーが第一のコンピュータにアクセスしている間に、第四の仮想ホスト名を第二のコンピュータにアクセスする第二のユーザーに割り当て、第四の仮想ホスト名と第二のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付けることも含み得る。
【００４０】
このシステムの一実施形態では、仮想ホスト名のうち少なくとも一つの名称は、ユーザーのネットワーク上のアイデンティティを表す文字の一部を備える。別のシステムの実施形態では、仮想ホスト名のうち少なくとも一つの名称は、ユーザーがネットワーク上の複数のコンピュータに同時にアクセスしている時にユーザーのセッションを識別するサフィックスを備える。
【発明を実施するための最良の形態】
【００４１】
本発明の前述の、およびその他の、目的、局面、特徴、および利点は、以下の記載内容を添付図面と併せて参照することによって、より明らかになり、より良く理解され得る。
【００４２】
本発明の一部の例示的な実施形態について以下に説明する。だだし、本発明はこれらの実施形態に限定されるものではなく、むしろ、その意図としては、本明細書に明細されるものへの追加および改良もまた本発明の範囲に含まれる、ということを明記しておく。さらに、本明細書で説明される様々な実施形態の特徴は、相互に排他的なものではなく、様々な組み合わせおよび順列が、たとえそのような組み合わせまたは順列が本明細書に明示されていなくても、本発明の精神と範囲から逸脱することなく存在し得ることが、理解されるべきである。
【００４３】
本発明の例示的な実施形態は、コンピュータで作動する、一つ以上のプログラム、ユーザー、またはユーザーセッションのネットワーク通信のための固有のネットワーク識別子の割り当てを行う。本発明はまた、コンピュータのループバックインターフェースを使ったプロセス間通信のための、一つ以上のプログラム、ユーザー、またはユーザーセッションに、固有のループバックアドレスの割り当ても行う。さらに、本発明の一部の実施形態は、ユーザーがネットワーク上のコンピュータを移動する場合、あるいは複数のユーザーセッションを立ちあげる場合に、ユーザーに付随するホスト名および／またはインターネットプロトコルアドレスを、一つ以上のプログラム、ユーザー、またはユーザーセッションに提供するための、一律のアドレス指定方式を提供する。
【００４４】
図１Ａおよび図１Ｂは、本発明の一実施形態を実施するのに役立つコンピュータ機器１００のブロック図を表している。図１Ａおよび図１Ｂに示されるように、各コンピュータ機器１００には、中央演算処理装置１０２、主記憶装置１０４が含まれる。図１Ａに示されるように、標準的なコンピュータ機器には、視覚的表示装置１２４、キーボード１２６および／またはマウス等のポインティングデバイス１２７が含まれ得る。各コンピュータ機器１００には、一つ以上の入力／出力装置１３０ａ〜１３０ｂ（一般に参照番号１３０を使って記載される）、  そして中央演算処理装置１０２と通信しているキャッシュメモリ１４０のような、追加的、随意的要素も含まれ得る。
【００４５】
中央演算処理装置１０２は、主記憶装置１０４からフェッチされる命令に応答し、処理する論理回路網である。多くの実施形態では、中央演算処理装置はマイクロプロセッサによって提供される。例えば、８０８８、８０２８６、８０３８６、８０４８６、ペンティアム（登録商標）、ペンティアム（登録商標）・プロ、ペンティアム（登録商標）ＩＩ、セレロン、またはジオンのプロセッサ（これらは全てカリフォルニア州マウンテンビューのインテル社製）；６８０００、６８０１０、６８０２０、６８０３０、６８０４０、パワーＰＣ６０１、パワーＰＣ６０４、パワーＰＣ６０４ｅ、ＭＰＣ６０３ｅ、ＭＰＣ６０３ｅｉ、ＭＰＣ６０３ｅｖ、ＭＰＣ６０３ｒ、ＭＰＣ６０３ｐ、ＭＰＣ７４０、ＭＰＣ７４５、ＭＰＣ７５０、ＭＰＣ７５５、ＭＰＣ７４００、ＭＰＣ７４１０、ＭＰＣ７４４１、ＭＰＣ７４４５、ＭＰＣ７４４７、ＭＰＣ７４５０、ＭＰＣ７４５１、ＭＰＣ７４５５、またはＭＰＣ７４５７のプロセッサ（これらは全てイリノイ州ショウンバーグのモトローラ社製）；クルーソーＴＭ５８００、クルーソーＴＭ５６００、クルーソーＴＭ５５００、クルーソーＴＭ５４００、イフィシオンＴＭ８６００、イフィシオンＴＭ８３００、またはイフィシオンＴＭ８６２０のプロセッサ（カリフォルニア州サンタクララのトランスメタ社製）；ＲＳ／６０００プロセッサ、ＲＳ６４、ＲＳ６４ＩＩ、Ｐ２ＳＣ、ＰＯＷＥＲ３、ＲＳ６４ＩＩＩ、ＰＯＷＥＲ３−ＩＩ、ＲＳ６４ＩＶ、ＰＯＷＥＲ４、ＰＯＷＥＲ４＋、ＰＯＷＥＲ５、またはＰＯＷＥＲ６のプロセッサ（これらは全てニューヨーク州ホワイトプレーンズのＩＢＭ社製）、ＡＭＤオプテロン、ＡＭＤアスロン６４ＦＸ、ＡＭＤアスロン、またはＡＭＤデュロンのプロセッサ（カリフォルニア州サニーベールのアドバンスト・マイクロ・デバイシーズ社製）等である。コンピュータ１００は、上記のいずれかのプロセッサ、または本明細書に記載の通りの動作が可能な、任意のその他の利用可能なプロセッサに基づき得る。
【００４６】
主記憶装置１０４は、データを格納することができ、任意の格納場所にもマイクロプロセッサ１０２が直接アクセス可能な、一つ以上のメモリーチップで、例えば、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、バーストＳＲＡＭまたはシンクバーストＳＲＡＭ（ＢＳＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、ファースト・ページ・モードＤＲＡＭ（ＦＰＭ  ＤＲＡＭ）、エンハンストＤＲＡＭ（ＥＤＲＡＭ）、エクステンデッド・データ・アウトプットＲＡＭ（ＥＤＯ  ＲＡＭ）、エクステンデッド・データ・アウトプットＤＲＡＭ（ＥＤＯ  ＤＲＡＭ）、バースト・エクステンデッド・データ・アウトプットＤＲＡＭ（ＢＥＤＯ  ＤＲＡＭ）、エンハンストＤＲＡＭ（ＥＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ＪＥＤＥＣ  ＳＲＡＭ、ＰＣ１００  ＳＤＲＡＭ、ダブル・データ・レートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、エンハンストＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）、ダイレクト・ラムバスＤＲＡＭ（ＤＲＤＲＡＭ）、強誘電体ＲＡＭ（ＦＲＡＭ）等である。メインメモリ１０４は、上記の任意のメモリーチップ、または本明細書に記載の通りの動作が可能な、任意のその他の利用可能なメモリーチップに基づき得る。図１Ｂに示される実施形態では、プロセッサ１０２は、システムバス１５０を通してメインメモリ１０４と通信する（以下により詳しく説明される）。図１Ｂは、プロセッサが、メモリーポート１０３を通して主記憶装置１０４と直接通信する、コンピュータ１００の一実施形態を表している。例えば、図１Ｂでは、主記憶装置１０４はＤＲＤＲＡＭであり得る。
【００４７】
図１Ａおよび図１Ｂは、メインプロセッサ１０２が、時にバックサイドバスと呼ばれるセカンダリーバスを通してキャッシュメモリ１４０と直接通信する、実施形態を表している。他の実施形態では、メインプロセッサ１０２は、システムバス１５０を使って、キャッシュメモリ１４０と通信する。キャッシュメモリ１４０は、通常、メインメモリ１０４より応答時間が早く、通常、ＳＲＡＭ、ＢＳＲＡＭ、またはＥＤＲＡＭによって提供される。
【００４８】
図１Ａに示される実施形態では、プロセッサ１０２は、ローカルシステムバス１５０を通して、様々なＩ／Ｏ（入力／出力）装置１３０と通信する。中央演算処理装置１０２をいずれかのＩ／Ｏ装置１３０と接続するために、様々なバスが使用され得、それには、ＶＥＳＡ  ＶＬバス、ＩＳＡバス、ＥＩＳＡバス、マイクロチャンネルアーキテクチャ（ＭＣＡ）バス、ＰＣＩバス、ＰＣＩ−Ｘバス、ＰＣＩ−エクスプレスバス、またはニューバス等が含まれる。Ｉ／Ｏ装置がビデオディスプレイ１２４である実施形態については、プロセッサ１０２は、アドバンスト・グラフィックス・ポート（ＡＧＰ）を使って、ディスプレイ１２４と通信し得る。図１Ｂは、メインプロセッサ１０２が、ハイパートランスポート、ラピッドＩ／Ｏ、またはインフィニバンドを通してＩ／Ｏ装置１３０ｂと直接通信する、コンピュータ１００の一実施形態を表している。図１Ｂはまた、ローカルバスと直接通信が混在する一実施形態も表している。すなわち、プロセッサ１０２はＩ／Ｏ装置１３０ｂと直接通信しながら、ローカル・インターコネクト・バスを使ってＩ／Ｏ装置１３０ａと通信する。
【００４９】
コンピュータ機器１００は、任意の適切なインストール装置１１６をサポートし得る。それは、例えば、３．５インチ等のフロッピー（登録商標）ディスク、５．２５インチディスク、またはＺＩＰディスク等を受け入れるフロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭドライブ、ＣＤ−Ｒ／ＲＷドライブ、ＤＶＤ−ＲＯＭドライブ、様々なフォーマットのテープドライブ、ＵＳＢ装置、ハードドライブ、その他、本発明に関連するソフトウェア１２０のようなソフトウェアやプログラムのインストールに適した任意の他の装置である。
【００５０】
コンピュータ機器１００はさらに、オペレーティングシステムその他の関連ソフトを記憶し、本発明に関連するプログラム１２０等のアプリケーションソフトウェアプログラムを記憶するための記憶装置１２８、例えば、一つ以上のハードディスクドライブまたはＲＡＩＤ（ｒｅｄｕｎｄａｎｔ  ａｒｒａｙｓ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ）を備え得る。オプションとして、インストール装置１１８のいずれかを、記憶装置１２８として使うこともできる。また、オペレーティングシステムおよび本発明のソフトウェアプログラム１２０は、起動用媒体、例えば、ＧＮＵ／Ｌｉｎｕｘディストリビューションとしてｋｎｏｐｐｉｘ．ｎｅｔから入手できるＧＮＵ／ＬｉｎｕｘのためのブータブルＣＤ、ＫＮＯＰＰＩＸ（登録商標）等のブータブルＣＤから実行され得る。
【００５１】
さらに、コンピュータ機器１００は、標準の電話回線、ＬＡＮまたはＷＡＮリンク（例えば、８０２．１１、Ｔ１、Ｔ３、５６ｋｂ、Ｘ．２５）、ブロードバンド接続（例えば、ＩＳＤＮ、フレームリレー、ＡＴＭ）、無線接続、または以上のいずれかまたは全ての組み合わせを含む（ただし、必ずしもこれらに限定されない）様々な接続を通じた、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、またはインターネットとのインターフェースのためのネットワークインターフェース１１８を含み得る。ネットワークインターフェース１１８は、内蔵ネットワークアダプター、ネットワークインターフェースカード、ＰＣＭＣＩＡネットワークカード、カードバスネットワークアダプター、無線ネットワークアダプター、ＵＳＢネットワークアダプター、モデム、または、コンピュータ機器１００と、通信ができ、本明細書に記載の通りの動作の実行が可能なネットワークとをインターフェースするのに適した、その他の装置を備え得る。
【００５２】
コンピュータ機器１００には、多様なＩ／Ｏ装置１３０ａ〜１３０ｎが存在し得る。入力装置には、キーボード、マウス、トラックパッド、トラックボール、マイクロフォン、ドローイングタブレットが含まれる。出力装置には、ビデオディスプレイ、スピーカー、インクジェットプリンタ、レーザープリンタ、昇華型プリンタが含まれる。Ｉ／Ｏ装置は、図１Ａに示されるように、Ｉ／Ｏコントローラ１２３によって制御され得る。Ｉ／Ｏコントローラは、一つ以上のＩ／Ｏ装置、例えばキーボード１２６およびポインティングデバイス１２７（例えばマウスまたは光学ペン）を制御し得る。さらに、Ｉ／Ｏ装置は、格納１２８および／またはインストール媒体１１８もコンピュータ機器１００に提供し得る。さらに別の実施形態では、コンピュータ機器１００は、カリフォルニア州ロスアラミトスのツインテク・インダストリー社製のＵＳＢフラッシュドライブラインの装置のような携帯用ＵＳＢ記憶装置を受け入れるためのＵＳＢ接続を提供し得る。
【００５３】
さらなる実施形態では、Ｉ／Ｏ装置１３０は、システムバス１５０と外部の通信バス、例えば、ＵＳＢバス、アップルデスクトップバス、ＲＳ−２３２シリアルコネクション、ＳＣＳＩバス、ファイヤーワイヤーバス、ファイヤーワイヤー８００バス、イーサネット（登録商標）バス、アップルトークバス、ギガビットイーサネット（登録商標）バス、非同期転送モードバス、ＨＩＰＰＩバス、スーパーＨＩＰＰＩバス、シリアルプラスバス、ＳＣＩ／ＬＡＭＰバス、ファイバーチャンネルバス、シリアルアタッチド小型コンピュータ用周辺機器インターフェース（ＳＣＳＩ）バス等、との間のブリッジ１７０であり得る。
【００５４】
図１Ａおよび１Ｂに表されるようなコンピュータ機器１００は、通常、オペレーティングシステムの制御のもとで動作し、オペレーティングシステムは、タスクのスケジューリングおよびシステム資源へのアクセスを制御する。コンピュータ機器１００は、例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）のオペレーティングシステムのいずれかのバージョン、ＵＮＩＸ（登録商標）およびＬｉｎｕｘオペレーティングシステムの様々なリリース、マッキントッシュコンピュータ用のＭａｃＯＳ（登録商標）のいずれかのバージョン、任意の組み込みオペレーティングシステム、任意のリアルタイムオペレーティングシステム、任意のオープンソースオペレーティングシステム、任意の専用オペレーティングシステム、モバイルコンピュータ機器用の任意のオペレーティングシステム、または、コンピュータ機器での作動が可能で、本明細書に記載の通りの動作の実行が可能な、任意のその他のオペレーティングシステム等、任意のオペレーティングシステムでも実行することができる。標準的なオペレーティングシステムに含まれるのは、ＷＩＮＤＯＷＳ（登録商標）  ３．ｘ、ＷＩＮＤＯＷＳ（登録商標）  ９５、ＷＩＮＤＯＷＳ（登録商標）  ９８、ＷＩＮＤＯＷＳ（登録商標）  ２０００、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ３．５１、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ４．０、ＷＩＮＤＯＷＳ（登録商標）  ＣＥ、そしてＷＩＮＤＯＷＳ（登録商標）  ＸＰ（これらは全て、ワシントン州レドモンドのマイクロソフト社製）；ＭａｃＯＳ（カリフォルニア州クパチーノのアップルコンピュータ社製）；ＯＳ／２（ニューヨーク州アーモンクのＩＢＭ社製）；そしてＬｉｎｕｘ（ユタ州ソルトレークシティのカルデラ社によって配布される無料のオペレーティングシステム）、Ｊａｖａ（登録商標）またはＵｎｉｘ（登録商標）等である。
【００５５】
他の実施形態では、コンピュータ機器１００は、その機器にふさわしい、異なるプロセッサ、オペレーティングシステム、入力装置を有し得る。例えば、ある実施形態では、コンピュータ機器１００は、パーム社製のＺｉｒｅ  ７１携帯情報端末である。この実施形態では、Ｚｉｒｅ  ７１は、パームＯＳオペレーティングシステムの制御のもとで動作し、ペン型入力装置および５方向ナビゲーター装置を含む。さらに、コンピュータ機器１００は、通信が可能で、本明細書に記載の通りの動作を実行するに足る十分なプロセッサ能力と記憶容量を持つ、任意のコンピュータ、ワークステーション、デスクトップコンピュータ、ラップトップまたはノートブックコンピュータ、サーバー、ハンドヘルドコンピュータ、携帯電話、または、その他の形体のコンピュータまたは通信機器であり得る。
【００５６】
図２を参照して、一般に、本発明は、クライアント・サーバーシステムとネットワーク通信に関連するものである。概要として、本発明が使われるクライアント・サーバーシステム１０２の一実施形態が表されている。クライアントノード１０８ａは、通信ネットワーク１０４上でサーバーノード１１０ａと通信する。システム１０２には、一つ以上のクライアントノード１０８ａ〜１０８ｎがあり、それぞれが、ネットワーク１０４上で、一つ以上のサーバーノード１１０ａ〜１１０ｎと通信する。クライアントノード１０８ａ〜１０８ｎが一つ以上のサーバーノード１１０ａ〜１１０ｎと通信するネットワーク１０４の接続形態は、バス型、スター型、またはリング型ネットワーク接続形態であり得る。ネットワーク１０４は、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、またはインターネット等の広域ネットワーク（ＷＡＮ）であり得る。ネットワーク１０４およびネットワーク接続形態は、本明細書に記載される本発明の動作をサポートすることができる任意のネットワークまたはネットワーク接続形態であり得る。
【００５７】
クライアントおよびサーバーノード１０８ａ〜１０８ｎ、１１０ａ〜１１０ｎは、標準の電話回線、ＬＡＮまたはＷＡＮリンク（例えば、Ｔ１、Ｔ３、５６ｋｂ、Ｘ．２５、ＳＮＡ、ＤＥＣＮＥＴ）、ブロードバンド接続（ＩＳＤＮ、フレームリレー、ＡＴＭ、ギガビットイーサネット（登録商標）、イーサネット（登録商標）・オーバ・ＳＯＮＥＴ）、および、無線接続を含む様々な接続を通して、ネットワーク１０４に接続できる。接続は様々な通信プロトコル（例えば、ＴＣＰ／ＩＰ、ＩＰＸ、ＳＰＸ、ＮｅｔＢＩＯＳ、イーサネット（登録商標）、ＡＲＣＮＥＴ、光ファイバー分散データインターフェース（ＦＤＤＩ）、ＲＳ２３２、ＩＥＥＥ  ８０２．１１、ＩＥＥＥ８０２．１１ａ、ＩＥＥＥ８０２．１１ｂ、ＩＥＥＥ８０２．１１ｇ、および直接非同期接続）を使って確立され得る。
【００５８】
一実施形態では（図示せず）、ネットワーク１０４は、ネットワーク１０４と１０４’に分けられる。ネットワーク１０４と１０４’は、同じ種類のネットワークあるいは異なる種類のネットワークであり得る。一実施形態では、ネットワーク１０４および／またはネットワーク１０４’は、例えば、企業イントラネットのようなローカルエリアネットワーク（ＬＡＮ）、またはインターネットまたはワールドワイドウェブのような広域ネットワーク（ＷＡＮ）である。クライアント１０８ａ〜１０８ｎ、とサーバー１０１１８ａ〜１１８ｎは、標準の電話回線、ＬＡＮまたはＷＡＮリンク（例えば、８０２．１１、Ｔ１、Ｔ３、５６ｋｂ、Ｘ．２５）、ブロードバンド接続（例えば、ＩＳＤＮ、フレームリレー、ＡＴＭ）、無線接続、または上記の任意のまたは全ての組み合わせを含む（ただし、必ずしもこれらに限定されない）様々な接続を通して、ネットワーク１０４および／または１０４’に接続され得る。
【００５９】
クライアントノード、またはクライアント１０８ａ〜１０８ｎは、通信が可能で、本明細書に記載の通りの動作を実行するに足る十分なプロセッサ能力と記憶容量を持つ、任意のワークステーション、デスクトップコンピュータ、ラップトップ、ハンドヘルドコンピュータ、携帯電話、または、その他のコンピュータ機器１００であり得る。さらに、クライアント１０８ａ〜１０８ｎは、ローカルネットワーク１０４上のローカルデスクトップクライアントであり得、あるいは、別のネットワーク１０４’の遠隔表示クライアントであり得る。クライアント１０８ａ〜１０８ｎは、例えば、画像表示装置（例えば、コンピュータモニター）、データ入力装置（例えば、キーボード）、固定および／または揮発性記憶装置（例えば、コンピュータメモリ）、プロセッサ、およびマウス等のポインティングデバイスを含み得る。同様に、サーバーノード、またはサーバー１１０ａ〜１１０ｎは、本明細書に記載の通りの動作が可能な、任意の種類のコンピュータ機器１００であり得る。さらに、サーバーノード１１０ａ〜１１０ｎは、本明細書では、サーバーファームと呼ばれる、論理的には単一のサーバーシステムとして機能するサーバーシステム群として提供され得る。一実施形態では、サーバーノード１１０ａ〜１１０ｎは、複数の同時使用中のクライアント接続またはユーザーセッションをサポートするマルチユーザーサーバーシステムである。
【００６０】
一部の実施形態では、図２に示されるように、クライアントエージェント１０９ａ〜１０９ｎが、クライアント１０８ａ〜１０８ｎの中に含まれている。クライアントエージェント１０９ａ〜１０９ｎは、例えば、ソフトウェアプログラムとして、および／または、例えばＡＳＩＣやＦＰＧＡのようなハードウェア装置として実行され得る。ユーザーインターフェースの付いたクライアントエージェント１０９ａ〜１０９ｎの一例は、ウェブブラウザ（例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒブラウザ、および／または、ＮｅｔｓｃａｐｅＴＭブラウザ）である。クライアントエージェント１０９ａ〜１０９ｎは、任意の種類のプロトコルを使うことができ、それは、例えば、ＨＴＴＰクライアントエージェント、ＦＴＰクライアントエージェント、オスカークライアントエージェント、テルネットクライアントエージェント、フロリダ州フォートローダーデールのシトリックスシステム社のインデペンデントコンピューティングアーキテクチャ（ＩＣＡ）クライアントエージェント、ワシントン州レドモンドのマイクロソフト社のリモートデスクトッププロトコル（ＲＤＰ）クライアントエージェント等であり得る。一部の実施形態では（図示せず）、クライアント１０８ａ〜１０８ｎは、複数のクライアントエージェント１０９ａ〜１０９ｎを含み、それぞれが各サーバー１１０ａ〜１１０ｎと通信し得る。
【００６１】
クライアント１０８ａ〜１０８ｎおよびサーバー１１０ａ〜１１０ｎの任意のいずれかにおいて、コンピュータ（１００、１００’等）は通常、コンピュータ１００を動作するためにオペレーティングシステムの単一コピーを実行する。オペレーティングシステムは、コンピュータ１００がネットワーク１０４上でネットワークインターフェース１１８を通して通信するために必要なソフトウェアやリソースを提供する。最も広く使われるネットワーク通信の標準は、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）で、それはネットワーク１０４上でコンピュータ１００の間のデータ伝送を行うプロトコルの組み合わせである。ＴＣＰプロトコルは、データの正確な伝送をモニターし確実にする。ＩＰプロトコルは、インターネットプロトコルアドレス、または  ＩＰアドレスを使う。それは、ネットワークトラフィックのルートを決め、ネットワーク１０４上のコンピュータ１００同士の接続を確立するために、ネットワーク１０４上でコンピュータ１００を固有に識別する数値アドレスである。よりユーザーに優しいドメイン名、またはコンピュータホスト名は、文字列を備え、コンピュータを固有に識別するためにＩＰアドレスと関連付けられ得る。コンピュータ１００は、二つ以上のドメイン名またはＩＰアドレスを持つことができるが、所与のドメイン名またはＩＰアドレスは、ネットワーク１０４上の一つのコンピュータ１００のみを示す。
【００６２】
マイクロソフトＷＩＮＤＯＷＳ（登録商標）、ＬｉｎｕｘまたはＵＮＩＸ（登録商標）オペレーティングシステム等、多くのオペレーティングシステムがコンピュータ１００で実行可能であるのに、ネットワーク通信の実行用には、単一のネットワークとＴＣＰ／ＩＰプロトコル層、またはＴＣＰスタックしかない。ＩＰアドレスとドメイン名のコンピュータへの割り当ては、装置に依存している。すなわち、ＩＰアドレスおよび／またはドメイン名のようなネットワーク識別子は、コンピュータ１００に割り当てられ、コンピュータ１００からの任意のネットワーク通信を関連づけ、識別する。任意のユーザー、アプリケーション、ユーザーセッション、またはコンピュータ１００で作動する任意のその他のプログラムで、ネットワーク通信を引き起こすものは、コンピュータに割り当てられたネットワーク識別子を使う。そのため、あるコンピュータで作動しているコンピュータユーザーまたはプログラムは、そのコンピュータに割り当てられたネットワーク識別子を使って、ネットワー上で通信する。例えば、あるコンピュータ１００はＩＰアドレス１９２．１６８．１．１００を割り当てられている。第一のユーザーがそのコンピュータにログインし、ネットワーク１０４上でネットワークトラフィックを発生させるプログラムを実行する。ＩＰアドレス１９２．１６８．１．１００は、ＴＣＰ／ＩＰプロトコル関連のネットワーク通信の一部として使われ、コンピュータ１００を往来するネットワークを固有に識別する。第二のユーザーがそのコンピュータにログインし、ネットワーク１０４上でネットワークトラフィックをまた発生させる、もう一つのプログラムを実行する。同じＩＰアドレス１９２．１６８．１．１００が、第二のユーザーのネットワーク通信にも使われる。そのため、ネットワークトラフィックを発生するユーザーは、それぞれのネットワーク通信のＩＰアドレスによって区別することができない。
【００６３】
マイクロソフト・ターミナル・サーバーを実行するサーバーのようなマルチユーザーコンピュータの場合には、複数のユーザーがサーバーにログインし、並行してまたは同時にプログラムを実行することができる。サーバーは単一のオペレーティングシステムを実行しており、サーバーに割り当てられたＩＰアドレスを持っているために、複数のユーザーおよびそれらのユーザーによって実行される複数のプログラムは、全て同じＩＰアドレスを共有する。サーバーによってホストされる各ユーザーセッションも同じＩＰアドレスを共有する。複数のＦＴＰまたはウェブサイトを実行するサーバー１１０等、コンピュータが複数のネットワークインターフェースカード（１１８、１１８’等）を持っており、一つ以上のＩＰアドレスが各々のネットワークインターフェースカード１１８に割り当てられている場合でも、ＩＰアドレスは機械に依存している。一つ以上のＩＰアドレスはサーバーを識別するのであって、サーバー１１０上で通信しているユーザーまたはプログラムを識別するのではない。
【００６４】
アプリケーションの多くは、機能するために、各ユーザーやプログラムが個別のＩＰアドレスを持つことを要求する。一方では、ＩＰアドレスやホスト名を利用してユーザーを識別するアプリケーションもある。さらに、ネットワーク監視アプリケーションやシステムは、インターネット活動その他のアプリケーション活動のようなネットワーク活動を監視することができる。しかし、各ユーザーまたはアプリケーションが同じＩＰアドレスを使っている場には、監視アプリケーションは、その活動に関連するユーザーを識別することができない。本発明は、同一のコンピュータ１００から、ネットワーク１０４上で通信する、複数のプログラムまたはユーザーの各々に、固有のネットワーク識別子を割り当てる利点を提供する。
【００６５】
図３Ａ〜図３Ｃは、ＩＰアドレスまたはドメイン名のような固有のネットワーク識別子の、コンピュータ１００で作動している複数のプログラムへの割り当て、または、プログラムのユーザーへの割り当てを可能にする本発明の構成要素を表している。
【００６６】
図３Ａを参照して、システム３００は、ネットワーク１０４上で通信するクライアント１０８とサーバー１１０とを備える、クライアント・サーバーシステムである。クライアント１０８は、ネットワーク通信インターフェース３１０、インターフェース機構３２０、複数のネットワーク識別子３３０、そして一つ以上のプログラム３４０ａ〜３４０ｂを有する。ネットワーク通信インターフェース３１０には、クライアント１０８がネットワーク１０４上で通信するために求められるネットワーク関連のハードウェアおよびソフトウェアのいずれかおよび全てが含まれる。例えば、ネットワーク通信インターフェース３１０には、コンピュータ１００の任意のネットワークアダプター１１８、および、オペレーティングシステムが提供するソフトウェアやインターフェース等、コンピュータ１００がネットワーク１０４上で通信するために必要な、任意のその他のソフトウェアおよび／またはハードウェアが含まれる。
【００６７】
インターフェース機構３２０は、クライアント１０８で作動しているプログラム３４０ａ〜３４０ｎの各々が利用可能な複数のネットワーク識別子３３０から、固有のネットワーク識別子を提供するための、ソケットライブラリ３３２およびＴＣＰスタック３２４を備える。ソケットライブラリ３３２は、オペレーティングシステムによって提供されるネットワークサービスにアクセスするための、汎用のネットワーキング・アプリケーション・プログラミング・インターフェースすなわちＡＰＩである。簡単に言えば、ソケットはローカル的にも、あるいはＴＣＰ／ＩＰを実行しているネットワーク上でも、プロセス間通信のエンドポイントである。ソケットは、ソケットの種類によって異なるセマンティックスを使い、別のプロセスからのデータを同時に送受信することができる。ソケットインターフェースは、基礎となる多くの伝送メカニズムをサポートすることができる。理想的には、ソケットコール付きで作成されたプログラムが、ほとんどまたは全くの変更なしに、様々なネットワークアーキテクチャ、および、様々なローカルプロセス間通信設備で使用され得る。ソケットライブラリ３２２は、  ＭｉｃｒｏｓｏｆｔのＷｉｎｓｏｃｋ  ＡＰＩ、Ｕｎｉｘ（登録商標）または任意のその他のサポートされたアーキテクチャ用のバークレー・ソフトウェア・ディストリビューション（ＢＳＤ）ソケットライブラリ、カリフォルニア大学バークレー校のソケットインターフェースに基づく他のソケットライブラリ、あるいは、ネットワーク１０４上でＴＣＰ／ＩＰを使って通信するための、ソケットベースのネットワークプログラミングＡＰＩ（ＷｉｎｓｏｃｋまたはＢＳＤ  ＡＰＩに基づくもの、あるいは、そうでないもの）を提供し、本明細書に記載の通りにコンピュータ機器１００で動作可能な、任意の他の利用可能なソケットライブラリ等であり得る。
【００６８】
ＴＣＰスタック３２４は、クライアント１０８がＴＣＰ／ＩＰを使ってネットワーク１０４上で通信するための、ＴＣＰ／ＩＰ通信プロトコルエンジンの実施を提供する。ＴＣＰスタック３２４には、ＴＣＰ／ＩＰソフトウェアおよびハードウェアドライバソフトウェア（パケットドライバと呼ばれることもある）が含まれ、コンピュータ１００がＴＣＰ／ＩＰ経由で通信することを可能にする。ソケットライブラリ３２２にＡＰＩコールをするアプリケーションのような、ＴＣＰ／ＩＰを使うアプリケーションは、アプリケーションが動いているコンピュータ上で、ＴＣＰスタックが動作していることを必要とする。ＴＣＰスタック３２４は、一実施形態では、ソケットライブラリ３２２ソフトウェアを含み得る。また、別の実施形態では、ソケットライブラリ３２２ソフトウェアが、ＴＣＰスタック３２４に含まれ得ない。標準的なコンピュータ１００では、オペレーティングシステムはアプリケーションがＴＣＰ／ＩＰ経由のネットワーク通信に利用するための、単一のＴＣＰスタック３２４を提供する。例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）およびＬｉｎｕｘの各バージョンのようなオペレーティングシステムは、ＴＣＰスタック３２４の単一のインスタンスしかサポートしない。オペレーティングシステムによって提供された同様のソフトに加えて、または代わりに、追加のＴＣＰ／ＩＰソフトウェア、ソケットライブラリソフトウェアおよび／またはハードウェアドライバソフトウェがコンピュータにインストールされ得る。本発明の例示的な実施形態では、オペレーティングシステムによってデフォルト設定により提供される、単一のＴＣＰスタック３２４が使用される。代替案の実施形態では、インターフェース機構３２０は、オペレーティングシステムによって提供されるＴＣＰスタック３２４に加えて、第二のＴＣＰスタック３２４’を備え得る。各ＴＣＰスタック３２４、３２４’は、ネットワーク１０４上で通信する複数のユーザーおよび／またはプログラムを取り扱い得る。
【００６９】
さらに、インターフェース機構３２０は、例えば、ＡＳＩＣまたはＦＰＧＡなど、任意の種類のソフトウェアコンポーネントおよび／または専用ハードウェア機器であり得る。インターフェース機構の一つ以上のソフトウェアコンポーネントは、それぞれ、ライブラリ、モジュール、プログラム、実行ファイル、アプリケーション、サービス、プロセスまたはタスクに具体化され得る。さらに、インターフェース機構３２０は、ローカルで動いている、または、複数のクライアント１０８、１０８’、またはサーバー１１０、１１０’に分配される、幾つかのソフトウェアコンポーネントで作られ得る。インターフェース機構３２０は、ソケットライブラリおよびＴＣＰスタック３２４の一部または全てを含み得る。当業者には、インターフェース機構３２０の考え得る代替の実施形態の様々な順列があることが、理解できる。
【００７０】
クライアント１０８は、クライアント１０８上の一つ以上のプログラム３４０ａ〜３４０ｎに固有のネットワーク識別子を割り当てるために使う複数のネットワーク識別子３３０を、インターフェース機構３２０のために提供または取得し得る。このネットワーク識別子３３０は、ＩＰアドレス、ドメイン、またはホスト名、またはＩＰアドレスとホスト名の両方を備え得る。好適な実施形態では、ネットワーク識別子３３０は、固有のＩＰアドレスリストを備え、各ＩＰアドレスは、それに付随する、少なくとも一つの固有なホスト名を有する。ネットワーク識別子３３０は、一実施形態においては静的に決定され得、または別の実施形態においては動的に決定さ得る。場合によっては、一部のネットワーク識別子３３０が静的に決定され、他のネットワーク識別子３３０が、ネットワーク１０４上のクライアント１０８、サーバー１１０、あるいは、その他のクライアント１０８’またはサーバー１１０’から動的に取得される。
【００７１】
クライアント１０８は、ネットワーク識別子３３０をさまざまな方法で取得し得、ネットワーク識別子３３０の一部をある一つの方法で受け取り、ネットワーク識別子３３０のその他の部分をその他の方法で受け取り得る。一実施形態では、ネットワーク識別子３３０は、離れたサーバー１１０あるいはクライアント１０８上の、ファイル等の格納３３６場所に静的に定義され得る。例えば、ＩＰアドレスとホスト名を使ったネットワークオペレーションを実行する上で、オペレーティングシステムおよびＴＣＰスタック３２４によって参照される、クライアント１０８のローカルホストのファイルは、複数のネットワーク識別子のリストを含み得る。別の一実施形態では、一つ以上のネットワーク識別子３３０が特定のユーザーに割り当てられ、または専用に供される。
【００７２】
別の実施形態では、クライアント１０８は、ネットワーク１０４上のクライアント１０８がアクセス可能なサーバー１１０から、一つ以上のネットワーク識別子を取得する。サーバー１１０は、動的ホスト構成プロトコルサーバー（ＤＨＣＰサーバーとしても知られる）であり得る。ＤＨＣＰはＴＣＰ／ＩＰネットワーク上のコンピュータが、そのコンピュータが使うべきＩＰ番号、ネットマスク、ゲートウェイ等の情報を、一つ以上の  セントラルサーバーから要求するための標準である。ＤＨＣＰプロトコルは、動的ＩＰアドレスのネットワーク上のデバイスへの割り当てを行い、静的ＩＰアドレスと動的ＩＰアドレスのミックスをサポートする。ＤＨＣＰは、二つのコンポーネントからなる。すなわち、ホスト特定の構成パラメータをＤＨＣＰサーバー３３４からクライアント１０８に  送るためのプロトコルと、ネットワークアドレスをクライアント１０８、１０８’に割り当てるためのメカニズムである。
【００７３】
別の実施形態では、クライアント１０８は、一つ以上のネットワーク識別子３３０をネットワーク識別子ジェネレータ３３０から取得し、それはサーバー１１０、またはクライアント１０８、または別のクライアント１０８’、またはサーバー１１０’で作動することができ、ネットワーク１０４上のクライアント１０８によってアクセスが可能である。ネットワーク識別子ジェネレータ３３０は、クライアント１０８またはサーバー１１０のために一つ以上のネットワーク識別子３３０を生成するための、アルゴリズムエンジン、ビジネスルール、またはロジックエンジンを有し得る。ネットワーク識別子ジェネレータ３３２は、連続する一連のＩＰアドレスおよび／またはホスト名を生成し得る。別の実施形態では、ネットワーク識別子ジェネレータ３３２は、ネットワーク１０４のための適切なＩＰドット番号方式に対応する番号とともに、ランダムな一連の番号を生成し得る。  別のケースでは、ネットワーク識別子ジェネレータ３３２は、ユーザー名、コンピュータ名、ドメイン名、その他の記述的なテキスト列のいずれかの組み合わせを使用し得、ネットワーク識別子３３０のＩＰアドレスのいずれかのためのホスト名を生成する。さらに、ネットワーク識別子ジェネレータ３３２は、ビジネスルールロジックを有し得、それは、ネットワーク識別子ジェネレータ３３２からネットワーク識別子３３０を要求または取得するクライアント１０８またはサーバー１１０に応じて、異なるアドレス指定および作成方式を適用する。当業者には、ネットワーク識別子ジェネレータ３３２が、ネットワーク識別子を生成するために多様なアルゴリズムを適用でき、ネットワーク１０４上の一つ以上のコンピュータにネットワーク識別子を提供するために多様なビジネスルールロジックを適用できることが、認識される。
【００７４】
クライアント１０８は、クライアント１０８またはサーバー１１０がホストすることができる最大数の固有のネットワーク識別子３３０を取得、提供または割り当てられ得る。他の実施形態では、クライアントは最大数未満の固有のネットワーク識別子３３０を取得、提供または割当てられ得、それはユーザーの数、プログラムの数、またはクライアント１０８上のプログラム３４０ａ〜３４０ｎまたはユーザーに固有のネットワーク識別子３３０を割り当てるニーズに影響を与える、その他の要因に基づき決定され得る。一実施形態では、ネットワーク識別子３３０の数は、設定可能なパラメータである。
【００７５】
クライアント１０８は、ネットワーク識別子３３０の一部をサーバー１１０の格納場所３３６等から取得し、別の一部をＤＨＣＰサーバー３３４から、別の一部をネットワーク識別子ジェネレータ３３２から、そしてまた別の一部をローカルにクライアント１０８から取得し得る。さらに、クライアント１０８、サーバー１１０、またはクライアント１０８上のプログラム３４０ａ〜３４０ｎの任意のいずれか、クライアント１０８のインターフェース機構３１０、またはサーバー１１０上の任意のプログラムも、オペレーティングシステムレベルのＡＰＩコール等のＡＰＩコールを行うことによって、あるいは、オペレーティングシステム、またはネットワーク識別子３３０を取得するための、その他のアプリケーションによって提供される設定ツールを使うことによって、プログラムで一つ以上のネットワーク識別子を取得し得る。当業者には、本発明について、クライアント１０８が複数のネットワーク識別子３３０を取得または提供するための、様々な順列、あるいは代替の実施形態があることが、理解される。
【００７６】
クライアントは、クライアント１０８上で実行する一つ以上プログラム３４０ａ〜３４０ｎを提供し得る。プログラム３４０ａ〜３４０ｎは、クライアント１０８のコンピュータ機器１００上で呼び出され、実行される、または、それによって処理される、任意のアプリケーション、ソフトウェア、またはコンピュータプログラムであり得る。例えば、プログラム３４０ａ〜３４０ｎは、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）  Ｅｘｐｌｏｒｅｒのような任意の汎用デスクトップアプリケーションであり得る。また、プログラム３４０ａ〜３４０ｎは、ネットワーク１０４上で、一つ以上のサーバー１１０、１１０’経由で提供される任意の種類のウェブインターフェースアクセスサービスでもあり得る。プログラム３４０ａ〜３４０ｎは、ネットワーク１０４上でサーバー１１０にアクセスする企業アプリケーションクライアントであり得る。別のケースでは、プログラム３４０ａ〜３４０ｎは、いずれかのプログラミング言語で書かれ、クライアント１０８で実行するためにコンパイルされたカスタムアプリケーションであり得る。一実施形態では、プログラム３４０ａ〜３４０ｎは、ネットワーク１０４上でのネットワーク通信を引き起こす任意のプログラムであり、そこへ、ネットワーク識別子がネットワーク通信において提供される。例えば、プログラム３４０ａ〜３４０ｎは、ソケット関連のＡＰＩコールを、ＴＣＰスタック３２４を使ってソケットライブラリ３２２を通じて行い、ネットワーク通信インターフェース３１０経由でネットワーク１０４と通信し得る。
【００７７】
一実施形態では、プログラム３４０ａ〜３４０ｎは、アプリケーション隔離環境を備え、それはアプリケーション隔離環境の別のインスタンスで実行される一群のプロセスを別の一連のプロセスから分離または隔離する、コンピュータ機器１００内の実行コンテクストを提供する。別々のコンテクストにおけるプロセスの隔離は、一連のプロセスを別の一連のプロセスから発生する問題から守る。通常、アプリケーション隔離は、ある実施コンテクストで実行されるプロセスが、別の実施コンテクストで実行される他のプロセスによって使用されるメモリのアドレス空間を直接使用しない、プロセスレベルで起こる。しかしながら、アプリケーション隔離環境は、オペレーティングシステムリソースの任意のレベルの仮想化も提供し得、各アプリケーション隔離環境３４０ａ〜３４０ｎで実行されるプログラム３４０ａ〜３４０ｎのいずれかによる、それらのリソースの使用を分離または隔離することができる。例として、クライアント１０８上で、プログラム３４０ａが、一つ以上のプログラム３４０ａ〜３４０ｎが実行されるアプリケーション隔離環境を提供し得、一方では、プログラム３４０ｂが別の一つ以上のプログラム３４０ａ〜３４０ｎが実行される第二のアプリケーション隔離環境を提供する。
【００７８】
別の一実施形態では、プログラム３４０ａ〜３４０ｎは、遠隔表示プロトコルを使ってサーバー１１０上のアプリケーション、プログラム、サービスにアクセスするためのシンクライアントプログラムを備え得る。例えば、プログラム３４０ａ〜３４０ｎのいずれかは、フロリダ州フォートローダーデールのＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．のインデペンデント・コンピューティング・アーキテクチャ（ＩＣＡ）クライアント、あるいは、レドモンドのマイクロソフト社のリモートデスクトッププロトコル（ＲＤＰ）クライアントであり得る。これらのシンクライアントプログラム３４０ａ〜３４０ｎは、サーバー１１０、あるいは、サーバーファームまたはサーバークラスタにある複数のサーバーのような、一つ以上の他のサーバー１１０’、１１０’’で作動するユーザーセッションへのアクセスを提供する。そのために、プログラム３４０ａ〜３４０ｎは、クライアント１０８またはサーバー１１０がホストするユーザーセッションであり得る。
【００７９】
一実施形態では、プログラム３４０ａ〜３４０ｎの各々は、異なる種類のアプリケーション、アプリケーション隔離環境、またはユーザーセッションを実施し得る。例えば、プログラム３４０ａは、ネットワーク上の企業アプリケーションサーバーにウェブアクセスを提供する企業アプリケーションクライアントであり得る。プログラム３４０ｂは、ユーザーが一つ以上のプログラムを実行するための実行コンテクストを提供するアプリケーション隔離環境であり得る。プログラム３４０ｎは、サーバー１１０上でユーザーセッションを実行するシンクライアントプログラムであり得る。別の実施形態では、プログラム３４０ａ〜３４０ｎは、オペレーティングシステムで実行される任意の種類のサービスであり得る。さらに、プログラム３４０ａ〜３４０ｎは、クライアント１０８ａ〜１０８ｎで実行される任意のサービス、タスク、プロセス、またはスレッド、あるいはそれらの組み合わせとも見なされる。当業者には、プログラム３４０ａ〜３４０ｎが、クライアント１０８またはサーバー１１０のコンピュータ機器１００で実行可能な任意の種類のプログラムでもあり得ること、および複数の種類のプログラムが、一つ以上の同じユーザーまたは異なるユーザーによって、クライアント１０８またはサーバー１１０で、連続してまたは同時に作動し得ることが、認識される。
【００８０】
実行中に、クライアント１０８のインターフェース機構３１０は、複数のネットワーク識別子３３０から、コンピュータで作動しているプログラム３４０ａ〜３４０ｎへ、または、プログラム３４０ａ〜３４０ｎのユーザーへ、ユニークなネットワーク識別子の接続を提供する。プログラム３４０ａ〜３４０ｎのネットワーク通信をサポートする、単一のオペレーティングシステム、ＴＣＰスタック３２４およびソケットライブラリ３２２があっても、インターフェース機構３２０は各ユーザーまたはプログラム３４０ａ〜３４０ｎを固有のネットワーク識別子に固定または結び付け、同じクライアント１０８からのそのユーザーまたはプログラムからのネットワーク通信が固有のネットワーク識別子を持つようにする。本発明のインターフェース機構がなければ、クライアント１０８の各ユーザーまたはプログラム３４０ａ〜３４０ｎは、クライアント１０８に割り当てられた同じネットワーク識別子で、ネットワーク通信を発することになる。
【００８１】
インターフェース機構３２０は、複数のネットワーク識別子３３０から、一つのネットワーク識別子を取得および／または選択し、一つのプログラム３４０ａ〜３４０ｎ、またはプログラム３４０ａ〜３４０ｎのユーザーに結び付けて割り当てる。インターフェース機構３２０は、複数のネットワーク識別子３３０から、ＤＨＣＰサーバーへのＡＩＰコール等のＡＰＩコールを通じて、プログラムで一つのネットワーク識別子を取得し得る。インターフェース機構３２０は、ネットワーク識別子を取得できる他のインターフェース形式を通じて、つまり、例えば、ローカルホストファイルのようなファイルから一列のデータを読み出す、あるいはデータベースから一列のデータをクエリするなどして、一つのプログラム３４０ａ〜３４０ｂのために一つのネットワーク識別子を取得し得る。インターフェース機構３２０は、クライアント１０８の起動時に、メモリに一つ以上のネットワーク識別子を有し得る。当業者には、インターフェース機構３２０が、様々な既知のインターフェース技術によって可能な多様な方法で、プログラム３４０ａ〜３４０ｎのために一つのネットワーク識別子を取得できることが、認識される。
【００８２】
クライアント１０８、プログラム３４０ａ〜３４０ｎおよび／またはインターフェース機構３２０は、いろいろな時に、一つのプログラム３４０ａ〜３４０ｎまたはユーザーのために一つの固有のネットワーク識別子を取得、選択および／または割り当て得る。一実施形態では、クライアント１０８は、クライアント１０８の起動または始動時に、一つ以上のネットワーク識別子を取得し得る。別の実施形態では、ユーザー用のネットワーク識別子は、ユーザーがクライアント１０８にログインする時、あるいはユーザーセッションを開始する時に取得され得る。一実施形態では、プログラム３４０ａ〜３４０ｎおよびインターフェース機構は、プログラム３４０ａ〜３４０ｎの設定時、または起動時に、一つのネットワーク識別子を取得、選択し、プログラム３４０ａ〜３４０ｎに割り当て得る。別の実施形態では、プログラム３４０ａ〜３４０ｎ用のネットワーク識別子は、プログラムがソケットライブラリ３２４にコールするまで、取得、選択、割り当てられない。他のケースでは、クライアント３０８の一つのプログラム３４０ａ〜３４０ｎまたはユーザーに割り当てられるネットワーク識別子は、インターフェース機構３２０またはプログラム３４０ａ〜３４０ｎがもはや必要としなくなった時点で、解除または返却され得る。当業者には、ネットワーク識別子が取得、選択、および／または、クライアント１０８の一つのプログラム３４０ａ〜３４０ｎまたは一人のユーザーに割り当てられ得る、および他のケースでは、ネットワーク識別子３３０のプールに返却または解除されることに関して、多くのバリエーションがあることが、認識される。
【００８３】
例示的な実施形態では、インターフェース機構３２０は、ソケットライブラリ３２２へ行われたコールを傍受または変更することにより、ユーザーまたはプログラム３４０ａ〜３４０ｎをネットワーク識別子３３０の一つに固定または結び付ける。通常、クライアント１０８に割り当てられる一つのＩＰアドレスには単一のＴＣＰスタック３２４が付いているため、アプリケーションは通常、ソケットライブラリ３２２へのＡＰＩコールにおけるクライアント１０８のＩＰアドレスを特定しない。クライアント１０８のＩＰアドレスは、ＴＣＰスタック３２４の一つのグローバル名空間で識別される、周知のＩＰアドレスである。ソケットライブラリ３２２のＡＰＩコールを傍受または変更することにより、インターフェース機構３２０は、クライアント１０８に割り当てられ、ＴＣＰスタック３２４によってすでに知られている、アドレスおよび／またはホスト名を使って、特定のネットワーク識別子をソケットライブラリ３２２の代わりに、ＡＰＩコールに適用することができる。ソケットライブラリ３２０のＡＰＩコールを傍受した後、インターフェース機構３２０は、固有のネットワーク識別子をソケットライブラリ３２０のＡＰＩコールに適用し得、その結果としてネットワーク識別子がＡＰＩコールを行う際に適用される。インターフェース機構３２０は、プログラム３４０ａ〜３４０ｎと関連した、または、プログラム３４０ａ〜３４０ｎのユーザーと関連した固有の識別子を、ソケットライブラリ３２０のＡＰＩコールに適用する。
【００８４】
ソケットベースのネットワーク通信について、ソケットライブラリ３２０のＡＰＩをコールするプログラムは、送信元と送信先との間の通信のエンドポイントであるソケット上で様々なＡＰＩコールを行い得る。ＴＣＰ／ＩＰネットワークのエンドポイントは、ＩＰアドレスとポートアドレスまたはポート番号の固有の組み合わせによって決定される。同一のクライアント１０８上の複数のアプリケーションは、異なるポートアドレスとともに同じＩＰアドレスを同時に使うことができる。それは各ＩＰとポートアドレスの組み合わせが、固有なエンドポイントを定義するからである。しかしながら、本発明では、同一のクライアント１０８上の複数のプログラム３４０ａ〜３４０ｎが、同じポートアドレスを同時に使うことが可能である。各プログラム３４０ａ〜３４０ｎは異なるＩＰアドレスを取得し得るために、各エンドポイント、すなわちＩＰおよびポートアドレスは、プログラム３４０ａ〜３４０ｎに割り当てられた固有のＩＰアドレス経由で固有に定義される。そのために、第一のＩＰアドレスを持つプログラム３４０ａは、同じクライアント１０８上の、第二のＩＰアドレスを持つもう一つのプログラム３４０ｂと同じポートアドレスに拘束され得る。
【００８５】
ソケットライブラリ３２２のＡＰＩは、ＷｉｎＳｏｃｋ  ＡＰＩ等、ソケットライブラリ３２２の特定のＡＰＩ実施によって記述されるソケット関連の機能のうち、ソケットへ／からの作成、終了、読み出し、書き込みをするための機能コールを定義する。ソケット通信を確立する際に、送信元と送信先のプロセスのＩＰアドレスとポートが、ソケットライブラリ３２２のＡＰＩへ提供されなければならない。その後、ＡＰＩコールの送受信をソケット上で行うことができる。ソケットは、ソケットライブラリ３２２の拘束機能を呼び出すことによって、特定のネットワークアドレスに結び付けられ得る。インターフェース機構３２０は、インターフェース機構３２０によって、ソケット通信を行っているプログラム３４０ａ〜３４０ｂに付随する、または割り当てられると決められた、あるいは、プログラム３４０ａ〜３４０ｎにアクセスするユーザー用に決定された、固有のネットワーク識別子にソケットを拘束する。このネットワーク識別子は、クライアント１０８上のプログラム３４０ａ〜３４０ｎのための発信元アドレスとして提供され、ソケットがこのネットワーク識別子にマップされたら、送信ＡＰＩコール等、その他のソケットベースの通信は全て、このネットワーク識別子を発信元ネットワークアドレスとして使用する。インターフェース機構３２０はまた、汎用リッスンソケットＡＰＩコールを特定のネットワークアドレスのためのリッスンＡＰＩコールに置き換えることによって、プログラム３４０ａ〜３４０ｎに、プログラム３４０ａ〜３４０ｎに割り当てられた特定のネットワーク識別子をリッスンさせる。それによって、インターフェース機構３２０は、接続およびパケットが、プログラム３４０ａ〜３４０ｎに付随する固有のネットワーク識別子から始まることを保証する。ソケットライブラリ３２２は、ローカルプロセス送信および／または受信のソケットベースの通信のネットワーク識別子を決定するためのＡＰＩコールを行い得る。インターフェース機構３２０は、これらのＡＰＩコールを傍受、変更し、プログラム３４０ａ〜３４０ｎの特定されたネットワーク識別子を返す。
【００８６】
固有のネットワーク識別子をクライアント１０８上の特定のプログラム３４０ａ〜３４０ｎまたはユーザーに割り当てるアプローチはまた、仮想ＩＰアドレスとも呼ばれ得る。クライアント１０８はＩＰアドレスを割り当てられているが、クライアント１０８で作動している各々のプログラム３４０ａ〜３４０ｎおよび／またはユーザーが、クライアント１０８にすでに一般的に割り当てられたＩＰアドレスとは異なる固有のＩＰアドレスを有するという点で、このＩＰアドレスは仮想である。さらに、これらの仮想ＩＰアドレスは、仮想ＩＰアドレスを、ユーザーまたはプログラム３４０ａ〜３４０ｎのために必要に応じて割り当てたり、その後割り当てを解除したりして、動的に使用され得る。
【００８７】
ソケットライブラリ３２２のコールを傍受、変更する技術は、同様のソケット通信ベースのアプローチを使い、そのような通信用のソケットライブラリを持つ、様々な種類のＬｉｎｕｘおよびＵＮＩＸ（登録商標）オペレーティングシステム等、多くのオペレーティングシステムに応用することができる。さらに、これらのオペレーティングシステムの多くが、すでに単一のＴＣＰスタック３２４をネットワーク通信に利用しているために、単一のＴＣＰスタック３２４を持つインターフェース機構３２０を使うことは有利である。この場合、インターフェース機構３２０は、これらの標準的な、利用可能なオペレーティングシステムで機能し、クライアント１０８のオペレーティングシステム、または本発明をホストしているその他のコンピュータ機器１００への干渉が少ない。
【００８８】
一部の実施形態では、インターフェース機構３２０は、レイヤードサービスプロバイダ（ＬＳＰ）、ネームスペースサービスプロバイダ（ＮＳＰ）の技術、その他、インターフェース機構３２０が、ソケットライブラリ３２２のＡＰＩコールをフック、上書き、オーバーロード、拡張、あるいは、傍受、変更することを可能にする技術を使って、ソケットライブラリ３２２のＡＰＩコールを傍受、変更できる。例えば、ＬＳＰは、チェーンのリンクのように、Ｗｉｎｄｏｗｓ（登録商標）  ＴＣＰ／ＩＰハンドラーに挿入され得るソフトウェアコンポーネントである。マイクロソフトからのＷｉｎｓｏｃｋ実施は、サービスプロバイダにＡＰＩとプロトコルスタックとの間のインターフェースを提供する。サービスプロバイダのインターフェースは、カスタムＬＳＰを実施することによって、独自のサービスプロバイダを作り出したり、既存の輸送サービスプロバイダを拡張したりすることを可能にする。
【００８９】
代替案としては、ソケットライブラリ３２２のＡＰＩコールを傍受、変更する代わりに、インターフェース機構３２０は、カスタムの、または変更されたソケットライブラリ３２２を備え得、それはプログラム３４０ａ〜３４０ｎまたはユーザーのいずれかに割り当てられた固有のネットワーク識別子を使用、提供、適用するためのプログラミング論理を提供する。別の実施形態では、インターフェース機構３２０は、複数のＴＣＰスタック３２４、３２４’および／またはソケットライブラリ３２２、３２２’を使い、固有のネットワーク識別子をプログラム３４０ａ〜３４０ｎの一部または全て、またはクライアント１０８のユーザーに提供し得る。例えば、一実施形態では、ＴＣＰスタック３２４およびソケットライブラリは、各プログラム３４０ａ〜３４０ｎ、またはクライアント１０８の各ユーザーに割り当てられる。さらに別の実施形態では、インターフェース機構３２０は、ネットワーク操作フィルタを備え得、それによってネットワーク通信インターフェース３１０経由のネットワークトラフィックのパケットをフィルタする。この場合、インターフェース機構３２０は、ソケットライブラリ３２２の層を超えて、あるいは下位で、プログラム３４０ａ〜３４０ｎへ／から送られるネットワークトラフィックを傍受、変更する。そのため、ソケットライブラリ３２２へのＡＰＩコールは傍受、変更されずに、それらのコールから生成されたネットワークトラフィックが傍受、変更される。
【００９０】
図３Ｂを参照して、システム３０２はクライアント・サーバー・ネットワークシステムを表しており、仮想ＩＰアドレスを提供するという本発明は、サーバー１１０に備わっている。例示的な実施形態では、サーバー１１０は、ＭｉｃｒｏｓｏｆｔターミナルサーバーまたはＣｉｔｒｉｘプレゼンテーションサーバー等の遠隔表示プロトコルサーバーを実行しているマルチユーザサーバーであり得、それによって、ユーザーはサーバー１１０に接続して、サーバー１１０からアプリケーションを実行し、そのアプリケーション実行からの出力をクライアント１０８ａ〜１０８ｎに表示させることができる。  概観すると、クライアント１０８ａ〜１０８ｎの任意の一つまたは全ては、ネットワーク１０４上でサーバー１１０に接続し得る。サーバー１１０は、ネットワーク通信インターフェース３１０、インターフェース機構３２０、ネットワーク識別子ジェネレータ３２２、ネットワーク識別子３３０、そして一つ以上のプログラム３４０ａ〜３４０ｎを有し得る。
【００９１】
クライアント１０８ａ〜１０８ｎは、クライアントに追加のアプリケーション機能を提供する、または、クライアントがサーバー１１０等の別のシステムのサービスへアクセスするのを可能にする、クライアントエージェント１０９ａ〜１０９ｂを有し得る。例えば、クライアントエージェント１０９ａ〜１０９ｎは、遠隔表示クライアント、例えば、サーバー１１０で作動しているＭｉｃｒｏｓｏｆｔ  ターミナルサーバーまたはＣｉｔｒｉｘプレゼンテーションサーバーと連動して動作するＭｉｃｒｏｓｏｆｔまたはＣｉｔｒｉｘからの遠隔表示クライアントであり得る。これらの場合、クライアント１０８ａ〜１０８ｎは、サーバー１１０に接続し、サーバー１１０上でユーザーセッションを確立する。サーバー１１０は、同時に、および／または、続いて、複数のユーザーセッションをホストし得る。例えば、サーバー１１０は、クライアント１０８ａからの第一のユーザーのユーザーセッションとクライアント１０８ｂからの第二のユーザーのユーザーセッションを同時にホストし得る。別の実施形態では、クライアント１０８ａからの第一のユーザーのユーザーセッションをサーバー１１０がホストし得るのは、サーバーがクライアント１０８ｂからの第二のユーザーのユーザーセッションのホストを終了した後である。
【００９２】
本発明が伴わない場合には、サーバー１１０でホストされる各ユーザーセッションは、サーバー１１０に割り当てられたＩＰアドレスを使うことになる。すると、異なるユーザーがサーバー１１０を使っているにもかかわらず、各ユーザーから生成されたネットワークトラフィックは、サーバー１１０の同じＩＰアドレスを共有することになる。本発明を伴う場合には、プログラム３４０ａ〜３４０ｎを通してサーバー１１０でホストされる各ユーザーセッションには、サーバー１１０のネットワーク識別子とは異なる固有のネットワーク識別子が割り当てられ得る。ユーザーが二つ以上のプログラム３４０ａ〜３４０ｎを実行している場合には、各ユーザープログラム３４０ａ〜３４０ｎには、ユーザーに関連するネットワーク識別子が割り当てられ得る。図３Ａについて記述されたのと同様な方法で、サーバー１１０のインターフェース機構３２０は、複数のネットワーク識別子３３０から固有のネットワーク識別子を取得、選択、割り当て、ソケットライブラリ３２２に関しては傍受、変更技術を使って、そのネットワーク識別子をプログラム３４０ａ〜３４０ｎのネットワーク通信に適宜適用する。
【００９３】
図３Ｃを参照して、システム３０４は、インターフェース機構３２０がプロキシサーバー１１０上に展開される場合の、仮想ＩＰアドレスを提供するための本発明の他の一実施形態を表している。概説すると、一つ以上のクライアント１０８ａ〜１０８ｎは、プロキシサーバー１１０経由でサーバー１１０’に接続し得る。クライアント１０８ａ〜１０８ｎは、ＶＰＮプロトコルまたはその他のトンネリングまたはカプセル化プロトコルによって、プロキシサーバー１１０経由でサーバー１１０’と通信し得る。さらに、クライアント１０８ａ〜１０８ｎの任意のいずれかは、サーバー、サーバーファーム、他のマルチユーザサーバーであり得る。サーバー１１０’は、プロキシサーバー１１０と同じネットワーク１０４上にあるか、または異なるネットワーク１０４’上にあり得る。
【００９４】
プロキシサーバー１１０は、クライアント１０８ａ〜１０８ｎ、またはサーバー１１０’のいずれかに存在するプログラム３４０ａ〜３４０ｎのいずれかに割り当てられる、複数のネットワーク識別子３３０を備え得る。プロキシサーバー１１０のインターフェース機構３２０は、クライアント１０８ａ〜１０８ｎとサーバー１１０’の間のプロキシサーバー１１０を通過する、クライアント１０８ａ〜１０８ｎまたはサーバー１１０’の特定のプログラム３４０ａ〜３４０ｎ、またはユーザーに関連したネットワークトラフィックへのネットワーク識別子の割り当てを管理する。クライアント１０８ａ〜１０８ｎまたはサーバー１１０’は、ネットワークトラフィックとの通信前には、特定のプログラム３４０ａ〜３４０ｎまたはユーザーにネットワーク識別子を拘束しないために、プロキシサーバー１１０とインターフェース機構３２０は、固有のネットワーク識別子を適切に適用するために、ユーザーまたはプログラム３４０ａ〜３４０ｎからのネットワークトラフィックのコンテクストを管理する必要がある。
【００９５】
一局面において、本発明は、固有のネットワーク識別子を、クライアント１０８やサーバー１１０等のコンピュータ１００の一つ以上のプログラム３４０ａ〜３４０ｎおよび／またはユーザーに割り当てることに関するものである。図４は、図３Ａ〜図３Ｃで示された本発明を実施するための方法４００のステップの流れ図を表している。方法４００は、複数のネットワーク識別子を取得するステップ（ステップ４１０）、あるプログラムのネットワーク識別子を選択するステップ（ステップ４１５）、ネットワーク識別子をそのプログラムのネットワーク通信と結び付けステップ（ステップ４２０）、そのネットワーク識別子をそのプログラムのネットワーク通信で送信するステップ（ステップ４２５）を含む。この方法４００は、プログラム３４０ａ〜３４０ｎの各々について繰り返すことができる。またはオプションとして、方法４００の任意のステップで、そのステップを複数のプログラム３４０ａ〜３４０ｎまたはユーザーのために行うことができる。別の実施形態では、方法４００は、クライアント１０８またはサーバー１１０の各ユーザーに適用することができる。
【００９６】
ステップ４１０で、コンピュータ１００（クライアント１０８、サーバー１１０、またはプロキシサーバー１１０のような）は、複数のネットワーク識別子３３０を取得する。ネットワーク識別子を取得するコンピュータとは別に、サーバー１１０から一つ以上のネットワーク識別子３３０が取得され得る。オプションとして、ＤＨＣＰサーバーから、一つ以上のネットワーク識別子３３０が取得され得る。別の実施形態では、ローカルのコンピュータ１００、または離れたサーバー１１０またはクライアント１０８にあるファイルシステムやデータベース等の格納場所３３６から、一つ以上のネットワーク識別子３３０が取得され得る。別の実施形態では、ネットワーク識別子ジェネレータ３３２から、一つ以上のネットワーク識別子３３０が取得され得る。ステップ４１０について、複数のネットワーク識別子３３０は、上記の代替のステップ実施形態の全てまたは一部によって取得され得る。さらに、一つ以上のネットワーク識別子３３０は、特定のあるユーザーに、またはユーザーベースに割り当てら得る。一実施形態では、ネットワーク識別子は、ユーザーがクライアント１０８でユーザーセッションを開始する時に、ユーザーのために取得される。図３Ａに関して説明されたように、当業者には、複数のネットワーク識別子３３０を取得する上で、ステップ４１０の様々な順列があることが、認識される。
【００９７】
ステップ４１５では、インターフェース機構３２０は、クライアント１０８またはサーバー１１０等のコンピュータ１００で実行または作動している呼び出されたプログラムのために、複数のネットワーク識別子３３０から、あるネットワーク識別子を選択する。ネットワーク識別子は、コンピュータ１００の起動時、または始動時に選択され得る。別の実施形態では、ネットワーク識別子は、プログラム３４０ａ〜３４０ｎがコンピュータに呼び出される時に、さらに別の一実施形態では、プログラム３４０ａ〜３４０ｎがソケットライブラリ３２２に最初のコールをする時に、選択され得る。さらなる実施形態では、プログラム３４０ａ〜３４０ｎのために選択されたネットワーク識別子３３０は、プログラム３４０ａ〜３４０ｎが終了、またはソケット通信を完了したら、解除または返却され得る。
【００９８】
ステップ４２０では、インターフェース機構３２０は、選択された識別子をプログラム３４０ａ〜３４０ｎのネットワーク通信と結び付ける。例示的な実施形態では、ステップ４２０には、図３Ａに関して述べられた傍受および変更技術が含まれる。他の実施形態では、ステップ４２０は、複数のＴＣＰスタック３２４またはネットワーク操作フィルタの使用を含み得る。ステップ４２５では、方法４００は、選択され、結び付けられ、または割り当てられたプログラム３４０ａ〜３４０ｎのネットワーク識別子を、プログラム３４０ａ〜３４０ｎのネットワーク通信で送信する。インターフェース機構３２０は、ネットワーク通信インターフェース３１０とインターフェースし、割り当てられたネットワーク識別子をプログラム３４０ａ〜３４０ｎのネットワーク通信で送信する。
【００９９】
別の局面では、プログラム３４０ａ〜３４０ｎに固有のネットワーク識別子を割り当てるための本発明の技術は、コンピュータ１００のループバックインターフェースを使って、ローカルのプロセス間通信にも適用することができる。ＩＰプロトコルはループバックネットワークを特定し、ほとんどのＩＰ実行はループバックインターフェースをサポートする。ループバックは、エンドポイントが一つしかない通信チャンネルであるために、コンピュータプログラムがループバックネットワーク上で送る任意のトラフィックは同じコンピュータに宛てられる。最も一般的に使われるループバックＩＰアドレスは、１２７．０．０．１にローカルホストのホスト名またはドメイン名が付いている。１２７．Ｘ．Ｘ．Ｘ範囲のループバックアドレスは全て、ＴＣＰスタック３２４によるループバックアドレスと見なされる。ＵＮＩＸ（登録商標）系のシステムでは、ループバックインターフェースは、一般にデバイスｌｏまたはｌｏ０と呼ばれる。ループバックインターフェースはいくつかのユーザーを有し得る。一部のアプリケーションは、ループバックアドレスを使って、ローカルで作動しているプログラムの間のプロセス間通信を確立する。他の事例では、ＴＣＰスタックが機能している場合には、ループバックアドレスのピンギングをテストに利用することができる。さらに、ネットワーク１４０に実際にアクセスする必要なしに、ループバックインターフェースはソフトウェアのテストに使用され得る。
【０１００】
図５は、本発明の技術をクライアントコンピュータ１０８のループバックインターフェース５１０に割り当てるコンピュータシステム５００のブロック図を表す。概説すると、クライアント１０８は、ループバックインターフェース５１０、インターフェース機構３１０、複数のループバックアドレス５３０、一つ以上のプログラム３４０ａ〜３４０ｎを備える。クライアント１０８は、ネットワーク１０４に接続し、それによってクライアント１０８はサーバー１１０にアクセスすることができる。サーバー１１０は、一つ以上のループバックアドレスを持つ記憶装置３３６を備え得、さらにループバックアドレスジェネレータ５３２を備え得る。
【０１０１】
クライアント１０８は、複数のループバックアドレス５３０をインターフェース機構３２０のために提供または取得し得、クライアント１０８の一つ以上のプログラム３４０ａ〜３４０ｎまたは一人以上のユーザーに固有のループバックアドレスを割り当てる際に使用する。ループバックアドレス５３０は、ＩＰアドレス、ドメインまたはホスト名、あるいはＩＰアドレスとホスト名の両方を備え得、それはループバックインターフェース５１０のためのループバックアドレスとして使用するためのものである。
【０１０２】
例示的な実施形態では、ループバックアドレス５３０は、固有のＩＰアドレスのリストを備え、各ＩＰアドレスはそれに付随するホスト名を少なくとも一つ有する。ループバックアドレス５３０は、一実施形態では静的に定義され、または、別の実施形態では動的に決定され得る。一部の場合には、ループバックアドレス５３０の一部が静的に定義され、他のループバックアドレス５３０が、クライアント１０８、サーバー１１０またはネットワーク１０４上の別のクライアント１０８’またはサーバー１１０’から動的に取得される。図３Ａ〜図３Ｃのネットワーク識別子と同じように、クライアント１０８は、ループバックアドレス５３０を多様な方法で取得し得、ループバックアドレス５３０の一部をある方法で受信し、ループバックアドレス５３０の他の部分を別の方法で受信し得る。一実施形態では、ループバックアドレス５３０は、離れたサーバー１１０にある、あるいは、クライアント１０８、またはネットワーク１０４の別のクライアント１０８’またはサーバー１１０’にある格納３３６場所（ファイル等）に静的に定義され得る。例えば、ループバックインターフェース５１０を実行する際、オペレーティングシステムおよびＴＣＰスタック３２４によって参照されるクライアント１０８のローカルホストファイルは、複数のループバックアドレスのリストを含み得る。別の実施形態では、一つ以上のループバックアドレス５３０が、特定のユーザーに割り当てられる、または専用に供される。別の実施形態では、クライアント１０８が、一つ以上のループバックアドレス５３０を、ネットワーク１０４のクライアント１０８によってアクセス可能なサーバー１１０から取得する。さらに別の実施形態では、一つ以上のループバックアドレス５３０が、図示のようにサーバー１１０で、またはオプションとしてクライアント１０８（図示されず）で作動しているループバックアドレスジェネレータ５３２から取得さ得る。ループバックアドレスジェネレータ５３２は、ネットワーク識別子ジェネレータ３３２と同様の任意のアドレス生成方式およびビジネスルールロジックを実行し得る。図３Ａ〜図３Ｃのネットワーク識別子３３０と同じように、当業者には、クライアント１０８が、多様な方法で、複数のループバックアドレス５３０を提供または取得し得ることが、認識される。
【０１０３】
さらに、クライアント１０８は、クライアント１０８が持てる、またはホストできる、あるいはループバックインターフェース５１０によってサポート可能な、最大数の固有のループバックアドレス３３０を取得、提供する、または割り当てられ得る。例えば、クライアント１０８の各ユーザーに一つのループバックアドレスは、クライアント１０８が同時に、または連続してホストできる特定ユーザーの最大数まで存在し得る。他の実施形態では、クライアントは、ユーザーの数、プログラムの数、あるいは、クライアント１０８のプログラム３４０ａ〜３４０ｎまたはユーザーに固有のループバックアドレスを割り当てる必要性に影響を与える他の要因に基づいて決定される、最大数未満の固有のループバックアドレス５３０を取得、提供する、または割り当てられ得る。一実施形態では、ループバックアドレス５３０の数は、設定可能なパラメータである。
【０１０４】
ループバックインターフェース５１０には、クライアント１０８がループバックインターフェース５１０と通信するために必要な、任意の、また全てのネットワーク関連のハードウェアおよびソフトウェアが含まれる。例えば、ループバックインターフェース５１０には、クライアント１０８のループバックネットワークを実施する、任意のソフトウェアおよび／またはハードウェア（オペレーティングシステムが提供するソフトおよびインターフェース等）が含まれる。
【０１０５】
インターフェース機構３１０は、ソケットライブラリ３２２とＴＣＰスタック３２４を備え、図３Ａに関連して説明されたように、他の実施形態も有し得る。また、図３Ａに関連してさらに詳しく説明されたように、図５のインターフェース機構３１０は、同様の傍受、拘束技術を実行して、クライアント１０８のプログラム３４０ａ〜３４０ｎまたはユーザーに固有のループバックアドレスを適用する。ループバックインターフェース５１０と通信する任意のプログラム３４０ａ〜３４０ｎは、ネットワーク１０４上でソケットベースの通信を行う時、ソケットライブラリ３２２にＡＰＩコールを行う。しかしながら、全ての通信が、ローカルのクライアント１０８に留まるが、しかしループバックインターフェース５１０によって実施されるＴＣＰスタック３２４の一部を行使するように、ローカルホストアドレスまたはループバックアドレスは、通信元および／または通信先のエンドポイントとして特定される。
【０１０６】
一例として、クライアント１０８のプログラム３４０ａは、ローカルウェブサーバー３４０ｂとローカルのプロセス間通信を確立しているウェブクライアントであり得る。プログラム３４０ａと３４０ｂは、デフォルトのローカルホストアドレス１２７．０．０．１を使ってＡＰＩコールを行うことで、プロセス間通信を確立し得る。クライアント１０８に割り当てられた標準的なローカルホストアドレス１２７．０．０．１を使う代わりに、インターフェース機構３２０は、固有のループバックアドレス３３０から、ある固有のループバックアドレス、例えば１２７．０．０．１０１を、プログラム３４０ａと３４０ｂの間のプロセス間通信に適用する。例示的な一例では、プログラム３４０ａと３４０ｎは、１２７．０．０．１のアドレスを使ってＡＰＩコールをし続ける。しかしながら、インターフェース機構３２０は、デフォルトアドレスを、ＴＣＰスタック３２４によってループバックアドレスとして認識される１２７．Ｘ．Ｘ．Ｘ範囲のループバックアドレス３３０からの固有のループバックアドレスに置き換える。この場合、プログラム３４０ａ〜３４０ｎは、この置き換えに気付かず、プログラム３４０ａ〜３４０ｎが１２７．０．０．１のアドレスを使っているかのように実行を続ける。
【０１０７】
このループバックアドレスは、プログラム３４０ａ〜３４０ｎ特定のものであり得、あるいはプログラム３４０ａ〜３４０ｎを実行するユーザーに割り当てられる、または専用に供されるものであり得る。プログラム３４０ｂのウェブサーバーは、プログラム３４０ａのウェブクライアントをローカルのＵＲＬアドレス１２７．０．０．１０１に差し向け得、そのウェブサーバーによりローカルのクライアント１０８に提供されるウェブサイトにアクセスする。プログラム３４０ａと３４０ｂが、クライアント１０８に割り当てられるものとは異なる固有のループバックアドレスを使う一方で、もう一組のプログラム３４０ｃと３４０ｄも、プログラム３４０ａと３４０ｂのループバックアドレスとは異なり、クライアント１０８のデフォルトループバックアドレス１２７．０．０．１とは異なる、１２７．０．０．１０２等の固有のループバックアドレスとのローカルのプロセス間通信を確立し得る。上記の例のプログラム３４０ａと３４０ｂのように、もう一組のプログラム３４０ｃと３４０ｄも、１２７．０．０．１のアドレスを使ってＡＰＩコールを行うが、インターフェース機構３２０が１２７．Ｘ．Ｘ．Ｘ範囲の固有のループバックアドレスに自動的に置き換える。
【０１０８】
固有のループバックアドレス５３０を一つ以上のプログラム３４０ａ〜３４０ｎまたはクライアント１０８のユーザーに適用することにより、本発明は、複数のループバックインターフェースのプロセス間通信が同時にまたは続けて起こることを可能にする。本発明がない場合には、最初の一組のプログラム３４０ａと３４０ｂ、もう一組のプログラム３４０ｃと３４０ｄは、標準的なデフォルトの１２７．０．０．１等、同じローカルループバックアドレスを使わなければならず、どちらか一組のプログラムが適切に機能しなくなる。さらに、本発明は、ループバックアドレスに適用されるため、モニタリングシステムおよびアプリケーションがプロセス間ループバック通信を特定のプログラムまたはユーザーに結び付けることを可能にする。
【０１０９】
別の局面では、本発明は、固有のループバックアドレスを一つ以上のプログラム３４０ａ〜３４０ｎ、および／または、クライアント１０８やサーバー１１０等コンピュータ１００のユーザーに割り当てるための方法に関するものである。図６は、図５に示される本発明を実施するための方法６００のステップの流れ図を表している。方法６００は、複数のループバックアドレスを取得するステップ（ステップ６１０）、あるプログラムのために、複数のループバックアドレスからループバックアドレスを選択するステップ（ステップ６１５）、ループバックアドレスをそのプログラムのループバックインターフェース通信と結び付けるステップ（ステップ６２０）、およびそのループバックアドレスをそのプログラムのループバックインターフェース通信で送信するステップ（ステップ６２５）を含む。この方法６００は、プログラム３４０ａ〜３４０ｎの各々について繰り返すことができる。またはオプションとして、方法６００の任意のステップで、そのステップを複数のプログラム３４０ａ〜３４０ｎのために行うことができる。別の実施形態では、方法６００は、クライアント１０８の各ユーザーに適用することができる。
【０１１０】
ステップ６１０で、クライアント１０８は、複数のループバックアドレス５３０を取得する。クライアント１０８から離れたサーバー１１０から一つ以上のループバックアドレス５３０が取得され得る。一実施形態では、離れたサーバー１１０またはオプションとしてローカルのクライアント１０８にあるファイルシステムやデータベース等の格納場所３３６から、一つ以上のループバックアドレス５３０が取得され得る。別の実施形態では、ループバックアドレスジェネレータ５３２から、一つ以上のループバックアドレス５３０が取得され得る。ステップ６１０について、複数のループバックアドレス５３０は、上記の代替のステップ実施形態の全てまたは一部によって取得され得る。さらに、一つ以上のループバックアドレス５３０は、特定のあるユーザーに割り当てられ得る。図５に関して説明されたように、当業者には、複数のループバックアドレス５３０を取得する上で、ステップ６１０の様々な順列があることが、認識される。
【０１１１】
ステップ６１５では、インターフェース機構３２０は、クライアント１０８またはサーバー１１０等のコンピュータ１００で実行または作動している、呼び出されたプログラムのために、複数のループバックアドレス５３０からあるループバックアドレスを選択する。ループバックアドレスは、クライアント１０８の起動時、または始動時に選択され得る。別の実施形態では、ループバックアドレスは、プログラム３４０ａ〜３４０ｎがクライアント１０８に呼び出される時に、さらに別の実施形態では、プログラム３４０ａ〜３４０ｎがソケットライブラリ３２２に最初のコールをする時に、選択され得る。別の実施形態では、ループバックアドレスはユーザーベースで選択される。一実施形態では、ループバックアドレスは、ユーザーがクライアント１０８でユーザーセッションを開始する時に、ユーザーのために取得および／または選択される。さらなる実施形態では、プログラム３４０ａ〜３４０ｎのために選択されたループバックアドレスは、プログラム３４０ａ〜３４０ｎがソケット通信を終了あるいは完了したら、解除または返却され得る。
【０１１２】
ステップ６２０では、インターフェース機構３２０は、選択されたループバックアドレスをプログラム３４０ａ〜３４０ｎのループバックインターフェース通信と結び付ける。例示的な実施形態では、ステップ６２０には、図５および図３Ａに関して述べられた傍受および変更技術が含まれる。他の実施形態では、ステップ６２０は、複数のＴＣＰスタック３２４またはネットワーク操作フィルタの使用を含み得る。ステップ６２５では、方法６００は、選択され、結び付けられ、または割り当てられたプログラム３４０ａ〜３４０ｎのループバックアドレスを、プログラム３４０ａ〜３４０ｎのループバックインターフェース通信で送信する。インターフェース機構３２０は、ループバックインターフェース５１０とインターフェースし、割り当てられたループバックアドレスをプログラム３４０ａ〜３４０ｎのループバックインターフェース通信で送信する。
【０１１３】
別の局面では、本発明は、ユーザーがネットワーク１０４を移動する際、仮想ホスト名をユーザーと結び付けるための一律のアドレス指定方式の提供に関するものである。上述のように、本発明は、プログラムの始動時、またはユーザーセッションの開始時、プログラムあるいはユーザーに、固有のネットワーク識別子を動的に割り当てることを可能にする。そのため、ユーザーは、仮想ホスト名に動的に「拘束」され得、ユーザーがネットワークにアクセスするために使用し得るコンピュータにとらわれず、ユーザーは常に同じホスト名、そして時には同じＩＰアドレスを使うことになる。仮想ホスト名および／または仮想ＩＰアドレスは、特定のユーザーに割り当てられ得、ユーザーがコンピュータまたはサブネットワークを切り替えてネットワークを移動する時、ユーザーに付随することができる。
【０１１４】
次に参照する図７は、本発明の実施形態を実行するためのクライアント・サーバーシステム７００を表すブロック図である。概説すると、一つ以上のクライアント１０８ａ〜１０８ｎは、ネットワーク１０４に接続し、サーバー１１０にアクセスする。ネットワーク１０４は、一つ以上のサブネットワーク１０４’を備え得、あるいは複数のネットワーク１０４、１０４’等であり得る。サーバー１１０は、名前解決サービス７１０、一組の仮想ホスト名７３０、ＩＰアドレス７４０、そしてオプションとしてＤＨＣＰサーバー３３４を備える。サーバー１１０は、サーバーファーム、サーバークラスタ、その他の複数サーバーシステム（サーバー１１０、１１０’、１１０”を含む）等であり得る。各々のクライアント１０８ａ〜１０８ｎおよびサーバー１１０は、プログラム３４０ａ〜３４０ｎを呼び出し、実行、あるいは行使することができる。ある実施形態では、クライアント１０８ａのプログラム３４０ａ〜３４０ｎは、サーバー１１０で作動するプログラム３４０ｂを備えるサーバー１１０でのユーザーセッションとともに、マルチユーザサーバー１１０またはサーバーファーム１１０’でのユーザーセッションを確立するために使用され得る。各々のクライアント１０８ａ〜１０８ｎには、本発明のネットワークインターフェースを行うためのネットワークインターフェース７０８ａ〜７０８ｎが含まれる。例示的な実施形態では、一つ以上のネットワークインターフェース７０８ａ〜７０８ｎには、図３Ａ〜図３Ｃおよび図５について述べられたように、固有のネットワーク識別子をプログラム３４０ａ〜３４０ｎおよび／またはユーザーに割り当てるためのインターフェース機構３２０が含まれる。
【０１１５】
サーバー１１０は、ＩＰアドレスをクライアント１０８ａ〜１０８ｎおよび／またはクライアント１０８ａ〜１０８ｎのネットワークインターフェース７０８ａ〜７０８ｎのインターフェース機構３２０に動的に割り当てるための、ＤＨＣＰサーバー３３４を有し得る。例えば、ユーザーセッションが始まると、新しいＩＰアドレスがＤＨＣＰ３３４から取得され得、ユーザーセッションが終了するとそのＩＰアドレスは解除され、ＤＨＣＰサーバー３３４のＩＰアドレスのプールに返却され得る。オプションとして、ＤＨＣＰサーバー３３４は、ネットワーク１０４上の別のサーバー１１０’にあり得る。ＤＨＣＰサーバー３３４は、ＩＰアドレスを予約しておくように設定され得、一つ以上のＩＰアドレスが、ユーザー名またはホスト名等のような特定の名前のために予約され得る。クライアント１０８ａ〜１０８ｎにクライアント１０８ａ〜１０８ｎのＩＰアドレス、サブネットマスク、デフォルトゲートウェイの情報を提供することに加えて、ＤＨＣＰサーバー３３５は、名前解決サービスのアドレス等のその他の情報、またはＤＨＣＰ３３４が提供するよう設定されている任意のその他の情報も提供することができる。さらに、ＤＨＣＰサーバー３３６は、クライアント１０８ａ〜１０８ｎからＩＰアドレス割り当て要求を受信する時、ユーザー名やホスト名等、特定の名前に関する情報を予約付きで受信することができる。このようにして、ＤＨＣＰサーバー３３４は、要求された名前に関連する、予約されたＩＰアドレスを返却することができる。ある実施形態では、クライアント１０８ａ〜１０８ｎは、ＤＨＣＰサーバー３３４から一つ以上のＩＰアドレスを取得し得る。他の実施形態では、クライアント１０８ａ〜１０８ｎは、ＤＨＣＰサーバー３３４とは別に、例えば、クライアント１０８のファイルから、または、サーバー１１０の記憶装置から、一つ以上のＩＰアドレスを取得し得る。図７のクライアント１０８は、図３Ａに関して記述された任意の方法で、ＩＰアドレスを取得することができる。
【０１１６】
サーバー１１０は、ドメインネーム・サーバー（ＤＮＳ）等の名前解決サービス７１０を備え得る。  あるいは、名前解決サービス７１０は、ネットワーク１０４上の別のサーバー１１０’、またはネットワーク１０４上の一つ以上のサーバー１１０’、１１０”で作動し得る。ＤＮＳサーバーのような名前解決サービスは、ＩＰアドレスに対応するドメイン名またはホスト名の集中リストを維持管理し、ドメイン名によって特定される要求を各々のＩＰアドレスにマップする。ホスト名は、名前解決サービス７１０に登録されるか、あるいは動的に更新され得る。一実施形態では、名前解決サービスは、ＴＣＰ／ＩＰ上でＮＥＴＢＩＯＳ  ＡＰＩを使ってホスト名をＩＰアドレスに変換する、ＷＩＮＳ（Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）インターネットネーミングサービス）を備える。ＤＮＳのような名前解決サービス７１０は、クライアント１０８ａ〜１０８ｎのＩＰアドレスが、例えばＤＨＣＰサーバー３３４によって動的に割り当てられるなどして変更すると、記録を動的に更新し得るが、名前解決サービス７１０は、クライアント１０８ａ〜１０８ｎのＩＰアドレスを追跡しているにすぎない。
【０１１７】
クライアント・サーバーシステム７００の作動中、プログラム３４０ａ〜３４０ｎは、クライアント１０８ａ〜１０８ｎで呼び出される。クライアント１０８ａ〜１０８ｎ、プログラム３４０ａ〜３４０ｎ、またはネットワークインターフェース７０８ａ〜７０８ｎは、例えば、ＤＨＣＰサーバー３３４から、ＩＰアドレスを動的に要求することができ、そのＩＰアドレスを、プログラム３４０ａを呼び出しているユーザー、または現在クライアント１０８ａ〜１０８ｎにログインしているユーザーのユーザー名に「拘束」することができる。クライアント１０８ａ〜１０８ｎ、プログラム３４０ａ〜３４０ｎ、またはネットワークインターフェース７０８ａ〜７０８ｎは、ＤＨＣＰサーバー３３４からＩＰアドレスを要求する時、その要求とともにユーザーの名前を報告できる。例示的な実施形態では、ＤＨＣＰサーバー３３４は、ＩＰアドレスの要求を通して報告されたユーザーのためにＩＰアドレスを予約するよう設定され得る。その後、ＤＨＣＰサーバー３３４は、予約されたＩＰアドレスをクライアント１０８ａに戻し、こうして、ユーザーと予約されたＩＰアドレスを有効に結び付けることができる。
【０１１８】
別の実施形態では、クライアント１０８ａ〜１０８ｎは、図３Ａ〜図３Ｃに関して記述されたように、ＩＰアドレスを複数のネットワーク識別子３３０から検索し得る。その後、クライアント１０８ａ〜１０８ｎは、システムＡＰＩコールを行い、仮想ホスト名から取得したＩＰアドレスでＤＨＣＰサーバー３３４を更新することができる。別の実施形態では、クライアント１０８ａは、仮想ホスト名を名前解決サービス７１０で登録し得、システムコールを行って取得したＩＰアドレスを提供し得る。さらに別の実施形態では、クライアント１０８ａ〜１０８ｎは、ＤＨＣＰサーバー３３４からＩＰアドレスを取得し得、ＤＨＣＰサーバー３３４から取得されたＩＰアドレスの仮想ホスト名を名前解決サービス７１０で登録し得る。
【０１１９】
ユーザーまたはプログラム３４０ａ〜３４０ｎの仮想ホスト名は、動的に作成され得、ユーザーセッションまたはプログラム３４０ａ〜３４０ｎを呼び出したユーザーに付随するユーザー名に基づき得る。別の実施形態では、仮想ホスト名は、ＤＨＣＰサーバー３３４または名前解決サービス７１０に静的に定義され得る。オプションとして、仮想ホスト名は、クライアント１０８ａ〜１０８ｎまたはサーバー１１０の別の格納３３６場所に定義され得る。
【０１２０】
例えば、ｍｙｃｏｍｐａｎｙのネットワークドメインでｕｓｅｒ１と名付けられたユーザーは、ｕｓｅｒ１．ｍｙｃｏｍｐａｎｙ．ｃｏｍという仮想ホスト名を有し得る。このｕｓｅｒ１用の仮想ホスト名は、ＤＨＣＰサーバー３３４および／または名前解決サービス７１０に登録され得る。別の実施形態では、仮想ホスト名は、ユーザーセッション等、ユーザーがプログラム３４０ａ〜３４０ｎを呼び出す時に作成され得る。その後、クライアント１０８ａ〜１０８ｎ、またはプログラム３４０ａ〜３４０ｎ、またはネットワークインターフェース７０８ａ〜７０８ｎは、そのユーザーの仮想ホスト名で名前解決サービスを動的に更新し得、仮想ホスト名に割り当てられたＩＰアドレスを提供し得て、それはまた予約され、あるいはユーザーに割り当てられる。
【０１２１】
クライアント１０８ａ〜１０８ｎ、プログラム３４０ａ〜３４０ｎ、またはネットワークインターフェース７０８ａ〜７０８ｎのいずれかには、仮想ホスト名ジェネレータ７４０が含まれ得、それは様々な属性や要因に基づき、ユーザーのための仮想ホスト名を動的に作成する。仮想ホスト名は単にユーザー名でもあり得る。他のケースでは、仮想ホスト名は、ユーザー名とクライアント１０８ａ〜１０８ｎのホスト名を組み合わせたものであり得る。他のケースでは、仮想ホスト名は、ユーザー名とネットワーク１０４のドメイン名を組み合わせたものであり得る。他の実施形態では、仮想ホスト名は、ユーザーが同時に実行しているユーザーセッションの数に依存し得る。さらに別の実施形態では、仮想ホスト名は、クライアント１０８ａ〜１０８ｎが接続されているサブネットワークの論理名に依存し得る。当業者には、仮想ホスト名が任意の文字または説明文の一部から形成され得、それを組み合わせたり、連結したり、削ったり、あるいは並べたりして仮想ホスト名を作り得、それが割り当てられたユーザーまたはログインエンティティを固有に識別し得ることが、認識される。
【０１２２】
固有のＩＰアドレスをクライアント１０８ａではなく、ユーザーに割り当てるという動的な性質によって、本発明は、ローミングするユーザーのために、一律のアドレス指定方式を提供することができる。例えば、ｕｓｅｒ１と名付けられた第一のユーザーがクライアント１０８ａにログインし、それには既にデフォルトのＩＰアドレス、例えば１９２．１６８．１．１００が割り当てられている可能性がある。ユーザーセッションを呼び出したり、別のプログラム３４０ａ〜３４０ｎを開始したりする時、クライアント１０８ａは、ＤＨＣＰサーバー３３４からＩＰアドレスを要求し得る。ＤＨＣＰサーバー３３４への要求で、ｕｓｅｒ１の仮想ホスト名が提供され得る。一実施形態では、ＤＨＣＰサーバー３３４は、ｕｓｅｒ１のために１９２．１６８．１．２００というＩＰアドレスを予約しており、要求に応えて、この予約したＩＰアドレスを提供する。その結果として、クライアント１０８ａのｕｓｅｒ１は、予約されたＩＰアドレス１９２．１６８．１．２００に割り当てられるｕｓｅｒ１という仮想ホスト名を有する。このｕｓｅｒ１という仮想ホスト名のＩＰアドレス１９２．１６８．１．２００へのマッピングは、名前解決サービス７１０で利用することができる。そのため、名前解決サービス７１０の検索では、ＩＰアドレス１９２．１６８．１．２００に関連したｕｓｅｒ１の仮想ホスト名が現れる。仮想ホスト名はユーザーを記述しているため、名前解決サービスの検索では、ユーザーおよびそのＩＰアドレスをすぐに特定し、検索とともに提供された他の情報と関連づける。
【０１２３】
同じｕｓｅｒ１は、クライアント１０８ａでのユーザーセッションを終了し、ネットワーク１０４の別の部分に移動し、クライアント１０８ｎにログインして別のユーザーセッションを呼び出し得る。同じように、クライアント１０８ｎでのｕｓｅｒ１のユーザーセッションのＩＰアドレスもＤＨＣＰサーバー３３４から要求され得る。要求には、ｕｓｅｒ１の仮想ホスト名が含まれ、ＤＨＣＰサーバー３３４は、予約されたＩＰアドレス１９２．１６８．１．２００を提供する。そのため、ｕｓｅｒ１は、クライアント１０８ａでのユーザーセッションと同じ仮想ホスト名と同じＩＰアドレスを有することになる。ユーザーがネットワーク１０４のクライアント１０８ａ〜１０８ｎからクライアント１０８ａ〜１０８ｎへ動くと、仮想ホスト名とＩＰアドレスは事実上ユーザーとともにローミングする。このように、ＩＰアドレスと仮想ホスト名の割り当てプロセスは、ユーザーセッションが実施されている物理的なコンピュータから  分離されている。コンピュータはすでにネットワーク１０４に接続するために割り当てられたＩＰアドレスとホスト名を有する。
【０１２４】
同じｕｓｅｒ１が異なるクライアント１０８ａ〜１０８ｎで複数のセッションを持つ場合には、セッションごとに独立したＩＰアドレスと仮想ホスト名が要求される。仮想ホスト命名体系は、これらのケースを明らかにする必要がある。例えば、クライアント１０８ａ〜１０８ｎ、プログラム３４０ａ〜３４０ｎ、ネットワークインターフェース７０８ａ〜７０８ｎ、またはオプションとして仮想ホスト名ジェネレータ７４０は、セッションとユーザーの両方を特定する、各ユーザーセッションのための仮想ホスト名を作成し得る。例えば、ｕｓｅｒ１の第一のセッションは、ｕｓｅｒ１．ｓｅｓｓｉｏｎ１という仮想ホスト名を有し得、ｕｓｅｒ１の第二のセッションは、ｕｓｅｒ１．ｓｅｓｓｉｏｎ２という仮想ホスト名を有し得る。固有のＩＰアドレスがＤＨＣＰサーバー３３４から、または、ネットワークインターフェース７０８ａ〜７０８ｎのインターフェース機構３２０によって、各仮想ホスト名に割り当てられ得る。ｕｓｅｒ１が、一律のアドレス指定方式で複数のユーザーセッションを持つ一方で、他のユーザーも複数のユーザーセッションを持つことができ、各々が一律のアドレス指定方式に従った仮想ホスト名によって識別される。
【０１２５】
一律のネットワークアドレス指定は、図３Ｃの具体例に描かれるように、ユーザーがプロキシサーバーを通じて接続する場合に、特に有用であり得る。プロキシサーバー１１０は、例えばＶＰＮを使い、ネットワークの接続形態によって制限されることなく、仮想ＩＰアドレスを提供できる。対照的に、ＤＨＣＰサーバー３３４は、ネットワークの接続形態と連動するＩＰアドレスの提供に限定されている。例えば、ＤＨＣＰサーバーによって提供される仮想ＩＰアドレスはすべて、ネットワーク１０４のクライアント１０８ａ〜１０８ｎに割り当てられるのと同じ範囲のＩＰアドレス、例えば１９２．Ｘ．Ｘ．Ｘであり得る。ユーザーがネットワーク１０４に接続し、ＤＨＣＰサーバー３３４によって提供される仮想ＩＰアドレスを割り当てられている場合には、そのユーザーはネットワーク上のクライアント１０８ａ〜１０８ｎに割り当てられるＩＰアドレスと同じ範囲の固有のＩＰアドレスを有することになる。それでもユーザーは固有なＩＰアドレスを取得するが、そのユーザーに割り当てられるＩＰアドレスは、クライアント１０８ａ〜１０８ｎがあるネットワーク１０４によって決まる。図３Ｃのように、ユーザーがプロキシサーバー１１０経由でネットワークに接続する場合には、そのユーザーは、プロキシサーバーのネットワーク１０４、またはユーザーがプロキシサーバー１１０経由でアクセスするネットワーク１０４のネットワーク接続形態と連動しない、固有のＩＰアドレスを提供され得る。プロキシサーバーを使うことにより、ユーザーがネットワーク１０４に接続するためのクライアント１０８ａ〜１０８ｎに関係なく、ネットワーク接続形態に付随しない仮想ＩＰアドレスがユーザーに割り当てられ得る。
【０１２６】
仮想ホスト名を使ったこの一律のアドレス指定方式は、デスクトップのような非マルチユーザーコンピュータ環境にも、ＭｉｃｒｏｓｏｆｔターミナルサーバーまたはＣｉｔｒｉｘメタプレゼンテーションサーバーで、複数のユーザーセッションを同時にホストするサーバーまたはサーバーファームのようなマルチユーザシステムにも適用され得る。ユーザーがデスクトップコンピュータにログインする時、そのユーザーのＩＰアドレスが取得され、ユーザーの仮想ホスト名と結び付けられ得る。マルチユーザシステムについては、本発明によって、システムは、各ユーザーおよびユーザーセッションに、同時に、またはその他の方法で、各ユーザーが独立した固有のＩＰアドレスを持っているデスクトップコンピュータ環境に似た実行環境を提供することが可能になる。
【０１２７】
さらに、ＩＰアドレス割り当てプロセスは、仮想ホスト名登録プロセスから分離することができる。例えば、ＩＰアドレスは、ユーザーのためにＩＰアドレスを予約せずにＤＨＣＰサーバー３３４経由で、または、ネットワークインターフェース７０８ａ〜７０８ｎのインターフェース機構３２０等、その他の方法で取得され得る。ＩＰアドレスが予約されていない、あるいはユーザーに割り当てられていなくても、仮想ホスト名はユーザー名に基づいて名前解決サービス７１０に登録され得る。これによって、ユーザーの仮想ホスト名は、ユーザーとともに異なるサブネットアドレスを持つネットワークを通して移動することができる。仮想ホスト名は、ユーザーにとって、ネットワーク１０４がアクセス可能な名前解決サービス７１０を通して変わらずにいるが、一方では、仮想ホスト名、従ってユーザーに割り当てられたＩＰアドレスは、異なるＩＰアドレスのサブネットアドレス指定方式を明らかにするために変化する。別の局面において、仮想ホスト名を使った一律のアドレス指定方式は、仮想ホスト名がネットワークを移動するユーザーに追随するため、ネットワーク上のユーザーの検索サービスを提供するために使用され得る。検索サービスは、ユーザーに割り当てられた仮想ホスト名および／またはＩＰアドレスによってユーザーを見つけるために提供され得る。
【０１２８】
別の局面では、本発明は、ユーザーがネットワーク１０４に接続するクライアント１０８ａ〜１０８ｎから独立して、ユーザーに一律のアドレス指定方式を提供するための方法に関するものである。図８は、図７に示された本発明を実施するための方法８００のステップの流れ図を表している。方法８００は、複数の仮想ホスト名を取得するステップ（ステップ８１０）、複数のインターネットプロトコルアドレスを取得するステップ（ステップ８１５）、仮想ホスト名をユーザーに割り当てるステップ（ステップ８２０）、仮想ホストをＩＰアドレスと結び付けるステップ（ステップ８２５）、およびユーザーがネットワークを移動する時に仮想ホスト名を提供するステップ（ステップ８３０）を含む。この方法８００は、各ユーザーについて繰り返すことができる。またはオプションとして、方法８００の任意のステップで、そのステップを複数のユーザーのために行うことができる。
【０１２９】
ステップ８１０では、複数の仮想ホスト名７３０が取得され、ネットワーク１０４の一人以上のユーザーに割り当てられる。これらの仮想ホスト名７３０の一つ以上が、ＤＨＣＰサーバー３３４または名前解決サービス７１０に登録され得る。他の実施形態では、これらの仮想ホスト名７３０の一つ以上が、クライアント１０８ａ〜１０８ｎまたはサーバー１１０の、ファイルまたはデータベース等の格納場所に定義される。別の実施形態では、仮想ホスト名７３０の一つ以上が、仮想ホスト名ジェネレータ７４０によって動的に作成される。仮想ホスト名は、必要に応じてユーザー一人に一つずつ取得され得、または、仮想ホスト名を各ユーザーまたはユーザーセッションに提供するために望ましいまたは必要な頻度で、まとめて取得され得る。ステップ８１５では、方法８００は、複数のＩＰアドレスの取得も行う。ＩＰアドレスは、ＤＨＣＰサーバー３３４経由で、またはネットワークインターフェース７０８ａ〜７０８ｎのインターフェース機構３２０によって、または図３Ａ〜図３Ｃ、および図４に関して述べられた他の方法で取得され得る。方法８００はＩＰアドレスを仮想ホスト名に割り当て、仮想ホスト名をユーザーまたはユーザーセッションと結び付ける。
【０１３０】
ステップ８２０で、方法８００は、仮想ホスト名または複数の仮想ホスト名を一つ以上のクライアント１０８ａ〜１０８ｎ経由でネットワークにアクセスする各ユーザーに割り当てる。第一のユーザーがクライアント１０８ａ経由でネットワーク１０４にアクセスし、サーバー１１０でユーザーセッションを確立する。この方法は、サーバー１１０でのそのユーザーのセッションのために、複数の仮想ホスト名７３０から一つの仮想ホスト名をそのユーザーに割り当てる。割り当てられた仮想ホスト名は、ユーザー専用に供され得、ユーザーの名前を含み得る。同じユーザーは、クライアント１０８ａからネットワーク１０４とサーバー１１０にアクセスしながら、第二のクライアント１０８ｂから同時にネットワーク１０４とサーバー１１０にもアクセスし得る。クライアント１０８ｂからのこの第二のセッション用にも、ユーザーに仮想ホスト名が割り当てられる。この第二の仮想ホスト名は、クライアント１０８ａ経由の第一のユーザーセッション用に割り当てられた仮想ホスト名と似ているが、異なる必要がある。例えば、これら二つのユーザーセッションの仮想ホスト名は、セッション番号等の、セッションを特定するサフィックスを有する、ユーザーのログイン名を備え得る。
【０１３１】
第二のユーザーがクライアント１０８ｂ経由でネットワーク１０４にアクセスし、サーバー１１０でユーザーセッションを確立し得る。方法８００によって、この第二のユーザー、またはネットワーク１０４またはサーバー１１０上の、それに続く、または並行する他のユーザーに、ユーザーおよび／またはユーザーセッションを固有に識別する仮想ホスト名を割り当てることが可能になる。仮想ホスト名は、このユーザーおよび／またはユーザーセッションを、同時に実行される、または以前実行された、他のユーザーおよび／またはユーザーセッションと区別する。ステップ８２０は、ユーザー固有のネットワークユーザーＩＤに基づく仮想ホスト名等、第一のユーザーの仮想ホスト名とは異なる仮想ホスト名を第二のユーザーに割り当てる。ステップ８２０はまた、ユーザーおよびユーザーのセッションを固有に識別する仮想ホスト名を第二のユーザーに割り当てる。別の実施形態では、仮想ホスト名は、ユーザー、クライアント１０８ａ〜１０８ｎ、またはユーザーがアクセスしているサーバー１１０、またはユーザーが通信しているネットワーク１０４のサブネットワークを記述するものであり得る。
【０１３２】
ステップ８２５では、方法８００は、各ユーザーまたはユーザーセッションの仮想ホスト名を、各ユーザーまたは各ユーザーセッションに割り当てられたＩＰアドレスに結び付ける。上述のように、仮想ホスト名が各ユーザーまたはユーザーセッションに動的に割り当てられるだけでなく、各ユーザーまたはユーザーセッションのための各ＩＰアドレスも、図３Ａ〜図３Ｃに関して述べられたように、動的に割り当てられ得る。ユーザーまたはユーザーセッションに割り当てられた各仮想ホスト名は、図３Ａ〜図３Ｃで説明したソケットベースの通信等、ネットワーク通信用に仮想ホスト名をＩＰアドレスに分解するため、ＩＰアドレスと結び付けられる必要がある。仮想ホスト名は、ネットワーク１０４上の名前解決サービス７１０経由で、ＩＰアドレスに分解することができる。特定のユーザーまたはユーザーセッションのために、ＩＰ  アドレスと仮想ホスト名をそれぞれ取得した後、ＤＨＣＰサーバー３３４および／または名前解決サービス７１０の記録にある、ＩＰアドレスの仮想ホスト名へのマッピングが更新される必要があり得る。  別のケースでは、仮想ホスト名および／またはＩＰアドレが、ＤＨＣＰサーバー３３４および／または名前解決サービスにあらかじめ登録され得る。
【０１３３】
ステップ８３０では、ユーザーがネットワーク１０４の一つのクライアント１０８ａ〜１０８ｎから別のクライアント１０８ａ〜１０８ｎへ移動する時に、またはユーザーがクライアント１０８ａ〜１０８ｎまたはサーバー１１０（マルチユーザーサーバー１１０’等）で複数ユーザーのセッションを開始する時、ステップ８１０、８１５、８２０、８２５の仮想ホスト名アドレス指定方式が実行される。ユーザーがクライアント１０８ａ〜１０８ｎまたはサーバー１１０上で、ユーザーセッション等プログラム３４０ａ〜３４０ｎを始動するたびに、ユーザーは図３Ａおよび図３Ｂに関連する、また図４の対応する方法に関連する記載のとおりＩＰアドレスを、そして、図７および上述の方法８００のステップに関連する記載のとおり仮想ホスト名を取得する。そのため、本発明の仮想ホスト名のローミング特性によって、仮想ホスト名および／または仮想ＩＰアドレスを有効利用して、ユーザーを容易に識別することが可能になり、それは、セキュリティの提供やユーザー活動の監視のための手段として、またはユーザーを発見するための検索サービスを提供したり、ホスト名やＩＰアドレスを使ってユーザーを識別するアプリケーションおよびシステムを満たしたりするために利用され得る。
【０１３４】
本発明の例示的なシステムおよび方法は、一般にＴＣＰ／ＩＰネットワークに関して論じられているが、これらのシステムおよび方法は他の種類のネットワーク、例えばＩＰＸやＤＥＣＮＥＴにも適用され得る。当業者には、本発明のシステムおよび方法のＴＣＰ／ＩＰネットワーク以外のネットワークへの応用が、理解される。このように、本発明は、本明細書に記述された技術およびメカニズムを適用する任意の種類のネットワークで作動する、プログラム、ユーザーまたはユーザーセッションのために固有のネットワーク識別子を提供することができる。また、本発明は、特定のネットワークによってサポートされる同様のループバックタイプのインターフェースを使うプロセス間通信のために固有のループバック識別子を提供することもできる。さらに、本発明は、これらの他の種類のネットワーク上のユーザーのために、一律のネットワークアドレス指定方式を提供することができる。
【０１３５】
当業者によって、本発明の精神と範囲から逸脱することなく、多くの改変や改良を行うことが可能である。従って、示された実施形態は、単に例示を目的として示されたものであって、発明を限定するものと受け取られるべきではないことが、明確に理解されねばならない。本発明は特許請求の範囲で定義される。これらの特許請求の範囲は、文字どおり示されたものと、そして、たとえ他の点では上記の例示で示され記述されたものと同一ではないとしても、実質的には変わらない均等の要素とを含むものとして、読まれるべきである。
【図面の簡単な説明】
【０１３６】
【図１Ａ】本発明の実施形態を実施するための、コンピュータ機器の実施形態のブロック図である。
【図１Ｂ】本発明の実施形態を実施するための、コンピュータ機器の実施形態のブロック図である。
【図２】本発明の例示的な実施形態を実施するための、クライアント・サーバーコンピュータシステムのブロック図である。
【図３Ａ】ネットワークのクライアントノードにおいて固有のネットワーク識別子を割り当てるための、本発明の実施形態のブロック図である。
【図３Ｂ】クライアント・サーバーコンピュータシステムのサーバーノードにおいて固有のネットワーク識別子を割り当てるための、本発明の実施形態のブロック図である。
【図３Ｃ】クライアント・サーバーコンピュータシステムのプロキシサーバーを使用して、固有のネットワーク識別子を割り当てるための、本発明の代替的な実施形態のブロック図である。
【図４】図３Ａ〜図３Ｃの実施形態で実施されるステップの流れ図である。
【図５】固有のループバックアドレスを割り当てるための、本発明の実施形態の構成要素のブロック図である。
【図６】図５の実施形態で実施されるステップの流れ図である。
【図７】一律のアドレス指定方式のための、本発明の実施形態のブロック図である。
【図８】図７の実施形態で実施されるステップの流れ図である。
【図１Ａ】
2008515293.tif 000003
【図１Ｂ】
2008515293.tif 000004
【図２】
2008515293.tif 000005
【図３Ａ】
2008515293.tif 000006
【図３Ｂ】
2008515293.tif 000007
【図３Ｃ】
2008515293.tif 000008
【図４】
2008515293.tif 000009
【図５】
2008515293.tif 000010
【図６】
2008515293.tif 000011
【図７】
2008515293.tif 000012
【図８】
2008515293.tif 000013
【国際調査報告】
2008515293.tif 000014
2008515293.tif 000015
2008515293.tif 000016
2008515293.tif 000017
2008515293.tif 000018