This invention relates to a method and system for connecting computing devices when one computing device is behind a firewall and in particular this invention relates to establishing a connection between a VNC server machine and a VNC client machine through a VNC proxy program executing on a web-based VNC server machine.
Virtual Network Computing (VNC) is a technology for remote desktop sharing. VNC technology enables the desktop display of one computer to be remotely viewed and controlled over a network connection by another computer. VNC technology is useful because it allows a user in one part of an office building or house to access their desktops from another location in that same structure. A user can even access the desk top of a machine while traveling. VNC technology is also useful for network administrators in business environments.
In network computing, the objective of a network computer (NC) is to give users access to centralized resources from simple and inexpensive devices. These network computing devices act as clients to more powerful server machines that are connected to the network. The server devices provide applications, data, and storage for a user's preferences and personal customizations.
Referring to Virtual Network Computing technology, the underlying VNC system has a protocol that facilitates remote access to graphical user interfaces. This protocol works at the frame buffer level. This protocol applies to all operating systems, windowing systems, and applications and to any device with some form of communications link. The protocol operates over any reliable transport configuration such as TCP/IP. The endpoint with which the user interacts (that is, the display and/or input devices) is called the VNC client or viewer. The endpoint where changes to the frame buffering-originate (that is, the windowing system and applications) is known as the VNC server (see
Virtual Network Computing provides several distinctions from other computing systems. First, in a VNC system no state information is stored at the viewer (the client). This means a person can leave his/her desk, go to another machine, whether next door or several hundred miles away, reconnect to their desktop from the new machine and finish a sentence they were originally typing on the initial machine. In this case, even the cursor will be in the same place. The VNC is small and is simple technology to implement. The Win32 viewer software module, for example, is about 150K in size and can be run directly from an external storage means such as a floppy disk or flash drive. There is no need to install the software on a computing device. The next difference is that the VNC software is a truly platform-independent. A desktop running on a Linux machine may be displayed on a PC, a Solaris machine or any number of other architectures. The simplicity of the protocol makes it easy to port to new platforms. For example, a Java viewer will run in any Java-capable browser. The VNC technology is sharable. One desktop can be displayed and used by several viewers at once, allowing CSCW-style applications.
One popular application of the VNC technology is its implementation in peer-to-peer networks. A peer-to-peer (P2P) network is a type of decentralized and distributed network architecture in which individual nodes in the network (called “peers”) act as both suppliers and consumers of resources, in contrast to the centralized client-server model where client nodes request access to resources provided by central servers. In a peer-to-peer network, tasks (such as searching for files or streaming audio/video) are shared between multiple interconnected peers who each make a portion of their resources (such as processing power, disk storage or network bandwidth) directly available to other network participants, without the need for centralized coordination by servers.
One issue that occurs regarding VNC technology is the use of the VNC technology behind a firewall. If a VNC server is setup behind a firewall, the TCP/IP port needed for the connection must be opened in the firewall configuration. If a peer to peer application uses VNC/RFB for sharing machine resources, then this required firewall configuration can be a limitation for enabling easy setup of the software. There remains a need for a VNC configuration that can establish peer-to-peer connections that overcome the limitations of a firewall when at least one peer machine is behind the firewall.
The present invention describes a system and method for establishing peer-to-peer connections across a firewall. This system configuration comprises at least one VNC server residing on a computing machine, a VNC client residing on at least one second computing machine and a VNC proxy server residing in a web-server on a communication network that can function as both the VNC server machine and VNC client machine. The location of the VNC proxy server in the web server overcomes firewall limitations of a VNC server in a peer machine that is behind a firewall. The present invention also reverses the conventional functions of the VNC server and VNC client during a VNC connection. In this configuration of the present invention, the proxy VNC server establishes a connection with a VNC peer machine that is initiating a share request and performs the control functions typically performed by the VNC peer client. Also in the configuration of the present invention, a VNC peer client performs the listening function.
In the method of the present invention, each VNC peer machine has a web page from the VNC proxy that each VNC peer machine uses to initiate a share request. The information on the individual VNC peer machine web pages gives the VNC proxy server information about each peer machine in the system. The VNC peer share request is initiated by a VNC peer machine and with the web-server and VNC proxy server. Once a connection is established between a VNC peer machine and the VNC proxy server, each peer machine is notified of the share request. Each peer machine has the capability to be in a listening mode for any such notification. When a VNC client machine indicates a desire to connect and share, the VNC proxy detects a client request to connect and VNC protocols are initiated. The client machine can send mouse and keyboard information from to the VNC proxy server. The VNC proxy server returns frame buffer information to the client machines. Client machine uses this frame buffer information to display a view of the user interface shown on the peer sharing machine.
The present invention describes a system and method for establishing peer-to-peer connections across a firewall. In a conventional configuration, if a virtual network configuration (VNC) server is setup behind a firewall the TCP/IP port [Transmission Control Protocol (TCP) and Internet Protocol (IP)] needed for the connection must be opened in the firewall configuration. If a peer-to-peer application uses the VNC/RFB for sharing machine resources then the required firewall configuration can be a limitation for enabling easy setup of the software.
Referring to
In the present invention, instead of the VNC server itself performing the TCP/IP socket “accept” as shown in step 204, a service running within a VNC proxy listens for incoming VNC connection requests. In many network configurations, the VNC server may be behind a firewall, which could limit a machine's ability to connect to the listening VNC server. In the present invention, the VNC proxy resides in the Web server which is not behind a firewall.
When a peer-to-peer application needs to start sharing its screen it starts a VNC server that will open a TCP/IP socket and connect to the VNC proxy. After this connection, the RFB protocol is followed as normal.
Referring to
Once the VNC connection becomes active, step 512 informs other peer machines that a share process has been started at peer machine 414. Step 514 then initiates VNC client software modules on browsers in the other peer machines. These peer machines that share with peer machine 414 will function as client machines.
Step 516 connects the VNC client machines that want to share to the VNC proxy. This step illustrates the distinction between the process of the present invention and the conventional VNC server connection. In the conventional machine to machine system, the VNC server in the machine initiating the share would be listening for clients that wanted to connect. As mentioned, if the VNC server was behind a firewall, the firewall could interfere with a VNC server to VNC client connection. In the system of the present invention, the VNC proxy residing on the web-server is doing the listening for VNC clients that want to connect to the sharing peer. This listening occurs outside the firewall of the peer machines initiating the share request.
The client connection to the VNC proxy can be similar to a conventional peer-to-peer connection as described in
Once the client machines are connected to the peer sharing machine 414 via the VNC proxy server in the web-server 412, the peer-to-peer sharing function begins in step 518. In this sharing function, VNC network traffic is directed to and from the VNC server running in the share initiator (the peer sharing machine 414). The traffic flows through the VNC proxy as part of the flow of traffic between the sheering peer machine 414 and the connected client machines. The connect client machines could be one machine 422 or all client machines in the network.
When the sharing session is complete, the process to terminate the VNC connections begins. First, step 520 disconnects the VNC client. Step 522 then terminates the server process between the sharing peer machine 414 and the VNC proxy on the web-server. Step 524 stops the VNC proxy listener. At this point, step 526 sends all functions of the system to inactive states.
It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those skilled in the art will appreciate that the processes of the present invention are capable of being distributed in the form of instructions in a computer readable storage medium and a variety of other forms, regardless of the particular type of medium used to carry out the distribution. Examples of computer readable storage media include media such as EPROM, ROM, tape, paper, floppy disc, hard disk drive, RAM, and CD-ROMs.