The internet was originally intended for communication between Universities and Government agencies. After the commercialization of the Internet IPv4 addresses started to run out. To address this shortage three technologies were invented:
- Private network addresses
- Network Address Translation (NAT)
The first two technologies actually go against the original intention of the Internet which was that each individual node on a network should be able to directly connect to any other node. NAT uses the multiplexing facilities available in TCP and UDP (Port Address Translation) to enable multiple devices to use a single IPv4 address.
While this solution solved (or delayed the effects) of the IPv4 shortage it also introduced further complexities and fundamentally changed the way the Internet was used. As a result, IPv6 was invented which has a practically inexhaustible amount of addresses (2^128).
However, the debate continues as to whether every IPv6 address should be able to contact each other as some people see NAT (PAT) as a security feature as it prevents direct contact with the other hosts on the Internet.