JP2008515293A - 仮想ホスト名ローミングおよび仮想ipアドレスを管理するためのシステムと方法 - Google Patents
仮想ホスト名ローミングおよび仮想ipアドレスを管理するためのシステムと方法 Download PDFInfo
- Publication number
- JP2008515293A JP2008515293A JP2007533728A JP2007533728A JP2008515293A JP 2008515293 A JP2008515293 A JP 2008515293A JP 2007533728 A JP2007533728 A JP 2007533728A JP 2007533728 A JP2007533728 A JP 2007533728A JP 2008515293 A JP2008515293 A JP 2008515293A
- Authority
- JP
- Japan
- Prior art keywords
- user
- network
- computer
- program
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/08—Protocols specially adapted for terminal emulation, e.g. Telnet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/35—Network arrangements, protocols or services for addressing or naming involving non-standard use of addresses for implementing network functionalities, e.g. coding subscription information within the address or functional addressing, i.e. assigning an address to a function
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
- H04L61/5014—Internet protocol [IP] addresses using dynamic host configuration protocol [DHCP] or bootstrap protocol [BOOTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本発明は、固有のネットワーク識別子をコンピュータに呼び出される一つ以上のプログラムに割り当て、ネットワークにアクセスするユーザーのために、ユーザーがネットワークにアクセスしているコンピュータから独立した、一律のネットワークアドレス指定方式を提供するためのシステムおよび方法に関する。コンピュータは、複数のネットワーク識別子を取得し、第一のネットワーク識別子をコンピュータに呼び出される第一のプログラムに結びつけ、第二のネットワーク識別子をコンピュータに呼び出される第二のプログラムに結び付ける。さらに、仮想ホスト名がユーザー、ユーザーセッション、またはユーザーが実行しているプログラムの仮想IPアドレスに割り当てられ、結び付けられ得る。ユーザーが異なるコンピュータからネットワークにアクセスするために、ユーザーは同じ仮想ホスト名、そして、時には同じ仮想IPアドレスが割り当てられ得る。
Description
(関連出願の引用)
本出願は、米国特許出願第10/711,583号、名称「Systems And Methods For Managing Virtual IP Addresses」(2004年9月27日出願)および米国特許出願第10/711,591号、名称「Systems And Methods For Virtual Host Name Roaming」(2004年9月27日出願)に対する優先権を主張し、該出願のすべてが、本明細書において参考として援用される。
本出願は、米国特許出願第10/711,583号、名称「Systems And Methods For Managing Virtual IP Addresses」(2004年9月27日出願)および米国特許出願第10/711,591号、名称「Systems And Methods For Virtual Host Name Roaming」(2004年9月27日出願)に対する優先権を主張し、該出願のすべてが、本明細書において参考として援用される。
(技術分野)
本発明は、概してネットワーク通信に関する。より詳細には、本発明は、コンピュータ上で作動する一つ以上のプログラムに、固有のネットワーク識別子を割り当てるための、また、ネットワークにアクセスするユーザーに仮想ホスト名を割り当てるための、一律のネットワークアドレス指定方式を提供するための、システムおよび方法に関する。
本発明は、概してネットワーク通信に関する。より詳細には、本発明は、コンピュータ上で作動する一つ以上のプログラムに、固有のネットワーク識別子を割り当てるための、また、ネットワークにアクセスするユーザーに仮想ホスト名を割り当てるための、一律のネットワークアドレス指定方式を提供するための、システムおよび方法に関する。
標準的なコンピュータシステムは、そのコンピュータシステムに割り当てられた単一のインターネットプロトコル(IP)アドレスおよび対応するホスト名を使用する。コンピュータ上のいかなるユーザーセッションまたはプログラムも、TCP/IPネットワーク等でのネットワーク通信には、コンピュータのIPアドレスまたはホスト名を使用する。例えば、クライアントとサーバー間など、コンピュータを行き来するネットワーク通信には、コンピュータのホスト名またはIPアドレスがそのコンピュータのネットワーク通信の一部として使われる。サーバーがMicrosoft Terminal Serverを使用しているようなマルチユーザ環境でも、全てのユーザーまたはマルチユーザサーバーで作動しているプログラムは、そのサーバーに割り当てられた同じホスト名およびIPアドレスを共有する。IPアドレスおよびホスト名は、コンピュータまたはマシンに依存しており、そのため、コンピュータに由来するネットワーク通信に付随している。コンピュータが複数のネットワークカードや複数のIPアドレスを持つ場合でも、これらのIPアドレスおよびホスト名は、そのコンピュータに付随しており、特にコンピュータのユーザーまたはプログラムに付随するものではない。このようにして、そのコンピュータのユーザーおよびプログラムは全て、そのコンピュータに割り当てられた、同じIPアドレスまたはホスト名でネットワーク通信する。このようにして、IPアドレスまたはホスト名は、コンピュータに付随するのであって、コンピュータのユーザーに付随するのではない。
アプリケーションの中には、各ユーザーまたはプログラムが固有のIPアドレスを使用することを前提とするものもある。例えば、Voice Over IP(VoIP)アプリケーションやビデオ会議システムは、ユーザーごとに固有のIPアドレスが必要である。別の例では、ネットワーク監視およびメインフレームシステムの中には、ユーザー識別のためにIPアドレスを使うものもある。しかし、二つのプログラムがコンピュータの同じIPアドレスを共有する場合には、これではユーザーを区別する上で問題が生じる。例えば、第一のユーザーがマルチユーザサーバー上でユーザーセッションを開始し、第二のユーザーが同じマルチユーザサーバー上で別のセッションを開始する。第一のユーザーのセッションも第二のユーザーのセッションも、そのマルチユーザサーバーに割り当てられた同じIPアドレスを使うことになる。従って、これらのユーザーセッションのネットワーク通信はIPアドレスによって区別することができない。
さらに、コンピュータは通常、そのコンピュータのループバックインターフェースを使ったローカルプロセス間通信のための単一のループバックアドレスも割り当てられている。コンピュータのIPアドレスのように、このループバックアドレスもそのコンピュータの複数のユーザーによって共有される。一つのアプリケーションがループバックアドレスをコミュニケーション用に使う間は、もう一つのアプリケーションはそれを使えないことがあり得る。例えば、マルチユーザ環境で作動する場合には、コンピュータのルーフバックアドレスを使って、第一のアプリケーションインスタンスが開始される。第二のアプリケーションインスタンスがコンピュータのルーフバックアドレスを使って開始されると、第一のアプリケーションインスタンスは機能しなくなる。
コンピュータに依存したIPアドレスに関連するもう一つの問題は、ユーザーがサーバーファーム内を移動する時である。例えば、マルチユーザシステムの中には、一連のロード・バランシング・サーバーを使って、多数の同時ユーザーをサポートするものがある。ユーザーが接続する時、そのユーザーは自動的かつ動的に最も負荷の少ないサーバーに誘導され、負荷を分散する。残念ながら、このことは、そのユーザーが動的に決定されたサーバーに接続するまで、そのユーザーに割当てられるIPアドレスがわからないことを意味する。従って、ユーザーがサーバーファーム内をローミングしている時には、システムは同じIPアドレスを持つユーザーまたはプログラムに依存することができない。複数ユーザーシステムに関するもう一つの問題は、セキュリティである。ループバックインターフェースは、複数ユーザーシステムの全てのユーザーによって共有されており、通常、ループバックインターフェースへの複数ユーザーのアクセスを管理するためのセキュリティ保護は存在しない。例えば、あるアプリケーションが複数ユーザーシステムのループバックアドレス上でTCP/IP通信を行う場には、セキュリティ攻撃者は複数ユーザーによって共有されるループバックインターフェース上の通信の妨害を企て得る。
あるネットワーク上でホスト名解決を行う際には、またはネットワークで使われるホスト名を検索するためには、そのネットワーク中のコンピュータのホスト名およびIPアドレスのみが発見される。これらのホスト名から、コンピュータ上のユーザーまたはユーザーセッションは容易には識別され得ない。さらに、あるユーザーはそれぞれが異なるホスト名を持つ異なる複数のコンピュータから、あるいは同じホスト名を持つ同じコンピュータ上の複数ユーザーセッションからネットワークにアクセスし得る。そのため、標準的なネットワークアドレス指定方式では、ホスト名によってユーザーを有効に検索し、どんなユーザーがネットワークにアクセスしているか、そしていくつのセッションからか、またはどのコンピュータからかを判断することができない。
また、アプリケーションの中には、各ユーザーまたはプログラムが固有のホスト名を使うことを前提にしているものがある。例えば、ネットワーク監視およびメインフレームシステムの中には、ホスト名を使ってユーザーを識別するものがある。しかし、もし同じコンピュータに二人のユーザーがいると、彼らはそのコンピュータに割り当てられた同じホスト名を共有することになる。別のケースでは、ユーザーはサーバーファームの中を移動するかもしれず、従って常に同じコンピュータからネットワークにアクセスするとは限らない。例えば、マルチユーザシステムの中には、一連のロード・バランシング・サーバーを使って、多数の同時ユーザーをサポートするものがある。ユーザーが接続する時には、そのユーザーは自動的かつ動的に最も負荷の少ないサーバーに誘導され、負荷を分散する。残念ながら、このことは、そのユーザーが動的に決定されたサーバーに接続するまで、そのユーザーに割り当てられるコンピュータのIPアドレスおよびホスト名がわからないことを意味する。従って、ユーザーがサーバーファーム内をローミングしている時には、システムは同じIPアドレスを持つユーザーまたはプログラムに依存することができない。
複数ユーザーシステムに関するもう一つの問題は、セキュリティである。ループバックインターフェースは、複数ユーザーシステムの全てのユーザーによって共有されており、通常、ループバックインターフェースへの複数ユーザーのアクセスを管理するためのセキュリティ保護は存在しない。例えば、あるアプリケーションが複数ユーザーシステムのループバックアドレス上でTCP/IP通信を行う場合には、セキュリティ攻撃者が複数ユーザーによって共有されるループバックインターフェース上の通信の妨害を企て得る。このためホスト名またはIPアドレスをユーザーと関連づけることがより難しくなる。
同様の問題は、IPXなど、ネットワーク識別子がコンピュータに依存している他の種類のネットワークでも起こり得る。従って、単一のコンピュータまたはマルチユーザシステムで作動している複数のプログラムまたはユーザーに、固有のネットワーク識別子を割り当てる技術を提供することが望ましい。コンピュータシステムで作動している複数のユーザーまたはプログラムに、固有のネットワーク識別子を割り当てるシステムおよび方法が必要である。また、ネットワークをローミングしたり、マルチユーザシステムにアクセスしたり、複数ユーザーセッションを開始したりするユーザーに、一律のネットワークアドレス指定方式を提供することが望ましい。ユーザーがネットワークにアクセスするコンピュータシステムのIPアドレスおよびホスト名から独立して、ユーザーのために仮想ホスト名を仮想IPアドレスに割当てるシステムおよび方法が必要である。
(発明の要旨)
本発明は、コンピュータで作動している一つ以上のプログラム、ユーザーまたはユーザーセッションのネットワーク通信のために、固有のネットワーク識別子を提供するためのシステムおよび方法に関するものである。プログラムとはアプリケーション、アプリケーション隔離環境、またはマルチユーザ環境がホストするユーザーセッション、またはその他のコンピュータプログラム等である。監視アプリケーション、メインフレーム、その他のアプリケーションまたはシステムは、ユーザーまたはプログラムが、固有のネットワーク識別子、すなわちホスト名またはIPアドレスを所有していることに依存している。本発明は、プログラム、ユーザーまたはユーザーセッションに、ネットワーク通信のためにコンピュータに割り当てられるものとは異なる、固有のネットワーク識別子を提供する。それにより、同一のコンピュータ上の複数のユーザーが、互いに異なる、またコンピュータとも異なる、固有のネットワーク識別子でネットワーク通信を行うことができる。さらに、本発明は、コンピュータのループバックインターフェースを使ったプロセス間通信のために、一つ以上のプログラム、ユーザーまたはユーザーセッションに固有のループバックアドレスを提供する。それにより、複数のユーザーおよびプログラムが、ループパックインターフェースを同じコンピュータ上で同時に使うことができる。 要約すると、本発明は、コンピュータのIPアドレスおよびホスト名から独立した、固有のIPアドレスおよび/またはホスト名をコンピュータ上に提供する。
本発明は、コンピュータで作動している一つ以上のプログラム、ユーザーまたはユーザーセッションのネットワーク通信のために、固有のネットワーク識別子を提供するためのシステムおよび方法に関するものである。プログラムとはアプリケーション、アプリケーション隔離環境、またはマルチユーザ環境がホストするユーザーセッション、またはその他のコンピュータプログラム等である。監視アプリケーション、メインフレーム、その他のアプリケーションまたはシステムは、ユーザーまたはプログラムが、固有のネットワーク識別子、すなわちホスト名またはIPアドレスを所有していることに依存している。本発明は、プログラム、ユーザーまたはユーザーセッションに、ネットワーク通信のためにコンピュータに割り当てられるものとは異なる、固有のネットワーク識別子を提供する。それにより、同一のコンピュータ上の複数のユーザーが、互いに異なる、またコンピュータとも異なる、固有のネットワーク識別子でネットワーク通信を行うことができる。さらに、本発明は、コンピュータのループバックインターフェースを使ったプロセス間通信のために、一つ以上のプログラム、ユーザーまたはユーザーセッションに固有のループバックアドレスを提供する。それにより、複数のユーザーおよびプログラムが、ループパックインターフェースを同じコンピュータ上で同時に使うことができる。 要約すると、本発明は、コンピュータのIPアドレスおよびホスト名から独立した、固有のIPアドレスおよび/またはホスト名をコンピュータ上に提供する。
さらに、本発明は、ユーザーがネットワークを移動したり、複数セッションを開始したりする際、ユーザーまたはユーザーセッションに仮想ホスト名を割り当てる、一律のネットワークアドレス指定方式を提供するためのシステムおよび方法に関するものである。本発明は、プログラム、ユーザーまたはユーザーセッションに、ネットワーク通信のためにコンピュータに割り当てられるものとは異なる、固有の仮想インターネットプロトコル(IP)アドレスを提供する。それにより、同一のコンピュータ上の複数のユーザーが、互いに異なる、またコンピュータとも異なる、固有のIPアドレスでネットワーク通信を行うことができる。さらに、仮想ホスト名または一連の仮想ホスト名を、特定のユーザーに付随させることができ、ユーザーまたはユーザーのプログラムに割り当てられる仮想IPアドレスに関係なく、ユーザーに付随させることもできる。そして、本発明は、仮想ホスト名をユーザーの仮想IPアドレスと関連させることで、仮想ホスト名が一律の方法でユーザーを識別する。要約すると、本発明は、コンピュータのホスト名から独立し、ユーザーとともにネットワークを移動する、ユーザーに付随する仮想ホスト名を提供する。
一局面では、本発明は、複数のネットワーク識別子を持つコンピュータ上で呼び出される各プログラムに、固有のネットワーク識別子を割り当てるシステムに関するものである。このコンピュータはインターフェース機構とネットワーク通信インターフェースで構成される。インターフェース機構は、複数のネットワーク識別子から、コンピュータで呼び出された第一のプログラムに対して、第一のネットワーク識別子を選択し、コンピュータで呼び出された第二のプログラムに対して、第一のネットワーク識別子とは異なる、第二のネットワーク識別子を選択する。インターフェース機構が、第一のネットワーク識別子と第一のプログラムを結び付け、第二のネットワーク識別子と第二のプログラムを結び付ける。ネットワーク通信インターフェースは、インターフェース機構と通信して、第一のネットワーク識別子を第一のプログラムのネットワーク通信で送信し、第二のネットワーク識別子を第二のプログラムのネットワーク通信で送信する。
一実施形態では、ネットワーク識別子は、インターネットプロトコルアドレスを備え、別の実施形態では、ホスト名を備える。一実施形態では、第一のプログラムと第二のプログラムのうち一つは、コンピュータがホストするユーザーセッションを備える。別の実施形態では、第一のプログラムと第二のプログラムのうち一つは、アプリケーション隔離環境とアプリケーションのうちの一つを備える。
一実施形態では、コンピュータは、サーバーから複数のネットワーク識別子のうちの少なくとも一つを取得する。サーバーは、動的ホスト構成プロトコルサーバーで構成される。別の実施形態では、コンピュータは、格納先から複数のネットワーク識別子のうちの少なくとも一つを取得する。別の実施形態では、コンピュータは、ネットワーク識別子ジェネレータから複数のネットワーク識別子のうちの少なくとも一つを取得する。さらに、別の実施形態では、複数のネットワーク識別子のうちの少なくとも一つがコンピュータのユーザーに割り当てられる。
さらに一実施形態では、インターフェース機構は、第一のプログラムの設定中に第一のプログラム用の第一のネットワーク識別子を選択する。さらにもう一つの実施形態では、インターフェース機構は、第二のプログラムの設定中に第二のプログラム用の第二のネットワーク識別子を選択する。一実施形態では、コンピュータは第一のユーザーセッションと第二のユーザーセッションを同時にホストする。別の実施形態では、コンピュータは第一のユーザーセッションをホストした後、第二のユーザーセッションをホストする。
一実施形態では、インターフェース機構は、第一のプログラムの名前解決要求に応えて第一のプログラムの第一のネットワーク識別子を提供し、第二のプログラムの名前解決要求に応えて第二のプログラムの第二のネットワーク識別子を提供する。別の実施形態では、インターフェース機構は、第一のTCPスタックで構成される。さらにもう一つの実施形態では、インターフェース機構は、第二のTCPスタックで構成される。一実施形態では、インターフェース機構は、ネットワーク通信インターフェースとの通信用のソケットライブラリで構成される。ソケットライブラリは、WinSockアプリケーションプログラミングインターフェースで構成される。一実施形態では、インターフェース機構は、ネットワーク通信インターフェースとのソケット通信のために、第一のネットワーク識別子を第一のプログラムに結び付ける。さらに別の実施形態では、インターフェース機構は、ネットワーク通信インターフェースとのソケット通信のために、第二のネットワーク識別子を第二のプログラムに結び付ける。さらに別の実施形態では、インターフェース機構は、ネットワークパケット操作フィルタで構成される。
別の局面では、本発明は、コンピュータ上で呼び出される各プログラムに、固有のループバックアドレスを割り当てるシステムに関するものである。このシステムは、複数のループバックアドレスを取得するコンピュータで構成される。このコンピュータはインターフェース機構とループバックインターフェースで構成される。インターフェース機構は、複数のループバックアドレスから、コンピュータで呼び出された第一のプログラムに対して、第一のループバックアドレスを選択し、コンピュータで呼び出された第二のプログラムに対して、第一のループバックアドレスとは異なる、第二のループバックアドレスを選択する。インターフェース機構が、第一のループバックアドレスを第一のプログラムのローカルホストアドレスとして関連づけ、第二のループバックアドレスを第二のプログラムのローカルホストアドレスとして関連づける。ループバックインターフェースは、インターフェース機構と通信して、第一のループバックアドレスを第一のプログラムのプロセス間通信で送信し、第二のループバックアドレスを第二のプログラムのプロセス間通信で送信する。
一実施形態では、第一のプログラムと第二のプログラムのうちの一つは、コンピュータがホストするユーザーセッショを備える。別の実施形態では、第一のプログラムと第二のプログラムのうち一つは、アプリケーション隔離環境とアプリケーションのうちの一つを備える。
一実施形態では、インターフェース機構は、第一のプログラムの設定中に第一のプログラム用の第一のループバックアドレスを選択する。別の実施形態では、インターフェース機構は、第二のプログラムの設定中に第二のプログラム用の第二のループバックアドレスを選択する。
さらなる実施形態では、コンピュータは、サーバーから複数のループバックアドレスのうちの少なくとも一つを取得する。別の実施形態では、コンピュータは、格納先から複数のループバックアドレスのうちの少なくとも一つを取得する。さらに別の実施形態では、システムは、複数のループバックアドレスのうちの少なくとも一つを生成する、ループバックアドレスジェネレータを備える。
別の局面では、本発明は、コンピュータによって呼び出される各プログラムに、固有のネットワーク識別子を割り当てる方法に関するものである。この方法は、複数のネットワーク識別子を取得し、複数のネットワーク識別子から、コンピュータで呼び出された第一のプログラムに対して、第一のネットワーク識別子を選択し、コンピュータで呼び出された第二のプログラムに対して、第一のネットワーク識別子とは異なる、第二のネットワーク識別子を選択するステップを含む。この方法は、第一のネットワーク識別子と第一のプログラムのネットワーク通信を結び付け、第二のネットワーク識別子と第二のプログラムのネットワーク通信を結び付ける。この方法は、第一のネットワーク識別子を第一のプログラムのネットワーク通信で送信し、第二のネットワーク識別子を第二のプログラムのネットワーク通信で送信する。
この方法の一実施形態では、ネットワーク識別子は、インターネットプロトコルアドレスを備え、別の実施形態では、ホスト名を備える。一実施形態では、第一のプログラムと第二のプログラムのうち一つは、コンピュータがホストするユーザーセッションを備える。別の実施形態では、第一のプログラムまたは第二のプログラムは、アプリケーション隔離環境またはアプリケーションを備え得る。
一実施形態では、この方法はさらに、サーバーから少なくとも一つのネットワーク識別子を取得するコンピュータを含む。もう一つの実施形態では、コンピュータは、動的ホスト構成プロトコルサーバーから少なくとも一つのネットワーク識別子を取得する。コンピュータは、格納先またはネットワーク識別子ジェネレータからネットワーク識別子の一つを取得し得る。さらに、この方法は、少なくとも一つのネットワーク識別子をコンピュータのユーザーに割り当てることを含む。
一実施形態では、この方法はさらに、第一のプログラムの設定中に第一のプログラム用の第一のネットワーク識別子を選択し、第二のプログラムの設定中に第二のプログラム用の第二のネットワーク識別子を選択することを含む。
一実施形態では、この方法は、第一のユーザーセッションと第二のユーザーセッションを同時にホストするコンピュータを含む。別の実施形態では、この方法は、第一のユーザーセッションをホストした後に、第二のユーザーセッションをホストするコンピュータを含む。
一実施形態では、この方法は、第一のプログラムの名前解決要求に応えて第一のプログラムの第一のネットワーク識別子を提供し、第二のプログラムの名前解決要求に応えて第二のプログラムの第二のネットワーク識別子を提供する。
一実施形態では、この方法はさらに、ネットワーク通信に第一のTCPスタックを使用することを含む。別の実施形態では、この方法は、第二のTCPスタックも使用する。この方法は、ネットワーク通信インターフェースとのインターフェースにソケットライブラリを使用し、ソケットライブラリは、WinSockアプリケーションプログラミングインターフェースを備え得る。この方法はさらに、第一のネットワーク識別子を、ソケットライブラリを使うネットワーク通信用の第一のプログラムに結び付けることを含み得、また、さらに、第二のネットワーク識別子を、ソケットライブラリを使うネットワーク通信用の第二のプログラムに結び付けることを含み得る。さらにもう一つの実施形態では、この方法は、ネットワークパケット操作フィルタを使用して、ネットワーク通信インターフェースとインターフェースすることを含み得る。
一局面では、本発明は、ユーザーがアクセスしているコンピュータから独立して、ユーザーがあるネットワーク上のあるコンピュータにアクセスするための一律のネットワークアドレス指定方式を提供する方法に関するものである。この方法は、複数の仮想ホスト名を取得するステップ、そして、複数の仮想ホスト名から第一の仮想ホスト名を、ネットワーク経由で第一のコンピュータにアクセスする第一のユーザーにり当て、そして、第一の仮想ホスト名とは異なる第二の仮想ホスト名を、ネットワーク経由で第一のコンピュータにアクセスする第二のユーザーに割り当てるステップを含む。この方法はさらに、第一のユーザーの第一の仮想ホスト名と第一のコンピュータに関連する第一のユーザーのインターネットプロトコルアドレスを結び付けること、および、第二のユーザーの第二の仮想ホスト名と第一のコンピュータに関連する第二のユーザーのインターネットプロトコルアドレスを結び付けることを含む。
一実施形態では、この方法はさらに、各ユーザーに固有のインターネットプロトコルアドレスを割り当てるための複数のインターネットプロトコルアドレスを取得するステップを含む。別の実施形態では、この方法はさらに、複数のインターネットプロトコルアドレスのうち少なくとも一つを動的ホスト構成プロトコルサーバーから取得することを含む。この方法は、複数のインターネットプロトコルアドレスのうち少なくとも一つを、第一のユーザーと第二のユーザーのうち少なくとも一人のために予約することも含み得る。さらに一実施形態では、この方法は、少なくとも一つの予約されたインターネットプロトコルアドレスと第一の仮想ホスト名または第二の仮想ホスト名を結び付けることを含む。
一実施形態では、この方法はさらに、複数のインターネットプロトコルアドレスから、第一のインターネットプロトコルアドレスを第一のユーザーに、第一のインターネットプロトコルアドレスとは異なる、第二のインターネットプロトコルアドレスを第二のユーザーにり当てることを含む。別の実施形態では、この方法はさらに、名前解決サービスで、複数の仮想ホスト名のうち少なくとも一つを第一のユーザーと第二のユーザーのうち少なくとも一人に登録することを含む。一実施形態では、名前解決サービスは、ドメインネームサービスを備え、別の実施形態では、それはWindows(登録商標)インターネットネーミングサービスを備える。
この方法のある実施形態では、この方法はさらに、第一の仮想ホスト名を第二のコンピュータにアクセスする第一のユーザーに割り当て、第一の仮想ホスト名と第一のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付けることを含む。
別の実施形態では、この方法はさらに、第二の仮想ホスト名を第二のコンピュータにアクセスする第二のユーザーに割り当て、第二の仮想ホスト名と第二のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付けることを含む。この方法はまた、第一のユーザーが第一のコンピュータにアクセスしている間に、第三の仮想ホスト名を第二のコンピュータにアクセスする第一のユーザーに割り当て、第三の仮想ホスト名と第一のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付けることも含み得る。
別の実施形態では、この方法は、第二のユーザーが第一のコンピュータにアクセスしている間に、第四の仮想ホスト名を第二のコンピュータにアクセスする第二のユーザーに割り当て、第四の仮想ホスト名と第二のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付ける。
一実施形態では、この方法は、一つ以上の仮想ホスト名を、ユーザーのネットワーク上のアイデンティティを表す文字の一部を使って命名することを含み得る。別の実施形態では、この方法は、少なくとも一つの仮想ホスト名を、ユーザーがネットワーク上の複数のコンピュータに同時にアクセスしている時にユーザーのセッションを識別するサフィックスを使って命名し得る。
別の局面では、本発明は、ユーザーがアクセスしているコンピュータから独立して、ユーザーがあるネットワーク上のあるコンピュータにアクセスするための一律のネットワークアドレス指定方式を提供するシステムに関するものである。このシステムは、一つ以上の仮想ホスト名とネットワークインターフェースを持つ第一のコンピュータを提供する、ネットワーク上のサーバーを備える。ネットワーク上の第一のコンピュータは、一つ以上の仮想ホスト名から第一の仮想ホスト名を、第一のコンピュータの第一のユーザーのために、そして、第一の仮想ホスト名とは異なる第二の仮想ホスト名を、第一のコンピュータの第二のユーザーのために取得する。第一のコンピュータのネットワークインターフェースは、第一のユーザーの第一の仮想ホスト名と第一のユーザーに関連する第一のコンピュータのインターネットプロトコルアドレスを結び付け、第二のユーザーの第二の仮想ホスト名と第二のユーザーに関連する第一のコンピュータのインターネットプロトコルアドレスを結び付ける。
このシステムの一実施形態では、サーバーは、各ユーザーに固有のインターネットプロトコルアドレスを割り当てるための複数のインターネットプロトコルアドレスを取得する。サーバーは、インターネットプロトコルアドレスのうち少なくとも一つを動的ホスト構成プロトコルサーバーから取得し得る。さらなる実施形態では、サーバーは、インターネットプロトコルアドレスのうち少なくとも一つを、ユーザーの少なくとも一人のために予約する。
別の実施形態では、サーバーは、インターネットプロトコルアドレスから、第一のインターネットプロトコルアドレスを第一のユーザーのために、そして、第一のインターネットプロトコルアドレスとは異なる、第二のインターネットプロトコルアドレスを第二のユーザーのために割り当てる。一実施形態では、ネットワークインターフェースは、少なくとも一つの予約されたインターネットプロトコルアドレスと第一の仮想ホスト名および第二の仮想ホスト名のうち少なくとも一つを結び付ける。一実施形態では、このシステムはさらに、複数の仮想ホスト名のうち少なくとも一つを、ユーザーの少なくとも一人に登録するための名前解決サービスを備える。名前解決サービスは、ドメインネームサービスまたはWindows(登録商標)インターネットネーミングサービスを備え得る。
別のシステムの実施形態では、ネットワークインターフェースは、第一の仮想ホスト名を第二のコンピュータにアクセスする第一のユーザーに割り当て、第一の仮想ホスト名と第一のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付ける。さらなる実施形態では、ネットワークインターフェースは、第二の仮想ホスト名を第二のコンピュータにアクセスする第二のユーザーに割り当て、第二の仮想ホスト名と第二のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付ける。さらに別の実施形態では、第二のコンピュータのネットワークインターフェースは、第一のユーザーが第一のコンピュータにアクセスしている間に、第三の仮想ホスト名を第二のコンピュータにアクセスする第一のユーザーに割り当て、第三の仮想ホスト名と第一のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付ける。また、このシステムはまた、第二のコンピュータのネットワークインターフェースが、第二のユーザーが第一のコンピュータにアクセスしている間に、第四の仮想ホスト名を第二のコンピュータにアクセスする第二のユーザーに割り当て、第四の仮想ホスト名と第二のユーザーに関連する第二のコンピュータのインターネットプロトコルアドレスを結び付けることも含み得る。
このシステムの一実施形態では、仮想ホスト名のうち少なくとも一つの名称は、ユーザーのネットワーク上のアイデンティティを表す文字の一部を備える。別のシステムの実施形態では、仮想ホスト名のうち少なくとも一つの名称は、ユーザーがネットワーク上の複数のコンピュータに同時にアクセスしている時にユーザーのセッションを識別するサフィックスを備える。
本発明の前述の、およびその他の、目的、局面、特徴、および利点は、以下の記載内容を添付図面と併せて参照することによって、より明らかになり、より良く理解され得る。
本発明の一部の例示的な実施形態について以下に説明する。だだし、本発明はこれらの実施形態に限定されるものではなく、むしろ、その意図としては、本明細書に明細されるものへの追加および改良もまた本発明の範囲に含まれる、ということを明記しておく。さらに、本明細書で説明される様々な実施形態の特徴は、相互に排他的なものではなく、様々な組み合わせおよび順列が、たとえそのような組み合わせまたは順列が本明細書に明示されていなくても、本発明の精神と範囲から逸脱することなく存在し得ることが、理解されるべきである。
本発明の例示的な実施形態は、コンピュータで作動する、一つ以上のプログラム、ユーザー、またはユーザーセッションのネットワーク通信のための固有のネットワーク識別子の割り当てを行う。本発明はまた、コンピュータのループバックインターフェースを使ったプロセス間通信のための、一つ以上のプログラム、ユーザー、またはユーザーセッションに、固有のループバックアドレスの割り当ても行う。さらに、本発明の一部の実施形態は、ユーザーがネットワーク上のコンピュータを移動する場合、あるいは複数のユーザーセッションを立ちあげる場合に、ユーザーに付随するホスト名および/またはインターネットプロトコルアドレスを、一つ以上のプログラム、ユーザー、またはユーザーセッションに提供するための、一律のアドレス指定方式を提供する。
図1Aおよび図1Bは、本発明の一実施形態を実施するのに役立つコンピュータ機器100のブロック図を表している。図1Aおよび図1Bに示されるように、各コンピュータ機器100には、中央演算処理装置102、主記憶装置104が含まれる。図1Aに示されるように、標準的なコンピュータ機器には、視覚的表示装置124、キーボード126および/またはマウス等のポインティングデバイス127が含まれ得る。各コンピュータ機器100には、一つ以上の入力/出力装置130a〜130b(一般に参照番号130を使って記載される)、 そして中央演算処理装置102と通信しているキャッシュメモリ140のような、追加的、随意的要素も含まれ得る。
中央演算処理装置102は、主記憶装置104からフェッチされる命令に応答し、処理する論理回路網である。多くの実施形態では、中央演算処理装置はマイクロプロセッサによって提供される。例えば、8088、80286、80386、80486、ペンティアム(登録商標)、ペンティアム(登録商標)・プロ、ペンティアム(登録商標)II、セレロン、またはジオンのプロセッサ(これらは全てカリフォルニア州マウンテンビューのインテル社製);68000、68010、68020、68030、68040、パワーPC601、パワーPC604、パワーPC604e、MPC603e、MPC603ei、MPC603ev、MPC603r、MPC603p、MPC740、MPC745、MPC750、MPC755、MPC7400、MPC7410、MPC7441、MPC7445、MPC7447、MPC7450、MPC7451、MPC7455、またはMPC7457のプロセッサ(これらは全てイリノイ州ショウンバーグのモトローラ社製);クルーソーTM5800、クルーソーTM5600、クルーソーTM5500、クルーソーTM5400、イフィシオンTM8600、イフィシオンTM8300、またはイフィシオンTM8620のプロセッサ(カリフォルニア州サンタクララのトランスメタ社製);RS/6000プロセッサ、RS64、RS64II、P2SC、POWER3、RS64III、POWER3−II、RS64IV、POWER4、POWER4+、POWER5、またはPOWER6のプロセッサ(これらは全てニューヨーク州ホワイトプレーンズのIBM社製)、AMDオプテロン、AMDアスロン64FX、AMDアスロン、またはAMDデュロンのプロセッサ(カリフォルニア州サニーベールのアドバンスト・マイクロ・デバイシーズ社製)等である。コンピュータ100は、上記のいずれかのプロセッサ、または本明細書に記載の通りの動作が可能な、任意のその他の利用可能なプロセッサに基づき得る。
主記憶装置104は、データを格納することができ、任意の格納場所にもマイクロプロセッサ102が直接アクセス可能な、一つ以上のメモリーチップで、例えば、スタティック・ランダム・アクセス・メモリ(SRAM)、バーストSRAMまたはシンクバーストSRAM(BSRAM)、ダイナミック・ランダム・アクセス・メモリ(DRAM)、ファースト・ページ・モードDRAM(FPM DRAM)、エンハンストDRAM(EDRAM)、エクステンデッド・データ・アウトプットRAM(EDO RAM)、エクステンデッド・データ・アウトプットDRAM(EDO DRAM)、バースト・エクステンデッド・データ・アウトプットDRAM(BEDO DRAM)、エンハンストDRAM(EDRAM)、シンクロナスDRAM(SDRAM)、JEDEC SRAM、PC100 SDRAM、ダブル・データ・レートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、ダイレクト・ラムバスDRAM(DRDRAM)、強誘電体RAM(FRAM)等である。メインメモリ104は、上記の任意のメモリーチップ、または本明細書に記載の通りの動作が可能な、任意のその他の利用可能なメモリーチップに基づき得る。図1Bに示される実施形態では、プロセッサ102は、システムバス150を通してメインメモリ104と通信する(以下により詳しく説明される)。図1Bは、プロセッサが、メモリーポート103を通して主記憶装置104と直接通信する、コンピュータ100の一実施形態を表している。例えば、図1Bでは、主記憶装置104はDRDRAMであり得る。
図1Aおよび図1Bは、メインプロセッサ102が、時にバックサイドバスと呼ばれるセカンダリーバスを通してキャッシュメモリ140と直接通信する、実施形態を表している。他の実施形態では、メインプロセッサ102は、システムバス150を使って、キャッシュメモリ140と通信する。キャッシュメモリ140は、通常、メインメモリ104より応答時間が早く、通常、SRAM、BSRAM、またはEDRAMによって提供される。
図1Aに示される実施形態では、プロセッサ102は、ローカルシステムバス150を通して、様々なI/O(入力/出力)装置130と通信する。中央演算処理装置102をいずれかのI/O装置130と接続するために、様々なバスが使用され得、それには、VESA VLバス、ISAバス、EISAバス、マイクロチャンネルアーキテクチャ(MCA)バス、PCIバス、PCI−Xバス、PCI−エクスプレスバス、またはニューバス等が含まれる。I/O装置がビデオディスプレイ124である実施形態については、プロセッサ102は、アドバンスト・グラフィックス・ポート(AGP)を使って、ディスプレイ124と通信し得る。図1Bは、メインプロセッサ102が、ハイパートランスポート、ラピッドI/O、またはインフィニバンドを通してI/O装置130bと直接通信する、コンピュータ100の一実施形態を表している。図1Bはまた、ローカルバスと直接通信が混在する一実施形態も表している。すなわち、プロセッサ102はI/O装置130bと直接通信しながら、ローカル・インターコネクト・バスを使ってI/O装置130aと通信する。
コンピュータ機器100は、任意の適切なインストール装置116をサポートし得る。それは、例えば、3.5インチ等のフロッピー(登録商標)ディスク、5.25インチディスク、またはZIPディスク等を受け入れるフロッピー(登録商標)ディスクドライブ、CD−ROMドライブ、CD−R/RWドライブ、DVD−ROMドライブ、様々なフォーマットのテープドライブ、USB装置、ハードドライブ、その他、本発明に関連するソフトウェア120のようなソフトウェアやプログラムのインストールに適した任意の他の装置である。
コンピュータ機器100はさらに、オペレーティングシステムその他の関連ソフトを記憶し、本発明に関連するプログラム120等のアプリケーションソフトウェアプログラムを記憶するための記憶装置128、例えば、一つ以上のハードディスクドライブまたはRAID(redundant arrays of independent disks)を備え得る。オプションとして、インストール装置118のいずれかを、記憶装置128として使うこともできる。また、オペレーティングシステムおよび本発明のソフトウェアプログラム120は、起動用媒体、例えば、GNU/Linuxディストリビューションとしてknoppix.netから入手できるGNU/LinuxのためのブータブルCD、KNOPPIX(登録商標)等のブータブルCDから実行され得る。
さらに、コンピュータ機器100は、標準の電話回線、LANまたはWANリンク(例えば、802.11、T1、T3、56kb、X.25)、ブロードバンド接続(例えば、ISDN、フレームリレー、ATM)、無線接続、または以上のいずれかまたは全ての組み合わせを含む(ただし、必ずしもこれらに限定されない)様々な接続を通じた、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、またはインターネットとのインターフェースのためのネットワークインターフェース118を含み得る。ネットワークインターフェース118は、内蔵ネットワークアダプター、ネットワークインターフェースカード、PCMCIAネットワークカード、カードバスネットワークアダプター、無線ネットワークアダプター、USBネットワークアダプター、モデム、または、コンピュータ機器100と、通信ができ、本明細書に記載の通りの動作の実行が可能なネットワークとをインターフェースするのに適した、その他の装置を備え得る。
コンピュータ機器100には、多様なI/O装置130a〜130nが存在し得る。入力装置には、キーボード、マウス、トラックパッド、トラックボール、マイクロフォン、ドローイングタブレットが含まれる。出力装置には、ビデオディスプレイ、スピーカー、インクジェットプリンタ、レーザープリンタ、昇華型プリンタが含まれる。I/O装置は、図1Aに示されるように、I/Oコントローラ123によって制御され得る。I/Oコントローラは、一つ以上のI/O装置、例えばキーボード126およびポインティングデバイス127(例えばマウスまたは光学ペン)を制御し得る。さらに、I/O装置は、格納128および/またはインストール媒体118もコンピュータ機器100に提供し得る。さらに別の実施形態では、コンピュータ機器100は、カリフォルニア州ロスアラミトスのツインテク・インダストリー社製のUSBフラッシュドライブラインの装置のような携帯用USB記憶装置を受け入れるためのUSB接続を提供し得る。
さらなる実施形態では、I/O装置130は、システムバス150と外部の通信バス、例えば、USBバス、アップルデスクトップバス、RS−232シリアルコネクション、SCSIバス、ファイヤーワイヤーバス、ファイヤーワイヤー800バス、イーサネット(登録商標)バス、アップルトークバス、ギガビットイーサネット(登録商標)バス、非同期転送モードバス、HIPPIバス、スーパーHIPPIバス、シリアルプラスバス、SCI/LAMPバス、ファイバーチャンネルバス、シリアルアタッチド小型コンピュータ用周辺機器インターフェース(SCSI)バス等、との間のブリッジ170であり得る。
図1Aおよび1Bに表されるようなコンピュータ機器100は、通常、オペレーティングシステムの制御のもとで動作し、オペレーティングシステムは、タスクのスケジューリングおよびシステム資源へのアクセスを制御する。コンピュータ機器100は、例えば、Microsoft(登録商標)Windows(登録商標)のオペレーティングシステムのいずれかのバージョン、UNIX(登録商標)およびLinuxオペレーティングシステムの様々なリリース、マッキントッシュコンピュータ用のMacOS(登録商標)のいずれかのバージョン、任意の組み込みオペレーティングシステム、任意のリアルタイムオペレーティングシステム、任意のオープンソースオペレーティングシステム、任意の専用オペレーティングシステム、モバイルコンピュータ機器用の任意のオペレーティングシステム、または、コンピュータ機器での作動が可能で、本明細書に記載の通りの動作の実行が可能な、任意のその他のオペレーティングシステム等、任意のオペレーティングシステムでも実行することができる。標準的なオペレーティングシステムに含まれるのは、WINDOWS(登録商標) 3.x、WINDOWS(登録商標) 95、WINDOWS(登録商標) 98、WINDOWS(登録商標) 2000、WINDOWS(登録商標) NT 3.51、WINDOWS(登録商標) NT 4.0、WINDOWS(登録商標) CE、そしてWINDOWS(登録商標) XP(これらは全て、ワシントン州レドモンドのマイクロソフト社製);MacOS(カリフォルニア州クパチーノのアップルコンピュータ社製);OS/2(ニューヨーク州アーモンクのIBM社製);そしてLinux(ユタ州ソルトレークシティのカルデラ社によって配布される無料のオペレーティングシステム)、Java(登録商標)またはUnix(登録商標)等である。
他の実施形態では、コンピュータ機器100は、その機器にふさわしい、異なるプロセッサ、オペレーティングシステム、入力装置を有し得る。例えば、ある実施形態では、コンピュータ機器100は、パーム社製のZire 71携帯情報端末である。この実施形態では、Zire 71は、パームOSオペレーティングシステムの制御のもとで動作し、ペン型入力装置および5方向ナビゲーター装置を含む。さらに、コンピュータ機器100は、通信が可能で、本明細書に記載の通りの動作を実行するに足る十分なプロセッサ能力と記憶容量を持つ、任意のコンピュータ、ワークステーション、デスクトップコンピュータ、ラップトップまたはノートブックコンピュータ、サーバー、ハンドヘルドコンピュータ、携帯電話、または、その他の形体のコンピュータまたは通信機器であり得る。
図2を参照して、一般に、本発明は、クライアント・サーバーシステムとネットワーク通信に関連するものである。概要として、本発明が使われるクライアント・サーバーシステム102の一実施形態が表されている。クライアントノード108aは、通信ネットワーク104上でサーバーノード110aと通信する。システム102には、一つ以上のクライアントノード108a〜108nがあり、それぞれが、ネットワーク104上で、一つ以上のサーバーノード110a〜110nと通信する。クライアントノード108a〜108nが一つ以上のサーバーノード110a〜110nと通信するネットワーク104の接続形態は、バス型、スター型、またはリング型ネットワーク接続形態であり得る。ネットワーク104は、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、またはインターネット等の広域ネットワーク(WAN)であり得る。ネットワーク104およびネットワーク接続形態は、本明細書に記載される本発明の動作をサポートすることができる任意のネットワークまたはネットワーク接続形態であり得る。
クライアントおよびサーバーノード108a〜108n、110a〜110nは、標準の電話回線、LANまたはWANリンク(例えば、T1、T3、56kb、X.25、SNA、DECNET)、ブロードバンド接続(ISDN、フレームリレー、ATM、ギガビットイーサネット(登録商標)、イーサネット(登録商標)・オーバ・SONET)、および、無線接続を含む様々な接続を通して、ネットワーク104に接続できる。接続は様々な通信プロトコル(例えば、TCP/IP、IPX、SPX、NetBIOS、イーサネット(登録商標)、ARCNET、光ファイバー分散データインターフェース(FDDI)、RS232、IEEE 802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g、および直接非同期接続)を使って確立され得る。
一実施形態では(図示せず)、ネットワーク104は、ネットワーク104と104’に分けられる。ネットワーク104と104’は、同じ種類のネットワークあるいは異なる種類のネットワークであり得る。一実施形態では、ネットワーク104および/またはネットワーク104’は、例えば、企業イントラネットのようなローカルエリアネットワーク(LAN)、またはインターネットまたはワールドワイドウェブのような広域ネットワーク(WAN)である。クライアント108a〜108n、とサーバー10118a〜118nは、標準の電話回線、LANまたはWANリンク(例えば、802.11、T1、T3、56kb、X.25)、ブロードバンド接続(例えば、ISDN、フレームリレー、ATM)、無線接続、または上記の任意のまたは全ての組み合わせを含む(ただし、必ずしもこれらに限定されない)様々な接続を通して、ネットワーク104および/または104’に接続され得る。
クライアントノード、またはクライアント108a〜108nは、通信が可能で、本明細書に記載の通りの動作を実行するに足る十分なプロセッサ能力と記憶容量を持つ、任意のワークステーション、デスクトップコンピュータ、ラップトップ、ハンドヘルドコンピュータ、携帯電話、または、その他のコンピュータ機器100であり得る。さらに、クライアント108a〜108nは、ローカルネットワーク104上のローカルデスクトップクライアントであり得、あるいは、別のネットワーク104’の遠隔表示クライアントであり得る。クライアント108a〜108nは、例えば、画像表示装置(例えば、コンピュータモニター)、データ入力装置(例えば、キーボード)、固定および/または揮発性記憶装置(例えば、コンピュータメモリ)、プロセッサ、およびマウス等のポインティングデバイスを含み得る。同様に、サーバーノード、またはサーバー110a〜110nは、本明細書に記載の通りの動作が可能な、任意の種類のコンピュータ機器100であり得る。さらに、サーバーノード110a〜110nは、本明細書では、サーバーファームと呼ばれる、論理的には単一のサーバーシステムとして機能するサーバーシステム群として提供され得る。一実施形態では、サーバーノード110a〜110nは、複数の同時使用中のクライアント接続またはユーザーセッションをサポートするマルチユーザーサーバーシステムである。
一部の実施形態では、図2に示されるように、クライアントエージェント109a〜109nが、クライアント108a〜108nの中に含まれている。クライアントエージェント109a〜109nは、例えば、ソフトウェアプログラムとして、および/または、例えばASICやFPGAのようなハードウェア装置として実行され得る。ユーザーインターフェースの付いたクライアントエージェント109a〜109nの一例は、ウェブブラウザ(例えば、Microsoft(登録商標)Internet Explorerブラウザ、および/または、NetscapeTMブラウザ)である。クライアントエージェント109a〜109nは、任意の種類のプロトコルを使うことができ、それは、例えば、HTTPクライアントエージェント、FTPクライアントエージェント、オスカークライアントエージェント、テルネットクライアントエージェント、フロリダ州フォートローダーデールのシトリックスシステム社のインデペンデントコンピューティングアーキテクチャ(ICA)クライアントエージェント、ワシントン州レドモンドのマイクロソフト社のリモートデスクトッププロトコル(RDP)クライアントエージェント等であり得る。一部の実施形態では(図示せず)、クライアント108a〜108nは、複数のクライアントエージェント109a〜109nを含み、それぞれが各サーバー110a〜110nと通信し得る。
クライアント108a〜108nおよびサーバー110a〜110nの任意のいずれかにおいて、コンピュータ(100、100’等)は通常、コンピュータ100を動作するためにオペレーティングシステムの単一コピーを実行する。オペレーティングシステムは、コンピュータ100がネットワーク104上でネットワークインターフェース118を通して通信するために必要なソフトウェアやリソースを提供する。最も広く使われるネットワーク通信の標準は、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)で、それはネットワーク104上でコンピュータ100の間のデータ伝送を行うプロトコルの組み合わせである。TCPプロトコルは、データの正確な伝送をモニターし確実にする。IPプロトコルは、インターネットプロトコルアドレス、または IPアドレスを使う。それは、ネットワークトラフィックのルートを決め、ネットワーク104上のコンピュータ100同士の接続を確立するために、ネットワーク104上でコンピュータ100を固有に識別する数値アドレスである。よりユーザーに優しいドメイン名、またはコンピュータホスト名は、文字列を備え、コンピュータを固有に識別するためにIPアドレスと関連付けられ得る。コンピュータ100は、二つ以上のドメイン名またはIPアドレスを持つことができるが、所与のドメイン名またはIPアドレスは、ネットワーク104上の一つのコンピュータ100のみを示す。
マイクロソフトWINDOWS(登録商標)、LinuxまたはUNIX(登録商標)オペレーティングシステム等、多くのオペレーティングシステムがコンピュータ100で実行可能であるのに、ネットワーク通信の実行用には、単一のネットワークとTCP/IPプロトコル層、またはTCPスタックしかない。IPアドレスとドメイン名のコンピュータへの割り当ては、装置に依存している。すなわち、IPアドレスおよび/またはドメイン名のようなネットワーク識別子は、コンピュータ100に割り当てられ、コンピュータ100からの任意のネットワーク通信を関連づけ、識別する。任意のユーザー、アプリケーション、ユーザーセッション、またはコンピュータ100で作動する任意のその他のプログラムで、ネットワーク通信を引き起こすものは、コンピュータに割り当てられたネットワーク識別子を使う。そのため、あるコンピュータで作動しているコンピュータユーザーまたはプログラムは、そのコンピュータに割り当てられたネットワーク識別子を使って、ネットワー上で通信する。例えば、あるコンピュータ100はIPアドレス192.168.1.100を割り当てられている。第一のユーザーがそのコンピュータにログインし、ネットワーク104上でネットワークトラフィックを発生させるプログラムを実行する。IPアドレス192.168.1.100は、TCP/IPプロトコル関連のネットワーク通信の一部として使われ、コンピュータ100を往来するネットワークを固有に識別する。第二のユーザーがそのコンピュータにログインし、ネットワーク104上でネットワークトラフィックをまた発生させる、もう一つのプログラムを実行する。同じIPアドレス192.168.1.100が、第二のユーザーのネットワーク通信にも使われる。そのため、ネットワークトラフィックを発生するユーザーは、それぞれのネットワーク通信のIPアドレスによって区別することができない。
マイクロソフト・ターミナル・サーバーを実行するサーバーのようなマルチユーザーコンピュータの場合には、複数のユーザーがサーバーにログインし、並行してまたは同時にプログラムを実行することができる。サーバーは単一のオペレーティングシステムを実行しており、サーバーに割り当てられたIPアドレスを持っているために、複数のユーザーおよびそれらのユーザーによって実行される複数のプログラムは、全て同じIPアドレスを共有する。サーバーによってホストされる各ユーザーセッションも同じIPアドレスを共有する。複数のFTPまたはウェブサイトを実行するサーバー110等、コンピュータが複数のネットワークインターフェースカード(118、118’等)を持っており、一つ以上のIPアドレスが各々のネットワークインターフェースカード118に割り当てられている場合でも、IPアドレスは機械に依存している。一つ以上のIPアドレスはサーバーを識別するのであって、サーバー110上で通信しているユーザーまたはプログラムを識別するのではない。
アプリケーションの多くは、機能するために、各ユーザーやプログラムが個別のIPアドレスを持つことを要求する。一方では、IPアドレスやホスト名を利用してユーザーを識別するアプリケーションもある。さらに、ネットワーク監視アプリケーションやシステムは、インターネット活動その他のアプリケーション活動のようなネットワーク活動を監視することができる。しかし、各ユーザーまたはアプリケーションが同じIPアドレスを使っている場には、監視アプリケーションは、その活動に関連するユーザーを識別することができない。本発明は、同一のコンピュータ100から、ネットワーク104上で通信する、複数のプログラムまたはユーザーの各々に、固有のネットワーク識別子を割り当てる利点を提供する。
図3A〜図3Cは、IPアドレスまたはドメイン名のような固有のネットワーク識別子の、コンピュータ100で作動している複数のプログラムへの割り当て、または、プログラムのユーザーへの割り当てを可能にする本発明の構成要素を表している。
図3Aを参照して、システム300は、ネットワーク104上で通信するクライアント108とサーバー110とを備える、クライアント・サーバーシステムである。クライアント108は、ネットワーク通信インターフェース310、インターフェース機構320、複数のネットワーク識別子330、そして一つ以上のプログラム340a〜340bを有する。ネットワーク通信インターフェース310には、クライアント108がネットワーク104上で通信するために求められるネットワーク関連のハードウェアおよびソフトウェアのいずれかおよび全てが含まれる。例えば、ネットワーク通信インターフェース310には、コンピュータ100の任意のネットワークアダプター118、および、オペレーティングシステムが提供するソフトウェアやインターフェース等、コンピュータ100がネットワーク104上で通信するために必要な、任意のその他のソフトウェアおよび/またはハードウェアが含まれる。
インターフェース機構320は、クライアント108で作動しているプログラム340a〜340nの各々が利用可能な複数のネットワーク識別子330から、固有のネットワーク識別子を提供するための、ソケットライブラリ332およびTCPスタック324を備える。ソケットライブラリ332は、オペレーティングシステムによって提供されるネットワークサービスにアクセスするための、汎用のネットワーキング・アプリケーション・プログラミング・インターフェースすなわちAPIである。簡単に言えば、ソケットはローカル的にも、あるいはTCP/IPを実行しているネットワーク上でも、プロセス間通信のエンドポイントである。ソケットは、ソケットの種類によって異なるセマンティックスを使い、別のプロセスからのデータを同時に送受信することができる。ソケットインターフェースは、基礎となる多くの伝送メカニズムをサポートすることができる。理想的には、ソケットコール付きで作成されたプログラムが、ほとんどまたは全くの変更なしに、様々なネットワークアーキテクチャ、および、様々なローカルプロセス間通信設備で使用され得る。ソケットライブラリ322は、 MicrosoftのWinsock API、Unix(登録商標)または任意のその他のサポートされたアーキテクチャ用のバークレー・ソフトウェア・ディストリビューション(BSD)ソケットライブラリ、カリフォルニア大学バークレー校のソケットインターフェースに基づく他のソケットライブラリ、あるいは、ネットワーク104上でTCP/IPを使って通信するための、ソケットベースのネットワークプログラミングAPI(WinsockまたはBSD APIに基づくもの、あるいは、そうでないもの)を提供し、本明細書に記載の通りにコンピュータ機器100で動作可能な、任意の他の利用可能なソケットライブラリ等であり得る。
TCPスタック324は、クライアント108がTCP/IPを使ってネットワーク104上で通信するための、TCP/IP通信プロトコルエンジンの実施を提供する。TCPスタック324には、TCP/IPソフトウェアおよびハードウェアドライバソフトウェア(パケットドライバと呼ばれることもある)が含まれ、コンピュータ100がTCP/IP経由で通信することを可能にする。ソケットライブラリ322にAPIコールをするアプリケーションのような、TCP/IPを使うアプリケーションは、アプリケーションが動いているコンピュータ上で、TCPスタックが動作していることを必要とする。TCPスタック324は、一実施形態では、ソケットライブラリ322ソフトウェアを含み得る。また、別の実施形態では、ソケットライブラリ322ソフトウェアが、TCPスタック324に含まれ得ない。標準的なコンピュータ100では、オペレーティングシステムはアプリケーションがTCP/IP経由のネットワーク通信に利用するための、単一のTCPスタック324を提供する。例えば、Microsoft Windows(登録商標)、UNIX(登録商標)およびLinuxの各バージョンのようなオペレーティングシステムは、TCPスタック324の単一のインスタンスしかサポートしない。オペレーティングシステムによって提供された同様のソフトに加えて、または代わりに、追加のTCP/IPソフトウェア、ソケットライブラリソフトウェアおよび/またはハードウェアドライバソフトウェがコンピュータにインストールされ得る。本発明の例示的な実施形態では、オペレーティングシステムによってデフォルト設定により提供される、単一のTCPスタック324が使用される。代替案の実施形態では、インターフェース機構320は、オペレーティングシステムによって提供されるTCPスタック324に加えて、第二のTCPスタック324’を備え得る。各TCPスタック324、324’は、ネットワーク104上で通信する複数のユーザーおよび/またはプログラムを取り扱い得る。
さらに、インターフェース機構320は、例えば、ASICまたはFPGAなど、任意の種類のソフトウェアコンポーネントおよび/または専用ハードウェア機器であり得る。インターフェース機構の一つ以上のソフトウェアコンポーネントは、それぞれ、ライブラリ、モジュール、プログラム、実行ファイル、アプリケーション、サービス、プロセスまたはタスクに具体化され得る。さらに、インターフェース機構320は、ローカルで動いている、または、複数のクライアント108、108’、またはサーバー110、110’に分配される、幾つかのソフトウェアコンポーネントで作られ得る。インターフェース機構320は、ソケットライブラリおよびTCPスタック324の一部または全てを含み得る。当業者には、インターフェース機構320の考え得る代替の実施形態の様々な順列があることが、理解できる。
クライアント108は、クライアント108上の一つ以上のプログラム340a〜340nに固有のネットワーク識別子を割り当てるために使う複数のネットワーク識別子330を、インターフェース機構320のために提供または取得し得る。このネットワーク識別子330は、IPアドレス、ドメイン、またはホスト名、またはIPアドレスとホスト名の両方を備え得る。好適な実施形態では、ネットワーク識別子330は、固有のIPアドレスリストを備え、各IPアドレスは、それに付随する、少なくとも一つの固有なホスト名を有する。ネットワーク識別子330は、一実施形態においては静的に決定され得、または別の実施形態においては動的に決定さ得る。場合によっては、一部のネットワーク識別子330が静的に決定され、他のネットワーク識別子330が、ネットワーク104上のクライアント108、サーバー110、あるいは、その他のクライアント108’またはサーバー110’から動的に取得される。
クライアント108は、ネットワーク識別子330をさまざまな方法で取得し得、ネットワーク識別子330の一部をある一つの方法で受け取り、ネットワーク識別子330のその他の部分をその他の方法で受け取り得る。一実施形態では、ネットワーク識別子330は、離れたサーバー110あるいはクライアント108上の、ファイル等の格納336場所に静的に定義され得る。例えば、IPアドレスとホスト名を使ったネットワークオペレーションを実行する上で、オペレーティングシステムおよびTCPスタック324によって参照される、クライアント108のローカルホストのファイルは、複数のネットワーク識別子のリストを含み得る。別の一実施形態では、一つ以上のネットワーク識別子330が特定のユーザーに割り当てられ、または専用に供される。
別の実施形態では、クライアント108は、ネットワーク104上のクライアント108がアクセス可能なサーバー110から、一つ以上のネットワーク識別子を取得する。サーバー110は、動的ホスト構成プロトコルサーバー(DHCPサーバーとしても知られる)であり得る。DHCPはTCP/IPネットワーク上のコンピュータが、そのコンピュータが使うべきIP番号、ネットマスク、ゲートウェイ等の情報を、一つ以上の セントラルサーバーから要求するための標準である。DHCPプロトコルは、動的IPアドレスのネットワーク上のデバイスへの割り当てを行い、静的IPアドレスと動的IPアドレスのミックスをサポートする。DHCPは、二つのコンポーネントからなる。すなわち、ホスト特定の構成パラメータをDHCPサーバー334からクライアント108に 送るためのプロトコルと、ネットワークアドレスをクライアント108、108’に割り当てるためのメカニズムである。
別の実施形態では、クライアント108は、一つ以上のネットワーク識別子330をネットワーク識別子ジェネレータ330から取得し、それはサーバー110、またはクライアント108、または別のクライアント108’、またはサーバー110’で作動することができ、ネットワーク104上のクライアント108によってアクセスが可能である。ネットワーク識別子ジェネレータ330は、クライアント108またはサーバー110のために一つ以上のネットワーク識別子330を生成するための、アルゴリズムエンジン、ビジネスルール、またはロジックエンジンを有し得る。ネットワーク識別子ジェネレータ332は、連続する一連のIPアドレスおよび/またはホスト名を生成し得る。別の実施形態では、ネットワーク識別子ジェネレータ332は、ネットワーク104のための適切なIPドット番号方式に対応する番号とともに、ランダムな一連の番号を生成し得る。 別のケースでは、ネットワーク識別子ジェネレータ332は、ユーザー名、コンピュータ名、ドメイン名、その他の記述的なテキスト列のいずれかの組み合わせを使用し得、ネットワーク識別子330のIPアドレスのいずれかのためのホスト名を生成する。さらに、ネットワーク識別子ジェネレータ332は、ビジネスルールロジックを有し得、それは、ネットワーク識別子ジェネレータ332からネットワーク識別子330を要求または取得するクライアント108またはサーバー110に応じて、異なるアドレス指定および作成方式を適用する。当業者には、ネットワーク識別子ジェネレータ332が、ネットワーク識別子を生成するために多様なアルゴリズムを適用でき、ネットワーク104上の一つ以上のコンピュータにネットワーク識別子を提供するために多様なビジネスルールロジックを適用できることが、認識される。
クライアント108は、クライアント108またはサーバー110がホストすることができる最大数の固有のネットワーク識別子330を取得、提供または割り当てられ得る。他の実施形態では、クライアントは最大数未満の固有のネットワーク識別子330を取得、提供または割当てられ得、それはユーザーの数、プログラムの数、またはクライアント108上のプログラム340a〜340nまたはユーザーに固有のネットワーク識別子330を割り当てるニーズに影響を与える、その他の要因に基づき決定され得る。一実施形態では、ネットワーク識別子330の数は、設定可能なパラメータである。
クライアント108は、ネットワーク識別子330の一部をサーバー110の格納場所336等から取得し、別の一部をDHCPサーバー334から、別の一部をネットワーク識別子ジェネレータ332から、そしてまた別の一部をローカルにクライアント108から取得し得る。さらに、クライアント108、サーバー110、またはクライアント108上のプログラム340a〜340nの任意のいずれか、クライアント108のインターフェース機構310、またはサーバー110上の任意のプログラムも、オペレーティングシステムレベルのAPIコール等のAPIコールを行うことによって、あるいは、オペレーティングシステム、またはネットワーク識別子330を取得するための、その他のアプリケーションによって提供される設定ツールを使うことによって、プログラムで一つ以上のネットワーク識別子を取得し得る。当業者には、本発明について、クライアント108が複数のネットワーク識別子330を取得または提供するための、様々な順列、あるいは代替の実施形態があることが、理解される。
クライアントは、クライアント108上で実行する一つ以上プログラム340a〜340nを提供し得る。プログラム340a〜340nは、クライアント108のコンピュータ機器100上で呼び出され、実行される、または、それによって処理される、任意のアプリケーション、ソフトウェア、またはコンピュータプログラムであり得る。例えば、プログラム340a〜340nは、Microsoft Windows(登録商標) Explorerのような任意の汎用デスクトップアプリケーションであり得る。また、プログラム340a〜340nは、ネットワーク104上で、一つ以上のサーバー110、110’経由で提供される任意の種類のウェブインターフェースアクセスサービスでもあり得る。プログラム340a〜340nは、ネットワーク104上でサーバー110にアクセスする企業アプリケーションクライアントであり得る。別のケースでは、プログラム340a〜340nは、いずれかのプログラミング言語で書かれ、クライアント108で実行するためにコンパイルされたカスタムアプリケーションであり得る。一実施形態では、プログラム340a〜340nは、ネットワーク104上でのネットワーク通信を引き起こす任意のプログラムであり、そこへ、ネットワーク識別子がネットワーク通信において提供される。例えば、プログラム340a〜340nは、ソケット関連のAPIコールを、TCPスタック324を使ってソケットライブラリ322を通じて行い、ネットワーク通信インターフェース310経由でネットワーク104と通信し得る。
一実施形態では、プログラム340a〜340nは、アプリケーション隔離環境を備え、それはアプリケーション隔離環境の別のインスタンスで実行される一群のプロセスを別の一連のプロセスから分離または隔離する、コンピュータ機器100内の実行コンテクストを提供する。別々のコンテクストにおけるプロセスの隔離は、一連のプロセスを別の一連のプロセスから発生する問題から守る。通常、アプリケーション隔離は、ある実施コンテクストで実行されるプロセスが、別の実施コンテクストで実行される他のプロセスによって使用されるメモリのアドレス空間を直接使用しない、プロセスレベルで起こる。しかしながら、アプリケーション隔離環境は、オペレーティングシステムリソースの任意のレベルの仮想化も提供し得、各アプリケーション隔離環境340a〜340nで実行されるプログラム340a〜340nのいずれかによる、それらのリソースの使用を分離または隔離することができる。例として、クライアント108上で、プログラム340aが、一つ以上のプログラム340a〜340nが実行されるアプリケーション隔離環境を提供し得、一方では、プログラム340bが別の一つ以上のプログラム340a〜340nが実行される第二のアプリケーション隔離環境を提供する。
別の一実施形態では、プログラム340a〜340nは、遠隔表示プロトコルを使ってサーバー110上のアプリケーション、プログラム、サービスにアクセスするためのシンクライアントプログラムを備え得る。例えば、プログラム340a〜340nのいずれかは、フロリダ州フォートローダーデールのCitrix Systems, Inc.のインデペンデント・コンピューティング・アーキテクチャ(ICA)クライアント、あるいは、レドモンドのマイクロソフト社のリモートデスクトッププロトコル(RDP)クライアントであり得る。これらのシンクライアントプログラム340a〜340nは、サーバー110、あるいは、サーバーファームまたはサーバークラスタにある複数のサーバーのような、一つ以上の他のサーバー110’、110’’で作動するユーザーセッションへのアクセスを提供する。そのために、プログラム340a〜340nは、クライアント108またはサーバー110がホストするユーザーセッションであり得る。
一実施形態では、プログラム340a〜340nの各々は、異なる種類のアプリケーション、アプリケーション隔離環境、またはユーザーセッションを実施し得る。例えば、プログラム340aは、ネットワーク上の企業アプリケーションサーバーにウェブアクセスを提供する企業アプリケーションクライアントであり得る。プログラム340bは、ユーザーが一つ以上のプログラムを実行するための実行コンテクストを提供するアプリケーション隔離環境であり得る。プログラム340nは、サーバー110上でユーザーセッションを実行するシンクライアントプログラムであり得る。別の実施形態では、プログラム340a〜340nは、オペレーティングシステムで実行される任意の種類のサービスであり得る。さらに、プログラム340a〜340nは、クライアント108a〜108nで実行される任意のサービス、タスク、プロセス、またはスレッド、あるいはそれらの組み合わせとも見なされる。当業者には、プログラム340a〜340nが、クライアント108またはサーバー110のコンピュータ機器100で実行可能な任意の種類のプログラムでもあり得ること、および複数の種類のプログラムが、一つ以上の同じユーザーまたは異なるユーザーによって、クライアント108またはサーバー110で、連続してまたは同時に作動し得ることが、認識される。
実行中に、クライアント108のインターフェース機構310は、複数のネットワーク識別子330から、コンピュータで作動しているプログラム340a〜340nへ、または、プログラム340a〜340nのユーザーへ、ユニークなネットワーク識別子の接続を提供する。プログラム340a〜340nのネットワーク通信をサポートする、単一のオペレーティングシステム、TCPスタック324およびソケットライブラリ322があっても、インターフェース機構320は各ユーザーまたはプログラム340a〜340nを固有のネットワーク識別子に固定または結び付け、同じクライアント108からのそのユーザーまたはプログラムからのネットワーク通信が固有のネットワーク識別子を持つようにする。本発明のインターフェース機構がなければ、クライアント108の各ユーザーまたはプログラム340a〜340nは、クライアント108に割り当てられた同じネットワーク識別子で、ネットワーク通信を発することになる。
インターフェース機構320は、複数のネットワーク識別子330から、一つのネットワーク識別子を取得および/または選択し、一つのプログラム340a〜340n、またはプログラム340a〜340nのユーザーに結び付けて割り当てる。インターフェース機構320は、複数のネットワーク識別子330から、DHCPサーバーへのAIPコール等のAPIコールを通じて、プログラムで一つのネットワーク識別子を取得し得る。インターフェース機構320は、ネットワーク識別子を取得できる他のインターフェース形式を通じて、つまり、例えば、ローカルホストファイルのようなファイルから一列のデータを読み出す、あるいはデータベースから一列のデータをクエリするなどして、一つのプログラム340a〜340bのために一つのネットワーク識別子を取得し得る。インターフェース機構320は、クライアント108の起動時に、メモリに一つ以上のネットワーク識別子を有し得る。当業者には、インターフェース機構320が、様々な既知のインターフェース技術によって可能な多様な方法で、プログラム340a〜340nのために一つのネットワーク識別子を取得できることが、認識される。
クライアント108、プログラム340a〜340nおよび/またはインターフェース機構320は、いろいろな時に、一つのプログラム340a〜340nまたはユーザーのために一つの固有のネットワーク識別子を取得、選択および/または割り当て得る。一実施形態では、クライアント108は、クライアント108の起動または始動時に、一つ以上のネットワーク識別子を取得し得る。別の実施形態では、ユーザー用のネットワーク識別子は、ユーザーがクライアント108にログインする時、あるいはユーザーセッションを開始する時に取得され得る。一実施形態では、プログラム340a〜340nおよびインターフェース機構は、プログラム340a〜340nの設定時、または起動時に、一つのネットワーク識別子を取得、選択し、プログラム340a〜340nに割り当て得る。別の実施形態では、プログラム340a〜340n用のネットワーク識別子は、プログラムがソケットライブラリ324にコールするまで、取得、選択、割り当てられない。他のケースでは、クライアント308の一つのプログラム340a〜340nまたはユーザーに割り当てられるネットワーク識別子は、インターフェース機構320またはプログラム340a〜340nがもはや必要としなくなった時点で、解除または返却され得る。当業者には、ネットワーク識別子が取得、選択、および/または、クライアント108の一つのプログラム340a〜340nまたは一人のユーザーに割り当てられ得る、および他のケースでは、ネットワーク識別子330のプールに返却または解除されることに関して、多くのバリエーションがあることが、認識される。
例示的な実施形態では、インターフェース機構320は、ソケットライブラリ322へ行われたコールを傍受または変更することにより、ユーザーまたはプログラム340a〜340nをネットワーク識別子330の一つに固定または結び付ける。通常、クライアント108に割り当てられる一つのIPアドレスには単一のTCPスタック324が付いているため、アプリケーションは通常、ソケットライブラリ322へのAPIコールにおけるクライアント108のIPアドレスを特定しない。クライアント108のIPアドレスは、TCPスタック324の一つのグローバル名空間で識別される、周知のIPアドレスである。ソケットライブラリ322のAPIコールを傍受または変更することにより、インターフェース機構320は、クライアント108に割り当てられ、TCPスタック324によってすでに知られている、アドレスおよび/またはホスト名を使って、特定のネットワーク識別子をソケットライブラリ322の代わりに、APIコールに適用することができる。ソケットライブラリ320のAPIコールを傍受した後、インターフェース機構320は、固有のネットワーク識別子をソケットライブラリ320のAPIコールに適用し得、その結果としてネットワーク識別子がAPIコールを行う際に適用される。インターフェース機構320は、プログラム340a〜340nと関連した、または、プログラム340a〜340nのユーザーと関連した固有の識別子を、ソケットライブラリ320のAPIコールに適用する。
ソケットベースのネットワーク通信について、ソケットライブラリ320のAPIをコールするプログラムは、送信元と送信先との間の通信のエンドポイントであるソケット上で様々なAPIコールを行い得る。TCP/IPネットワークのエンドポイントは、IPアドレスとポートアドレスまたはポート番号の固有の組み合わせによって決定される。同一のクライアント108上の複数のアプリケーションは、異なるポートアドレスとともに同じIPアドレスを同時に使うことができる。それは各IPとポートアドレスの組み合わせが、固有なエンドポイントを定義するからである。しかしながら、本発明では、同一のクライアント108上の複数のプログラム340a〜340nが、同じポートアドレスを同時に使うことが可能である。各プログラム340a〜340nは異なるIPアドレスを取得し得るために、各エンドポイント、すなわちIPおよびポートアドレスは、プログラム340a〜340nに割り当てられた固有のIPアドレス経由で固有に定義される。そのために、第一のIPアドレスを持つプログラム340aは、同じクライアント108上の、第二のIPアドレスを持つもう一つのプログラム340bと同じポートアドレスに拘束され得る。
ソケットライブラリ322のAPIは、WinSock API等、ソケットライブラリ322の特定のAPI実施によって記述されるソケット関連の機能のうち、ソケットへ/からの作成、終了、読み出し、書き込みをするための機能コールを定義する。ソケット通信を確立する際に、送信元と送信先のプロセスのIPアドレスとポートが、ソケットライブラリ322のAPIへ提供されなければならない。その後、APIコールの送受信をソケット上で行うことができる。ソケットは、ソケットライブラリ322の拘束機能を呼び出すことによって、特定のネットワークアドレスに結び付けられ得る。インターフェース機構320は、インターフェース機構320によって、ソケット通信を行っているプログラム340a〜340bに付随する、または割り当てられると決められた、あるいは、プログラム340a〜340nにアクセスするユーザー用に決定された、固有のネットワーク識別子にソケットを拘束する。このネットワーク識別子は、クライアント108上のプログラム340a〜340nのための発信元アドレスとして提供され、ソケットがこのネットワーク識別子にマップされたら、送信APIコール等、その他のソケットベースの通信は全て、このネットワーク識別子を発信元ネットワークアドレスとして使用する。インターフェース機構320はまた、汎用リッスンソケットAPIコールを特定のネットワークアドレスのためのリッスンAPIコールに置き換えることによって、プログラム340a〜340nに、プログラム340a〜340nに割り当てられた特定のネットワーク識別子をリッスンさせる。それによって、インターフェース機構320は、接続およびパケットが、プログラム340a〜340nに付随する固有のネットワーク識別子から始まることを保証する。ソケットライブラリ322は、ローカルプロセス送信および/または受信のソケットベースの通信のネットワーク識別子を決定するためのAPIコールを行い得る。インターフェース機構320は、これらのAPIコールを傍受、変更し、プログラム340a〜340nの特定されたネットワーク識別子を返す。
固有のネットワーク識別子をクライアント108上の特定のプログラム340a〜340nまたはユーザーに割り当てるアプローチはまた、仮想IPアドレスとも呼ばれ得る。クライアント108はIPアドレスを割り当てられているが、クライアント108で作動している各々のプログラム340a〜340nおよび/またはユーザーが、クライアント108にすでに一般的に割り当てられたIPアドレスとは異なる固有のIPアドレスを有するという点で、このIPアドレスは仮想である。さらに、これらの仮想IPアドレスは、仮想IPアドレスを、ユーザーまたはプログラム340a〜340nのために必要に応じて割り当てたり、その後割り当てを解除したりして、動的に使用され得る。
ソケットライブラリ322のコールを傍受、変更する技術は、同様のソケット通信ベースのアプローチを使い、そのような通信用のソケットライブラリを持つ、様々な種類のLinuxおよびUNIX(登録商標)オペレーティングシステム等、多くのオペレーティングシステムに応用することができる。さらに、これらのオペレーティングシステムの多くが、すでに単一のTCPスタック324をネットワーク通信に利用しているために、単一のTCPスタック324を持つインターフェース機構320を使うことは有利である。この場合、インターフェース機構320は、これらの標準的な、利用可能なオペレーティングシステムで機能し、クライアント108のオペレーティングシステム、または本発明をホストしているその他のコンピュータ機器100への干渉が少ない。
一部の実施形態では、インターフェース機構320は、レイヤードサービスプロバイダ(LSP)、ネームスペースサービスプロバイダ(NSP)の技術、その他、インターフェース機構320が、ソケットライブラリ322のAPIコールをフック、上書き、オーバーロード、拡張、あるいは、傍受、変更することを可能にする技術を使って、ソケットライブラリ322のAPIコールを傍受、変更できる。例えば、LSPは、チェーンのリンクのように、Windows(登録商標) TCP/IPハンドラーに挿入され得るソフトウェアコンポーネントである。マイクロソフトからのWinsock実施は、サービスプロバイダにAPIとプロトコルスタックとの間のインターフェースを提供する。サービスプロバイダのインターフェースは、カスタムLSPを実施することによって、独自のサービスプロバイダを作り出したり、既存の輸送サービスプロバイダを拡張したりすることを可能にする。
代替案としては、ソケットライブラリ322のAPIコールを傍受、変更する代わりに、インターフェース機構320は、カスタムの、または変更されたソケットライブラリ322を備え得、それはプログラム340a〜340nまたはユーザーのいずれかに割り当てられた固有のネットワーク識別子を使用、提供、適用するためのプログラミング論理を提供する。別の実施形態では、インターフェース機構320は、複数のTCPスタック324、324’および/またはソケットライブラリ322、322’を使い、固有のネットワーク識別子をプログラム340a〜340nの一部または全て、またはクライアント108のユーザーに提供し得る。例えば、一実施形態では、TCPスタック324およびソケットライブラリは、各プログラム340a〜340n、またはクライアント108の各ユーザーに割り当てられる。さらに別の実施形態では、インターフェース機構320は、ネットワーク操作フィルタを備え得、それによってネットワーク通信インターフェース310経由のネットワークトラフィックのパケットをフィルタする。この場合、インターフェース機構320は、ソケットライブラリ322の層を超えて、あるいは下位で、プログラム340a〜340nへ/から送られるネットワークトラフィックを傍受、変更する。そのため、ソケットライブラリ322へのAPIコールは傍受、変更されずに、それらのコールから生成されたネットワークトラフィックが傍受、変更される。
図3Bを参照して、システム302はクライアント・サーバー・ネットワークシステムを表しており、仮想IPアドレスを提供するという本発明は、サーバー110に備わっている。例示的な実施形態では、サーバー110は、MicrosoftターミナルサーバーまたはCitrixプレゼンテーションサーバー等の遠隔表示プロトコルサーバーを実行しているマルチユーザサーバーであり得、それによって、ユーザーはサーバー110に接続して、サーバー110からアプリケーションを実行し、そのアプリケーション実行からの出力をクライアント108a〜108nに表示させることができる。 概観すると、クライアント108a〜108nの任意の一つまたは全ては、ネットワーク104上でサーバー110に接続し得る。サーバー110は、ネットワーク通信インターフェース310、インターフェース機構320、ネットワーク識別子ジェネレータ322、ネットワーク識別子330、そして一つ以上のプログラム340a〜340nを有し得る。
クライアント108a〜108nは、クライアントに追加のアプリケーション機能を提供する、または、クライアントがサーバー110等の別のシステムのサービスへアクセスするのを可能にする、クライアントエージェント109a〜109bを有し得る。例えば、クライアントエージェント109a〜109nは、遠隔表示クライアント、例えば、サーバー110で作動しているMicrosoft ターミナルサーバーまたはCitrixプレゼンテーションサーバーと連動して動作するMicrosoftまたはCitrixからの遠隔表示クライアントであり得る。これらの場合、クライアント108a〜108nは、サーバー110に接続し、サーバー110上でユーザーセッションを確立する。サーバー110は、同時に、および/または、続いて、複数のユーザーセッションをホストし得る。例えば、サーバー110は、クライアント108aからの第一のユーザーのユーザーセッションとクライアント108bからの第二のユーザーのユーザーセッションを同時にホストし得る。別の実施形態では、クライアント108aからの第一のユーザーのユーザーセッションをサーバー110がホストし得るのは、サーバーがクライアント108bからの第二のユーザーのユーザーセッションのホストを終了した後である。
本発明が伴わない場合には、サーバー110でホストされる各ユーザーセッションは、サーバー110に割り当てられたIPアドレスを使うことになる。すると、異なるユーザーがサーバー110を使っているにもかかわらず、各ユーザーから生成されたネットワークトラフィックは、サーバー110の同じIPアドレスを共有することになる。本発明を伴う場合には、プログラム340a〜340nを通してサーバー110でホストされる各ユーザーセッションには、サーバー110のネットワーク識別子とは異なる固有のネットワーク識別子が割り当てられ得る。ユーザーが二つ以上のプログラム340a〜340nを実行している場合には、各ユーザープログラム340a〜340nには、ユーザーに関連するネットワーク識別子が割り当てられ得る。図3Aについて記述されたのと同様な方法で、サーバー110のインターフェース機構320は、複数のネットワーク識別子330から固有のネットワーク識別子を取得、選択、割り当て、ソケットライブラリ322に関しては傍受、変更技術を使って、そのネットワーク識別子をプログラム340a〜340nのネットワーク通信に適宜適用する。
図3Cを参照して、システム304は、インターフェース機構320がプロキシサーバー110上に展開される場合の、仮想IPアドレスを提供するための本発明の他の一実施形態を表している。概説すると、一つ以上のクライアント108a〜108nは、プロキシサーバー110経由でサーバー110’に接続し得る。クライアント108a〜108nは、VPNプロトコルまたはその他のトンネリングまたはカプセル化プロトコルによって、プロキシサーバー110経由でサーバー110’と通信し得る。さらに、クライアント108a〜108nの任意のいずれかは、サーバー、サーバーファーム、他のマルチユーザサーバーであり得る。サーバー110’は、プロキシサーバー110と同じネットワーク104上にあるか、または異なるネットワーク104’上にあり得る。
プロキシサーバー110は、クライアント108a〜108n、またはサーバー110’のいずれかに存在するプログラム340a〜340nのいずれかに割り当てられる、複数のネットワーク識別子330を備え得る。プロキシサーバー110のインターフェース機構320は、クライアント108a〜108nとサーバー110’の間のプロキシサーバー110を通過する、クライアント108a〜108nまたはサーバー110’の特定のプログラム340a〜340n、またはユーザーに関連したネットワークトラフィックへのネットワーク識別子の割り当てを管理する。クライアント108a〜108nまたはサーバー110’は、ネットワークトラフィックとの通信前には、特定のプログラム340a〜340nまたはユーザーにネットワーク識別子を拘束しないために、プロキシサーバー110とインターフェース機構320は、固有のネットワーク識別子を適切に適用するために、ユーザーまたはプログラム340a〜340nからのネットワークトラフィックのコンテクストを管理する必要がある。
一局面において、本発明は、固有のネットワーク識別子を、クライアント108やサーバー110等のコンピュータ100の一つ以上のプログラム340a〜340nおよび/またはユーザーに割り当てることに関するものである。図4は、図3A〜図3Cで示された本発明を実施するための方法400のステップの流れ図を表している。方法400は、複数のネットワーク識別子を取得するステップ(ステップ410)、あるプログラムのネットワーク識別子を選択するステップ(ステップ415)、ネットワーク識別子をそのプログラムのネットワーク通信と結び付けステップ(ステップ420)、そのネットワーク識別子をそのプログラムのネットワーク通信で送信するステップ(ステップ425)を含む。この方法400は、プログラム340a〜340nの各々について繰り返すことができる。またはオプションとして、方法400の任意のステップで、そのステップを複数のプログラム340a〜340nまたはユーザーのために行うことができる。別の実施形態では、方法400は、クライアント108またはサーバー110の各ユーザーに適用することができる。
ステップ410で、コンピュータ100(クライアント108、サーバー110、またはプロキシサーバー110のような)は、複数のネットワーク識別子330を取得する。ネットワーク識別子を取得するコンピュータとは別に、サーバー110から一つ以上のネットワーク識別子330が取得され得る。オプションとして、DHCPサーバーから、一つ以上のネットワーク識別子330が取得され得る。別の実施形態では、ローカルのコンピュータ100、または離れたサーバー110またはクライアント108にあるファイルシステムやデータベース等の格納場所336から、一つ以上のネットワーク識別子330が取得され得る。別の実施形態では、ネットワーク識別子ジェネレータ332から、一つ以上のネットワーク識別子330が取得され得る。ステップ410について、複数のネットワーク識別子330は、上記の代替のステップ実施形態の全てまたは一部によって取得され得る。さらに、一つ以上のネットワーク識別子330は、特定のあるユーザーに、またはユーザーベースに割り当てら得る。一実施形態では、ネットワーク識別子は、ユーザーがクライアント108でユーザーセッションを開始する時に、ユーザーのために取得される。図3Aに関して説明されたように、当業者には、複数のネットワーク識別子330を取得する上で、ステップ410の様々な順列があることが、認識される。
ステップ415では、インターフェース機構320は、クライアント108またはサーバー110等のコンピュータ100で実行または作動している呼び出されたプログラムのために、複数のネットワーク識別子330から、あるネットワーク識別子を選択する。ネットワーク識別子は、コンピュータ100の起動時、または始動時に選択され得る。別の実施形態では、ネットワーク識別子は、プログラム340a〜340nがコンピュータに呼び出される時に、さらに別の一実施形態では、プログラム340a〜340nがソケットライブラリ322に最初のコールをする時に、選択され得る。さらなる実施形態では、プログラム340a〜340nのために選択されたネットワーク識別子330は、プログラム340a〜340nが終了、またはソケット通信を完了したら、解除または返却され得る。
ステップ420では、インターフェース機構320は、選択された識別子をプログラム340a〜340nのネットワーク通信と結び付ける。例示的な実施形態では、ステップ420には、図3Aに関して述べられた傍受および変更技術が含まれる。他の実施形態では、ステップ420は、複数のTCPスタック324またはネットワーク操作フィルタの使用を含み得る。ステップ425では、方法400は、選択され、結び付けられ、または割り当てられたプログラム340a〜340nのネットワーク識別子を、プログラム340a〜340nのネットワーク通信で送信する。インターフェース機構320は、ネットワーク通信インターフェース310とインターフェースし、割り当てられたネットワーク識別子をプログラム340a〜340nのネットワーク通信で送信する。
別の局面では、プログラム340a〜340nに固有のネットワーク識別子を割り当てるための本発明の技術は、コンピュータ100のループバックインターフェースを使って、ローカルのプロセス間通信にも適用することができる。IPプロトコルはループバックネットワークを特定し、ほとんどのIP実行はループバックインターフェースをサポートする。ループバックは、エンドポイントが一つしかない通信チャンネルであるために、コンピュータプログラムがループバックネットワーク上で送る任意のトラフィックは同じコンピュータに宛てられる。最も一般的に使われるループバックIPアドレスは、127.0.0.1にローカルホストのホスト名またはドメイン名が付いている。127.X.X.X範囲のループバックアドレスは全て、TCPスタック324によるループバックアドレスと見なされる。UNIX(登録商標)系のシステムでは、ループバックインターフェースは、一般にデバイスloまたはlo0と呼ばれる。ループバックインターフェースはいくつかのユーザーを有し得る。一部のアプリケーションは、ループバックアドレスを使って、ローカルで作動しているプログラムの間のプロセス間通信を確立する。他の事例では、TCPスタックが機能している場合には、ループバックアドレスのピンギングをテストに利用することができる。さらに、ネットワーク140に実際にアクセスする必要なしに、ループバックインターフェースはソフトウェアのテストに使用され得る。
図5は、本発明の技術をクライアントコンピュータ108のループバックインターフェース510に割り当てるコンピュータシステム500のブロック図を表す。概説すると、クライアント108は、ループバックインターフェース510、インターフェース機構310、複数のループバックアドレス530、一つ以上のプログラム340a〜340nを備える。クライアント108は、ネットワーク104に接続し、それによってクライアント108はサーバー110にアクセスすることができる。サーバー110は、一つ以上のループバックアドレスを持つ記憶装置336を備え得、さらにループバックアドレスジェネレータ532を備え得る。
クライアント108は、複数のループバックアドレス530をインターフェース機構320のために提供または取得し得、クライアント108の一つ以上のプログラム340a〜340nまたは一人以上のユーザーに固有のループバックアドレスを割り当てる際に使用する。ループバックアドレス530は、IPアドレス、ドメインまたはホスト名、あるいはIPアドレスとホスト名の両方を備え得、それはループバックインターフェース510のためのループバックアドレスとして使用するためのものである。
例示的な実施形態では、ループバックアドレス530は、固有のIPアドレスのリストを備え、各IPアドレスはそれに付随するホスト名を少なくとも一つ有する。ループバックアドレス530は、一実施形態では静的に定義され、または、別の実施形態では動的に決定され得る。一部の場合には、ループバックアドレス530の一部が静的に定義され、他のループバックアドレス530が、クライアント108、サーバー110またはネットワーク104上の別のクライアント108’またはサーバー110’から動的に取得される。図3A〜図3Cのネットワーク識別子と同じように、クライアント108は、ループバックアドレス530を多様な方法で取得し得、ループバックアドレス530の一部をある方法で受信し、ループバックアドレス530の他の部分を別の方法で受信し得る。一実施形態では、ループバックアドレス530は、離れたサーバー110にある、あるいは、クライアント108、またはネットワーク104の別のクライアント108’またはサーバー110’にある格納336場所(ファイル等)に静的に定義され得る。例えば、ループバックインターフェース510を実行する際、オペレーティングシステムおよびTCPスタック324によって参照されるクライアント108のローカルホストファイルは、複数のループバックアドレスのリストを含み得る。別の実施形態では、一つ以上のループバックアドレス530が、特定のユーザーに割り当てられる、または専用に供される。別の実施形態では、クライアント108が、一つ以上のループバックアドレス530を、ネットワーク104のクライアント108によってアクセス可能なサーバー110から取得する。さらに別の実施形態では、一つ以上のループバックアドレス530が、図示のようにサーバー110で、またはオプションとしてクライアント108(図示されず)で作動しているループバックアドレスジェネレータ532から取得さ得る。ループバックアドレスジェネレータ532は、ネットワーク識別子ジェネレータ332と同様の任意のアドレス生成方式およびビジネスルールロジックを実行し得る。図3A〜図3Cのネットワーク識別子330と同じように、当業者には、クライアント108が、多様な方法で、複数のループバックアドレス530を提供または取得し得ることが、認識される。
さらに、クライアント108は、クライアント108が持てる、またはホストできる、あるいはループバックインターフェース510によってサポート可能な、最大数の固有のループバックアドレス330を取得、提供する、または割り当てられ得る。例えば、クライアント108の各ユーザーに一つのループバックアドレスは、クライアント108が同時に、または連続してホストできる特定ユーザーの最大数まで存在し得る。他の実施形態では、クライアントは、ユーザーの数、プログラムの数、あるいは、クライアント108のプログラム340a〜340nまたはユーザーに固有のループバックアドレスを割り当てる必要性に影響を与える他の要因に基づいて決定される、最大数未満の固有のループバックアドレス530を取得、提供する、または割り当てられ得る。一実施形態では、ループバックアドレス530の数は、設定可能なパラメータである。
ループバックインターフェース510には、クライアント108がループバックインターフェース510と通信するために必要な、任意の、また全てのネットワーク関連のハードウェアおよびソフトウェアが含まれる。例えば、ループバックインターフェース510には、クライアント108のループバックネットワークを実施する、任意のソフトウェアおよび/またはハードウェア(オペレーティングシステムが提供するソフトおよびインターフェース等)が含まれる。
インターフェース機構310は、ソケットライブラリ322とTCPスタック324を備え、図3Aに関連して説明されたように、他の実施形態も有し得る。また、図3Aに関連してさらに詳しく説明されたように、図5のインターフェース機構310は、同様の傍受、拘束技術を実行して、クライアント108のプログラム340a〜340nまたはユーザーに固有のループバックアドレスを適用する。ループバックインターフェース510と通信する任意のプログラム340a〜340nは、ネットワーク104上でソケットベースの通信を行う時、ソケットライブラリ322にAPIコールを行う。しかしながら、全ての通信が、ローカルのクライアント108に留まるが、しかしループバックインターフェース510によって実施されるTCPスタック324の一部を行使するように、ローカルホストアドレスまたはループバックアドレスは、通信元および/または通信先のエンドポイントとして特定される。
一例として、クライアント108のプログラム340aは、ローカルウェブサーバー340bとローカルのプロセス間通信を確立しているウェブクライアントであり得る。プログラム340aと340bは、デフォルトのローカルホストアドレス127.0.0.1を使ってAPIコールを行うことで、プロセス間通信を確立し得る。クライアント108に割り当てられた標準的なローカルホストアドレス127.0.0.1を使う代わりに、インターフェース機構320は、固有のループバックアドレス330から、ある固有のループバックアドレス、例えば127.0.0.101を、プログラム340aと340bの間のプロセス間通信に適用する。例示的な一例では、プログラム340aと340nは、127.0.0.1のアドレスを使ってAPIコールをし続ける。しかしながら、インターフェース機構320は、デフォルトアドレスを、TCPスタック324によってループバックアドレスとして認識される127.X.X.X範囲のループバックアドレス330からの固有のループバックアドレスに置き換える。この場合、プログラム340a〜340nは、この置き換えに気付かず、プログラム340a〜340nが127.0.0.1のアドレスを使っているかのように実行を続ける。
このループバックアドレスは、プログラム340a〜340n特定のものであり得、あるいはプログラム340a〜340nを実行するユーザーに割り当てられる、または専用に供されるものであり得る。プログラム340bのウェブサーバーは、プログラム340aのウェブクライアントをローカルのURLアドレス127.0.0.101に差し向け得、そのウェブサーバーによりローカルのクライアント108に提供されるウェブサイトにアクセスする。プログラム340aと340bが、クライアント108に割り当てられるものとは異なる固有のループバックアドレスを使う一方で、もう一組のプログラム340cと340dも、プログラム340aと340bのループバックアドレスとは異なり、クライアント108のデフォルトループバックアドレス127.0.0.1とは異なる、127.0.0.102等の固有のループバックアドレスとのローカルのプロセス間通信を確立し得る。上記の例のプログラム340aと340bのように、もう一組のプログラム340cと340dも、127.0.0.1のアドレスを使ってAPIコールを行うが、インターフェース機構320が127.X.X.X範囲の固有のループバックアドレスに自動的に置き換える。
固有のループバックアドレス530を一つ以上のプログラム340a〜340nまたはクライアント108のユーザーに適用することにより、本発明は、複数のループバックインターフェースのプロセス間通信が同時にまたは続けて起こることを可能にする。本発明がない場合には、最初の一組のプログラム340aと340b、もう一組のプログラム340cと340dは、標準的なデフォルトの127.0.0.1等、同じローカルループバックアドレスを使わなければならず、どちらか一組のプログラムが適切に機能しなくなる。さらに、本発明は、ループバックアドレスに適用されるため、モニタリングシステムおよびアプリケーションがプロセス間ループバック通信を特定のプログラムまたはユーザーに結び付けることを可能にする。
別の局面では、本発明は、固有のループバックアドレスを一つ以上のプログラム340a〜340n、および/または、クライアント108やサーバー110等コンピュータ100のユーザーに割り当てるための方法に関するものである。図6は、図5に示される本発明を実施するための方法600のステップの流れ図を表している。方法600は、複数のループバックアドレスを取得するステップ(ステップ610)、あるプログラムのために、複数のループバックアドレスからループバックアドレスを選択するステップ(ステップ615)、ループバックアドレスをそのプログラムのループバックインターフェース通信と結び付けるステップ(ステップ620)、およびそのループバックアドレスをそのプログラムのループバックインターフェース通信で送信するステップ(ステップ625)を含む。この方法600は、プログラム340a〜340nの各々について繰り返すことができる。またはオプションとして、方法600の任意のステップで、そのステップを複数のプログラム340a〜340nのために行うことができる。別の実施形態では、方法600は、クライアント108の各ユーザーに適用することができる。
ステップ610で、クライアント108は、複数のループバックアドレス530を取得する。クライアント108から離れたサーバー110から一つ以上のループバックアドレス530が取得され得る。一実施形態では、離れたサーバー110またはオプションとしてローカルのクライアント108にあるファイルシステムやデータベース等の格納場所336から、一つ以上のループバックアドレス530が取得され得る。別の実施形態では、ループバックアドレスジェネレータ532から、一つ以上のループバックアドレス530が取得され得る。ステップ610について、複数のループバックアドレス530は、上記の代替のステップ実施形態の全てまたは一部によって取得され得る。さらに、一つ以上のループバックアドレス530は、特定のあるユーザーに割り当てられ得る。図5に関して説明されたように、当業者には、複数のループバックアドレス530を取得する上で、ステップ610の様々な順列があることが、認識される。
ステップ615では、インターフェース機構320は、クライアント108またはサーバー110等のコンピュータ100で実行または作動している、呼び出されたプログラムのために、複数のループバックアドレス530からあるループバックアドレスを選択する。ループバックアドレスは、クライアント108の起動時、または始動時に選択され得る。別の実施形態では、ループバックアドレスは、プログラム340a〜340nがクライアント108に呼び出される時に、さらに別の実施形態では、プログラム340a〜340nがソケットライブラリ322に最初のコールをする時に、選択され得る。別の実施形態では、ループバックアドレスはユーザーベースで選択される。一実施形態では、ループバックアドレスは、ユーザーがクライアント108でユーザーセッションを開始する時に、ユーザーのために取得および/または選択される。さらなる実施形態では、プログラム340a〜340nのために選択されたループバックアドレスは、プログラム340a〜340nがソケット通信を終了あるいは完了したら、解除または返却され得る。
ステップ620では、インターフェース機構320は、選択されたループバックアドレスをプログラム340a〜340nのループバックインターフェース通信と結び付ける。例示的な実施形態では、ステップ620には、図5および図3Aに関して述べられた傍受および変更技術が含まれる。他の実施形態では、ステップ620は、複数のTCPスタック324またはネットワーク操作フィルタの使用を含み得る。ステップ625では、方法600は、選択され、結び付けられ、または割り当てられたプログラム340a〜340nのループバックアドレスを、プログラム340a〜340nのループバックインターフェース通信で送信する。インターフェース機構320は、ループバックインターフェース510とインターフェースし、割り当てられたループバックアドレスをプログラム340a〜340nのループバックインターフェース通信で送信する。
別の局面では、本発明は、ユーザーがネットワーク104を移動する際、仮想ホスト名をユーザーと結び付けるための一律のアドレス指定方式の提供に関するものである。上述のように、本発明は、プログラムの始動時、またはユーザーセッションの開始時、プログラムあるいはユーザーに、固有のネットワーク識別子を動的に割り当てることを可能にする。そのため、ユーザーは、仮想ホスト名に動的に「拘束」され得、ユーザーがネットワークにアクセスするために使用し得るコンピュータにとらわれず、ユーザーは常に同じホスト名、そして時には同じIPアドレスを使うことになる。仮想ホスト名および/または仮想IPアドレスは、特定のユーザーに割り当てられ得、ユーザーがコンピュータまたはサブネットワークを切り替えてネットワークを移動する時、ユーザーに付随することができる。
次に参照する図7は、本発明の実施形態を実行するためのクライアント・サーバーシステム700を表すブロック図である。概説すると、一つ以上のクライアント108a〜108nは、ネットワーク104に接続し、サーバー110にアクセスする。ネットワーク104は、一つ以上のサブネットワーク104’を備え得、あるいは複数のネットワーク104、104’等であり得る。サーバー110は、名前解決サービス710、一組の仮想ホスト名730、IPアドレス740、そしてオプションとしてDHCPサーバー334を備える。サーバー110は、サーバーファーム、サーバークラスタ、その他の複数サーバーシステム(サーバー110、110’、110”を含む)等であり得る。各々のクライアント108a〜108nおよびサーバー110は、プログラム340a〜340nを呼び出し、実行、あるいは行使することができる。ある実施形態では、クライアント108aのプログラム340a〜340nは、サーバー110で作動するプログラム340bを備えるサーバー110でのユーザーセッションとともに、マルチユーザサーバー110またはサーバーファーム110’でのユーザーセッションを確立するために使用され得る。各々のクライアント108a〜108nには、本発明のネットワークインターフェースを行うためのネットワークインターフェース708a〜708nが含まれる。例示的な実施形態では、一つ以上のネットワークインターフェース708a〜708nには、図3A〜図3Cおよび図5について述べられたように、固有のネットワーク識別子をプログラム340a〜340nおよび/またはユーザーに割り当てるためのインターフェース機構320が含まれる。
サーバー110は、IPアドレスをクライアント108a〜108nおよび/またはクライアント108a〜108nのネットワークインターフェース708a〜708nのインターフェース機構320に動的に割り当てるための、DHCPサーバー334を有し得る。例えば、ユーザーセッションが始まると、新しいIPアドレスがDHCP334から取得され得、ユーザーセッションが終了するとそのIPアドレスは解除され、DHCPサーバー334のIPアドレスのプールに返却され得る。オプションとして、DHCPサーバー334は、ネットワーク104上の別のサーバー110’にあり得る。DHCPサーバー334は、IPアドレスを予約しておくように設定され得、一つ以上のIPアドレスが、ユーザー名またはホスト名等のような特定の名前のために予約され得る。クライアント108a〜108nにクライアント108a〜108nのIPアドレス、サブネットマスク、デフォルトゲートウェイの情報を提供することに加えて、DHCPサーバー335は、名前解決サービスのアドレス等のその他の情報、またはDHCP334が提供するよう設定されている任意のその他の情報も提供することができる。さらに、DHCPサーバー336は、クライアント108a〜108nからIPアドレス割り当て要求を受信する時、ユーザー名やホスト名等、特定の名前に関する情報を予約付きで受信することができる。このようにして、DHCPサーバー334は、要求された名前に関連する、予約されたIPアドレスを返却することができる。ある実施形態では、クライアント108a〜108nは、DHCPサーバー334から一つ以上のIPアドレスを取得し得る。他の実施形態では、クライアント108a〜108nは、DHCPサーバー334とは別に、例えば、クライアント108のファイルから、または、サーバー110の記憶装置から、一つ以上のIPアドレスを取得し得る。図7のクライアント108は、図3Aに関して記述された任意の方法で、IPアドレスを取得することができる。
サーバー110は、ドメインネーム・サーバー(DNS)等の名前解決サービス710を備え得る。 あるいは、名前解決サービス710は、ネットワーク104上の別のサーバー110’、またはネットワーク104上の一つ以上のサーバー110’、110”で作動し得る。DNSサーバーのような名前解決サービスは、IPアドレスに対応するドメイン名またはホスト名の集中リストを維持管理し、ドメイン名によって特定される要求を各々のIPアドレスにマップする。ホスト名は、名前解決サービス710に登録されるか、あるいは動的に更新され得る。一実施形態では、名前解決サービスは、TCP/IP上でNETBIOS APIを使ってホスト名をIPアドレスに変換する、WINS(Microsoft Windows(登録商標)インターネットネーミングサービス)を備える。DNSのような名前解決サービス710は、クライアント108a〜108nのIPアドレスが、例えばDHCPサーバー334によって動的に割り当てられるなどして変更すると、記録を動的に更新し得るが、名前解決サービス710は、クライアント108a〜108nのIPアドレスを追跡しているにすぎない。
クライアント・サーバーシステム700の作動中、プログラム340a〜340nは、クライアント108a〜108nで呼び出される。クライアント108a〜108n、プログラム340a〜340n、またはネットワークインターフェース708a〜708nは、例えば、DHCPサーバー334から、IPアドレスを動的に要求することができ、そのIPアドレスを、プログラム340aを呼び出しているユーザー、または現在クライアント108a〜108nにログインしているユーザーのユーザー名に「拘束」することができる。クライアント108a〜108n、プログラム340a〜340n、またはネットワークインターフェース708a〜708nは、DHCPサーバー334からIPアドレスを要求する時、その要求とともにユーザーの名前を報告できる。例示的な実施形態では、DHCPサーバー334は、IPアドレスの要求を通して報告されたユーザーのためにIPアドレスを予約するよう設定され得る。その後、DHCPサーバー334は、予約されたIPアドレスをクライアント108aに戻し、こうして、ユーザーと予約されたIPアドレスを有効に結び付けることができる。
別の実施形態では、クライアント108a〜108nは、図3A〜図3Cに関して記述されたように、IPアドレスを複数のネットワーク識別子330から検索し得る。その後、クライアント108a〜108nは、システムAPIコールを行い、仮想ホスト名から取得したIPアドレスでDHCPサーバー334を更新することができる。別の実施形態では、クライアント108aは、仮想ホスト名を名前解決サービス710で登録し得、システムコールを行って取得したIPアドレスを提供し得る。さらに別の実施形態では、クライアント108a〜108nは、DHCPサーバー334からIPアドレスを取得し得、DHCPサーバー334から取得されたIPアドレスの仮想ホスト名を名前解決サービス710で登録し得る。
ユーザーまたはプログラム340a〜340nの仮想ホスト名は、動的に作成され得、ユーザーセッションまたはプログラム340a〜340nを呼び出したユーザーに付随するユーザー名に基づき得る。別の実施形態では、仮想ホスト名は、DHCPサーバー334または名前解決サービス710に静的に定義され得る。オプションとして、仮想ホスト名は、クライアント108a〜108nまたはサーバー110の別の格納336場所に定義され得る。
例えば、mycompanyのネットワークドメインでuser1と名付けられたユーザーは、user1.mycompany.comという仮想ホスト名を有し得る。このuser1用の仮想ホスト名は、DHCPサーバー334および/または名前解決サービス710に登録され得る。別の実施形態では、仮想ホスト名は、ユーザーセッション等、ユーザーがプログラム340a〜340nを呼び出す時に作成され得る。その後、クライアント108a〜108n、またはプログラム340a〜340n、またはネットワークインターフェース708a〜708nは、そのユーザーの仮想ホスト名で名前解決サービスを動的に更新し得、仮想ホスト名に割り当てられたIPアドレスを提供し得て、それはまた予約され、あるいはユーザーに割り当てられる。
クライアント108a〜108n、プログラム340a〜340n、またはネットワークインターフェース708a〜708nのいずれかには、仮想ホスト名ジェネレータ740が含まれ得、それは様々な属性や要因に基づき、ユーザーのための仮想ホスト名を動的に作成する。仮想ホスト名は単にユーザー名でもあり得る。他のケースでは、仮想ホスト名は、ユーザー名とクライアント108a〜108nのホスト名を組み合わせたものであり得る。他のケースでは、仮想ホスト名は、ユーザー名とネットワーク104のドメイン名を組み合わせたものであり得る。他の実施形態では、仮想ホスト名は、ユーザーが同時に実行しているユーザーセッションの数に依存し得る。さらに別の実施形態では、仮想ホスト名は、クライアント108a〜108nが接続されているサブネットワークの論理名に依存し得る。当業者には、仮想ホスト名が任意の文字または説明文の一部から形成され得、それを組み合わせたり、連結したり、削ったり、あるいは並べたりして仮想ホスト名を作り得、それが割り当てられたユーザーまたはログインエンティティを固有に識別し得ることが、認識される。
固有のIPアドレスをクライアント108aではなく、ユーザーに割り当てるという動的な性質によって、本発明は、ローミングするユーザーのために、一律のアドレス指定方式を提供することができる。例えば、user1と名付けられた第一のユーザーがクライアント108aにログインし、それには既にデフォルトのIPアドレス、例えば192.168.1.100が割り当てられている可能性がある。ユーザーセッションを呼び出したり、別のプログラム340a〜340nを開始したりする時、クライアント108aは、DHCPサーバー334からIPアドレスを要求し得る。DHCPサーバー334への要求で、user1の仮想ホスト名が提供され得る。一実施形態では、DHCPサーバー334は、user1のために192.168.1.200というIPアドレスを予約しており、要求に応えて、この予約したIPアドレスを提供する。その結果として、クライアント108aのuser1は、予約されたIPアドレス192.168.1.200に割り当てられるuser1という仮想ホスト名を有する。このuser1という仮想ホスト名のIPアドレス192.168.1.200へのマッピングは、名前解決サービス710で利用することができる。そのため、名前解決サービス710の検索では、IPアドレス192.168.1.200に関連したuser1の仮想ホスト名が現れる。仮想ホスト名はユーザーを記述しているため、名前解決サービスの検索では、ユーザーおよびそのIPアドレスをすぐに特定し、検索とともに提供された他の情報と関連づける。
同じuser1は、クライアント108aでのユーザーセッションを終了し、ネットワーク104の別の部分に移動し、クライアント108nにログインして別のユーザーセッションを呼び出し得る。同じように、クライアント108nでのuser1のユーザーセッションのIPアドレスもDHCPサーバー334から要求され得る。要求には、user1の仮想ホスト名が含まれ、DHCPサーバー334は、予約されたIPアドレス192.168.1.200を提供する。そのため、user1は、クライアント108aでのユーザーセッションと同じ仮想ホスト名と同じIPアドレスを有することになる。ユーザーがネットワーク104のクライアント108a〜108nからクライアント108a〜108nへ動くと、仮想ホスト名とIPアドレスは事実上ユーザーとともにローミングする。このように、IPアドレスと仮想ホスト名の割り当てプロセスは、ユーザーセッションが実施されている物理的なコンピュータから 分離されている。コンピュータはすでにネットワーク104に接続するために割り当てられたIPアドレスとホスト名を有する。
同じuser1が異なるクライアント108a〜108nで複数のセッションを持つ場合には、セッションごとに独立したIPアドレスと仮想ホスト名が要求される。仮想ホスト命名体系は、これらのケースを明らかにする必要がある。例えば、クライアント108a〜108n、プログラム340a〜340n、ネットワークインターフェース708a〜708n、またはオプションとして仮想ホスト名ジェネレータ740は、セッションとユーザーの両方を特定する、各ユーザーセッションのための仮想ホスト名を作成し得る。例えば、user1の第一のセッションは、user1.session1という仮想ホスト名を有し得、user1の第二のセッションは、user1.session2という仮想ホスト名を有し得る。固有のIPアドレスがDHCPサーバー334から、または、ネットワークインターフェース708a〜708nのインターフェース機構320によって、各仮想ホスト名に割り当てられ得る。user1が、一律のアドレス指定方式で複数のユーザーセッションを持つ一方で、他のユーザーも複数のユーザーセッションを持つことができ、各々が一律のアドレス指定方式に従った仮想ホスト名によって識別される。
一律のネットワークアドレス指定は、図3Cの具体例に描かれるように、ユーザーがプロキシサーバーを通じて接続する場合に、特に有用であり得る。プロキシサーバー110は、例えばVPNを使い、ネットワークの接続形態によって制限されることなく、仮想IPアドレスを提供できる。対照的に、DHCPサーバー334は、ネットワークの接続形態と連動するIPアドレスの提供に限定されている。例えば、DHCPサーバーによって提供される仮想IPアドレスはすべて、ネットワーク104のクライアント108a〜108nに割り当てられるのと同じ範囲のIPアドレス、例えば192.X.X.Xであり得る。ユーザーがネットワーク104に接続し、DHCPサーバー334によって提供される仮想IPアドレスを割り当てられている場合には、そのユーザーはネットワーク上のクライアント108a〜108nに割り当てられるIPアドレスと同じ範囲の固有のIPアドレスを有することになる。それでもユーザーは固有なIPアドレスを取得するが、そのユーザーに割り当てられるIPアドレスは、クライアント108a〜108nがあるネットワーク104によって決まる。図3Cのように、ユーザーがプロキシサーバー110経由でネットワークに接続する場合には、そのユーザーは、プロキシサーバーのネットワーク104、またはユーザーがプロキシサーバー110経由でアクセスするネットワーク104のネットワーク接続形態と連動しない、固有のIPアドレスを提供され得る。プロキシサーバーを使うことにより、ユーザーがネットワーク104に接続するためのクライアント108a〜108nに関係なく、ネットワーク接続形態に付随しない仮想IPアドレスがユーザーに割り当てられ得る。
仮想ホスト名を使ったこの一律のアドレス指定方式は、デスクトップのような非マルチユーザーコンピュータ環境にも、MicrosoftターミナルサーバーまたはCitrixメタプレゼンテーションサーバーで、複数のユーザーセッションを同時にホストするサーバーまたはサーバーファームのようなマルチユーザシステムにも適用され得る。ユーザーがデスクトップコンピュータにログインする時、そのユーザーのIPアドレスが取得され、ユーザーの仮想ホスト名と結び付けられ得る。マルチユーザシステムについては、本発明によって、システムは、各ユーザーおよびユーザーセッションに、同時に、またはその他の方法で、各ユーザーが独立した固有のIPアドレスを持っているデスクトップコンピュータ環境に似た実行環境を提供することが可能になる。
さらに、IPアドレス割り当てプロセスは、仮想ホスト名登録プロセスから分離することができる。例えば、IPアドレスは、ユーザーのためにIPアドレスを予約せずにDHCPサーバー334経由で、または、ネットワークインターフェース708a〜708nのインターフェース機構320等、その他の方法で取得され得る。IPアドレスが予約されていない、あるいはユーザーに割り当てられていなくても、仮想ホスト名はユーザー名に基づいて名前解決サービス710に登録され得る。これによって、ユーザーの仮想ホスト名は、ユーザーとともに異なるサブネットアドレスを持つネットワークを通して移動することができる。仮想ホスト名は、ユーザーにとって、ネットワーク104がアクセス可能な名前解決サービス710を通して変わらずにいるが、一方では、仮想ホスト名、従ってユーザーに割り当てられたIPアドレスは、異なるIPアドレスのサブネットアドレス指定方式を明らかにするために変化する。別の局面において、仮想ホスト名を使った一律のアドレス指定方式は、仮想ホスト名がネットワークを移動するユーザーに追随するため、ネットワーク上のユーザーの検索サービスを提供するために使用され得る。検索サービスは、ユーザーに割り当てられた仮想ホスト名および/またはIPアドレスによってユーザーを見つけるために提供され得る。
別の局面では、本発明は、ユーザーがネットワーク104に接続するクライアント108a〜108nから独立して、ユーザーに一律のアドレス指定方式を提供するための方法に関するものである。図8は、図7に示された本発明を実施するための方法800のステップの流れ図を表している。方法800は、複数の仮想ホスト名を取得するステップ(ステップ810)、複数のインターネットプロトコルアドレスを取得するステップ(ステップ815)、仮想ホスト名をユーザーに割り当てるステップ(ステップ820)、仮想ホストをIPアドレスと結び付けるステップ(ステップ825)、およびユーザーがネットワークを移動する時に仮想ホスト名を提供するステップ(ステップ830)を含む。この方法800は、各ユーザーについて繰り返すことができる。またはオプションとして、方法800の任意のステップで、そのステップを複数のユーザーのために行うことができる。
ステップ810では、複数の仮想ホスト名730が取得され、ネットワーク104の一人以上のユーザーに割り当てられる。これらの仮想ホスト名730の一つ以上が、DHCPサーバー334または名前解決サービス710に登録され得る。他の実施形態では、これらの仮想ホスト名730の一つ以上が、クライアント108a〜108nまたはサーバー110の、ファイルまたはデータベース等の格納場所に定義される。別の実施形態では、仮想ホスト名730の一つ以上が、仮想ホスト名ジェネレータ740によって動的に作成される。仮想ホスト名は、必要に応じてユーザー一人に一つずつ取得され得、または、仮想ホスト名を各ユーザーまたはユーザーセッションに提供するために望ましいまたは必要な頻度で、まとめて取得され得る。ステップ815では、方法800は、複数のIPアドレスの取得も行う。IPアドレスは、DHCPサーバー334経由で、またはネットワークインターフェース708a〜708nのインターフェース機構320によって、または図3A〜図3C、および図4に関して述べられた他の方法で取得され得る。方法800はIPアドレスを仮想ホスト名に割り当て、仮想ホスト名をユーザーまたはユーザーセッションと結び付ける。
ステップ820で、方法800は、仮想ホスト名または複数の仮想ホスト名を一つ以上のクライアント108a〜108n経由でネットワークにアクセスする各ユーザーに割り当てる。第一のユーザーがクライアント108a経由でネットワーク104にアクセスし、サーバー110でユーザーセッションを確立する。この方法は、サーバー110でのそのユーザーのセッションのために、複数の仮想ホスト名730から一つの仮想ホスト名をそのユーザーに割り当てる。割り当てられた仮想ホスト名は、ユーザー専用に供され得、ユーザーの名前を含み得る。同じユーザーは、クライアント108aからネットワーク104とサーバー110にアクセスしながら、第二のクライアント108bから同時にネットワーク104とサーバー110にもアクセスし得る。クライアント108bからのこの第二のセッション用にも、ユーザーに仮想ホスト名が割り当てられる。この第二の仮想ホスト名は、クライアント108a経由の第一のユーザーセッション用に割り当てられた仮想ホスト名と似ているが、異なる必要がある。例えば、これら二つのユーザーセッションの仮想ホスト名は、セッション番号等の、セッションを特定するサフィックスを有する、ユーザーのログイン名を備え得る。
第二のユーザーがクライアント108b経由でネットワーク104にアクセスし、サーバー110でユーザーセッションを確立し得る。方法800によって、この第二のユーザー、またはネットワーク104またはサーバー110上の、それに続く、または並行する他のユーザーに、ユーザーおよび/またはユーザーセッションを固有に識別する仮想ホスト名を割り当てることが可能になる。仮想ホスト名は、このユーザーおよび/またはユーザーセッションを、同時に実行される、または以前実行された、他のユーザーおよび/またはユーザーセッションと区別する。ステップ820は、ユーザー固有のネットワークユーザーIDに基づく仮想ホスト名等、第一のユーザーの仮想ホスト名とは異なる仮想ホスト名を第二のユーザーに割り当てる。ステップ820はまた、ユーザーおよびユーザーのセッションを固有に識別する仮想ホスト名を第二のユーザーに割り当てる。別の実施形態では、仮想ホスト名は、ユーザー、クライアント108a〜108n、またはユーザーがアクセスしているサーバー110、またはユーザーが通信しているネットワーク104のサブネットワークを記述するものであり得る。
ステップ825では、方法800は、各ユーザーまたはユーザーセッションの仮想ホスト名を、各ユーザーまたは各ユーザーセッションに割り当てられたIPアドレスに結び付ける。上述のように、仮想ホスト名が各ユーザーまたはユーザーセッションに動的に割り当てられるだけでなく、各ユーザーまたはユーザーセッションのための各IPアドレスも、図3A〜図3Cに関して述べられたように、動的に割り当てられ得る。ユーザーまたはユーザーセッションに割り当てられた各仮想ホスト名は、図3A〜図3Cで説明したソケットベースの通信等、ネットワーク通信用に仮想ホスト名をIPアドレスに分解するため、IPアドレスと結び付けられる必要がある。仮想ホスト名は、ネットワーク104上の名前解決サービス710経由で、IPアドレスに分解することができる。特定のユーザーまたはユーザーセッションのために、IP アドレスと仮想ホスト名をそれぞれ取得した後、DHCPサーバー334および/または名前解決サービス710の記録にある、IPアドレスの仮想ホスト名へのマッピングが更新される必要があり得る。 別のケースでは、仮想ホスト名および/またはIPアドレが、DHCPサーバー334および/または名前解決サービスにあらかじめ登録され得る。
ステップ830では、ユーザーがネットワーク104の一つのクライアント108a〜108nから別のクライアント108a〜108nへ移動する時に、またはユーザーがクライアント108a〜108nまたはサーバー110(マルチユーザーサーバー110’等)で複数ユーザーのセッションを開始する時、ステップ810、815、820、825の仮想ホスト名アドレス指定方式が実行される。ユーザーがクライアント108a〜108nまたはサーバー110上で、ユーザーセッション等プログラム340a〜340nを始動するたびに、ユーザーは図3Aおよび図3Bに関連する、また図4の対応する方法に関連する記載のとおりIPアドレスを、そして、図7および上述の方法800のステップに関連する記載のとおり仮想ホスト名を取得する。そのため、本発明の仮想ホスト名のローミング特性によって、仮想ホスト名および/または仮想IPアドレスを有効利用して、ユーザーを容易に識別することが可能になり、それは、セキュリティの提供やユーザー活動の監視のための手段として、またはユーザーを発見するための検索サービスを提供したり、ホスト名やIPアドレスを使ってユーザーを識別するアプリケーションおよびシステムを満たしたりするために利用され得る。
本発明の例示的なシステムおよび方法は、一般にTCP/IPネットワークに関して論じられているが、これらのシステムおよび方法は他の種類のネットワーク、例えばIPXやDECNETにも適用され得る。当業者には、本発明のシステムおよび方法のTCP/IPネットワーク以外のネットワークへの応用が、理解される。このように、本発明は、本明細書に記述された技術およびメカニズムを適用する任意の種類のネットワークで作動する、プログラム、ユーザーまたはユーザーセッションのために固有のネットワーク識別子を提供することができる。また、本発明は、特定のネットワークによってサポートされる同様のループバックタイプのインターフェースを使うプロセス間通信のために固有のループバック識別子を提供することもできる。さらに、本発明は、これらの他の種類のネットワーク上のユーザーのために、一律のネットワークアドレス指定方式を提供することができる。
当業者によって、本発明の精神と範囲から逸脱することなく、多くの改変や改良を行うことが可能である。従って、示された実施形態は、単に例示を目的として示されたものであって、発明を限定するものと受け取られるべきではないことが、明確に理解されねばならない。本発明は特許請求の範囲で定義される。これらの特許請求の範囲は、文字どおり示されたものと、そして、たとえ他の点では上記の例示で示され記述されたものと同一ではないとしても、実質的には変わらない均等の要素とを含むものとして、読まれるべきである。
Claims (90)
- 固有のネットワーク識別子をコンピュータに呼び出される各プログラムに割り当てるためのシステムであって、該システムは、
複数のネットワーク識別子を取得するコンピュータであって、
該複数のネットワーク識別子から、該コンピュータに呼び出される第一のプログラムのための第一のネットワーク識別子を選択し、該第一のネットワーク識別子とは異なる第二のネットワーク識別子を該コンピュータに呼び出される第二のプログラムのために選択し、該第一のネットワーク識別子を該第一のプログラムと結び付け、該第二のネットワーク識別子を該第二のプログラムと結び付ける、インターフェース機構を備えるコンピュータと、
該インターフェース機構と通信して、該第一のネットワーク識別子を該第一のプログラムのネットワーク通信で送信し、該第二のネットワーク識別子を該第二のプログラムのネットワーク通信で送信するネットワーク通信インターフェースと、
を備える、システム。 - 前記ネットワーク識別子はインターネットプロトコルアドレスを備える、請求項1に記載のシステム。
- 前記ネットワーク識別子はホスト名を備える、請求項1に記載のシステム。
- 前記第一のプログラムおよび前記第二のプログラムのうちの一つは、前記コンピュータによってホストされるユーザーセッションを備える、請求項1に記載のシステム。
- 前記第一のプログラムおよび前記第二のプログラムのうちの一つは、アプリケーション隔離環境およびアプリケーションのうちの一つを備える、請求項1に記載のシステム。
- 前記コンピュータは前記複数のネットワーク識別子のうちの少なくとも一つをサーバーから取得する、請求項1に記載のシステム。
- サーバーは動的ホスト構成プロトコルサーバーを備える、請求項4に記載のシステム。
- 前記コンピュータは前記複数のネットワーク識別子のうちの少なくとも一つを格納場所から取得する、請求項1に記載のシステム。
- 前記コンピュータは前記複数のネットワーク識別子のうちの少なくとも一つをネットワーク識別子ジェネレータから取得する、請求項1に記載のシステム。
- 前記インターフェース機構は、前記第一のプログラムのための前記第一のネットワーク識別子を該第一のプログラムの確立中に選択する、請求項1に記載のシステム。
- 前記インターフェース機構は、前記第二のプログラムのための前記第二のネットワーク識別子を該第二のプログラムの確立中に選択する、請求項1に記載のシステム。
- 前記コンピュータは第一のユーザーセッションおよび第二のユーザーセッションを同時にホストする、請求項4に記載のシステム。
- 前記コンピュータは第一のユーザーセッションをホストした後で、第二のユーザーセッションをホストする、請求項4に記載のシステム。
- 前記インターフェース機構は、前記第一のプログラムの前記第一のネットワーク識別子を、該第一のプログラムの名前解決要求に応答して提供し、前記第二のプログラムの前記第二のネットワーク識別子を、該第二のプログラムの名前解決要求に応答して提供する、請求項1に記載のシステム。
- 前記複数のネットワーク識別子のうちの少なくとも一つが、前記コンピュータのユーザーに割り当てられる、請求項1に記載のシステム。
- 前記インターフェース機構は、第一のTCPスタックを備える、請求項1に記載のシステム。
- 前記インターフェース機構は、ネットワーク通信インターフェースとの通信のためのソケットライブラリを備える、請求項16に記載のシステム。
- 前記ソケットライブラリはWinSockアプリケーション・プログラミング・インターフェースを備える、請求項17に記載のシステム。
- 前記インターフェース機構は、前記ネットワーク通信インターフェースとのソケット通信のために、前記第一のネットワーク識別子を前記第一のプログラムに拘束する、請求項17に記載のシステム。
- 前記インターフェース機構は、前記ネットワーク通信インターフェースとのソケット通信のために、前記第二のネットワーク識別子を前記第二のプログラムに拘束する、請求項17に記載のシステム。
- 前記インターフェース機構は、第二のTCPスタックを備える、請求項16に記載のシステム。
- 前記インターフェース機構は、ネットワークパケット操作フィルタを備える、請求項1に記載のシステム。
- 固有のループバックアドレスをコンピュータに呼び出される各プログラムに割り当てるためのシステムであって、該システムは、
複数のループバックアドレスを取得するコンピュータであって、
該複数のループバックアドレスから、該コンピュータに呼び出される第一のプログラムのための第一のループバックアドレスを選択し、該第一のループバックアドレスとは異なる第二のループバックアドレスを、該コンピュータに呼び出される第二のプログラムのために選択し、該第一のループバックアドレスを該第一のプログラムのローカルホストアドレスとして結び付け、該第二のループバックアドレスを該第二のプログラムのローカルホストアドレスとして結び付ける、インターフェース機構、を備えるコンピュータと、
該インターフェース機構と通信して、該第一のループバックアドレスを該第一のプログラムのプロセス間通信で送信し、該第二のループバックアドレスを該第二のプログラムのプロセス間通信で送信する、ループバックインターフェースと、
を備える、システム。 - 前記第一のプログラムおよび前記第二のプログラムのうちの一つは、コンピュータによってホストされるユーザーセッションを備える、請求項23に記載のシステム。
- 前記第一のプログラムおよび前記第二のプログラムのうちの一つは、アプリケーション隔離環境およびアプリケーションのうちの一つを備える、請求項23に記載のシステム。
- 前記インターフェース機構は、前記第一のプログラムのための前記第一のループバックアドレスを前記第一のプログラムの確立中に選択する、請求項23に記載のシステム。
- 前記インターフェース機構は、前記第二のプログラムのための前記第二のループバックアドレスを前記第二のプログラムの確立中に選択する、請求項23に記載のシステム。
- 前記コンピュータは、前記複数のループバックアドレスのうちの少なくとも一つをサーバーから取得する、請求項23に記載のシステム。
- 前記コンピュータは、前記複数のループバックアドレスのうちの少なくとも一つを格納場所から取得する、請求項23に記載のシステム。
- 前記システムは、前記複数のループバックアドレスのうちの少なくとも一つを生成するループバックアドレスジェネレータを備える、請求項23に記載のシステム。
- 固有のネットワーク識別子をコンピュータによって呼び出される各プログラムに割り当てるための方法であって、
(a)複数のネットワーク識別子を取得するステップと、
(b)該複数のネットワーク識別子から、該コンピュータに呼び出される第一のプログラムのための第一のネットワーク識別子と、該コンピュータに呼び出される第二のプログラムのための該第一のネットワーク識別子とは異なる第二のネットワーク識別子と、を選択するステップと、
(c)該第一のネットワーク識別子を該第一のプログラムのネットワーク通信と結び付けるステップと、該第二のネットワーク識別子を該第二のプログラムのネットワーク通信と結び付けるステップと、
(d)該第一のネットワーク識別子を該第一のプログラムのネットワーク通信で送信するステップと、該第二のネットワーク識別子を該第二のプログラムのネットワーク通信で送信するステップと、
を包含する、方法。 - 前記ネットワーク識別子はインターネットプロトコルアドレスを備える、請求項31に記載の方法。
- 前記ネットワーク識別子はホスト名を備える、請求項31に記載の方法。
- 前記第一のプログラムおよび前記第二のプログラムのうちの一つは、コンピュータによってホストされるユーザーセッションを備える、請求項31に記載の方法。
- 前記第一のプログラムおよび前記第二のプログラムのうちの一つは、アプリケーション隔離環境およびアプリケーションのうちの一つを備える、請求項31に記載の方法。
- ステップ(a)は、サーバーから前記複数のネットワーク識別子のうちの少なくとも一つを取得するステップをさらに包含する、請求項31に記載の方法。
- ステップ(a)は、動的ホスト構成プロトコルサーバーから前記複数のネットワーク識別子のうちの少なくとも一つを取得するステップをさらに包含する、請求項31に記載の方法。
- ステップ(a)は、前記コンピュータによって、前記複数のネットワーク識別子のうちの少なくとも一つを格納場所から取得するステップをさらに包含する、請求項31に記載の方法。
- ステップ(a)は、前記コンピュータによって、前記複数のネットワーク識別子のうちの少なくとも一つをネットワーク識別子ジェネレータから取得するステップをさらに包含する、請求項31に記載の方法。
- ステップ(b)は、前記第一のプログラムのための前記第一のネットワーク識別子を該第一のプログラムの確立中に選択するステップをさらに包含する、請求項31に記載の方法。
- ステップ(b)は、前記第二のプログラムのための前記第二のネットワーク識別子を該第二のプログラムの確立中に選択するステップをさらに包含する、請求項31に記載の方法。
- ステップ(b)は、前記コンピュータによって、第一のユーザーセッションおよび第二のユーザーセッションを同時にホストするステップをさらに包含する、請求項34に記載の方法。
- ステップ(b)は、前記コンピュータによって、第一のユーザーセッションをホストした後で、第二のユーザーセッションをホストするステップをさらに包含する、請求項34に記載の方法。
- ステップ(d)は、前記第一のプログラムの前記第一のネットワーク識別子を、該第一のプログラムの名前解決要求に応答して提供し、前記第二のプログラムの前記第二のネットワーク識別子を、該第二のプログラムの名前解決要求に応答して提供するステップをさらに包含する、請求項31に記載の方法。
- ステップ(a)は、前記複数のネットワーク識別子のうちの少なくとも一つを、前記コンピュータのユーザーに割り当てるステップをさらに包含する、請求項31に記載の方法。
- 前記方法は、第一のTCPスタックをネットワーク通信に使用するステップをさらに包含する、請求項31に記載の方法。
- 前記方法は、ソケットライブラリを使用して、ネットワーク通信インターフェースとインターフェースするステップをさらに包含する、請求項31に記載の方法。
- 前記方法は、WinSockアプリケーション・プログラミング・インターフェースを使用して、ネットワーク通信インターフェースとインターフェースするステップをさらに包含する、請求項31に記載の方法。
- 前記方法は、前記ソケットライブラリを使用するネットワーク通信のために、前記第一のネットワーク識別子を前記第一のプログラムに拘束するステップをさらに包含する、請求項47に記載の方法。
- 前記方法は、前記ソケットライブラリを使用するネットワーク通信のために、前記第二のネットワーク識別子を前記第二のプログラムに拘束するステップをさらに包含する、請求項47に記載の方法。
- 前記方法は、ネットワーク通信のための第二のTCPスタックをさらに包含する、請求項46に記載の方法。
- 前記方法は、ネットワークパケット操作フィルタを使用して、ネットワーク通信インターフェースとインターフェースするステップをさらに包含する、請求項31に記載の方法。
- 固有のループバックアドレスをコンピュータに呼び出される各プログラムに割り当てるための方法であって、
(a)複数のループバックアドレスを取得するステップと、
(b)該複数のループバックアドレスから、コンピュータに呼び出される第一のプログラムのための第一のループバックアドレスと、該コンピュータに呼び出される第二のプログラムのための該第一のループバックアドレスとは異なる第二のループバックアドレスと、を選択するステップと、
(c)該第一のループバックアドレスを該第一のプログラムのローカルホストアドレスとして結び付けるステップと、該第二のループバックアドレスを該第二のプログラムのローカルホストアドレスとして結び付けるステップと、
(d)該第一のループバックアドレスを該第一のプログラムのプロセス間通信で送信するステップと、該第二のループバックアドレスを該第二のプログラムのプロセス間通信で送信するステップと、
を包含する、方法。 - 前記第一のプログラムおよび前記第二のプログラムのうちの一つは、コンピュータによってホストされるユーザーセッションを備える、請求項53に記載の方法。
- 前記第一のプログラムおよび前記第二のプログラムのうちの一つは、アプリケーション隔離環境およびアプリケーションのうちの一つを備える、請求項53に記載の方法。
- ステップ(a)は、動的ホスト構成プロトコルサーバーから、前記複数のループバックアドレスのうちの少なくとも一つを取得するステップをさらに包含する、請求項53に記載の方法。
- ステップ(a)は、前記複数のループバックアドレスのうちの少なくとも一つを格納場所から取得するステップをさらに包含する、請求項53に記載の方法。
- ステップ(a)は、前記複数のループバックアドレスのうちの少なくとも一つをループバックアドレスジェネレータから取得するステップをさらに包含する、請求項53に記載の方法。
- ステップ(b)は、前記第一のプログラムのための前記第一のループバックアドレスを該第一のプログラムの確立中に選択するステップをさらに包含する、請求項53に記載の方法。
- ステップ(b)は、前記第二のプログラムのための前記第二のループバックアドレスを該第二のプログラムの確立中に選択するステップをさらに包含する、請求項53に記載の方法。
- ネットワーク上のコンピュータにアクセスしているユーザーのために、該ユーザーがアクセスしているコンピュータから独立して、一律のネットワークアドレス指定方式を提供するための方法であって、
(a)複数の仮想ホスト名を取得するステップと、
(b)該複数の仮想ホスト名から、第一の仮想ホスト名を該ネットワーク経由で第一のコンピュータにアクセスしている第一のユーザーに割り当てるステップと、該第一の仮想ホスト名とは異なる第二の仮想ホスト名を、該ネットワーク経由で該第一のコンピュータにアクセスしている第二のユーザーに取得するステップと、
(c)該第一のユーザーの該第一の仮想ホスト名を、該第一のコンピュータに関連する該第一のユーザーのインターネットプロトコルアドレスと結び付けるステップと、該第二のユーザーの該第二の仮想ホスト名を、該第一のコンピュータに関連する該第二のユーザーのインターネットプロトコルアドレスと結び付けるステップと、
を包含する、方法。 - ステップ(a)は、前記第一のユーザーおよび前記第二のユーザーの各々に固有のインターネットプロトコルアドレスを割り当てるために、複数のインターネットプロトコルアドレスを取得するステップをさらに包含する、請求項61に記載の方法。
- ステップ(a)は、前記複数のインターネットプロトコルアドレスのうちの少なくとも一つを、動的ホスト構成プロトコルサーバーから取得するステップをさらに包含する、請求項62に記載の方法。
- ステップ(a)は、前記複数のインターネットプロトコルアドレスのうちの少なくとも一つを、前記第一のユーザーおよび前記第二のユーザーのうちの少なくとも一人のために予約するステップをさらに包含する、請求項62に記載の方法。
- ステップ(c)は、少なくとも一つの予約されたインターネットプロトコルアドレスを、前記第一の仮想ホスト名および前記第二の仮想ホスト名のうちの少なくとも一つと結び付けるステップをさらに包含する、請求項64に記載の方法。
- ステップ(b)は、前記複数のインターネットプロトコルアドレスから、第一のインターネットプロトコルアドレスを前記第一のユーザーに、そして該第一のインターネットプロトコルアドレスとは異なる第二のインターネットプロトコルアドレスを前記第二のユーザーに割り当てるステップをさらに包含する、請求項61に記載の方法。
- ステップ(a)は、名前解決サービスで、前記複数の仮想ホスト名のうちの少なくとも一つを、前記第一のユーザーおよび前記第二のユーザーのうちの少なくとも一人に登録するステップをさらに包含する、請求項61に記載の方法。
- 前記名前解決サービスはドメインネームサービスを備える、請求項67に記載の方法。
- 前記名前解決サービスはWindows(登録商標)インターネットネーミングサービスを備える、請求項67に記載の方法。
- ステップ(b)は、前記第一の仮想ホスト名を第二のコンピュータにアクセスしている前記第一のユーザーに割り当てるステップと、該第一の仮想ホスト名を該第一のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付けるステップと、をさらに包含する、請求項61に記載の方法。
- ステップ(b)は、前記第二の仮想ホスト名を第二のコンピュータにアクセスしている前記第二のユーザーに割り当てるステップと、該第二の仮想ホスト名を該第二のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付けるステップと、をさらに包含する、請求項61に記載の方法。
- ステップ(b)は、前記第一のユーザーが前記第一のコンピュータにアクセスする間に、第三の仮想ホスト名を第二のコンピュータにアクセスしている該第一のユーザーに割当てるステップと、該第三の仮想ホスト名を、該第一のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付けるステップと、をさらに包含する、請求項61に記載の方法。
- ステップ(c)は、前記第二のユーザーが前記第一のコンピュータにアクセスする間に、第四の仮想ホスト名を第二のコンピュータにアクセスしている該第二のユーザーに割当てるステップと、該第四の仮想ホスト名を、該第二のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付けるステップと、をさらに包含する、請求項61に記載の方法。
- ステップ(a)は、前記複数の仮想ホスト名のうちの少なくとも一つを、前記ユーザーの前記ネットワーク上のアイデンティティを表す文字の一部を使って命名するステップをさらに包含する、請求項61に記載の方法。
- ステップ(a)は、前記複数の仮想ホスト名のうちの少なくとも一つを、前記ユーザーが前記ネットワーク上の複数のコンピュータに同時にアクセスしている時に、該ユーザーのセッションを特定するサフィックスを使って命名するステップをさらに包含する、請求項61に記載の方法。
- ネットワーク上のコンピュータにアクセスしているユーザーのために、ユーザーがアクセスしているコンピュータから独立して、一律のネットワークアドレス指定方式を提供するためのシステムであって、
ネットワーク上のサーバーであって、複数の仮想ホスト名を提供するサーバーと、
該ネットワーク上の第一のコンピュータであって、該複数の仮想ホスト名から、第一の仮想ホスト名を、該第一のコンピュータの第一のユーザーのために取得し、該第一の仮想ホスト名とは異なる第二の仮想ホスト名を、該第一のコンピュータの第二のユーザーのために取得する、コンピュータと、
該第一のユーザーの該第一の仮想ホスト名を、該第一のコンピュータに関連する該第一のユーザーのインターネットプロトコルアドレスと結び付け、該第二のユーザーの該第二の仮想ホスト名を、該第一のコンピュータに関連する該第二のユーザーのインターネットプロトコルアドレスと結び付ける、該第一のコンピュータのネットワークインターフェースと、
を備える、システム。 - 前記サーバーは、前記第一のユーザーおよび前記第二のユーザーの各々に固有のインターネットプロトコルアドレスを割り当てるために、複数のインターネットプロトコルアドレスを取得する、請求項76に記載のシステム。
- 前記サーバーは、前記複数のインターネットプロトコルアドレスから、第一のインターネットプロトコルアドレスを前記第一のユーザーに、そして該第一のインターネットプロトコルアドレスとは異なる第二のインターネットプロトコルアドレスを前記第二のユーザーに割り当てる、請求項77に記載のシステム。
- 前記サーバーは、前記複数のインターネットプロトコルアドレスのうちの少なくとも一つを、動的ホスト構成プロトコルサーバーから取得する、請求項76に記載のシステム。
- 前記サーバーは、前記複数のインターネットプロトコルアドレスのうちの少なくとも一つを、前記第一のユーザーおよび前記第二のユーザーのうちの少なくとも一人のために予約する、請求項76に記載のシステム。
- 前記ネットワークインターフェースは、少なくとも一つの予約されたインターネットプロトコルアドレスを、前記第一の仮想ホスト名および前記第二の仮想ホスト名のうちの少なくとも一つと結び付ける、請求項80に記載のシステム。
- 前記システムは、前記複数の仮想ホスト名のうちの少なくとも一つを、前記第一のユーザーおよび前記第二のユーザーのうちの少なくとも一人に登録する名前解決サービスをさらに備える、請求項76に記載のシステム。
- 前記名前解決サービスはドメインネームサービスを備える、請求項82に記載のシステム。
- 前記名前解決サービスはWindows(登録商標)インターネットネーミングサービスを備える、請求項82に記載のシステム。
- 前記ネットワークインターフェースは、前記第一の仮想ホスト名を第二のコンピュータにアクセスしている前記第一のユーザーに割り当て、該第一の仮想ホスト名を該第一のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付ける、請求項76に記載のシステム。
- 前記ネットワークインターフェースは、前記第二の仮想ホスト名を第二のコンピュータにアクセスしている前記第二のユーザーに割り当て、該第二の仮想ホスト名を該第二のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付ける、請求項76に記載のシステム。
- 第二のコンピュータのネットワークインターフェースは、前記第一のユーザーが前記第一のコンピュータにアクセスする間に、第三の仮想ホスト名を該第二のコンピュータにアクセスしている該第一のユーザーに割り当て、該第三の仮想ホスト名を該第一のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付ける、請求項76に記載のシステム。
- 第二のコンピュータのネットワークインターフェースは、前記第二のユーザーが前記第一のコンピュータにアクセスする間に、第四の仮想ホスト名を該第二のコンピュータにアクセスしている該第二のユーザーに割り当て、該第四の仮想ホスト名を該第二のユーザーに関連する該第二のコンピュータのインターネットプロトコルアドレスに結び付ける、請求項76に記載のシステム。
- 前記複数の仮想ホスト名のうちの少なくとも一つの名前は、前記ユーザーの前記ネットワーク上のアイデンティティを表す文字の一部を備える、請求項76に記載のシステム。
- 前記複数の仮想ホスト名のうちの少なくとも一つの名前は、前記ユーザーが前記ネットワーク上の複数のコンピュータに同時にアクセスしている時に、該ユーザーのセッションを特定するサフィックスを備える、請求項76に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/711,583 US7984192B2 (en) | 2004-09-27 | 2004-09-27 | System and method for assigning unique identifiers to each remote display protocol session established via an intermediary device |
US10/711,591 US7756984B2 (en) | 2004-09-27 | 2004-09-27 | Systems and methods for virtual host name roaming |
PCT/US2005/034507 WO2006036923A1 (en) | 2004-09-27 | 2005-09-27 | Systems and method for virtual host name roaming and managing virtual ip addresses |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008515293A true JP2008515293A (ja) | 2008-05-08 |
Family
ID=35482180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007533728A Withdrawn JP2008515293A (ja) | 2004-09-27 | 2005-09-27 | 仮想ホスト名ローミングおよび仮想ipアドレスを管理するためのシステムと方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7756984B2 (ja) |
EP (1) | EP1794991B1 (ja) |
JP (1) | JP2008515293A (ja) |
KR (1) | KR20070065892A (ja) |
AU (1) | AU2005289595A1 (ja) |
CA (1) | CA2581688A1 (ja) |
IL (1) | IL182178A0 (ja) |
WO (1) | WO2006036923A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008005481A (ja) * | 2006-06-20 | 2008-01-10 | Lenovo Singapore Pte Ltd | ネットワークアドレスを維持する方法、装置、およびプログラム |
JP2009049508A (ja) * | 2007-08-14 | 2009-03-05 | Nec Corp | 通信装置およびプログラム、並びに、ネットワーク選択方法 |
JP2011091761A (ja) * | 2009-10-26 | 2011-05-06 | Keio Gijuku | ネットワークシステム |
JP2017021843A (ja) * | 2012-04-10 | 2017-01-26 | スポティファイ アーベー | ウェブページを通してローカルアプリケーションを制御するシステム及び方法 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7117239B1 (en) | 2000-07-28 | 2006-10-03 | Axeda Corporation | Reporting the state of an apparatus to a remote computer |
US8108543B2 (en) | 2000-09-22 | 2012-01-31 | Axeda Corporation | Retrieving data from a server |
US7185014B1 (en) | 2000-09-22 | 2007-02-27 | Axeda Corporation | Retrieving data from a server |
US7254601B2 (en) | 2001-12-20 | 2007-08-07 | Questra Corporation | Method and apparatus for managing intelligent assets in a distributed environment |
US7178149B2 (en) | 2002-04-17 | 2007-02-13 | Axeda Corporation | XML scripting of soap commands |
US7966418B2 (en) | 2003-02-21 | 2011-06-21 | Axeda Corporation | Establishing a virtual tunnel between two computer programs |
JP4583152B2 (ja) * | 2004-12-10 | 2010-11-17 | 富士通株式会社 | サービス処理方法及びプログラム |
US20070082738A1 (en) * | 2005-10-06 | 2007-04-12 | Game Driven Corporation | Self-organizing turn base games and social activities on a computer network |
JP4038221B2 (ja) * | 2005-12-08 | 2008-01-23 | フリービット株式会社 | 中継装置及びクライアント機器とサーバとの接続方法 |
WO2008011253A2 (en) * | 2006-07-17 | 2008-01-24 | Bigfoot Networks, Inc. | Host posing network device and method thereof |
US8370479B2 (en) | 2006-10-03 | 2013-02-05 | Axeda Acquisition Corporation | System and method for dynamically grouping devices based on present device conditions |
US8065397B2 (en) | 2006-12-26 | 2011-11-22 | Axeda Acquisition Corporation | Managing configurations of distributed devices |
US8494520B2 (en) * | 2007-07-20 | 2013-07-23 | Bridgewater Systems Corp. | Systems and methods for providing centralized subscriber session state information |
WO2009019925A1 (ja) * | 2007-08-09 | 2009-02-12 | Nippon Telegraph And Telephone Corporation | 通信方法、中継サーバ装置、プログラム及び記録媒体 |
US8561037B2 (en) * | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
JP4930856B2 (ja) * | 2008-03-04 | 2012-05-16 | 九州日本電気ソフトウェア株式会社 | 通信システム、ゲートウェイ装置、クライアント装置、コンピュータ名変換方法およびプログラム |
US9237175B2 (en) * | 2008-12-22 | 2016-01-12 | Microsoft Technology Licensing, Llc | Internet protocol (IP) address virtualization for terminal server sessions |
US9054913B1 (en) | 2009-11-30 | 2015-06-09 | Dell Software Inc. | Network protocol proxy |
US9077745B1 (en) * | 2010-08-04 | 2015-07-07 | Saint Corporation | Method of resolving port binding conflicts, and system and method of remote vulnerability assessment |
US9104514B2 (en) * | 2011-01-11 | 2015-08-11 | International Business Machines Corporation | Automated deployment of applications with tenant-isolation requirements |
TW201239649A (en) * | 2011-03-28 | 2012-10-01 | Hon Hai Prec Ind Co Ltd | System and method for sorting files |
US8976807B2 (en) * | 2011-06-07 | 2015-03-10 | Cisco Technology, Inc. | Dynamically determining hostnames of network devices |
US8763018B2 (en) * | 2011-08-22 | 2014-06-24 | Solarflare Communications, Inc. | Modifying application behaviour |
US9331975B2 (en) | 2011-12-16 | 2016-05-03 | The Nielsen Company (Us), Llc | Systems, methods, and apparatus to identify media presentation devices |
US8886775B2 (en) | 2012-03-08 | 2014-11-11 | Cisco Technology, Inc. | Dynamic learning by a server in a network environment |
US8700657B2 (en) | 2012-05-16 | 2014-04-15 | The Nielsen Company (Us), Llc | Systems, methods, and apparatus to monitor media presentations |
US9137270B2 (en) * | 2012-12-03 | 2015-09-15 | International Business Machines Corporation | Binding multiple addresses to a socket in a network system |
US9811365B2 (en) * | 2014-05-09 | 2017-11-07 | Amazon Technologies, Inc. | Migration of applications between an enterprise-based network and a multi-tenant network |
US9882868B1 (en) | 2017-01-26 | 2018-01-30 | Red Hat, Inc. | Domain name system network traffic management |
CN108023953B (zh) * | 2017-12-04 | 2021-07-09 | 北京星选科技有限公司 | Ftp服务的高可用实现方法和装置 |
WO2021188026A1 (en) * | 2020-03-20 | 2021-09-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods, host devices and computer program products for assigning communication ports |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5734865A (en) * | 1995-06-07 | 1998-03-31 | Bull Hn Information Systems Inc. | Virtual local area network well-known port routing mechanism for mult--emulators in an open system environment |
US5878212A (en) * | 1995-07-31 | 1999-03-02 | At&T Corp. | System for updating mapping or virtual host names to layer-3 address when multimedia server changes its usage state to busy or not busy |
JP3554134B2 (ja) * | 1997-04-22 | 2004-08-18 | 株式会社日立製作所 | ネットワーク接続経路探索方法、計算機、ネットワークシステム及び記憶媒体。 |
US6115545A (en) * | 1997-07-09 | 2000-09-05 | Hewlett-Packard Company | Automatic internet protocol (IP) address allocation and assignment |
JP4676060B2 (ja) * | 1997-11-14 | 2011-04-27 | マイクロソフト コーポレーション | 多数のクライアント−サーバ・セッションおよび以前のセッションへのユーザのダイナミック再接続をサポートするサーバ・オペレーティング・システム |
US6856676B1 (en) * | 1998-10-15 | 2005-02-15 | Alcatel | System and method of controlling and managing voice and data services in a telecommunications network |
US6195689B1 (en) * | 1999-05-05 | 2001-02-27 | Mediaone Group, Inc. | Headend provisioning agent |
AU7864700A (en) * | 1999-10-05 | 2001-05-10 | Ejasent Inc. | Ip virtualization |
US7210147B1 (en) * | 1999-10-05 | 2007-04-24 | Veritas Operating Corporation | IP virtualization |
US6976258B1 (en) * | 1999-11-30 | 2005-12-13 | Ensim Corporation | Providing quality of service guarantees to virtual hosts |
WO2001071977A2 (en) * | 2000-03-17 | 2001-09-27 | America Online, Inc. | Home-networking |
US20030158960A1 (en) * | 2000-05-22 | 2003-08-21 | Engberg Stephan J. | System and method for establishing a privacy communication path |
US6728767B1 (en) * | 2000-08-18 | 2004-04-27 | Cisco Technology, Inc. | Remote identification of client and DNS proxy IP addresses |
US6725303B1 (en) * | 2000-08-31 | 2004-04-20 | At&T Corp. | Method and apparatus for establishing a personalized connection with a network |
US7003574B1 (en) * | 2000-11-01 | 2006-02-21 | Microsoft Corporation | Session load balancing and use of VIP as source address for inter-cluster traffic through the use of a session identifier |
US6959341B1 (en) * | 2000-12-20 | 2005-10-25 | Cisco Technology, Inc. | Dynamic network allocation for mobile router |
US7827278B2 (en) * | 2001-07-23 | 2010-11-02 | At&T Intellectual Property Ii, L.P. | System for automated connection to virtual private networks related applications |
US7363376B2 (en) * | 2001-07-31 | 2008-04-22 | Arraycomm Llc | Method and apparatus for generating an identifier to facilitate delivery of enhanced data services in a mobile computing environment |
US6880002B2 (en) * | 2001-09-05 | 2005-04-12 | Surgient, Inc. | Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources |
US7080404B2 (en) * | 2002-04-01 | 2006-07-18 | Microsoft Corporation | Automatic re-authentication |
US20030208602A1 (en) * | 2002-04-08 | 2003-11-06 | Cisco Technology, Inc. | System and method for pushing data in an internet protocol network environment |
US6801528B2 (en) * | 2002-07-03 | 2004-10-05 | Ericsson Inc. | System and method for dynamic simultaneous connection to multiple service providers |
KR100475186B1 (ko) * | 2002-12-02 | 2005-03-10 | 삼성전자주식회사 | 접속 설정 프로토콜을 이용한 단말 장치의 등록 방법 |
JP3965160B2 (ja) * | 2003-01-21 | 2007-08-29 | 三星電子株式会社 | 相異なる私設網に位置したネットワーク装置間の通信を支援するネットワーク接続装置 |
US7356818B2 (en) * | 2003-06-24 | 2008-04-08 | International Business Machines Corporation | Virtual machine communicating to external device without going through other virtual machines by using a list of IP addresses managed only by a single virtual machine monitor |
US7769004B2 (en) * | 2003-09-26 | 2010-08-03 | Surgient, Inc. | Network abstraction and isolation layer for masquerading machine identity of a computer |
US10375023B2 (en) * | 2004-02-20 | 2019-08-06 | Nokia Technologies Oy | System, method and computer program product for accessing at least one virtual private network |
US7515589B2 (en) * | 2004-08-27 | 2009-04-07 | International Business Machines Corporation | Method and apparatus for providing network virtualization |
-
2004
- 2004-09-27 US US10/711,591 patent/US7756984B2/en active Active
-
2005
- 2005-09-27 JP JP2007533728A patent/JP2008515293A/ja not_active Withdrawn
- 2005-09-27 CA CA002581688A patent/CA2581688A1/en not_active Abandoned
- 2005-09-27 EP EP05803730.0A patent/EP1794991B1/en active Active
- 2005-09-27 KR KR1020077009361A patent/KR20070065892A/ko not_active Application Discontinuation
- 2005-09-27 AU AU2005289595A patent/AU2005289595A1/en not_active Abandoned
- 2005-09-27 WO PCT/US2005/034507 patent/WO2006036923A1/en active Application Filing
-
2007
- 2007-03-26 IL IL182178A patent/IL182178A0/en unknown
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008005481A (ja) * | 2006-06-20 | 2008-01-10 | Lenovo Singapore Pte Ltd | ネットワークアドレスを維持する方法、装置、およびプログラム |
JP4523619B2 (ja) * | 2006-06-20 | 2010-08-11 | レノボ・シンガポール・プライベート・リミテッド | ネットワークアドレスを維持する方法、装置、およびプログラム |
US8327008B2 (en) | 2006-06-20 | 2012-12-04 | Lenovo (Singapore) Pte. Ltd. | Methods and apparatus for maintaining network addresses |
JP2009049508A (ja) * | 2007-08-14 | 2009-03-05 | Nec Corp | 通信装置およびプログラム、並びに、ネットワーク選択方法 |
JP2011091761A (ja) * | 2009-10-26 | 2011-05-06 | Keio Gijuku | ネットワークシステム |
JP2017021843A (ja) * | 2012-04-10 | 2017-01-26 | スポティファイ アーベー | ウェブページを通してローカルアプリケーションを制御するシステム及び方法 |
US9935944B2 (en) | 2012-04-10 | 2018-04-03 | Spotify Ab | Systems and methods for controlling a local application through a web page |
US10397219B2 (en) | 2012-04-10 | 2019-08-27 | Spotify Ab | Systems and methods for controlling a local application through a web page |
US10999271B2 (en) | 2012-04-10 | 2021-05-04 | Spotify Ab | Systems and methods for controlling a local application through a web page |
US11775355B2 (en) | 2012-04-10 | 2023-10-03 | Spotify Ab | Systems and methods for controlling a local application through a web page |
Also Published As
Publication number | Publication date |
---|---|
IL182178A0 (en) | 2007-07-24 |
CA2581688A1 (en) | 2006-04-06 |
EP1794991B1 (en) | 2020-07-01 |
EP1794991A4 (en) | 2014-11-05 |
EP1794991A1 (en) | 2007-06-13 |
AU2005289595A1 (en) | 2006-04-06 |
WO2006036923A1 (en) | 2006-04-06 |
KR20070065892A (ko) | 2007-06-25 |
US20060075080A1 (en) | 2006-04-06 |
US7756984B2 (en) | 2010-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008515293A (ja) | 仮想ホスト名ローミングおよび仮想ipアドレスを管理するためのシステムと方法 | |
US7984192B2 (en) | System and method for assigning unique identifiers to each remote display protocol session established via an intermediary device | |
JP7060636B2 (ja) | 仮想ネットワークインタフェースオブジェクト | |
JP5711754B2 (ja) | スマートクライアントルーティング | |
US7720906B2 (en) | Web service for remote application discovery | |
JP5301571B2 (ja) | インターネットに接続されているクライアント間に接続性を提供するための方法およびシステム | |
US7475125B2 (en) | Seamless discovery of workstation-installed remote applications from an extranet | |
US20160323286A1 (en) | Secure access to remote resources over a network | |
US8424026B1 (en) | Execution of applications distributed across a plurality of computing devices | |
US8370510B2 (en) | Remote application presentation over a public network connection | |
US20070174454A1 (en) | Method and apparatus for accessing Web services and URL resources for both primary and shared users over a reverse tunnel mechanism | |
US7590713B2 (en) | Presenting a merged view of remote application shortcuts from multiple providers | |
JP5325268B2 (ja) | アクセスするクライアントのサーバー側プロトコル構成 | |
JP2007215201A (ja) | パケットをゲートウェイからエンドポイントへとルーティングするための方法およびシステム | |
JP2008181427A (ja) | シングルサインオンシステム、情報端末装置、シングルサインオンサーバ、プログラム | |
US20160099913A1 (en) | Internet Protocol (IP) Address Virtualization for Terminal Server Sessions | |
KR20110036573A (ko) | 서버 애플리케이션 프로그램으로 ip 네트워크를 통한 엑세스를 제공하는 방법 | |
US20110154319A1 (en) | IPv4/IPv6 Bridge | |
US8930935B2 (en) | Composite service refactoring | |
US7716682B2 (en) | Multimodal or multi-device configuration | |
Lee et al. | Impromptu Service Discovery and Delivery in Mobile Environments. | |
Lim et al. | A Simple Service Discovery and Delivery Protocol for Ubiquitous Environments | |
KR20160057178A (ko) | Rmi 통신 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20081202 |