Take the 2-minute tour ×

I'm in a process of developing a server application and I would like to know if there are some numbers (or experience from people) on how many computers are behind the NAT on the Internet?

Since my application is supposed to be a small server, being forced to implement UPNP support and TCP hole-punching with an external server may sway my determination, especially if more than 80% of the Internet is behind NAT.

share|improve this question
​Be​ ​swayed​.​ –  Ignacio Vazquez-Abrams Jun 28 '11 at 6:54

3 Answers 3

I would not be so pessimistic as 99%. In some parts of Europe and US, household size is quite small, so If you want to reach singles, you may have a better chance than if you want to reach families (particularly with teenage children). Also, at least one Swedish ISP modem firmwares default to port-forward on the first connected host.

But, swayage is still in order, given that the IPv4 trend points strongly towards increased NAT over time.

Also note that it is very common for mobile operators to simply block inbound TCP connection attempts. If you have mobile aspirations, all TCP connection initiations need to come from the mobile end.

share|improve this answer

its probably safe to assume that currently most common isp internet connections make use of NAT so that one home can share a single public IP etc this is how probably around 99% of wireless routers work out the box as well

with IPv6 that wont be a problem but I doubt it will be that widespread still in 6 months time

share|improve this answer
Try maybe multiple years on the IPv6 front. Do you have plans with dates around when you will have all your IPv4 migrated over to IPv6? Most of us don't - including the ISPs. –  user48838 Jun 28 '11 at 7:48

One thing that might be worth looking at is Teredo. If you can programmatically enable it then it will do the port forwarding and hole punching for you. It basically routes IPv6 over IPv4 and supports direct connections.

It's supported natively in Windows, and can be enabled on Linux (but I've not tried that).

share|improve this answer

Your Answer


