How is IPv6 harder to understand? It’s just IPv4 with all the uncommon stuff stripped out and put into optional headers (which IPv4 also has), and a much longer address now written in hex.
CGNAT is just a fancy term for NAT done by a carrier. They get a special private IP address range for doing so, but fundamentally it’s still NAT.
Now IP multicast, THAT is complicated for humans to understand. Especially the whole subscriber logic.
I’m taking this as a genuine question, so I’ll answer for myself personally. My mental model of IPv4 is quite simple. A computer doesn’t have an address unless you configure one for it, or a DHCP server gives it one. If you are on the same network and there’s no firewall, knowing the ip address lets you reach the computer. The router has one public facing IP address that all your devices have to share, which is inconvenient.
In ipv6, a computer has two automatic addresses from the MAC address, a link local and a real one, but they aren’t interchangeable, and don’t always work. Instead of DCHP, there is something else that prevents ip collisions somehow, but dhcp also still exists sometimes.
In my limited experience, i can never count on reaching a device by its hostname, but if i know a local ipv4 address, that’s enough, and they’re easy to remember since only the last part really changes. With ipv6 the address is too long and incomprehensible to remember.
I love that ipv6 works better for computers, that you don’t have to worry about NAT traversal, but i don’t think it is too hard to understand why humans find using it day to day more confusing if they’re used to ipv4.
IPv4 has this too. It’s normally not routable so it’s safe to ignore in both IPv4 and IPv6.
Instead of DHCP…
The following is a gross simplification, but works for understanding the most common cases:
The original (heavy emphasis on this word) idea of IP is that addresses are unique for every interface. Additionally MAC addresses (48 bits) are also unique for every interface.
In IPv4, you’re trying to make interfaces that are unique in 48 bit IDs unique in 32 bit IDs. It doesn’t take a pigeon to realize there will be collisions. Therefore you need a person to manually assign addresses. If you automate that person, that becomes DHCP.
In IPv6, you’re making a 48 bit unique ID unique in a 128 bit namespace. You literally don’t need to do anything and you can still guarantee it’s unique. That’s how you automatically assign IPv6 addresses without DHCPv6.
As for how MAC addresses are assigned uniquely, the first 24 bits are a vendor prefix. The vendors then ensure each device they produce is unique.
With ipv6 the address is too long and incomprehensible to remember.
The problem is that nobody should be memorizing arbitrary 128 bit numbers, or even 32 bit arbitrary numbers. Especially since the numbers don’t even correspond to a machine, but instead an interface on the machine. Yes, 32 bit IPv4 addresses are easier to memorize, but you shouldn’t be memorizing them in the first place. Services run off of names. If the names aren’t working, fix the name service.
Ideally NDN solves this problem completely. Every host/packet is identified by a name, not an address. If you need to fetch something, all you need to do is provide the name and somebody (doesn’t have to be the original machine) will provide it to you.
How is IPv6 harder to understand? It’s just IPv4 with all the uncommon stuff stripped out and put into optional headers (which IPv4 also has), and a much longer address now written in hex.
CGNAT is just a fancy term for NAT done by a carrier. They get a special private IP address range for doing so, but fundamentally it’s still NAT.
Now IP multicast, THAT is complicated for humans to understand. Especially the whole subscriber logic.
I’m taking this as a genuine question, so I’ll answer for myself personally. My mental model of IPv4 is quite simple. A computer doesn’t have an address unless you configure one for it, or a DHCP server gives it one. If you are on the same network and there’s no firewall, knowing the ip address lets you reach the computer. The router has one public facing IP address that all your devices have to share, which is inconvenient.
In ipv6, a computer has two automatic addresses from the MAC address, a link local and a real one, but they aren’t interchangeable, and don’t always work. Instead of DCHP, there is something else that prevents ip collisions somehow, but dhcp also still exists sometimes.
In my limited experience, i can never count on reaching a device by its hostname, but if i know a local ipv4 address, that’s enough, and they’re easy to remember since only the last part really changes. With ipv6 the address is too long and incomprehensible to remember.
I love that ipv6 works better for computers, that you don’t have to worry about NAT traversal, but i don’t think it is too hard to understand why humans find using it day to day more confusing if they’re used to ipv4.
IPv4 has this too. It’s normally not routable so it’s safe to ignore in both IPv4 and IPv6.
The following is a gross simplification, but works for understanding the most common cases:
The original (heavy emphasis on this word) idea of IP is that addresses are unique for every interface. Additionally MAC addresses (48 bits) are also unique for every interface.
In IPv4, you’re trying to make interfaces that are unique in 48 bit IDs unique in 32 bit IDs. It doesn’t take a pigeon to realize there will be collisions. Therefore you need a person to manually assign addresses. If you automate that person, that becomes DHCP.
In IPv6, you’re making a 48 bit unique ID unique in a 128 bit namespace. You literally don’t need to do anything and you can still guarantee it’s unique. That’s how you automatically assign IPv6 addresses without DHCPv6.
As for how MAC addresses are assigned uniquely, the first 24 bits are a vendor prefix. The vendors then ensure each device they produce is unique.
The problem is that nobody should be memorizing arbitrary 128 bit numbers, or even 32 bit arbitrary numbers. Especially since the numbers don’t even correspond to a machine, but instead an interface on the machine. Yes, 32 bit IPv4 addresses are easier to memorize, but you shouldn’t be memorizing them in the first place. Services run off of names. If the names aren’t working, fix the name service.
Ideally NDN solves this problem completely. Every host/packet is identified by a name, not an address. If you need to fetch something, all you need to do is provide the name and somebody (doesn’t have to be the original machine) will provide it to you.