URL всегда имеют такой формат:
<protocol>://<host>[:<port>]/[<path>][#<hash>]
Проблема заключается в том, что IPv6 использует двоеточия, как разделитель порта и хоста, например:
2001:db8:1f70::999:de8:7648:6e8
Но что, если это хост, и я хочу подключиться к нему по HTTP через порт 100?
http://2001:db8:1f70::999:de8:7648:6e8:100/
Проблема в последнем двоеточии. Так как нули пропускаются с двойными двоеточиями (между 1f70 и 999), неизвестно, принадлежит ли «: 100» IP или номеру порта. Как мы можем знать это?