Let's consider how you, and all your kids (brothers, sisters) are able to use your home network to communicate with the Internet ... all at the same time, through
one outgoing wire.
The network within your home uses one of the
private network-address ranges that have been set-aside for this very purpose. (Most likely, it is
192.168.x.x.) There will never be a computer "on the Internet at large" which uses any of these addresses: they are set aside for
internal networks.
Your home's internet router probably has the
internal address of
192.168.1.1, and, if you issue the
route command
(or its equivalent for your OS ...) on your computer, you will find this address listed as the
default gateway.
What this means is that, in order to communicate with "LinuxQuestions.Org" at its public address of
(say) 75.126.162.205, your computer sends the traffic, as it were,
through the gateway to get there.
Your router is sitting on
two networks at the same time: internal, and The Internet. On the Internet, it has whatever IP-address was assigned by your provider. It
routes your LQ traffic to LQ. And, when LQ responds with a beautiful web-page, your router returns the traffic to
you. (Not to your sister.)
It does this through a simple trick called
NAT = Network Address Translation. The message that is sent to LQ comes from the (public) IP-address assigned by your provider, with a random "port number" chosen on-the-fly by your router. When LQ replies, your router invisibly uses that port-number
(which it remembers) to send the traffic to you ... and not to your sister. (It strips-off the port number before sending the data to you.)
The concept of a "port number" is very much like an "extension" in a company telephone exchange that is reached through a single phone-number, but that analogy is a loose one. The port-number in this case simply "is part of the return-address portion of the message," which LQ
('s router ...) will send back to your router verbatim.
IP-addresses are not necessarily fixed. Every now and then, your Internet provider might change the IP-address that's used by your router. (It can do this through good ol' DHCP.) Addresses are generally grouped by geographic area but this is only approximate.
"IPv6" replaces the 32-bit IP address with a much, much larger number. Some routers know how to use IPv6, and some internet providers are actively using those addresses right now. Therefore, when you design an Internet server-application, you should not presume that the address that you'll receive has the format
w.x.y.z.