Terminal Services v. VNC

Corné Beerse cbeerse "at" lycos.nl
Mon Jan 5 10:09:01 2004

Mike Miller wrote:

> A friend sent me a message (not to this list), which is appended below.
> He claims that Windows Terminal Services will do for me what VNC does, but
> Terminal Services runs much faster.  I'm wondering if he is correct.  I
> think he's wrong about bmp encoding, for one, but is any of it correct?

Well, he is right to some extend...
M$Terminal$ervices does on M$Windows what VNC does on many, if not all other 
platforms on which it is available (read: all but M$Windows). M$Terminal$ervice 
provides an other windows-session, separate from the one on the console.

VNC cannot do such a thing since it (the world outside Micro$oft) has no access 
to information to do it. Commercial compannies like Citrix do it because tehy 
have gained access to needed infromation.

For being better or not, there are more ways to look at the solutions: on one 
side there is the way to gather the screen information. For the M$Windows 
variant of VNC, this is done by polling the video memory. For all other VNC 
variants, it is done by being the (virtual) display driver (aka display server)

The other side is the communication between displayserver and the display 
viewer. There vnc uses a nice and public protocol with many compression options 
and such. I expect Micro$oft at least has viewed at this protocol and did its 
thing with it (strip it to the bare minimum and add own extentions) or done the 
same with one of the many other protocols.

On the viewer side, Micro$oft only provides viewers for its own platforms...

> Thanks in advance!
> Mike
On Sat, 3 Jan 2004, a friend wrote (off list):

 >> VNC sends compressed bmp data of changed pixels when a screen change occurs.
 >> Terminal Service operates lower in Windows GDI and is much faster. Example -
 >> I type "Hello World" in wordpad. In a VNC session it polls the window,
 >> decides which pixels changed, grabs the bmp data for those pixels,
 >> compresses it and sends it. Terminal Services says "Hello World" was entered
 >> into this app - display it. The difference is very significant.

On all but the M$ platforms, the vncserver does that too.

 >> As an example - VNC is sluggish via broadband while Terminal Service is
 >> substantially faster over a 28.8 modem (I've seen this).

That's subject to settings like screen resolution, screen colordepth, 
compression, polling frequency, polling area and cpu power available at both ends.

And yes, due to the polling meganism, the M$ based vncserver sends over entire 
bitmaps of changed areas which are way larger than the actually changed pixels.

 >> I don't know about X - though I know Windows-based X servers are typically
 >> slower than Linux. Typically when I have to use Cygwin I'm coming over an
 >> IPSec VPN - which I think it frigging my MTU and causing me
 >> fragmentation-induced performance hits.

Surprise surprise: the vncserver on all other platforms is X11 based. Hence the 
binary is called Xvnc. It fully supports the X11 protocol (however, it lacks the 
extentions like hardware acceleration...)

For your information: Here I have an M$W2k desktop and some remote linux and 
HP-UX systems. I frequently run a vncserver on one of the remote machines and 
use that for Xserver to display apps from all other systems.