I cannot find the reason why IPv6 use colon as delimiter instead of dot.
When address is described with port number, it seems clumsy to me.
[2001:db8:85a3:8d3:1319:8a2e:370:7348]:443
What justify using colon?
Abbreviating IPv6 Addresses Most IPv6 addresses do not occupy all of their possible 128 bits. This condition results in fields that are padded with zeros or contain only zeros. The IPv6 addressing architecture allows you use the two-colon (::) notation to represent contiguous 16-bit fields of zeros.
In contrast, IPv6 addresses are 128 bits divided along 16-bit boundaries. Each 16-bit block is converted to a 4-digit hexadecimal number and separated by colons. The resulting representation is called colon-hexadecimal.
An alternative format for IPv6 addresses combines the colon and dotted notation, so the IPv4 address can be embedded in the IPv6 address. Hexadecimal values are specified for the left-most 96 bits, and decimal values are specified for the right-most 32 bits indicating the embedded IPv4 address.
:: can be used once in an IPv6 address to replace a consecutive blocks of zeroes. It can be any length of zeroes as long as it is greater than a single block. All zeroes in a single block can be represented by :0: instead of writing out all four zeroes.
I looked through the older IPv6 RFCs in order to find a clue about the history, but I think the answer lies in RFC 4291 section 2.2.3:
3. An alternative form that is sometimes more convenient when dealing with a mixed environment of IPv4 and IPv6 nodes is x:x:x:x:x:x:d.d.d.d, where the 'x's are the hexadecimal values of the six high-order 16-bit pieces of the address, and the 'd's are the decimal values of the four low-order 8-bit pieces of the address (standard IPv4 representation). Examples: 0:0:0:0:0:0:13.1.68.3 0:0:0:0:0:FFFF:129.144.52.38 or in compressed form: ::13.1.68.3
That is, you wouldn't be able "embed" an IPv4-compatible address if IPv6 addresses were dot-delimited.
To address your implication about the colon clashing with a port number in a URL, I think the answer is that at the time that IPv6 was being designed in the early 1990s, hypertext and the URL were being designed at the same time. Since port numbers are separate from IP addresses, there was no standard for specifying a (port, address) tuple. (The command-line telnet
client, for example, uses a space to separate the IP address from the port.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With