> But it goes beyond firewall rules
Honestly though... does it, all that much? Even in a world where NAT didn't exist and we all switched to IPv6, we'd still all be behind firewalls, as everyone on an IPv6 home network is today. Port forwarding would just be replaced by firewall exemptions.
Like on a philosophical level, I do wish we had a world where the end-to-end principle still held and all that, but I'm not actually sure what difference it would make, practically speaking. "Every device is reachable" didn't die because of IPv4 exhaustion or NAT, it died because of security, in reality most people don't actually want their devices to be reachable (by anyone).
> I'm sure we all know the benefits of private networks, so I don't need to reiterate it
That is I think the key. Private networks have sufficient benefit that most places will need one.
The computers and devices on our private network will fall into 3 groups: (1) those that should only communicate within our private network, (2) those that sometimes need to initiate communication with something outside our network but should otherwise have no outside contact, and (3) those that need to respond to communication initiated from something outside our network.
We could run our private network on something other than IP, but then dealing with cases #2 and #3 is likely going to be at least as complicated as the current private IP range approach.
We could use IP but not have private ranges. If we have actual assigned addresses that work from the outside for each device we are then going to have to do something at the router/firewall to keep unwanted outside traffic from reaching the #1 and #2 types of devices.
If we use IP but do not have assigned addresses for each device and did not have the private ranges I'd expect most places would just use someone else's assigned addresses, and use router/firewall rules to block them off from the outside. Most places can probably find someone else's IP range that they are sure contains nothing they will ever need to reach so should be safe to use (e.g., North Korea's ranges would probably work for most US companies). That covers #1, but for #2 and #3 we are going to need NAT.
I think nearly everyone would go for IP over using something other than IP. Nobody misses the days when the printer you wanted to buy only spoke AppleTalk and you were using DECnet.
At some point, when we are in the world where IP is what we have on both the internet and our private networks but we do not have IP ranges reserved for private networks, someone will notice that this would be a lot simpler if we did have such ranges. Routers can then default to blocking those ranges and using NAT to allow outgoing connections. Upstream routers can drop those ranges so even if we misconfigure ours it won't cause problems outside. Home routers can default to one of the private ranges so non-tech people trying to set up a simple home network don't have to deal with all this.
If for some reason IANA didn't step in and assign such ranges my guess is that ISPs would. They would take some range within their allocation, configure their routers to drop traffic using those address, and tell customers to use those on their private networks.
> every ISP would be giving every customer a block of addresses, both commercial and residential customers.
or more likely, you would still receive only handful of addresses and would have needed to be far more considerate what you connect to your network, thus restricting the use of IP significantly. Stuff like IPX and AppleNet etc would have probably then been more popular. The situation might have been more like what we had with POTS phones; residential houses generally had only one phone number for the whole house and you just had to share the line between all the family members etc.
They worked around this with IPv6 by the fact that SLAAC exists and some devices insist on always using it. Your ISP has to give you at least 64 bits of address space or else some phones won't work on your network. And even if they only give you the bare minimum of 64 bits, you can subdivide it further without SLAAC if you know what you're doing.
Furthermore, the use of privacy addresses obfuscates how many devices you have.
The phone company would have been happy to sell you more phone lines. I knew people who had some.
But you're right that as dumb as it is, it's likely that ISPs would have charged per "device" (ie per IP address).
Before 1983 in the US, you could only rent a phone, not own one (at least not officially) and the phone company would charge a rental fee based on how many phones you had rented from them. Then, when people could buy their own phones, they still charged you per phone that you had connected! You could lie, but they charged you.
Like I said, I have mixed feelings about NATs, but you're right that the companies would have taken advantage of customers.
Interestingly, IPv4 is also we have the "great" ecosystem of IOT devices needing to talk to the cloud: making your phone able to talk to your thermostat is too damn complicated...
> Every computer on the Internet has an Internet address
By every computer did you include every MCU that can run TCP/IP stack ?