Thank you for being a valued part of the CNET community. As of December 1, 2020, the forums are in read-only format. In early 2021, CNET Forums will no longer be available. We are grateful for the participation and advice you have provided to one another over the years.

Thanks,

CNET Support

Question

Communication between private IP addresses over the Internet

Oct 1, 2013 4:55PM PDT

Suppose we have messenger like GTalk, Skype etc running on two different PCs(A and B) which have private IP addresses but connected to Internet through some ISP. The two PCs could be located in different parts of the world. Now its possible to send messages and make VoIP calls between A and B.

This obviously uses server for communication establishment. For text messages it could be routed through the server to reach A and B.

But for VoIP calls, I believe initial establishment would be taking help of server and later VoIP data would flow directly between A and B. Now, A and B both have private IP addresses.

So my question is how is it possible to communicate between A and B directly over the Internet who have private IP addresses ?

Is there any specific standard for this ? I am not talking about VoIP standard like RTP etc but the mechanism to communicate over Internet using private IP addresses. In other words, I simply have a TCP client and TCP server running on A and B respectively. How can TCP client reach TCP server ?

I would like to know if messengers like GTalk, Yahoo, Skype and many of the Android applications like Viber, Kakoa talk, WhatsApp etc use any specific standard for this. And I have seen that these work almost always, calls between A and B work, located anywhere in the world.

It would be nice if somebody can share the architecture and the concepts involved.



Thank you.

Discussion is locked

- Collapse -
Answer
It's not just A and B
Oct 1, 2013 8:01PM PDT

There are servers so lets call those C. There are three computers and no direct A to B communication. I can see if you omit the servers, why you would be confused.
Bob

- Collapse -
Yes, servers are used.
Oct 1, 2013 9:13PM PDT

I know servers are used. I have mentioned this in my original post.
But when the VoIP call is established, we don't want to send data from A to C and C to B, B to C and C to A. This will not be efficient. I am sure VoIP data would be sent directly between A and B.

I know some techniques are used like port forwarding, STUN, hole punching. But these depend on NAT behaviour. I am looking for a solution which can be generalized and will work most of the time. I am wondering the techniques that are used by messengers like skype, Gtalk, whatsapp etc.

Thank you.

- Collapse -
And why it uses SIP.
Oct 1, 2013 9:59PM PDT
http://en.wikipedia.org/wiki/Session_Initiation_Protocol

As you can imagine this can't be explained in 3 or less paragraphs but you can find it all out there on the internet. Also you can examine the source code to DD-WRT and a talk app in Linux as the source is all out there.

Since all the information is out there I would have to guess why this is being asked. Was there a problem you had with it?
Bob
- Collapse -
Have a look...
Oct 3, 2013 5:36PM PDT
- Collapse -
OK, took a look.
Oct 3, 2013 8:48PM PDT

I can't see the problem you are trying to solve. I would be guessing you are looking to find out how it works but for most folk that takes some background in IP networking then more work in how NAT and routers work before they can broach how to build up connections. All this can't fit completely in this small text area because no one I know can dump a text book here.

This is why I asked if there was a problem you encountered and were trying to solve.

If this is just you trying to learn how networking works, then you're back to classes, books, internet and such as it doesn't fit all in this small box.
Bob

- Collapse -
Sorry...
Oct 6, 2013 3:40PM PDT

Sorry.. maybe i am in the wrong place to discuss this.
Thank anyways.

- Collapse -
Sorry but I tried to understand what issue was causing the ?
Oct 6, 2013 7:32PM PDT

But let me guess you wanted to create your own Skype network. You might try a programming forum such as CodeProject.
Bob