Communication between private IP addresses over the Internet

Page 2 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.

serpretetsky

Senior member
Jan 7, 2012
642
26
101
I just did a quick experiment and saw that if the NAT is symmetric NAT, then hole punching mechanism fails.
if both clients are behind symmetric NAT? or even if only one? I would think hole punching fails only when both clients have unpredictable/restrictive NAT's.
 

androidoutthere

Junior Member
Oct 2, 2013
12
0
0
How would you establish the initial connection between two IP addresses if both hosts are behind symmetric NAT ?
I read about hole punching mechanism(using a server) but it said the NAT should be well behaved which means it should have same mapping for different destination IP.
 

serpretetsky

Senior member
Jan 7, 2012
642
26
101
How would you establish the initial connection between two IP addresses if both hosts are behind symmetric NAT ?
I read about hole punching mechanism(using a server) but it said the NAT should be well behaved which means it should have same mapping for different destination IP.
are you asking me? I have no idea. I thought that was the one situation where it fails is when both have non well behaved NAT.
 

androidoutthere

Junior Member
Oct 2, 2013
12
0
0
Dynamic port forwarding using UPnP could be a solution but all NAT machines should support UPnP dynamic port forwarding. Do they support ?
Thank you.
 

lexco

Member
May 9, 2013
28
0
66
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 ?
[I did read about concepts like NAT, STUN and hole punching. But I don't see any specific way. And there is no guarantee that these would work depending on the NAT behavior
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.
I know about the destination net unreachable. https://www.corenetworkz.com/2009/05/destination-net-unreachable-icmp-error.html 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.

Devices A and B having private IP addresses can communicate over Internet only if both devices are connected to ISP (any). When a modem( point where ISP and your device) connected, it will get public IP address. So without having public address, you cannot communicate over Internet.
 
Last edited:

SecurityTheatre

Senior member
Aug 14, 2011
672
0
0
Devices A and B having private IP addresses can communicate over Internet only if both devices are connected to ISP (any). When a modem( point where ISP and your device) connected, it will get public IP address. So without having public address, you cannot communicate over Internet.

And... I think this is where the thread devolves into oblivion.
 

androidoutthere

Junior Member
Oct 2, 2013
12
0
0
lexco, you might be missing something here in the discussion thread. You might have to go through all the valuable discussion posts by various members.
 

androidoutthere

Junior Member
Oct 2, 2013
12
0
0
I found out that the dynamic port mappings can be created using the following protocols:
1) NAT PMP - RFC 6886
2) PCP - RFC 6887

But (1) above says the network should be RFC 1918 i.e, private IP addresses.
And (2) looks to be latest protocol and not sure if this is implemented by NATs as of now.

Did anyone work on these protocols ?

Thank you.