Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How does it come that programs like TeamViewer can communicate without any problem on port 80, but it is not possible with VNC? Are there any free and open alternatives to VNC that can do this, too?

share|improve this question
i'm thinking teamviewer requests out port 80 to an external server and handles all the baggage in the external server (like both ends connect to the external server and data is pivoted) – RobotHumans Dec 7 '10 at 10:51
@aking1012 is correct: the linked article claims "By default TeamViewer uses only the outgoing port 80 (HTTP)". Outgoing, as in: both your local and the remote computer connect to some server on port 80. I can imagine that TeamViewer also uses UPnP to open up ports if it can, but if that fails then all is probably done through a third-party server. – Arjan Dec 7 '10 at 11:17

Port 80 is a privileged port. You need administrator permissions to get programs running on port 80.

Each port can only be used by one application, so make sure the port is not in use by an other application (like Teamviewer or a HTTP server)

What VNC application are you using?

share|improve this answer
Does the privileged port thing apply to Windows too nowadays? – Arjan Dec 7 '10 at 10:46
Hmm, apparently not. I've just tested it by running nc.exe -l -p 80, and it can still get port 80. – Lekensteyn Dec 7 '10 at 11:08
This might still apply, as the question is not tagged Windows. (But then: that's probably the tag that is most often omitted...) – Arjan Dec 7 '10 at 11:13
teamviewer runs as root under Linux (with Wine). * cough * design error. Oh, this question was about VNC, not teamviewer. – Lekensteyn Dec 7 '10 at 11:14
When you're surfing on the internet, you're connecting to port 80 on the server side from a random unprivileged port on your pc. So it looks like this: yourpc:51841 -> server:80. VNC is very slow for me, I'm using X2go which is a lot faster. – Lekensteyn Dec 7 '10 at 11:23

Simple, VNC is (or was) designed years ago for (technical) administrators to get on to their own machines, the sort of people who have no problems in setting up ports.

Team Vviewer on the other hand, whilst it can do more, is designed for anyone non technical to connect to anyone non technical.

There is nothing stopping you from hosting VNC on port 80 on your machine (as long as no web servers or anything else that uses it has attached to it).

However, also remember, Team Viewer does not actually attach to port 80.

You can only have one program attached to an incoming port on your computer, however, your computer can have as many outgoing connections to identical ports as it needs.

Port 80 is usually unblocked in most places with internet access, therefore outgoing connections are not a problem, even if it is a place that would not usually allow a service to be hosted.

Team Viewer works by issuing OUTGOING requests at both ends to their servers which have incoming set up.

You can test this through some VNC distributions, for example, a standard VNC distribution allows you to have a server (with an incoming port set up), and then someone wanting to connect in will simply establish an outgoing connection (no set up required), to the server.

On the other hand, you can start the VNC server as normal with no ports set up, launch the VNC listening client (and set up an incoming port), then from the server icon, right click and choose Establish a reverse connection or Connect to a client (I forget - been a few years since I last did this), and you should be able to establish a reverse connection.

Now, Teamviewer is basically both ends using an outgoing connection to a third party - therefore it requires no set up.

I hope I have answered a few of your questions, if I haven't or you want to know more on anything, please let me know.

FYI- I used to use Ultravnc

share|improve this answer
Nice explanation @Wil...I was pretty sure of this but didn't want to post without knowing absolutely +1 – RobotHumans Dec 7 '10 at 11:46
@William If some client is using server to connect to other client, then, is this server running a specific software to forward clients, or it's just a Web server (running PHP and MySQL), that passes ip's and available ports to both clients? – FlashDark Feb 6 '13 at 3:16

If you must use vnc over port 80 here's a how to using a java applet: This is for the linux side of things. This post reports that realvnc can run over port 80: Previous statements about outbound connections for teamviewer are correct, but if you're trying to get past a non-packet inspection firewall one of these might work for you.

This does not resolve inbound connections being required, only port number issues.

share|improve this answer
okay, i'll try and post meaningful stuff as much as possible. My problem is sometimes it feels like regurgitating a 4 page how-to by someone else is not as meaningful as directly linking to a how to discussion that already occurred. – RobotHumans Dec 7 '10 at 13:15
(True, just wanted you to know! It also makes upvoting a bit hard: I'm rarely following the links, so cannot easily tell if things feel right!) – Arjan Dec 7 '10 at 13:39

I like to use ssh port forwarding when using VNC: . VNC isn't safe as we all know. If only port 80 is open (in case 22 is not open), sshd can configured to listen on port 80 and then after a tunnel is set up, lots of things can be done.

share|improve this answer

You must log in to answer this question.

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