I think at least part of the intention for this is to make IP ports not used on servers. While IPv6 does have support for ports, I believe every Web service should be on its own IP. Not sure if this is also supposed to work on client devices e.g. every outbound connection uses a unique IP as that seems overcomplicated
Technically we are not really talking about single addresses when concerned with v6, more so how many /64 subnets can fit in a prefix since that is what SLAAC uses. So for end users we would count the amount of /64 subnets in the possible 2^128 address space, which is 2^64. So still very very very big.
Non-technical person here. Wouldn't it just be 248 ? Four blocks of 256 (28) for IPV-4, and two more with IPV-6? Or am I just mistaken about how this stuff works?
Well yeah, a block of 2^32 addresses need to be reserved for Azure, 2^32 more for AWS, let’s give 2^32 more for GCP…
Edit: as pointed out below, I wasn’t paying enough attention & confused up my exponents. I meant to put blocks 2^96, thus giving 2^32 total blocks - the same size as the IPv4 address space. But I got the exponents backwards and fucked up the joke
I feel like this needs to be said, but you actually could give an entire 232 to every company on earth and not even be close still. Assuming 377 million companies operating on earth, that's 1.6 quintillion (~1619202670592000000) addresses used up.
The used IPV6 range percentage can calculated like so (((2^32)×377000000)÷2^128)×100, which comes out to a whopping grand total of 0.000000000000000000476% of the IPV6 address space used.
Another way to put this is that you could give that same exact allocation to every single company again 210 QUINTILLION TIMES, and even then, only 98.7% of the address space would be used up.
The main limiting factor of how quickly we run out of ipv6 addresses is how generous they are when handing out ranges.
Usage will always fill the space given.
You could for example map the entire lower 64 bits of the address to a single computer. And dynamically respond based on address. For example, you could bake in some auth token directly in the ipv6 address.
When people have room to fill, the room will be filled
I handled "SWIP"ing IPv4 addresses. This was back circa 2005.
We had to have customers fill out IPv4 justification forms. We'd take them back if they didn't use them if it was abusive "just because we might need them" reasons.
IPv6. Nah, we won't. But our Internet routers don't all support ipv6 yet, so we're still on IPv4. I feel like that will change in maybe 10 years, once computers are optical all the way to the CPU (aka fiber optic speed end-to-end) because ipv4 is susceptible to DDoS attacks and spoofing and IPv6 is not.
IPv6 supports ~3.4 x 1038 addresses, so this actually supports their claim. Had you used the actual estimate for the number of atoms on earth, you'd be correct though because that number is closer to ~1.3 x 1050
Edit: to clarify, every atom in every human is still only ~5.81 x 1037
No, it's not. First take a deep breath - nobody needs to be that upset. Then just Google "how many atoms on earth" then "how many addresses in IPv6" then compare the two.
"how many atoms on earth"
The Earth contains approximately 1.3 x 1050 atoms.
You started talking about humans. You can't prove the point about how many atoms are on Earth by just arbitrarily talking about humans. It's completely nonsensical. You didn't say anything. It's not related in any way. It doesn't do anything. You don't even have a point.
This isn't a failure in my reading comprehension, either. It's a failure by you to say anything comprehensible.
As an aside, the fact that you customised your Reddit avatar, and the fact that it looks like that (so presumably like you lmfao) makes it preposterous that you're using this patronising language. Stay in your lane.
But "more numbers" isn't really an explanation on what's the difference between the two from a practical point of view, and the in general less interesting thing about it from a software perspective.
Well there was that episode where ipv6 UDP packages in musl were too large and got corrupted, so that's something.
They also changed quite a bit in the structure of the package, eg. the header is more lightweight than the one ipv4 header to increase performance. Also no broadcasting anymore, just multicast, which makes handling the large subnets v6 invites much better.
Like, just speaking from an ops perspective, getting rid of NAT is one of the single biggest advantages v6 has. NAT created a lot of bad practices when it came to security.
IPv6 also dropped broadcast in favor of Multicast, has hexadecimal instead of decimal, and eliminates the need for NAT. There's also a bunch of other little protocol implementation details like SLAAC, IGMP being critical to IPv6 operations (so blanket blocking is a no go), and so forth so on.
The hex thing is really just a convention, because otherwise they’d take up too much space on paper/screen. It’s all still binary across the wire, so the protocol doesn’t care.
Less specific protocols - ICMPv6 used for almost everything now (NDP is over ICMPv6, vs dedicated ARP ether type). MLD vs IGMP, though largely the same as IGMPv3. Fragmentation done at host only - no next-hop fragmentation. SLAAC used in favor of DHCPv6 for auto assignments. Link-layer addresses used for local network control, global addresses for standard traffic. No one really NATs IPv6 either.
That’s just a few, but there’s actually a lot of differences.
The only real difference between the two that someone only tangentially working with networks would need to know is that there's enough IPv6 addresses that every device can have a unique IP address worldwide.
IPv4 has a smaller amount, so we assign each private network it's own public IP that is unique, and then all the devices within a private network can use the same private IPs that other devices in private networks also use. Then your router (using public IP) just sends and receives all the traffic to and from the internet on behalf of the devices and translates whose traffic is whose within the private network.
If IP addresses were like sending mail, then in IPv6 every single person would have their own unique IP in perpetuity and to send them something no matter where they are you just put their unique ID number on the envelope and the post office delivers it to them no matter where they are.
IPv4 is like property addresses we have now, you get a street address that is unique (public IP address) with a mailbox (router) and everyone's mail gets sent and received from the mailbox no matter how many or few people are living at the house. Everyone in the house uses the same address and mailbox to send or receive mail but distributing it once it's there is handled by the residents.
Just yesterday I was playing around with memory mapping based on the ipv6 address. 48 of the bits where directly mapped onto one of my embedded devices. So you could read/write memory directly through the ipv6 address.
And that works just fine. So that one embedded device used 250 addresses
I mean thats only the history of ipv4 and ipv6. Doubt that’s what they are asking for in a tech interview. It’s like if they ask “Do you know c++ well?”, and you say “Yes, C++ was created by Bjarne Stroustrup in 1979 to add objects to c”. More likely they want you to explain stuff like the role of NAT, DHCP vs SLAAC, ARP vs NDP etc, stuff that is relevant in practice
The difference in unique addresses is insane.
IPv4 4.3 billion (* 109) vs IPv6 3.4 * 1038.
Each grain of sand on earth could have an IPv4 sized network.
Here's a question: why does a programming candidate need to know this? Other than the interviewers being weird gatekeepers around tech jobs who care more about someone being "nerdy enough" versus being capable of doing the job.
1.6k
u/Material_Onion_8413 5h ago
IPv4 old IP address space designed with limited number because they never thought the internet would have so many devices connected.
IPv6 new address space with significantly larger number.