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. The display protocol uses a combination of video and image encoding, based on standard codecs and a number of techniques developed by NoMachine. NX monitors display and user activity to adapt quality and buffering to the displayed application. Authentication From version 4.0 on, when the default NX protocol is used, the login can be via password-based authentication, private key or Kerberos ticket authentication. When NX is configured to send its data by SSH (available only on enterprise-version servers), the following authentication methods are available: Client to Server NX login as NX user using the NX SSH key and user password-based authentication System login with password-based authentication System login with SSH key-based authentication System login with SSH key-based authentication and