Os URLs sempre têm este formato:
<protocol>://<host>[:<port>]/[<path>][#<hash>]
O problema é que o IPv6 usa dois pontos, assim como o separador de porta e host, por exemplo:
2001:db8:1f70::999:de8:7648:6e8
Mas e se esse for o host, e eu quiser conectar-me a ele com HTTP na porta 100?
http://2001:db8:1f70::999:de8:7648:6e8:100/
O problema é o último cólon. Como os zeros são omitidos com dois pontos (entre 1f70 e 999), não se sabe se ': 100' pertence ao IP ou ao número da porta. Como podemos saber disso?