As previously mentioned, non-routable addresses are not allowed on the internet. 10.x.x.x and 192.168.x.x are the typical ones. home routers, and even fancy CISCO routers, will route these addresses on internal networks. Partly the addresses are blocked on the internet, and partly the routing tables passed around by internet routers simply do not allow advertising of routes that contain those IP numbers.
If you are getting to the internet from a machine, consider scenarios:
(a) you have a real internet address; these are somewhat rare and expensive. The packet from your machine to wherever contains your real address as the internet address. The other machine replies to your internet address. As a DSL or cable modem user, your connection uses one of these addresses typically.
(b) you have an extensive network (at work) or a small one (at home) that uses a non-routable address and a router. My home network, say, uses 192.168.0.x; when I want to go out on the internet, my packet is translated (called “NAT” Natural Address Translation) by my router. Out on the internet, my router substitutes it’s own real address as the “source” address in my packets. It keeps a table - for this conversation (based on IP port numbers), any reply packets to (router address) are routed to (PC address on network).
(c) for incoming, the process is somewhat different. The router needs to be programmed with a forwarding table. If a unsolicited packet arrives for port X, it was sent to the router’s external internet IP address, since that’s the only address the world knows about for my network; the router then forward it to 192.168.x.X; it basically puts the packet onto the home network, but susbtitutes the internal non-routable destination address (from the forwarding table) for the external internet IP.
This is what makes a router an excellent first line of defense firewall. By default, no unsolicited packets are forwarded; only packets for the right IP port# service are forwarded.
You can see the obvious problem - I have one address on the internet, I can only have one destination for, say, port 80 (HTTP) or port 25 (eMail). I can’t put 2+ web servers or 2+ SMTP servers behind the router on non-routable addresses unless the extra ones use non-standard ports. (I.e. http://www.foo.us:8080 uses port 8080).
To generate money, DSL/cable providers use 2 tricks - they use DHCP so your home IP address may change unpredictably - making it harder to have a fixed address on the internet. Or, business internet packages will charge you for each fixed internet IP address you need. Fancy routers can have multiple IP’s on the incoming port, and route the packet to different internal IP’s depending on the destination internet address and port.
the there’s VPN, or “tunneling” - my packets from my home network to the office network are “wrapped” in an encryption and forwarded router to router to the office, where that router unwraps them and puts them on that network as if my home router were plugged in to the office router. (hence “tunnelling”) The downside of this is that either (a) you still have to use NAT or (b) I better not have the same address range as the office - but everyone seems to use 192.168.1.X or 0.X so plan ahead or change everything later; the upside is that my packets are encrypted, so nobody can snoop; others from outside internet can’t join my network; and if I don’t need NAT, then I don’t have that “one server per port” problem; good for combining a small office’s network with a bigger one.