BRIEF DESCRIPTION OF THE DRAWINGS
These and other aspects of this invention will be readily apparent from the detailed description below and the appended drawings, which are meant to illustrate and not to limit the invention, and in which:
FIG. 1 is a block diagram of one embodiment of an environment in which a client machine accesses a computing resource provided by a remote machine;
FIGS. 1A and 1B are block diagrams depicting embodiments of typical computers useful in embodiments with remote machines or client machines;
FIG. 2A is a block diagram of a system for providing access to a resource;
FIG. 2B is a block diagram of one embodiment of a system in which a client machine can initiate execution of an application program for determining the resource neighborhood of that client machine;
FIG. 2C is a block diagram of an embodiment in which a client machine uses a web browser application to determine its resource neighborhood;
FIGS. 3A, 3B, and 3C are block diagrams of embodiments of systems of communication among a client machine and multiple remote machines;
FIG. 3D is a block diagram of one embodiment of a system in which a client machine can access a resource from a resource neighborhood web page displayed at that client machine;
FIG. 3E is a block diagram of one embodiment of a system in which a remote machine acts as an intermediary for a machine farm;
FIG. 4 is a block diagram of one embodiment of a resource neighborhood application in which a client machine is in communication with one of the remote machines;
FIG. 5 is a block diagram of a computing embodiment in which a client machine is in communication with a remote machine having an installed resource neighborhood application program of the invention;
FIG. 6A is a screen shot of an embodiment of a display of a client machine after a resource neighborhood application program is executed;
FIG. 6B is a screen shot of another embodiment of a display screen of a client machine after the resource neighborhood application program is executed;
FIG. 7A is a block diagram of an embodiment of a network providing policy-based access to application programs for a machine;
FIG. 7B is a block diagram depicting a more detailed embodiment of a policy engine;
FIG. 8 is a flowchart depicting one embodiment of a process for providing access to a resource;
FIG. 9 is a flow diagram depicting one embodiment of a process for electing a management node;
FIG. 10 is a flow diagram depicting one embodiment of a process to update information collected by the management node;
FIG. 11 is a block diagram depicting an embodiment of a machine farm including first and second network management processes;
FIG. 12 is a block diagram depicting one embodiment of a virtual machine management component;
FIG. 13 is a block diagram depicting one embodiment of a session management component;
FIG. 14 is a block diagram depicting one embodiment of a system in which a drive associated with the client machine 10 is made available to a computing environment;
FIG. 15A is a block diagram depicting one embodiment of a client machine supporting multiple client machine display devices;
FIG. 15B is a block diagram depicting one embodiment of a system for supporting multiple client machine display devices
FIG. 15C is a block diagram depicting one embodiment of a session login mechanism providing support for multiple client machine display devices;
FIG. 16A is a flow diagram depicting one embodiment of the steps to be taken to provide a desired display layout to a client machine having multiple display devices;
FIG. 16B is a flow diagram depicting one embodiment of a process to modify a window message;
FIG. 16C is a flow diagram depicting one embodiment of the steps taken to associate a display layout with a client machine;
FIG. 16D is a flow diagram depicting one embodiment of the steps taken to change a desired display layout for a client machine;
FIG. 17 is a block diagram depicting one embodiment of a system in which a remote machine authenticates the user of a client machine;
FIG. 18 is a flow diagram depicting one embodiment of the steps taken to access a plurality of files comprising an application program;
FIG. 19 is a block diagram depicting one embodiment of a client machine 10 including an application streaming client, a streaming service and an isolation environment;
FIG. 20 is a flow diagram depicting one embodiment of steps taken by a client machine to execute an application;
FIG. 21 is a block diagram depicts one embodiment of a plurality of application files;
FIG. 22A is a flow diagram depicting one embodiment of the steps taken to enable transparent distributed program execution on a remote machine through the selection of graphical indicia representative of a data file located on the client machine;
FIG. 22B is a flow diagram depicting one embodiment of the steps taken by a remote machine to enable transparent distributed program execution on a remote machine through the selection of graphical indicia representative of a data file located on the client machine;
FIG. 23 is a flow diagram depicting another embodiment of the steps taken to enable transparent distributed program execution on a client machine through the selection of graphical indicia representative of a data file located on a remote machine;
FIG. 24 is a flow diagram depicting one embodiment of the steps taken to negotiate the protocol for a connection between a client machine and a remote machine;
FIG. 25 is a block diagram depicting an embodiment of a remote machine and a client machine establishing a protocol stack for communication;
FIG. 26 is a block diagram depicting one embodiment of a client machine architecture;
FIG. 27 is a block diagram depicting one embodiment of communication between a client machine and a machine farm;
FIG. 28 is a block diagram depicting one embodiment of a client machine architecture;
FIG. 29 is a flow diagram depicting one embodiment of the steps taken to display application output in a web page;
FIG. 30 is a flow diagram depicting one embodiment of the steps taken link to a virtual machine identified by a hyperlink configuration file;
FIG. 31 is a block diagram depicting an embodiment of a system architecture in which a multiplexer is used to transmit data to more than one client machine;
FIG. 32 is a block diagram depicting another embodiment of a system architecture in which a multiplexer is used to transmit data to more than one client machine;
FIG. 33 is a block diagram depicting one embodiment of an architecture for displaying application output in a web page;
FIG. 34 is a block diagram depicting another embodiment of an architecture for displaying application output in a web page;
FIG. 35 is a block diagram depicting another embodiment of an architecture for displaying application output in a web page;
FIG. 36 is a block diagram depicting another embodiment of an architecture for displaying application output in a web page;
FIG. 37 is a block diagram depicting one embodiment of a client machine receiving window attribute data via a virtual channel;
FIG. 38 is a block diagram depicting a client machine connected to more than one remote machine;
FIG. 39 is a flow diagram depicting one embodiment of the steps taken to detect and transmit server-initiated display changes;
FIG. 40 is a flow diagram depicting one embodiment of the steps taken to detect and transmit client-initiated display changes;
FIG. 41 is a flow diagram depicting one embodiment for enabling transmission of seamless windows between a client machine and a remote machine;
FIG. 42 is a block diagram depicting one embodiment of an agent;
FIG. 43 is a block diagram depicting one embodiment of a system for enabling seamless windowing mode between a client machine and remote computing environments;
FIG. 44 is a flow diagram depicting one embodiment of the steps taken in a method of receiving window attribute data and graphical data associated with remote windows from virtualized operating systems and from native operating systems;
FIG. 45 is a block diagram of a system for providing a client with a reliable connection to a host service according to an embodiment of the invention;
FIG. 46 is a block diagram of a system for providing a client with a reliable connection to a host service according to another embodiment of the invention;
FIG. 47 depicts communications occurring over a network according to an embodiment of the invention;
FIG. 48 depicts communications occurring over a network according to another embodiment of the invention;
FIG. 49 depicts a process for encapsulating a plurality of secondary protocols within a first protocol for communication over a network according to an embodiment of the invention;
FIG. 50 is a block diagram of an embodiment of a computer system to maintain authentication credentials in accordance with the invention;
FIG. 51 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 5 to maintain authentication credentials during a first communication session in accordance with the invention;
FIG. 52 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 50 to maintain authentication credentials during a second communication session following the termination of the first communication session of FIG. 53A in accordance with the invention;
FIG. 53 is a block diagram of an embodiment of a computer system to maintain authentication credentials in accordance with another embodiment of the invention;
FIG. 54 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 53 to maintain authentication credentials during a first communication session in accordance with the invention;
FIG. 55 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 53 to maintain authentication credentials during a second communication session following the termination of the first communication session of FIG. 53 in accordance with the invention;
FIG. 56 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 53 to maintain authentication credentials during a second communication session following the termination of a second communication channel of the first communication session of FIG. 53 in accordance with the invention;
FIG. 57 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to an embodiment of the invention;
FIG. 58 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to another embodiment of the invention;
FIG. 59 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to another embodiment of the invention;
FIG. 60 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to another embodiment of the invention;
FIG. 61 is a block diagram of a system for providing a client with a reliable connection to a host service and further including components for reconnecting the client to a host service according to an embodiment of the invention;
FIG. 62 is a block diagram of an embodiment of a system for providing a client with a reliable connection to a host service and further including components for reconnecting the client to a host service;
FIG. 63 is a block diagram of an embodiment of FIG. 61 further including components for initially connecting the client to a host service;
FIG. 64 is a block diagram of the system of FIG. 62 further including components for initially connecting the client to a host service and to maintain authentication credential according to an embodiment of the invention;
FIG. 65 is a flow diagram of a method for network communications according to an embodiment of the invention;
FIG. 66 is a flow diagram of a method for reconnecting the client to the host services;
FIGS. 67-69 are flow diagrams of a method for connecting a client to a plurality of host services according to an embodiment of the invention;
FIG. 70 is a flow diagram of a method for providing a client with a reliable connection to host services and for reconnecting the client to the host services according to an embodiment of the invention;
FIGS. 71-72 are flow diagrams of a method for reconnecting a client to host services according to an embodiment of the invention;
FIG. 73 is a conceptual block diagram of an embodiment of client software and server software;
FIG. 74 is a flow chart of an embodiment of a method for monitoring network performance;
FIG. 75 is a flow chart of an embodiment of a method of operation of the server software;
FIG. 76 is a flow chart of an embodiment of a method of generating sub-metrics by the client;
FIG. 77 is a flow chart of an embodiment of a method of generating sub-metrics by the client;
FIG. 78 is a flow chart of an embodiment of a method of generating sub-metrics by the server;
FIG. 79 is a schematic diagram depicting a networked client-server computing system;
FIG. 80 is a flow chart depicting a method for connecting a client machine to disconnected application sessions;
FIG. 81 is a flow chart depicting on embodiment a method for connecting the client machine to active application sessions;
FIG. 82 is a schematic diagram depicting one embodiment of a client machine in communication with several remote machines;
FIG. 83 is a flow diagram depicting one embodiment of steps taken in a method to connect a user of a client machine to a computing environment;
FIG. 84 is a flow diagram depicting an embodiment of steps taken in a method to connect a user of a client machine to a computing environment in response to selection of a graphical user interface element;
FIG. 85 is a block diagram depicting one embodiment of a remote machine able to connect the client machine to an application session;
FIG. 86 is a block diagram of an embodiment of a system for connecting a client machine to an application session responsive to application of a policy;
FIG. 87 is a flow diagram depicting the steps taken in one method to connect a client machine to an application session responsive to application of a policy;
FIG. 88 is a block diagram depicting one embodiment of a system for providing, by a virtual machine, access to a computing environment;
FIG. 89A is a block diagram depicting one embodiment of a storage device and a computing device;
FIG. 89B is a flow diagram depicting one embodiment of the steps taken in a method for providing access to a computing environment on a computing device via a storage device;
FIG. 90A is a block diagram depicting one embodiment of a mobile computing device;
FIG. 90B is a flow diagram depicting one embodiment of the steps taken in a method for providing a portable computing environment by a mobile computing device;
FIG. 91A is a block diagram of one embodiment of a mobile computing device and a computing device;
FIG. 91B is a flow diagram depicting depicts one embodiment of the steps taken in a method for providing access to a computing environment on a computing device via a mobile computing device;
FIG. 92A is a block diagram depicting one embodiment of a mobile computing device and a computing device comprising a computing environment selector;
FIG. 92B is a flow diagram depicting an embodiment of the steps taken in a method for establishing a computing environment on a computing device via a mobile computing device;
FIG. 93A is a block diagram depicting one embodiment of a mobile computing device connecting to a docking station;
FIG. 93B is a block diagram depicting one embodiment of a docking station connecting a mobile computing device and a computing device;
FIG. 93C is a block diagram depicting one embodiment of a mobile computing device and computing device having a docking mechanism;
FIG. 93D is a flow diagram depicting one embodiment of the steps taken in a method of providing to a mobile computing device one or more hardware resources;
FIG. 94A is a block diagram depicting one embodiment of a mobile computing device having a plurality of processors;
FIG. 94B is a flow diagram depicting one embodiment of the steps taken in a method for switching, by a mobile computing device, between use of multiple processors;
FIG. 95 is a block diagram depicting one embodiment of a system for providing to a first client agent, via a second client agent on a first remote machine, output data generated by a resource executing in a virtual machine provided by a second remote machine;
FIG. 96 is a block diagram depicting an embodiment of a system for providing to a first client agent, via a second client agent on a first remote machine, output data generated by a resource executing in a virtual machine provided by a second remote machine; and
FIG. 97 is a block diagram depicting one embodiment of a system for identifying, by a coordinator machine, a worker machine providing, via a virtual machine, access to a computing environment.