> Does DHCP-PD mean the router hands out ipv6 ip's to the devices
Indeed. That's one way of doing it. But you don't need to have DHCP or manual config in IPv6. Devices can just make up addresses for themselves, with no need for a DHCP server. If they know the prefix assigned to the whole LAN (the IP address range for the LAN) then they can just generate an IP address for themselves that is globally routable. There are several ways of doing this, but one way is to just base the low 64-bits of the IP-address on the MAC address. IPv6 hosts always set up link-local addresses for themselves as well. Beginning FF80:, these are the equivalent of 169.254.* addresses in IPv4, not meaningful outside the LAN and not globally unique. Hosts can use always these link-local addresses to get going to begin with even if they don't (yet) know what the LAN's prefix (ie range of addresses) is. One difference from IPv4 is that hosts always have several IPv6 addresses.
> or can we also set each device manually with an ipv6 ip?
Certainly.
> How come ipv6 is so different to how ipv4 is? why didn't they just add more numbers to ipv4 eg. *.*.*.*.* etc ?
If you're talking about just the notation - One possible answer could be that it would start to look pretty long-winded. Hex is more compact than decimal, and the :: notation which means ‘pad out with zeros here’ is a great boon.
> Is the ipv6 made up of the internal ipv6 + subnet + the ipv6 assigned from the isp?
IPv6 addresses are made up of the
prefix + host-ID
the prefix is the address of the subnet, high bits, on the left, and the host-ID part identifies the host on the LAN, the low bits, on the right. The split is usually 64 bits + 64 bits.
The prefix part of a globally routable, public IP address handed out by an ISP is typically made up of 48 bits + 16 bits where 48 bits are assigned to a customer, that customer can have 65536 LANs identified by the next 16 bits and then the remaining low-order 64 bits identify the host within a LAN. However other splits are possible, such as /56 + 8, or /60 + 4. Most home users probably can manage with 256 LANs, I would think.
An ISP might typically have a /32 assigned to it, in which case handing out /48s to every customer means only 65536 customers, which is not sensible. So ISPs would either need additional /32s, or a shorter prefix, or would need to be less generous /wasteful and not hand out /48s to everyone all the time. In my opinion we are going to have to be careful in getting these splits right otherwise we could end up going through the IPv6 space very rapidly with vast amounts of waste. A start would be not to encourage giving out /48s all the time, as domestic customers who wish for more than a single /64 (single LAN) can often be fine with a /60 (16 LANs) or a /56 (256 LANs). It's not a good idea for ISPs to have lots of non-adjacent /32s either as that means that the global routine table will grow like crazy.
IPv6 was an opportunity to fix all the weaknesses and mistakes in the old Internet and in the practices and assumptions that software had grown accustomed to. It's not just the headers that have changed. The algorithms that IPv6 subsystems and IPv6-speaking apps use are much improved. One example already mentioned is that of expecting there to always be several IPv6 addresses per interface. Hopefully, NAT is gone for good. Another example is auto-config mechanisms which are much more robust. The ‘source-selection algorithm’ is a further example of improvement: how operating systems are expected to choose the appropriate source address to quote in outbound packets is now a well-defined, standardised procedure. Some of the algorithmic improvements from IPv6 have been applied to IPv4 as well in some recent operating systems.
Apologies - this post has grown into a monster.