I'm no expert on IPv6, but a few errors and simplifications are apparent.
First, I think it would be clearer to say that IPv6 addresses are 128-bit long bit strings which we choose to represent with up to 8 4-hex digit numbers separated by colons. Each of those groups of 4 hex digits really represents 16 bits, and the 8 taken together are the full 128 bit address. (In IPv4, we usually represent the 32 bit address as 4 decimal numbers in the range 0-255, although octal representation, using commas instead of periods, is also acceptable.
In section 6, you confuse characters with bits. I think you mean that the first 48 bits (of the 128-bit v6 address) are the network prefix, the next 16 bits are the subnet ID, and the last 64 bits are the interface identifier.
And here's a question: Do IPv6 addresses change the handling of port numbers? Since the IPv6 address resolves to an interface, I guess they do not. Doesn't the use of a colon to indicate the port number introduce ambiguities when the double-colon notation is used?

































