# NX NoMachine

NX ist eine mit X11 zusammenarbeitende Remote-Desktop-Software des luxemburgischen Unternehmens NoMachine. Mit X11 kann man den Bildschirminhalt eines entfernten Computers auf einen lokalen Rechner (auch betriebssystemübergreifend) übertragen und damit arbeiten, als säße man direkt davor (vgl. Thin Client).

## Programm

NX soll die Übertragungsgeschwindigkeit (Reaktionszeit und Daten-Durchsatz) des X Window Systems, üblicherweise unter Unix und Linux, bei der Darstellung von graphischen Anwendungen über Rechnernetze erhöhen. Besonders interessant ist das für Verbindungen mit geringer Bandbreite, wie Modem oder ISDN. NX wird dabei als Proxy-System zwischen die X11-Partner geschaltet.
Eine Verschlüsselung per SSH ist möglich.
Außerdem kann der NX-Server auch Sitzungen an VNC-Server oder Windows Terminalserver (per RDP) weiterleiten und den Datenverkehr nochmals komprimieren. Der NX-Client fragt also bei einem NX-Server an, der dann die Verbindung zu einem weiteren Terminalserver per VNC oder RDP aufbaut. Er wird also zwischengeschaltet [NX-Client → NX-Server → RDP-/VNC-Server] und somit der RDP/VNC Datenfluss komprimiert.
Der NX-Client ist auf Linux, Solaris, Windows, macOS, Sharp Zaurus, Sony PlayStation 2, und HP/Compaq iPAQ lauffähig.

## Technik

NX erreicht eine Steigerung der Effizienz des X11-Protokolls über das Netz vor allem durch drei Methoden:
* Anlegen eines Caches für schon übertragene Daten
* Datenkompression des Netzwerkverkehrs
* Reduktion der Round Trip Time zwischen X-Client und X-Server
Viele „Roundtrips“ sind unnötig und werden teilweise durch ineffiziente Programmierung von X11-Applikationsprogrammen verursacht. Ein effizienter Cache erspart die wiederholte Übertragung derselben Datenblöcke (zum Beispiel Icons in Programmmenüleisten). Die starke Kompression reduziert den Datenverkehr weiter.
Zum Übertragen der Daten nutzt NX einen SSH-Tunnel.

## Verbreitung und Entwicklung unter Open-Source

Die Basisbibliotheken und alle wichtigen Kernbestandteile von NX wurden von NoMachine unter die freie Lizenz GPL gestellt, weswegen sie auch in freie Desktops wie KDE und Gnome integriert werden dürfen. Lediglich die zentrale Client- und die Serverapplikation sind proprietär.
Für KDE existiert bereits eine Clientapplikation namens kNX, welche zusammen mit dem ebenfalls freien NX-Server FreeNX vom Kalyxo-Projekt geschrieben wurde. kNX kann aber auch mit GNOME und anderen Desktops verwendet werden.
Bemerkenswert am FreeNX-Server ist, dass er vollkommen als Bash-Shellskript geschrieben wurde. Weil seine Programmierer beweisen wollten, dass ein auf den GPL-lizenzierten Bestandteilen von NX aufbauender, freier NX-Server keine große technische Schwierigkeit darstellt, wurde diese Skriptsprache ausgewählt.
Seit ca. Juli 2009 existiert eine neue, freie Variante des Servers namens Neatx, welche zunächst als internes Projekt entwickelt wurde, die im April 2010 noch nicht alle Funktionen des Originals beherrschte. Das Projekt wurde 2012 abgeschlossen, und die Quellen wurden freigegeben. Es wird nicht mehr aktiv weiterentwickelt.

## Anwendung

Mit NX ist es möglich, dass der Administrator eines Netzwerks die Kontrolle über den Computer eines Mitarbeiters übernimmt, um Software zu installieren oder Fehler zu beheben. Weitere Anwendungsbeispiele sind zum Beispiel Heimarbeitsplätze oder auch die Möglichkeit von älteren Computern, die als Thin Client eingesetzt werden, auf entfernten, leistungsfähigeren Maschinen zu arbeiten.
NX ermöglicht ein schnelles Arbeiten selbst bei einer Modemverbindung mit nur 40 kBit/s Datenübertragungsrate.
Ein weiterer großer Vorteil von NX gegenüber dem reinen X11-Protokoll liegt darin, dass NX sogenannte seamless connections unterstützt, d. h. eine bestehende Verbindung zu einem NX-Server lässt sich trennen und später von einem anderen Rechner aus wieder aufnehmen. Die gestarteten Programme laufen dabei auf dem Zielsystem ungestört weiter.