< Back to index

The NX technology is developed by the Italian software company [http://www.nomachine.com/ NoMachine]. NX makes remote X11 fast enough to enable users to access remote Linux and Unix desktop sessions even over a low bandwidth and high latency data link such as provided by a modem. If set up as a proxy, NX also tunnels Remote Desktop Protocol (for Windows Terminal Server sessions) and remote VNC sessions (all types of OS platforms) and lets them benefit from some of the same speed improvements. To do this, NX uses highly optimized compression techniques to minimize the amount of X11 data prior to transmitting it across the network. NX also makes extensive use of caching in order to make the session as responsive as possible; for example, if a menu is opened, the first time it will take a few seconds, but every subsequent time the menu is opened it will appear to be instant due to caching.

Use of SSH protocol


NX uses the SSH protocol to send its data, making use of public key cryptography for authentication purposes. When an NX client connects to a server, the client program initially logs into the server using the 'nx' username, authenticated with the SSH public key method. 'nx' is a special user account created on the server with its shell set to an NX application, through which client-server communication can take place. In this session, the client requests session data which can then be fed to 'nxproxy' to start the graphical NX session. Once the NX link is established, the real username is authenticated through the pre-established SSH tunnel, and the 'session possession' is handed over to the real user.

In addition to simply allowing users to log in remotely over a slow internet link to a server graphically, NX also allows them to suspend and resume sessions. During suspension, the processes invoked inside the session continue to run, and so many people have come to use NX as a graphical alternative to SSH and the 'screen' application - in order to run applications such as xchat permanently on a computer with a fixed internet link.

License


NoMachine uses the GPL license for the core NX technology, while at the same time offering commercial [http://www.nomachine.com/download.php NX server] and client products for Linux, Microsoft Windows, Solaris, Mac OS X and embedded systems. Due to the free software nature of NX, the FreeNX project was started in order to provide the wrapper scripts for the GPL NX libraries. FreeNX is developed and maintained by Fabian Franz. 2X develops a terminal server for Linux that also uses the NX protocol.

History


NX was developed from, and is a successor to mlview, which in turn was developed from dxpc. mlview is gone, but dxpc is still being actively developed.

Compared to its predecessors NX is much faster. It accomplishes this by eliminating most of the X roundtrips (a message sent back and then forth between the client and server). The others only attempt compression, but roundtrips were not eliminated.

Clients



The primary client for use with NX is the official NoMachine client. However, many free software developers are unhappy with this client as it is closed-source and doesn't run on all the architectures which Linux supports, such as PowerPC. Because of this, there are efforts in place to create an open-source client for use with NX.

The most mature of the projects used to be Lawrence Roufail's nxc client library. This is a full library which can be used for other clients to build upon, and another application, 'nxrun', is provided which makes use of this library. As of 2006, the library does not support suspending or resuming sessions, nor does it support using any compression method other than JPEG for the graphics.

The kNX project was a proof-of-concept application written by Joseph Wenninger. This was meant to eventually become a complete NX client, showing that an open-source client could be written. However, this implementation got stuck in an incomplete stage; to date it lacks many important features. As such, kNX was effectively useless. In late 2005, Fabian Franz and George Wright started to change the kNX backend to use the nxc client library, but quickly abandoned the project.

More recent open-source efforts include QtNX by George Wright, which offers full suspend and resume support.

Alternatives



* lbxproxy Low Bandwidth X
* dxpc The Differential X Protocol Compressor
* Virtual Network Computing
This entry uses material from from Wikipedia, the leading user-contributed encyclopedia. It is licensed under the GNU Free Documentation License. Disclaimer.