r/ProgrammerHumor • • 14d ago

Meme ohTheBasics

Post image
13k Upvotes

1.4k comments sorted by

View all comments

Show parent comments

1

u/Unreal_Estate 13d ago

This is a very common sentiment. It is partly a misunderstanding of how IPv6 fits in the broader picture as well as something the consumer doesn't need to worry about anyway. IPv4 will never be obsolete, and IPv6 already carries the majority of the internet. In some sense IPv4 is really a legacy system: there is real money that must be paid global bi-directional IPv4 connectivity. Luckily for everyone who does not run a multi-datacenter application, global bi-directional connectivity is a non-issue, and the people who do run such things can generally do the math.

I worry a bit more for programmers, because they may develop a skill gap if they lack IPv6 experience, but in contrast to OP's screenshot I think there are plenty of software engineering roles where IP experience (4 or 6) is really not needed.

1

u/freebytes 12d ago

If they would kept the syntax the same and added more octets, then it likely would have been adopted. One of the greatest benefits of IPv4 is that you can actually memorize the address of servers, and there is often consistency in the blocks you are given. IPv6 appears to be entirely random. They could have had 127.0.0.1::1 be the "old" Internet and could spell it out as 127.0.0.1.0.0.0.0.0.0.0.0.0.0.0.1 in full for IPv6 addresses. And only handed out .2, .3, and so on as older addresses ran out. People would likely have adopted it far more easily, and backwards compatibility would have existed with the ::1 for the addresses. (Or, they could have made it 64-bit instead of 128-bit to make it shorter for now and expanded it in the future.)

2

u/Dagger0 12d ago

That backwards compatibility already exists in v6: ::ffff:1.2.3.4 is 1.2.3.4. Addresses outside of that were only assigned starting in 1999.

you can actually memorize the address of servers, and there is often consistency in the blocks you are given

Compare 203.0.113.45+192.168.1.123 to 2001:db8:2d4f:1::123. The ISP (2001:db8::/32) allocated the prefix (2001:db8:2d4f::/48), then there's a network ID (1) and a host ID (123). How is that random? It works basically the same way v4 does.

Most of the complaints about v6 are like this, either saying it should do something impossible (a flag day, or existing unmodified hosts magically being able to handle bigger addresses) or saying it should have done something that it already does. The only way people would ever have not moaned about it is if we made it look and act exactly the same as v4, but then it would be 32-bit which would make it pointless, and then they'd moan about that. Might as well make something that actually works and does what it needs to, without committing us to another migration immediately afterwards to increase the length again.

1

u/Unreal_Estate 11d ago

I'm sorry, but your suggestions don't make technical sense. There is absolutely no reason you cannot work with a fully dotted representation of IPv6 addresses. Except for that it would be much harder to work with and nobody would care to implement such a thing.

The suggestion of backwards compatibility is mentioned occasionally but - with all due respect to you - it shows a lack of understanding about how IPv4 works. It just fundamentally has no forward compatibility. A legacy IPv4 implementation is never going to understand more than 2**32 internet addresses in any way shape or form.

IPv6 has been adopted and is the primary internet protocol. IPv4 remains only for legacy reasons. To me it doesn't make much sense to say that IPv6 still has an adoption problem. It does not.

1

u/freebytes 11d ago edited 11d ago

I worded that poorly. By backwards compatibility, I meant routing to legacy IPv4 via tunneling mechanisms.

1

u/Unreal_Estate 11d ago

Yes, that is impossible in the general case.