Hi again,
"Must there be an intermediary server between both computers to relay data? Isn't there a simpler solution?"
- Between 2 computers with REAL ip addresses, no there is no need.
- Between 2 computers when one has a real IP address, and he is the one listening, no - there is no need.
- Between 2 computers when both are behind NATs unless you have port-forwarding, then yes, you must use a 3rd computer, which by the way, must not be behind a NAT, or has to be accessible with port-forwarding.
I have added a picture i drew in mspaint, it will make it easier to understand - Just a few terms now.
1. NAT - Invented to save money. Uses 1 real ip address, to hide multiple private ip addresses.
The nat is the main problem of creating a peer to peer connection between 2 computer behind NATs.
As far as computer A knows, the ip address of computer B is the ip address of the NAT.
2. When an incoming TCP connection arrives to the NAT (from computer A) it has a destination ip address of the NAT, what is the NAT supposed to do now? to which computer shell the NAT send that packet?
It doesn't know! it can't know, UNLESS you configure port-forwarding, OR computer B is the one that starts the connection.
3. NAT prevents inbound connections, unless port forwarding is configured.
When you use teamViewer, both users install a Client on their PCs, they both actively have to start the program, and the program fires up a connection to the teamViewer servers. The 3rd computer which relays the data between the computers.
In the Link you pasted, you can see the schematics, they describe a setup where both IOLAN servers have REAL ip addresses, so they are not facing the NAT problem, the http tunneling is not the solution for NAT problems, it's a solution for strict firewall problems.