Cloud Explainers
Home › Networking › Networking for Beginners, episode 3

Why the Internet Ran Out of IP Addresses

Networking11 min videoPublished Oct 28, 2026

Why the internet ran out of IPv4 addresses, for complete beginners: an IPv4 address is a 32-bit number, so there can only ever be about 4.3 billion; IANA's own list shows a big share was reserved or handed out early; and the free supply ran out in 2011. Then the tricks that kept the internet growing (home NAT, carrier-grade NAT, paying for addresses), proven on a real lab network where two homes share one public address, and the real fix: IPv6, its 128-bit addresses, and why the switch is only about half done.

Why the Internet Ran Out of IP Addresses: the full diagram
The whole picture, from the video's recap.

Out of addresses

The internet ran out of addresses in 2011. Every device online needs an IP address, so other machines can find it. The original kind, IPv4, has only about 4.3 billion of them. Today, about 6 billion people use the internet, most of them with a phone, a laptop, and more. So how is everyone still online? Ana and her neighbour Ben, two homes on one street, will show us: why we ran out, the tricks that kept the internet working, and the real fix.

Like in the first two episodes, this network is real, built with Docker inside one computer. Ana's laptop and her home router. Ben's laptop and his router. The internet provider they both use, and a server out on the internet. Every address in the lab comes from ranges set aside for testing, so nothing here touches the real internet.

An address is a number

An IP address looks like four numbers with dots, like Ana's laptop: 192.168.1.20. But a computer stores it as one number, written in 32 bits: the ones and zeros on screen. Each of the four parts is 8 of those bits. Each bit is a 0 or a 1, so every extra bit doubles the count: 32 bits can make 2 to the power of 32 different numbers. That's 4,294,967,296, every IPv4 address there can ever be.

Ana's laptop · an IPv4 address is 32 bits
python3 bits.py 192.168.1.2011000000.10101000.00000001.00010100
32 bits
Ana's laptop · an IPv4 address is 32 bits
python3 -c 'print(2**32)'4294967296

IPv4 was written down in 1981, for a research network of a few hundred computers. Four billion seemed endless. Nobody planned for a phone in every pocket, or for TVs, cars, watches and doorbells that are online too.

An address is a number: diagram from the video

Where the addresses went

The addresses were handed out in big blocks. IANA, the Internet Assigned Numbers Authority, splits them by their first number into 256 blocks, each holding about 16.7 million addresses. Ana's laptop starts with 192, so it sits in block 192.

Where the addresses went: diagram from the video

This is IANA's own list of all 256 blocks, downloaded while we made this video, counted by a small program. 35 blocks are reserved: never for public use. 92 are legacy blocks, given out directly in the early days. And 129 went to the five regional registries, which hand addresses to internet providers in each part of the world.

IANA's list of the 256 IPv4 blocks
python3 blocks.py ipv4-address-space.csv256 blocks of 16,777,216 addresses
ALLOCATED  129  to the 5 regional registries
LEGACY      92  given out directly, early on
RESERVED    35  never for public use
last block given out: 2011-02

Reserved blocks have other jobs. Block 10 is for private networks, like the ones inside homes and offices. Block 127, all 16.7 million addresses, exists so a computer can talk to itself. And 32 more blocks were kept for multicast, sending to groups, and for a future use that never came. That's about one address in seven, gone before anyone was online.

Where the addresses went: diagram from the video

Legacy blocks went to whoever asked early, often companies and universities. In the same list, where /8 means one whole block: block 17 went to Apple in 1992, and block 19 to Ford in 1995. That's 16.7 million addresses each, for one company.

IANA's list · two legacy blocks
grep -E '^0(17|19)/8' ipv4-address-space.csv | cut -d, -f1-3017/8,Apple Computer Inc.,1992-07
019/8,Ford Motor Company,1995-05

Running out

Then everyone came online. On 3 February 2011, IANA gave away its last five blocks, one to each regional registry. The registries ran dry one by one. Asia and the Pacific was down to its last block in April 2011. North America ran out in September 2015, and Europe in November 2019. Since then, a company that needs IPv4 addresses mostly gets them second-hand.

Running out: diagram from the video

Trick one: share an address

So how did the internet keep growing? The first trick you already know from episode one: your home router shares one address. Inside, every device gets a private address, like Ana's, that the internet never sees. On the way out, the router swaps in its own outside address, and swaps it back for the answer. That's NAT: network address translation.

Ana's laptop: 192.168.1.20. Ben's laptop: 192.168.0.20. Both private. Now the outside of Ana's router: 100.64.0.2. That isn't a public address either. It comes from a range set aside for internet providers, because her provider can't give every home a public address any more.

Ana's laptop, Ben's laptop, Ana's router
ip -4 -brief address show eth0eth0@if223       UP             192.168.1.20/24
Ana's laptop, Ben's laptop, Ana's router
ip -4 -brief address show eth0eth0@if226       UP             192.168.0.20/24
Ana's laptop, Ben's laptop, Ana's router
ip -4 -brief address show wanwan@if225        UP             100.64.0.2/24

So the provider runs a second, much bigger NAT for all its customers, called carrier-grade NAT. Ana's packet is translated twice: once by her router, and once by the provider. It reaches the internet with the provider's one public address: 203.0.113.7. Ben's packets leave with that same address.

Let's prove it. A small web server prints the address of everyone who visits. Ana loads the page. Then Ben does. Two visits from two homes, and the server saw the same address both times: 203.0.113.7. Real providers share one address among many more customers.

