3

TeamViewer is faster compared to FLOSS alternatives concerning 2 aspects:

  1. The whole configuration process before the actual session: Determine IP, traverse through NAT & firewall, etc whereas in TeamViewer simply entering an ID/PW, which goes through the centralized system of TeamViewer (that's of course an issue of trust!).
  2. The remote viewing/control session itself: VNC solutions are far less fluent and responsive, often lag back dozens of seconds whereas in Teamviewer it feels almost "live" except of course if much screen content changes at high frequencies (animated contents, etc).

I would appreciate technical explanations concerning #2. I can't just figure out where's the optimization potential, which makes TeamViewer so much faster.

1
  • I think you should post on the Teamviewer site for a deterministic answer. . .
    – surfasb
    Oct 12, 2011 at 10:33

2 Answers 2

4

VNC is just inefficient - it uses RFB. which in effect takes snapshots of your system every so often, and tells the client system to draw boxes of X size every so often (a full description of the RFB protocol is here. More efficient protocols don't work at frame buffer level - RDP uses a kernel level driver in windows, for example and nx caches and compresses data.

More efficient protocols would likely as such

  1. cache data and only send the differences
  2. hook into the native subsystems of the host os
  3. using caching and compression to speed up data transfer.

In the case of teamviewer its likely clever use of the first and third - since it seems to use the same client for windows and linux, and uses their server to handle connection and routing of traffic

3
  • I'll read on about the protocols, you stated! Thanks!
    – porg
    Oct 17, 2011 at 22:58
  • While reading this answer the one thing that I wish this one had was some relevant options that use the 3 cases. Apr 15, 2018 at 1:58
  • If I understood properly from the RFC, RFB sends only the differences as well, it uses an incremental approach... May 2, 2020 at 8:29
4

I'd like to emphasize the fact that VNC is simply a horrible comparison point.

Between Linux systems, a properly configured xpra provides much, much better performance - mostly thanks to supporting H.264 based lossy compression.

The only lossy compression supported by TeamViewer seems to be reducing the colour depth and some kind of interlaced updates which help little with animated content as you noted. A good system would be able to smoothly sacrifice quality to keep a reasonable rate of updates. The mentioned xpra comes somewhat close to it, but honestly it still does a crappy job.

Another issue is TCP vs. UDP based. TCP based protocols are quite vulnerable to for example high packet loss, and the fact that once you sent some data, it has to be transmitted - thus a single large update means your screen will hang until it arrived. Particularly on slow connections that makes VNC unusable since any big change on the screen means you'll not see any changes until minutes later. Compare also ssh vs. mosh for pure text.

It seems nobody has managed to invent a really good protocol yet though, one that combines high compression ratios of advanced video codecs, use of UDP with a good way to deal with lost packets, perceptive coding that detects and favours readability of text over "useless" details, good automated balancing of update/transmission speeds with quality and encode speeds, gradual and smooth quality refinement over time for non-updated areas, client side caching and differencing (while video coding can reference past frames they are not really quite a good match to normal desktop content, and the fact that you could easily store 100s of MB of reference data client side). In other words: All that TeamViewer seems to do is to not do completely stupid things (though VNC has the excuse of mostly showing its age), I know of no solution that implements even a fraction of clever tricks possible even today, not to mention all those that one could imagine.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .