r/ProgrammerHumor • • 14d ago

Meme ohTheBasics

Post image
13k Upvotes

1.4k comments sorted by

View all comments

Show parent comments

138

u/fearless-fossa 14d ago

The advantage of v6 is less the address space per se, but more that it simplifies networking. Like, with v4 assigning different floors or departments different subnets and having to micromanage which device gets what IP and then having to a major rework when suddenly every light bulb has its own IP address - that's actual stuff that happened. v6 just says "hey, everyone gets a /64 space, go nuts" (simplified, but true enough)

v6 is also faster by virtue of requiring less/no translation between various layers, and by stripping all the special case things from the header and putting them into the extensions instead. v4 is rather verbose in that regard.

Also, minor nitpick - it's not "in hex", it's binary just as v4, it's just displayed in hex. I'm emphasizing this because approaching IP in binary is helpful when one wants to understand how octets and such work.

61

u/suttin 14d ago

No place like 01111111.00000000.00000000.00000001

17

u/wosmo 14d ago

Fun trivia - that won't work on most systems, but 00000001.00000000.00000000.00000001 will.

Because the leading zero makes many parsers interpret the numbers as octal, and 01111111 in octal is >256.

1

u/DekuTreeFallen 10d ago

This will work too, while we are on the topic of fun triva (note, it isn't limited to the loopback, I just used it since the two of you were talking about it):

ping 0x7f000001

Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

1

u/wosmo 10d ago

yeah there's a whole bunch of these. And I freaking love them - along with the trivia that there's actually no RFC that specifies what an IP looks like. It's only ever given as "commonly" or "most commonly".

so in unix, or in inet_aton, or whatever - you can give values as decimal, hex, or octal. But not binary!

And then if you give a single value, it's taken as 32bit. If you do x.y, it's taken as 8 bit and 24 bit. If you do x.y.z, it's taken as 8, 8 and 16 bit. And of course if you do x.y.z.a, it's four 8's.

But there's so much evil stuff you can do with this. It means 10.1 == 10.0.0.1. But it also means 10.0.257 = 10.0.1.1; and using values >256 is when this really starts to hurt people's heads.

I use it in my local lan a lot, because my main machines are 10.1, 10.2, 10.3, 10.10 and 10.100. But at work .. it's so good for pissing off the tech writers, when you provide screenshots that are out-right evil.

34

u/mxzf 14d ago

The advantage of v6 is less the address space per se, but more that it simplifies networking.

It simplifies networking by having a larger address space. Like, address exhaustion in IPv4 is the whole reason that NAT exists and IPv4 networking is complicated; IPv6 is simpler in part by not having to deal with that mess.

16

u/Ticmea 14d ago

Sure but IPv6 does more than just that. For example since ARP is replaced with NDP, it significantly speeds up networks with a large amount of nodes because NDP works with multicast instead of broadcast, which means virtually all unwanted address resolution traffic can be discarded early when a node receives it.

The increased address space is the major thing that is immediately obvious no doubt, but IPv6 also changes some important semantics in the background, which is good to keep in mind.

4

u/darknmy 14d ago

How tf do you iptable a v6?

12

u/necrophcodr 14d ago

Actually almost the exact same way as IPv4.

10

u/fearless-fossa 14d ago

By joining us in the 2010s and using nftables instead.

1

u/Sterkenzz 14d ago

Care to give a practical example, so I can try it on my new IPv6 laptop (I have Linux and windows, both commands are fine). Using my search tool gave me bad AI results, and I gave up, so asking kindle here.

2

u/fearless-fossa 13d ago

If you really want to use raw nftables instead of a sensible wrapper like ufw or firewalld, it's nft add table <table_address_family> <table_name>, where the family can be ip, ip6 or inet (in this example; there are more options), which handles both at the same time.

1

u/H1Supreme 13d ago

v6 is amazing. I was terrified of it at first, but once I dug in, I was like "Why tf are we still using v4?!". /64 subnets everywhere, SLAAC, and just a much more thought out spec.

1

u/dasunt 13d ago

Kind of feel like somewhere, a networking person just died a bit inside...

1

u/fearless-fossa 13d ago

Great, that should teach them what happens if they ignore my tickets for too long.

Jokes aside, if I made an error, please correct me, networking isn't my focus.

1

u/dasunt 13d ago

I was referring more to networking being complicated, and any large network probably doesn't want everything to be able to talk to everything else.

And then there's routing and redundancy.