NX technology, commonly known as NX or NoMachine, is a remote access and remote control computer software, allowing remote desktop access and maintenance of computers. It is developed by the Luxembourg-based company NoMachine S.à r.l.. NoMachine is proprietary software and is free-of-charge for non-commercial use.

History

NX's design was derived from the Differential X Protocol Compressor project (DXPC). In 2003, the compression and transport protocol NX was created to improve the performance of the native X display protocol so it could be used over slow connections such as dial-up modems. It wrapped remote connections in SSH sessions for encryption. The core compression technology was released under the GNU GPL2 license (NX 1) for Linux servers on February 14, 2003, whilst other components such as the NX Server and NX Client programs remained proprietary. The last update to this open-source version was released in 2012.

NX technology

In 2010, the company announced they would be releasing the technology under a proprietary license. In 2013, NX became closed-source with the release of version 4.0 . It was in 2013 that NX software became NoMachine software.

NX technology

Features

NoMachine is available for most desktop computers with common operating systems, including Microsoft Windows and Windows Server, as well as Apple's macOS. There are also packages for several Linux distributions and derivatives, for example, Debian, Ubuntu, Red Hat, CentOS and Fedora Linux. There is also a version which can run on distribution variants for Linux ARM devices, including Raspberry Pi OS. An app is available which allows users to connect from smartphones and tablets running Android or Apple's iOS/iPadOS operating system.

NX technology

NoMachine Terminal Server Family for Linux also offers the ability to run multiple virtual Linux desktops on a Linux server which are remotely accessed over a network connection. Images rendered on the server are compressed and encoded and then sent to the client for decryption and decompression. NX utilizes uses a combination of video and image encoding based on standard codecs and a number of techniques developed by NoMachine as well as VirtualGL to access high-end OpenGL-based X11 applications and 3D CAD programs.

NX 4 and later versions

NX 4 introduced optimal image compression and caching with the latest video-encoding techniques. When connecting hosts across the network, the NX protocol works as a generic tunnel, with additional framing and flow control information, and dynamically adapts compression and bandwidth according to network speed and capacity. For compatibility, multiplexing is based on version 3.

Client applications can connect using the SSH protocol, with the same authentication mechanisms as version 3, by a new SSH system login, or by the new SSL-enabled NX daemon. Once a secure connection is established, clients negotiate a desktop session using a text protocol compatible with that used in version 3. Clients can also use one of the various NoMachine subsystems, such as the file synchronization service, software updates, directory services, voice/video messaging and server clustering.

NX 4 added new channel types to handle services such as the new file-system redirection, new printing system, virtual network interfaces, smart cards and USB devices. Most NoMachine components, including the agent program that impersonates the desktop session on the server, embed so-called "slave servers"—lightweight servers that provide inter-process communication and automation that can be used to create additional channels, under the control of the client and server.

Applications can still request that channels carry data using the NX X Window System protocol compression. Version 4 added new channel types for video and audio, allowing multiple codecs in the same stream. Currently, the display (video) channels can handle data in H.264, VP8, MJPEG and other formats, with additional primitives used to implement special encoding operations concurrent with standard audio and video streams.

Once the session is established between client and server, NX data can travel on TCP and UDP streams. The client and server dynamically select which transport to use, based on the type of data and network conditions. If communication over UDP is enabled, client and server can automatically instruct the router to open the necessary ports. UDP uses symmetric Blowfish encryption. The host interface and port, and Blowfish encryption key, are negotiated via a secure TCP link. UDP communication is disabled when using SSH tunneling, so that all data uses the same SSH link.