In the early 2000’s, everybody was talking about IPv4 address exhaustion. As some of you technically enlightened readers probably know, IP stands for “Internet Protocol” and version 4 of the protocol coincidentally uses 4 bytes for the address. This means a logical span of 0.0.0.0 to 255.255.255.255, or 4294967295 possible IPs (including the unusable or private ones.) And had we kept giving out public IPs to all connected devices we would have been screwed by now. The solution was thought to be IPv6, with 16 byte addresses; enough to give a unique IPv6 address to every grain of sand on this planet.
But it wasn’t IPv6 that saved us, but rather a feature called Network Address Translation, or NAT for short. This feature usually lives in your router and bridges a private network with a public one. This is the reason you see IP-addresses starting with 192.168. in many places as that is one of the private IP ranges mentioned before. But for this to work your router also need to have a public IP address, an address that is reachable from the Internet, and therein lies the crux.