The server, then Ana's and Ben's laptops
python3 web.py 80 Hello from the serverlistening on port 80
visit from 203.0.113.7
visit from 203.0.113.7
The server, then Ana's and Ben's laptops
curl -4 -s -m 10 server.exampleHello from the server
The server, then Ana's and Ben's laptops
curl -4 -s -m 10 server.exampleHello from the server

What sharing costs

Sharing has a price. Ana starts a small web server on her laptop, to share holiday photos. Can the server out on the internet reach it? All it knows is 203.0.113.7, and that address belongs to the provider, which has no idea which of its customers should get the visit. Couldn't connect.

Ana's laptop, then the server
python3 web.py 8000 "Photos from Ana's laptop"listening on port 8000
Ana's laptop, then the server
curl -4 -sS -m 5 http://203.0.113.7:8000curl: (7) Failed to connect to 203.0.113.7 port 8000 after 0 ms: Couldn't connect to server

That's the downside of sharing: nobody outside can start a connection to your device. Games, video calls and home cameras need a helper: a server in the middle that both sides connect out to. And when a website blocks one shared address to stop one bad customer, it blocks every home behind it.

Trick two: pay for them

The second trick is money. Anything in short supply gets a price, and IPv4 addresses are now bought and sold between companies. Even clouds charge for them. Since February 2024, Amazon Web Services charges half a cent an hour for every public IPv4 address: about $3.60 a month each. A thousand servers, each with a public address, cost $3,600 a month just for their addresses.

Trick two: pay for them: diagram from the video

The real fix: IPv6

Sharing and paying only stretch IPv4. The real fix is a bigger number. IPv6 addresses are 128 bits long, written as eight groups of four hexadecimal digits, 0 to 9 and A to F, with colons. Here's Ana's new IPv6 address, written out in full. And 2 to the power of 128 is this 39-digit number: about 340 undecillion. For every single IPv4 address, IPv6 has about 79 octillion.

Ana's laptop · an IPv6 address is 128 bits
python3 bits.py 2001:db8:a::202001:0db8:000a:0000:0000:0000:0000:0020
128 bits
Ana's laptop · an IPv6 address is 128 bits
python3 -c 'print(2**128)'340282366920938463463374607431768211456

Long addresses get a short form. Leading zeros in a group can be dropped, and one run of all-zero groups becomes a double colon. So Ana's address is written 2001:db8:a::20.

The real fix: IPv6: diagram from the video

Ana's home now has IPv6. Her laptop has two addresses: the private IPv4 one, and an IPv6 one that's public, its very own. She visits the server over IPv6, and then over IPv4. Over IPv6, the server sees Ana's own address: no translation, no sharing. Over IPv4, it still sees the shared one.

Ana's laptop, then the server
hostname -I192.168.1.20 2001:db8:a::20
Ana's laptop, then the server
curl -6 -s -m 10 server.exampleHello from the server
Ana's laptop, then the server
curl -4 -s -m 10 server.exampleHello from the server
Ana's laptop, then the server
python3 web.py 80 Hello from the serverlistening on port 80
visit from 2001:db8:a::20
visit from 203.0.113.7

And now the server can reach Ana's photo server directly, at her own address. It answers. And Ana's laptop saw the visit come straight from the server's own address.

The server reaches Ana's laptop over IPv6, then Ana's laptop
curl -6 -s -m 5 'http://[2001:db8:a::20]:8000'Photos from Ana's laptop
The server reaches Ana's laptop over IPv6, then Ana's laptop
python3 web.py 8000 "Photos from Ana's laptop"listening on port 8000
visit from 2001:db8:200::10

Reachable doesn't mean open to everyone. Home routers usually run a firewall: answers to Ana's own requests come in, and connections nobody asked for are blocked, unless she allows them. Our small lab has no firewall, which is why the server's visit got through.

Why the switch is slow

So why don't we all just switch? Because IPv6 isn't an upgrade that fits into IPv4. It's a separate language: a device that only speaks IPv4 can't talk to one that only speaks IPv6. So networks run both side by side, for years. That's called dual stack, and it's what Ana's laptop does.

Ben's router is older, and only speaks IPv4. So his laptop has just one address. Ask for the server over IPv6, and it fails: there's no way out. For IPv6 to work, every step on the way has to support it: the device, the home router, the provider, and the website.

Ben's laptop
hostname -I192.168.0.20
Ben's laptop
curl -6 -sS -m 5 server.examplecurl: (7) Failed to connect to server.example port 80 after 0 ms: Couldn't connect to server

Step by step, it's happening. Google measures how many of its users reach it over IPv6. On 28 March 2026, it passed half for the first time: 50.1%. Some countries are far ahead, others barely started, and roughly thirty years after IPv6 was first written down, half the internet still needs IPv4's tricks.

Why the switch is slow: diagram from the video

Recap

Back to the street where Ana and Ben live. IPv4 has about 4.3 billion addresses, and a big share was reserved or handed out early. When the supply ran out, providers made many homes share one address, and addresses started to cost money. IPv6 gives every device its own address again, and the switch is about half done.

A question for the comments: does your home internet have IPv6? Open an IPv6 test website on your phone, on Wi-Fi and then on mobile data, and tell me in the comments what you found.

Recap: diagram from the video

Every result in this video came from a real run of this small lab. This was episode three of Networking for Beginners. Next time: every network troubleshooting command you need.

Sources

Demos: real output from a small lab network built with Docker containers on one machine, using only private and reserved test addresses (192.168.x.x, the 100.64.0.0/10 shared range, 203.0.113.x and the IPv6 documentation range 2001:db8::/32). The lab has no route to the real internet; the web server and the address tools are small programs written for this video. IANA's block list was downloaded from iana.org during the run. Watch the full video on YouTube.

More videos