IPv6 address 表示法的確有不少問題,說「包袱」是因為應該是很難改了。
在「The IPv6 Numeric IP Format is a Serious Usability Problem」這篇文章裡作者討論 IPv6 address 表示法的問題,像是因為用 colon 切割造會跟 url 裡的 port 混淆,於是引入了 bracket 的 workaround:
An IPv4 URL of the form http://127.0.0.1:1234/ indicates that HTTP should be used to access a service at 127.0.0.1 port 1234. But what does http://dead:beef::1:1234/ mean? To fix the ambiguity, brackets were introduced. Now you have to type http://[dead:beef::1]:1234/.
Address Shortening Obfuscation 這邊講的就有點過火了,不過的確是不好讀,一眼看過去不是很容易切開一個 colon 與兩個 colon 的部份。
作者有提出一些建議方法,不過看起來只是 murmuring... XD
I guess the best and only way to do IPV6 address right by given it a TLD - .ipv6.
deadbeef000000000000000000000001.ipv6 should be resolved to [dead:beef::1]
dead.beef.0.0.0.0.0.1.ipv6 should be resolved to [dead:beef::1]
Can be slowly migrated if hack the logic into DNS (all apps will just work), then we can update the parser.
I have an idea before: use "http://127.0.0.1:1234" for ipv4,
and use "http://dead:beef::1.1234" for ipv6.
This format is easy identification for human,
but may need more procedures for parsing url in code.